From ccb7e8793bf2aecb09d899e6242ffdc0e1163ac6 Mon Sep 17 00:00:00 2001 From: Kouhei Ueno Date: Thu, 31 Jul 2014 18:23:43 +0900 Subject: [PATCH] return EtcdErrorNodeExist when Create is called for existing node --- pkg/tools/etcd_tools.go | 2 ++ pkg/tools/fake_etcd_client.go | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/pkg/tools/etcd_tools.go b/pkg/tools/etcd_tools.go index 4472b32a10e..5a95c1945dc 100644 --- a/pkg/tools/etcd_tools.go +++ b/pkg/tools/etcd_tools.go @@ -30,11 +30,13 @@ import ( const ( EtcdErrorCodeNotFound = 100 + EtcdErrorCodeNodeExist = 105 EtcdErrorCodeValueRequired = 200 ) var ( EtcdErrorNotFound = &etcd.EtcdError{ErrorCode: EtcdErrorCodeNotFound} + EtcdErrorNodeExist = &etcd.EtcdError{ErrorCode: EtcdErrorCodeNodeExist} EtcdErrorValueRequired = &etcd.EtcdError{ErrorCode: EtcdErrorCodeValueRequired} ) diff --git a/pkg/tools/fake_etcd_client.go b/pkg/tools/fake_etcd_client.go index 452c7b14f15..951264fa3a9 100644 --- a/pkg/tools/fake_etcd_client.go +++ b/pkg/tools/fake_etcd_client.go @@ -137,11 +137,16 @@ func (f *FakeEtcdClient) CompareAndSwap(key, value string, ttl uint64, prevValue } func (f *FakeEtcdClient) Create(key, value string, ttl uint64) (*etcd.Response, error) { + if prevResult, ok := f.Data[key]; ok && prevResult.R != nil && prevResult.R.Node != nil { + return nil, EtcdErrorNodeExist + } + return f.Set(key, value, ttl) } + func (f *FakeEtcdClient) Delete(key string, recursive bool) (*etcd.Response, error) { if f.Err != nil { - return f.Err + return nil, f.Err } f.Data[key] = EtcdResponseWithError{