// fetchRelations returns a map of all relations keyed by service name. // // This structure is useful for processServiceRelations() which needs // to have the relations for each service. Reading them once here // avoids the repeated DB hits to retrieve the relations for each // service that used to happen in processServiceRelations(). func fetchRelations(st *state.State) (map[string][]*state.Relation, error) { relations, err := st.AllRelations() if err != nil { return nil, err } out := make(map[string][]*state.Relation) for _, relation := range relations { for _, ep := range relation.Endpoints() { out[ep.ServiceName] = append(out[ep.ServiceName], relation) } } return out, nil }