mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-01-05 03:40:01 -06:00
aggregate services by versions
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
This commit is contained in:
@@ -138,20 +138,28 @@ func (n *storeregistry) listServices(opts ...store.ListOption) ([]*registry.Serv
|
||||
return nil, err
|
||||
}
|
||||
|
||||
svcs := make([]*registry.Service, 0, len(keys))
|
||||
versions := map[string]*registry.Service{}
|
||||
for _, k := range keys {
|
||||
s, err := n.getService(k)
|
||||
s, err := n.getNode(k)
|
||||
if err != nil {
|
||||
// TODO: continue ?
|
||||
return nil, err
|
||||
}
|
||||
if versions[s.Version] == nil {
|
||||
versions[s.Version] = s
|
||||
} else {
|
||||
versions[s.Version].Nodes = append(versions[s.Version].Nodes, s.Nodes...)
|
||||
}
|
||||
}
|
||||
svcs := make([]*registry.Service, 0, len(versions))
|
||||
for _, s := range versions {
|
||||
svcs = append(svcs, s)
|
||||
|
||||
}
|
||||
return svcs, nil
|
||||
}
|
||||
|
||||
func (n *storeregistry) getService(s string) (*registry.Service, error) {
|
||||
// getNode retrieves a node from the store. It returns a service to also keep track of the version.
|
||||
func (n *storeregistry) getNode(s string) (*registry.Service, error) {
|
||||
recs, err := n.store.Read(s)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
Reference in New Issue
Block a user