func WorkflowPolicy()

in cleanerupper/cleanerupper.go [177:243]


func WorkflowPolicy(id string) PolicyFunc {
	return func(resource any) bool {
		var name, desc string
		var labels map[string]string
		switch r := resource.(type) {
		case *osconfigv1alphapb.OSPolicyAssignment:
			name = r.Name
			desc = r.Description
		case *osconfigpb.GuestPolicy:
			name = r.Name
			desc = r.Description
		case *compute.Network:
			if r.Name == "default" {
				return false
			}
			name = r.Name
			desc = r.Description
		case *compute.MachineImage:
			name = r.Name
			desc = r.Description
		case *compute.Disk:
			desc = r.Description
			labels = r.Labels
			name = r.Name
		case *compute.Image:
			desc = r.Description
			labels = r.Labels
			name = r.Name
		case *compute.Snapshot:
			desc = r.Description
			labels = r.Labels
			name = r.Name
		case *compute.Instance:
			desc = r.Description
			if r.DeletionProtection {
				return false
			}
			labels = r.Labels
			name = r.Name
		case *compute.ForwardingRule:
			desc = r.Description
			labels = r.Labels
			name = r.Name
		case *compute.UrlMap:
			desc = r.Description
			name = r.Name
		case *compute.BackendService:
			desc = r.Description
			name = r.Name
		case *compute.TargetHttpProxy:
			desc = r.Description
			name = r.Name
		case *compute.HealthCheck:
			desc = r.Description
			name = r.Name
		case *compute.NetworkEndpointGroup:
			desc = r.Description
			name = r.Name
		default:
			return false
		}
		if _, keep := labels[keepLabel]; keep {
			return false
		}
		return strings.HasSuffix(name, id) && !strings.Contains(desc, keepLabel)
	}
}