in cleanerupper/cleanerupper.go [84:169]
func AgePolicy(t time.Time) PolicyFunc {
return func(resource any) bool {
var labels map[string]string
var desc, name string
var created time.Time
var err error
switch r := resource.(type) {
case *osconfigv1alphapb.OSPolicyAssignment:
name = r.Name
desc = r.Description
created = time.Unix(r.GetRevisionCreateTime().GetSeconds(), int64(r.GetRevisionCreateTime().GetNanos()))
case *osconfigpb.GuestPolicy:
name = r.Name
desc = r.Description
created = time.Unix(r.GetCreateTime().GetSeconds(), int64(r.GetCreateTime().GetNanos()))
case *compute.Network:
name = r.Name
desc = r.Description
if r.Name == "default" || strings.Contains(r.Description, "delete") {
return false
}
created, err = time.Parse(time.RFC3339, r.CreationTimestamp)
case *compute.MachineImage:
name = r.Name
desc = r.Description
created, err = time.Parse(time.RFC3339, r.CreationTimestamp)
case *compute.Disk:
name = r.Name
desc = r.Description
labels = r.Labels
created, err = time.Parse(time.RFC3339, r.CreationTimestamp)
case *compute.Image:
name = r.Name
desc = r.Description
labels = r.Labels
created, err = time.Parse(time.RFC3339, r.CreationTimestamp)
case *compute.Snapshot:
name = r.Name
desc = r.Description
labels = r.Labels
created, err = time.Parse(time.RFC3339, r.CreationTimestamp)
case *compute.Instance:
name = r.Name
desc = r.Description
if r.DeletionProtection {
return false
}
labels = r.Labels
created, err = time.Parse(time.RFC3339, r.CreationTimestamp)
case *compute.ForwardingRule:
desc = r.Description
labels = r.Labels
name = r.Name
created, err = time.Parse(time.RFC3339, r.CreationTimestamp)
case *compute.UrlMap:
desc = r.Description
name = r.Name
created, err = time.Parse(time.RFC3339, r.CreationTimestamp)
case *compute.BackendService:
desc = r.Description
name = r.Name
created, err = time.Parse(time.RFC3339, r.CreationTimestamp)
case *compute.TargetHttpProxy:
desc = r.Description
name = r.Name
created, err = time.Parse(time.RFC3339, r.CreationTimestamp)
case *compute.HealthCheck:
desc = r.Description
name = r.Name
created, err = time.Parse(time.RFC3339, r.CreationTimestamp)
case *compute.NetworkEndpointGroup:
desc = r.Description
name = r.Name
created, err = time.Parse(time.RFC3339, r.CreationTimestamp)
default:
return false
}
if err != nil {
return false
}
if _, keep := labels[keepLabel]; keep {
return false
}
return t.After(created) && !strings.Contains(desc, keepLabel) && !strings.Contains(name, keepLabel)
}
}