func (esr *etcdSubnetRegistry) updateSubnet(ctx context.Context, network string, sn ip.IP4Net, attrs *LeaseAttrs, ttl time.Duration, asof uint64) (time.Time, error) { key := path.Join(esr.etcdCfg.Prefix, network, "subnets", sn.StringSep(".", "-")) value, err := json.Marshal(attrs) if err != nil { return time.Time{}, err } resp, err := esr.client().Set(ctx, key, string(value), &etcd.SetOptions{ PrevIndex: asof, TTL: ttl, }) if err != nil { return time.Time{}, err } ensureExpiration(resp, ttl) return *resp.Node.Expiration, nil }
func (esr *etcdSubnetRegistry) deleteSubnet(ctx context.Context, network string, sn ip.IP4Net) error { key := path.Join(esr.etcdCfg.Prefix, network, "subnets", sn.StringSep(".", "-")) _, err := esr.client().Delete(ctx, key, nil) return err }
func MakeSubnetKey(sn ip.IP4Net) string { return sn.StringSep(".", "-") }