Skip to content

Commit

Permalink
Merge create and update shadow to one action (#311)
Browse files Browse the repository at this point in the history
  • Loading branch information
hannatao committed May 7, 2021
1 parent d35ad92 commit 99e7cea
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 21 deletions.
24 changes: 13 additions & 11 deletions service/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -121,17 +121,12 @@ func (n *NodeServiceImpl) Create(tx interface{}, namespace string, node *specV1.
return nil, err
}

shadow, err := n.Shadow.Create(tx, models.NewShadowFromNode(res))
if err != nil {
return nil, err
}

_, err = n.SysAppService.GenApps(tx, namespace, node)
if err != nil {
return nil, err
}

if err = n.updateNodeAndAppIndex(tx, namespace, res, shadow); err != nil {
if err = n.insertOrUpdateNodeAndAppIndex(tx, namespace, res, models.NewShadowFromNode(res), true); err != nil {
return nil, err
}
return res, err
Expand All @@ -154,7 +149,7 @@ func (n *NodeServiceImpl) Update(namespace string, node *specV1.Node) (*specV1.N
return nil, err
}

if err = n.updateNodeAndAppIndex(nil, namespace, res, shadow); err != nil {
if err = n.insertOrUpdateNodeAndAppIndex(nil, namespace, res, shadow, false); err != nil {
return nil, err
}
return res, nil
Expand Down Expand Up @@ -363,7 +358,7 @@ func (n *NodeServiceImpl) GetDesire(namespace, name string) (*specV1.Desire, err
return &shadow.Desire, nil
}

func (n *NodeServiceImpl) updateNodeAndAppIndex(tx interface{}, namespace string, node *specV1.Node, shadow *models.Shadow) error {
func (n *NodeServiceImpl) insertOrUpdateNodeAndAppIndex(tx interface{}, namespace string, node *specV1.Node, shadow *models.Shadow, flag bool) error {
apps, err := n.app.ListApplication(tx, namespace, &models.ListOptions{})
if err != nil {
log.L().Error("list application error", log.Error(err))
Expand All @@ -374,9 +369,16 @@ func (n *NodeServiceImpl) updateNodeAndAppIndex(tx interface{}, namespace string

node.Desire = desire

if _, err = n.updateDesire(tx, shadow, desire); err != nil {
log.L().Error("update node desired node failed", log.Error(err))
return err
if flag {
shadow.Desire = desire
if _, err = n.Shadow.Create(tx, shadow); err != nil {
return err
}
} else {
if _, err = n.updateDesire(tx, shadow, desire); err != nil {
log.L().Error("update node desired node failed", log.Error(err))
return err
}
}

if err = n.indexService.RefreshAppsIndexByNode(tx, namespace, node.Name, appNames); err != nil {
Expand Down
12 changes: 2 additions & 10 deletions service/node_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,6 @@ func TestDefaultNodeService_Create(t *testing.T) {
app: mockObject.app,
}
node := genNodeTestCase()
shadow := genShadowTestCase()
apps := &models.ApplicationList{
Items: []models.AppItem{
{Namespace: node.Namespace, Name: "app01", Version: "1", Selector: "test=example"},
Expand All @@ -169,13 +168,6 @@ func TestDefaultNodeService_Create(t *testing.T) {
assert.NotNil(t, err)

mockObject.node.EXPECT().CreateNode(nil, node.Namespace, node).Return(node, nil).AnyTimes()
mockObject.shadow.EXPECT().Create(gomock.Any(), gomock.Any()).Return(nil, fmt.Errorf("error"))
_, err = ns.Create(nil, node.Namespace, node)
assert.NotNil(t, err)

mockObject.shadow.EXPECT().Create(gomock.Any(), gomock.Any()).Return(shadow, nil).AnyTimes()
mockObject.shadow.EXPECT().Get(gomock.Any(), gomock.Any(), gomock.Any()).Return(shadow, nil).AnyTimes()

mockSysAppService.EXPECT().GenApps(nil, node.Namespace, gomock.Any()).Return(nil, fmt.Errorf("error"))
_, err = ns.Create(nil, node.Namespace, node)
assert.NotNil(t, err)
Expand All @@ -186,11 +178,11 @@ func TestDefaultNodeService_Create(t *testing.T) {
assert.NotNil(t, err)

mockObject.app.EXPECT().ListApplication(nil, node.Namespace, gomock.Any()).Return(apps, nil).AnyTimes()
mockObject.shadow.EXPECT().UpdateDesire(gomock.Any(), gomock.Any()).Return(nil, fmt.Errorf("error"))
mockObject.shadow.EXPECT().Create(gomock.Any(), gomock.Any()).Return(nil, fmt.Errorf("error"))
_, err = ns.Create(nil, node.Namespace, node)
assert.NotNil(t, err)

mockObject.shadow.EXPECT().UpdateDesire(gomock.Any(), gomock.Any()).Return(nil, nil).AnyTimes()
mockObject.shadow.EXPECT().Create(gomock.Any(), gomock.Any()).Return(nil, nil).AnyTimes()
mockIndexService.EXPECT().RefreshAppsIndexByNode(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return(fmt.Errorf("error"))
_, err = ns.Create(nil, node.Namespace, node)
assert.NotNil(t, err)
Expand Down

0 comments on commit 99e7cea

Please sign in to comment.