func (e *Etcd) Add(k *protocol.Kite, value *kontrolprotocol.RegisterValue) error { etcdKey := KitesPrefix + k.String() etcdIDKey := KitesPrefix + "/" + k.ID valueBytes, err := json.Marshal(value) if err != nil { return err } valueString := string(valueBytes) // Set the kite key. // Example "/koding/production/os/0.0.1/sj/kontainer1.sj.koding.com/1234asdf..." _, err = e.client.Set(etcdKey, valueString, uint64(KeyTTL/time.Second)) if err != nil { return err } // Also store the the kite.Key Id for easy lookup _, err = e.client.Set(etcdIDKey, valueString, uint64(KeyTTL/time.Second)) if err != nil { return err } return nil }
func (e *Etcd) Update(k *protocol.Kite, value *kontrolprotocol.RegisterValue) error { etcdKey := KitesPrefix + k.String() etcdIDKey := KitesPrefix + "/" + k.ID valueBytes, err := json.Marshal(value) if err != nil { return err } valueString := string(valueBytes) // update the kite key. // Example "/koding/production/os/0.0.1/sj/kontainer1.sj.koding.com/1234asdf..." _, err = e.client.Update(etcdKey, valueString, uint64(KeyTTL/time.Second)) if err != nil { return err } // Also update the the kite.Key Id for easy lookup _, err = e.client.Update(etcdIDKey, valueString, uint64(KeyTTL/time.Second)) if err != nil { return err } // Set the TTL for the username. Otherwise, empty dirs remain in etcd. _, err = e.client.Update(KitesPrefix+"/"+k.Username, "", uint64(KeyTTL/time.Second)) if err != nil { return err } return nil }
func (e *Etcd) Delete(k *protocol.Kite) error { etcdKey := KitesPrefix + k.String() etcdIDKey := KitesPrefix + "/" + k.ID _, err := e.client.Delete(etcdKey, true) _, err = e.client.Delete(etcdIDKey, true) return err }