mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
etcdserver: Create, Delete -> Add, Remove
This commit is contained in:
parent
cdea98d434
commit
8e8719f6ac
@ -16,9 +16,9 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type ClusterStore interface {
|
type ClusterStore interface {
|
||||||
Create(m Member)
|
Add(m Member)
|
||||||
Get() Cluster
|
Get() Cluster
|
||||||
Delete(id int64)
|
Remove(id int64)
|
||||||
}
|
}
|
||||||
|
|
||||||
type clusterStore struct {
|
type clusterStore struct {
|
||||||
@ -28,14 +28,14 @@ type clusterStore struct {
|
|||||||
func NewClusterStore(st store.Store, c Cluster) ClusterStore {
|
func NewClusterStore(st store.Store, c Cluster) ClusterStore {
|
||||||
cls := &clusterStore{Store: st}
|
cls := &clusterStore{Store: st}
|
||||||
for _, m := range c {
|
for _, m := range c {
|
||||||
cls.Create(*m)
|
cls.Add(*m)
|
||||||
}
|
}
|
||||||
return cls
|
return cls
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create puts a new Member into the store.
|
// Add puts a new Member into the store.
|
||||||
// A Member with a matching id must not exist.
|
// A Member with a matching id must not exist.
|
||||||
func (s *clusterStore) Create(m Member) {
|
func (s *clusterStore) Add(m Member) {
|
||||||
b, err := json.Marshal(m)
|
b, err := json.Marshal(m)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Panicf("marshal peer info error: %v", err)
|
log.Panicf("marshal peer info error: %v", err)
|
||||||
@ -67,9 +67,9 @@ func (s *clusterStore) Get() Cluster {
|
|||||||
return *c
|
return *c
|
||||||
}
|
}
|
||||||
|
|
||||||
// Delete removes a member from the store.
|
// Remove removes a member from the store.
|
||||||
// The given id MUST exist.
|
// The given id MUST exist.
|
||||||
func (s *clusterStore) Delete(id int64) {
|
func (s *clusterStore) Remove(id int64) {
|
||||||
p := s.Get().FindID(id).storeKey()
|
p := s.Get().FindID(id).storeKey()
|
||||||
if _, err := s.Store.Delete(p, false, false); err != nil {
|
if _, err := s.Store.Delete(p, false, false); err != nil {
|
||||||
log.Panicf("delete peer should never fail: %v", err)
|
log.Panicf("delete peer should never fail: %v", err)
|
||||||
|
@ -9,10 +9,10 @@ import (
|
|||||||
"github.com/coreos/etcd/store"
|
"github.com/coreos/etcd/store"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestClusterStoreCreate(t *testing.T) {
|
func TestClusterStoreAdd(t *testing.T) {
|
||||||
st := &storeRecorder{}
|
st := &storeRecorder{}
|
||||||
ps := &clusterStore{Store: st}
|
ps := &clusterStore{Store: st}
|
||||||
ps.Create(Member{Name: "node", ID: 1})
|
ps.Add(Member{Name: "node", ID: 1})
|
||||||
|
|
||||||
wactions := []action{
|
wactions := []action{
|
||||||
{
|
{
|
||||||
@ -73,7 +73,7 @@ func TestClusterStoreDelete(t *testing.T) {
|
|||||||
c := Cluster{}
|
c := Cluster{}
|
||||||
c.Add(Member{Name: "node", ID: 1})
|
c.Add(Member{Name: "node", ID: 1})
|
||||||
cs := NewClusterStore(st, c)
|
cs := NewClusterStore(st, c)
|
||||||
cs.Delete(1)
|
cs.Remove(1)
|
||||||
|
|
||||||
wdeletes := []string{machineKVPrefix + "1"}
|
wdeletes := []string{machineKVPrefix + "1"}
|
||||||
if !reflect.DeepEqual(st.deletes, wdeletes) {
|
if !reflect.DeepEqual(st.deletes, wdeletes) {
|
||||||
|
@ -1238,7 +1238,7 @@ type fakeCluster struct {
|
|||||||
members []etcdserver.Member
|
members []etcdserver.Member
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *fakeCluster) Create(m etcdserver.Member) { return }
|
func (c *fakeCluster) Add(m etcdserver.Member) { return }
|
||||||
|
|
||||||
func (c *fakeCluster) Get() etcdserver.Cluster {
|
func (c *fakeCluster) Get() etcdserver.Cluster {
|
||||||
cl := &etcdserver.Cluster{}
|
cl := &etcdserver.Cluster{}
|
||||||
@ -1246,4 +1246,4 @@ func (c *fakeCluster) Get() etcdserver.Cluster {
|
|||||||
return *cl
|
return *cl
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *fakeCluster) Delete(id int64) { return }
|
func (c *fakeCluster) Remove(id int64) { return }
|
||||||
|
@ -361,6 +361,7 @@ func (s *EtcdServer) Do(ctx context.Context, r pb.Request) (Response, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *EtcdServer) AddMember(ctx context.Context, memb Member) error {
|
func (s *EtcdServer) AddMember(ctx context.Context, memb Member) error {
|
||||||
|
// TODO: move Member to protobuf type
|
||||||
b, err := json.Marshal(memb)
|
b, err := json.Marshal(memb)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -541,9 +542,9 @@ func (s *EtcdServer) applyConfChange(cc raftpb.ConfChange) {
|
|||||||
if cc.NodeID != m.ID {
|
if cc.NodeID != m.ID {
|
||||||
panic("unexpected nodeID mismatch")
|
panic("unexpected nodeID mismatch")
|
||||||
}
|
}
|
||||||
s.ClusterStore.Create(m)
|
s.ClusterStore.Add(m)
|
||||||
case raftpb.ConfChangeRemoveNode:
|
case raftpb.ConfChangeRemoveNode:
|
||||||
s.ClusterStore.Delete(cc.NodeID)
|
s.ClusterStore.Remove(cc.NodeID)
|
||||||
default:
|
default:
|
||||||
panic("unexpected ConfChange type")
|
panic("unexpected ConfChange type")
|
||||||
}
|
}
|
||||||
|
@ -807,7 +807,7 @@ func TestAddMember(t *testing.T) {
|
|||||||
if !reflect.DeepEqual(gaction, wactions) {
|
if !reflect.DeepEqual(gaction, wactions) {
|
||||||
t.Errorf("action = %v, want %v", gaction, wactions)
|
t.Errorf("action = %v, want %v", gaction, wactions)
|
||||||
}
|
}
|
||||||
wcsactions := []action{{name: "Create", params: []interface{}{m}}}
|
wcsactions := []action{{name: "Add", params: []interface{}{m}}}
|
||||||
if g := cs.Action(); !reflect.DeepEqual(g, wcsactions) {
|
if g := cs.Action(); !reflect.DeepEqual(g, wcsactions) {
|
||||||
t.Errorf("csaction = %v, want %v", g, wcsactions)
|
t.Errorf("csaction = %v, want %v", g, wcsactions)
|
||||||
}
|
}
|
||||||
@ -834,7 +834,7 @@ func TestRemoveMember(t *testing.T) {
|
|||||||
if !reflect.DeepEqual(gaction, wactions) {
|
if !reflect.DeepEqual(gaction, wactions) {
|
||||||
t.Errorf("action = %v, want %v", gaction, wactions)
|
t.Errorf("action = %v, want %v", gaction, wactions)
|
||||||
}
|
}
|
||||||
wcsactions := []action{{name: "Delete", params: []interface{}{id}}}
|
wcsactions := []action{{name: "Remove", params: []interface{}{id}}}
|
||||||
if g := cs.Action(); !reflect.DeepEqual(g, wcsactions) {
|
if g := cs.Action(); !reflect.DeepEqual(g, wcsactions) {
|
||||||
t.Errorf("csaction = %v, want %v", g, wcsactions)
|
t.Errorf("csaction = %v, want %v", g, wcsactions)
|
||||||
}
|
}
|
||||||
@ -1248,15 +1248,15 @@ type clusterStoreRecorder struct {
|
|||||||
recorder
|
recorder
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cs *clusterStoreRecorder) Create(m Member) {
|
func (cs *clusterStoreRecorder) Add(m Member) {
|
||||||
cs.record(action{name: "Create", params: []interface{}{m}})
|
cs.record(action{name: "Add", params: []interface{}{m}})
|
||||||
}
|
}
|
||||||
func (cs *clusterStoreRecorder) Get() Cluster {
|
func (cs *clusterStoreRecorder) Get() Cluster {
|
||||||
cs.record(action{name: "Get"})
|
cs.record(action{name: "Get"})
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
func (cs *clusterStoreRecorder) Delete(id int64) {
|
func (cs *clusterStoreRecorder) Remove(id int64) {
|
||||||
cs.record(action{name: "Delete", params: []interface{}{id}})
|
cs.record(action{name: "Remove", params: []interface{}{id}})
|
||||||
}
|
}
|
||||||
|
|
||||||
func mustClusterStore(t *testing.T, membs []Member) ClusterStore {
|
func mustClusterStore(t *testing.T, membs []Member) ClusterStore {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user