package hostclaim func ToScopedParking(opID string, regions, boxes []string, newID func() string) func(*Claim) error { return func(c *Claim) error { if err := ToParking(opID, regions, boxes, newID)(c); err != nil { return err } var staging []Obligation for i := range c.Obligations { o := &c.Obligations[i] if o.Op != opID || o.Kind != "park-replica" || o.Park != nil || o.ParkTarget != c.Holder.Location { continue } o.ParkTarget = c.Holder.Location copy := *o copy.ID = newID() copy.Retirement = newID() copy.ParkTarget = "moves/" + c.Host staging = append(staging, copy) } c.Obligations = append(c.Obligations, staging...) return nil } }