package hostops import ( "context" "github.com/carlosframework/platform/internal/hostclaim" ) func (a ProductionAuthority) RefreshDeleteRecord(ctx context.Context, old hostclaim.Observed, r Record) error { if old.Absent || old.Claim.Holder == nil || !matches(r, old.Claim.Holder) { return ErrIdentity } admission, err := a.admission(ctx, r.Holder.Account, r.Holder.App) if err != nil { return err } if admission.Value.State != "closed" || admission.Value.Op == nil || len(admission.Value.Registrations) != 0 { return ErrPending } for _, effect := range admission.Value.Effects { if effect.State != "complete" { return ErrPending } } fresh, err := hostclaim.Read(ctx, a.Store, r.Holder.Host) if err != nil { return err } if fresh.Absent || fresh.Claim.Op.ID != old.Claim.Op.ID || !matches(r, fresh.Claim.Holder) || (fresh.Claim.Op.Kind != hostclaim.KindDeleting && fresh.Claim.Op.Kind != hostclaim.KindPurging) { return ErrPending } _, err = hostclaim.Update(ctx, a.Store, fresh, func(c *hostclaim.Claim) error { if c.Op.ID != old.Claim.Op.ID || !matches(r, c.Holder) { return ErrIdentity } c.Op.Intent["etag"] = r.ETag return nil }) if err != nil { return err } return ErrPending }