mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-05 10:19:50 +00:00
Add ttl parameter to CreateObj
This commit is contained in:
parent
3ea383d073
commit
4d4ebcd38e
@ -119,7 +119,7 @@ func (r *Registry) CreatePod(pod *api.Pod) error {
|
|||||||
// DesiredState.Host == "" is a signal to the scheduler that this pod needs scheduling.
|
// DesiredState.Host == "" is a signal to the scheduler that this pod needs scheduling.
|
||||||
pod.DesiredState.Status = api.PodRunning
|
pod.DesiredState.Status = api.PodRunning
|
||||||
pod.DesiredState.Host = ""
|
pod.DesiredState.Host = ""
|
||||||
err := r.CreateObj(makePodKey(pod.ID), pod)
|
err := r.CreateObj(makePodKey(pod.ID), pod, 0)
|
||||||
return etcderr.InterpretCreateError(err, "pod", pod.ID)
|
return etcderr.InterpretCreateError(err, "pod", pod.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -253,7 +253,7 @@ func (r *Registry) GetController(controllerID string) (*api.ReplicationControlle
|
|||||||
|
|
||||||
// CreateController creates a new ReplicationController.
|
// CreateController creates a new ReplicationController.
|
||||||
func (r *Registry) CreateController(controller *api.ReplicationController) error {
|
func (r *Registry) CreateController(controller *api.ReplicationController) error {
|
||||||
err := r.CreateObj(makeControllerKey(controller.ID), controller)
|
err := r.CreateObj(makeControllerKey(controller.ID), controller, 0)
|
||||||
return etcderr.InterpretCreateError(err, "replicationController", controller.ID)
|
return etcderr.InterpretCreateError(err, "replicationController", controller.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -283,7 +283,7 @@ func (r *Registry) ListServices() (*api.ServiceList, error) {
|
|||||||
|
|
||||||
// CreateService creates a new Service.
|
// CreateService creates a new Service.
|
||||||
func (r *Registry) CreateService(svc *api.Service) error {
|
func (r *Registry) CreateService(svc *api.Service) error {
|
||||||
err := r.CreateObj(makeServiceKey(svc.ID), svc)
|
err := r.CreateObj(makeServiceKey(svc.ID), svc, 0)
|
||||||
return etcderr.InterpretCreateError(err, "service", svc.ID)
|
return etcderr.InterpretCreateError(err, "service", svc.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -207,8 +207,9 @@ func (h *EtcdHelper) bodyAndExtractObj(key string, objPtr runtime.Object, ignore
|
|||||||
return body, response.Node.ModifiedIndex, err
|
return body, response.Node.ModifiedIndex, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateObj adds a new object at a key unless it already exists.
|
// CreateObj adds a new object at a key unless it already exists. 'ttl' is time-to-live in seconds,
|
||||||
func (h *EtcdHelper) CreateObj(key string, obj runtime.Object) error {
|
// and 0 means forever.
|
||||||
|
func (h *EtcdHelper) CreateObj(key string, obj runtime.Object, ttl uint64) error {
|
||||||
data, err := h.Codec.Encode(obj)
|
data, err := h.Codec.Encode(obj)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -219,7 +220,7 @@ func (h *EtcdHelper) CreateObj(key string, obj runtime.Object) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = h.Client.Create(key, string(data), 0)
|
_, err = h.Client.Create(key, string(data), ttl)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -163,6 +163,27 @@ func TestExtractObjNotFoundErr(t *testing.T) {
|
|||||||
try("/some/key3")
|
try("/some/key3")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestCreateObj(t *testing.T) {
|
||||||
|
obj := &api.Pod{JSONBase: api.JSONBase{ID: "foo"}}
|
||||||
|
fakeClient := NewFakeEtcdClient(t)
|
||||||
|
helper := EtcdHelper{fakeClient, latest.Codec, versioner}
|
||||||
|
err := helper.CreateObj("/some/key", obj, 5)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Unexpected error %#v", err)
|
||||||
|
}
|
||||||
|
data, err := latest.Codec.Encode(obj)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Unexpected error %#v", err)
|
||||||
|
}
|
||||||
|
node := fakeClient.Data["/some/key"].R.Node
|
||||||
|
if e, a := string(data), node.Value; e != a {
|
||||||
|
t.Errorf("Wanted %v, got %v", e, a)
|
||||||
|
}
|
||||||
|
if e, a := uint64(5), fakeClient.LastSetTTL; e != a {
|
||||||
|
t.Errorf("Wanted %v, got %v", e, a)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestSetObj(t *testing.T) {
|
func TestSetObj(t *testing.T) {
|
||||||
obj := &api.Pod{JSONBase: api.JSONBase{ID: "foo"}}
|
obj := &api.Pod{JSONBase: api.JSONBase{ID: "foo"}}
|
||||||
fakeClient := NewFakeEtcdClient(t)
|
fakeClient := NewFakeEtcdClient(t)
|
||||||
|
@ -49,6 +49,7 @@ type FakeEtcdClient struct {
|
|||||||
Ix int
|
Ix int
|
||||||
TestIndex bool
|
TestIndex bool
|
||||||
ChangeIndex uint64
|
ChangeIndex uint64
|
||||||
|
LastSetTTL uint64
|
||||||
|
|
||||||
// Will become valid after Watch is called; tester may write to it. Tester may
|
// Will become valid after Watch is called; tester may write to it. Tester may
|
||||||
// also read from it to verify that it's closed after injecting an error.
|
// also read from it to verify that it's closed after injecting an error.
|
||||||
@ -135,6 +136,7 @@ func (f *FakeEtcdClient) nodeExists(key string) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (f *FakeEtcdClient) setLocked(key, value string, ttl uint64) (*etcd.Response, error) {
|
func (f *FakeEtcdClient) setLocked(key, value string, ttl uint64) (*etcd.Response, error) {
|
||||||
|
f.LastSetTTL = ttl
|
||||||
if f.Err != nil {
|
if f.Err != nil {
|
||||||
return nil, f.Err
|
return nil, f.Err
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user