Update registry util semantics

This commit is contained in:
Asim Aslam
2019-07-04 11:36:49 +01:00
parent 59a0e727e4
commit a412486c39
5 changed files with 71 additions and 68 deletions

View File

@@ -1,6 +1,56 @@
package registry
func CopyServices(current []*Service) []*Service {
func addNodes(old, neu []*Node) []*Node {
var nodes []*Node
// add all new nodes
for _, n := range neu {
node := *n
nodes = append(nodes, &node)
}
// look at old nodes
for _, o := range old {
var exists bool
// check against new nodes
for _, n := range nodes {
// ids match then skip
if o.Id == n.Id {
exists = true
break
}
}
// keep old node
if !exists {
node := *o
nodes = append(nodes, &node)
}
}
return nodes
}
func delNodes(old, del []*Node) []*Node {
var nodes []*Node
for _, o := range old {
var rem bool
for _, n := range del {
if o.Id == n.Id {
rem = true
break
}
}
if !rem {
nodes = append(nodes, o)
}
}
return nodes
}
// Copy makes a copy of services
func Copy(current []*Service) []*Service {
var services []*Service
for _, service := range current {
@@ -33,39 +83,8 @@ func CopyServices(current []*Service) []*Service {
return services
}
func addServiceNodes(old, neu []*Node) []*Node {
var nodes []*Node
// add all new nodes
for _, n := range neu {
node := *n
nodes = append(nodes, &node)
}
// look at old nodes
for _, o := range old {
var exists bool
// check against new nodes
for _, n := range nodes {
// ids match then skip
if o.Id == n.Id {
exists = true
break
}
}
// keep old node
if !exists {
node := *o
nodes = append(nodes, &node)
}
}
return nodes
}
func AddServices(olist []*Service, nlist []*Service) []*Service {
// Merge merges two lists of services and returns a new copy
func Merge(olist []*Service, nlist []*Service) []*Service {
var srv []*Service
for _, n := range nlist {
@@ -76,7 +95,7 @@ func AddServices(olist []*Service, nlist []*Service) []*Service {
// make copy
*sp = *o
// set nodes
sp.Nodes = addServiceNodes(o.Nodes, n.Nodes)
sp.Nodes = addNodes(o.Nodes, n.Nodes)
// mark as seen
seen = true
@@ -90,30 +109,14 @@ func AddServices(olist []*Service, nlist []*Service) []*Service {
}
}
if !seen {
srv = append(srv, CopyServices([]*Service{n})...)
srv = append(srv, Copy([]*Service{n})...)
}
}
return srv
}
func delServiceNodes(old, del []*Node) []*Node {
var nodes []*Node
for _, o := range old {
var rem bool
for _, n := range del {
if o.Id == n.Id {
rem = true
break
}
}
if !rem {
nodes = append(nodes, o)
}
}
return nodes
}
func DelServices(old, del []*Service) []*Service {
// Remove removes services and returns a new copy
func Remove(old, del []*Service) []*Service {
var services []*Service
for _, o := range old {
@@ -124,7 +127,7 @@ func DelServices(old, del []*Service) []*Service {
for _, s := range del {
if srv.Version == s.Version {
srv.Nodes = delServiceNodes(srv.Nodes, s.Nodes)
srv.Nodes = delNodes(srv.Nodes, s.Nodes)
if len(srv.Nodes) == 0 {
rem = true