Skip to content

Commit f36e733

Browse files
authored
Merge pull request #1550 from sanimej/plumb
Separate service LB & SD from network plumbing
2 parents 0d220ff + 19e42ae commit f36e733

File tree

4 files changed

+65
-24
lines changed

4 files changed

+65
-24
lines changed

agent.go

Lines changed: 52 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,57 @@ func (n *network) leaveCluster() error {
381381
return c.agent.networkDB.LeaveNetwork(n.ID())
382382
}
383383

384-
func (ep *endpoint) addToCluster() error {
384+
func (ep *endpoint) addDriverInfoToCluster() error {
385+
n := ep.getNetwork()
386+
if !n.isClusterEligible() {
387+
return nil
388+
}
389+
if ep.joinInfo == nil {
390+
return nil
391+
}
392+
393+
ctrlr := n.ctrlr
394+
ctrlr.Lock()
395+
agent := ctrlr.agent
396+
ctrlr.Unlock()
397+
if agent == nil {
398+
return nil
399+
}
400+
401+
for _, te := range ep.joinInfo.driverTableEntries {
402+
if err := agent.networkDB.CreateEntry(te.tableName, n.ID(), te.key, te.value); err != nil {
403+
return err
404+
}
405+
}
406+
return nil
407+
}
408+
409+
func (ep *endpoint) deleteDriverInfoFromCluster() error {
410+
n := ep.getNetwork()
411+
if !n.isClusterEligible() {
412+
return nil
413+
}
414+
if ep.joinInfo == nil {
415+
return nil
416+
}
417+
418+
ctrlr := n.ctrlr
419+
ctrlr.Lock()
420+
agent := ctrlr.agent
421+
ctrlr.Unlock()
422+
if agent == nil {
423+
return nil
424+
}
425+
426+
for _, te := range ep.joinInfo.driverTableEntries {
427+
if err := agent.networkDB.DeleteEntry(te.tableName, n.ID(), te.key); err != nil {
428+
return err
429+
}
430+
}
431+
return nil
432+
}
433+
434+
func (ep *endpoint) addServiceInfoToCluster() error {
385435
n := ep.getNetwork()
386436
if !n.isClusterEligible() {
387437
return nil
@@ -421,16 +471,10 @@ func (ep *endpoint) addToCluster() error {
421471
}
422472
}
423473

424-
for _, te := range ep.joinInfo.driverTableEntries {
425-
if err := c.agent.networkDB.CreateEntry(te.tableName, n.ID(), te.key, te.value); err != nil {
426-
return err
427-
}
428-
}
429-
430474
return nil
431475
}
432476

433-
func (ep *endpoint) deleteFromCluster() error {
477+
func (ep *endpoint) deleteServiceInfoFromCluster() error {
434478
n := ep.getNetwork()
435479
if !n.isClusterEligible() {
436480
return nil
@@ -453,17 +497,6 @@ func (ep *endpoint) deleteFromCluster() error {
453497
return err
454498
}
455499
}
456-
457-
if ep.joinInfo == nil {
458-
return nil
459-
}
460-
461-
for _, te := range ep.joinInfo.driverTableEntries {
462-
if err := c.agent.networkDB.DeleteEntry(te.tableName, n.ID(), te.key); err != nil {
463-
return err
464-
}
465-
}
466-
467500
return nil
468501
}
469502

endpoint.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -515,6 +515,10 @@ func (ep *endpoint) sbJoin(sb *sandbox, options ...EndpointOption) error {
515515
return err
516516
}
517517

518+
if err = ep.addDriverInfoToCluster(); err != nil {
519+
return err
520+
}
521+
518522
if sb.needDefaultGW() && sb.getEndpointInGWNetwork() == nil {
519523
return sb.setupDefaultGW()
520524
}
@@ -709,8 +713,12 @@ func (ep *endpoint) sbLeave(sb *sandbox, force bool, options ...EndpointOption)
709713
return err
710714
}
711715

712-
if e := ep.deleteFromCluster(); e != nil {
713-
logrus.Errorf("Could not delete state for endpoint %s from cluster: %v", ep.Name(), e)
716+
if e := ep.deleteServiceInfoFromCluster(); e != nil {
717+
logrus.Errorf("Could not delete service state for endpoint %s from cluster: %v", ep.Name(), e)
718+
}
719+
720+
if e := ep.deleteDriverInfoFromCluster(); e != nil {
721+
logrus.Errorf("Could not delete endpoint state for endpoint %s from cluster: %v", ep.Name(), e)
714722
}
715723

716724
sb.deleteHostsEntries(n.getSvcRecords(ep))

networkdb/networkdb.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ func (nDB *NetworkDB) CreateEntry(tname, nid, key string, value []byte) error {
265265
}
266266

267267
if err := nDB.sendTableEvent(TableEventTypeCreate, nid, tname, key, entry); err != nil {
268-
return fmt.Errorf("cannot send table create event: %v", err)
268+
return fmt.Errorf("cannot send create event for table %s, %v", tname, err)
269269
}
270270

271271
nDB.Lock()

sandbox.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -670,7 +670,7 @@ func (sb *sandbox) SetKey(basePath string) error {
670670
func (sb *sandbox) EnableService() error {
671671
for _, ep := range sb.getConnectedEndpoints() {
672672
if ep.enableService(true) {
673-
if err := ep.addToCluster(); err != nil {
673+
if err := ep.addServiceInfoToCluster(); err != nil {
674674
ep.enableService(false)
675675
return fmt.Errorf("could not update state for endpoint %s into cluster: %v", ep.Name(), err)
676676
}
@@ -682,7 +682,7 @@ func (sb *sandbox) EnableService() error {
682682
func (sb *sandbox) DisableService() error {
683683
for _, ep := range sb.getConnectedEndpoints() {
684684
if ep.enableService(false) {
685-
if err := ep.deleteFromCluster(); err != nil {
685+
if err := ep.deleteServiceInfoFromCluster(); err != nil {
686686
ep.enableService(true)
687687
return fmt.Errorf("could not delete state for endpoint %s from cluster: %v", ep.Name(), err)
688688
}

0 commit comments

Comments
 (0)