Migrate function docs_by_service_category

This commit is contained in:
Gode, Sebastian 2025-04-09 13:55:03 +00:00
parent e87a2c2b57
commit f18cf1ee35
3 changed files with 33 additions and 9 deletions

View File

@ -30,12 +30,16 @@ def read_data(filename):
data.setdefault("documents", list())
data.setdefault("services", list())
data.setdefault("service_categories", list())
data.setdefault("repositories", list())
for item in pathlib.Path(DATA_DIR, "documents").glob("*.yaml"):
with open(item, "r") as fp:
data["documents"].append(yaml.safe_load(fp))
for item in pathlib.Path(DATA_DIR, "services").glob("*.yaml"):
with open(item, "r") as fp:
data["services"].append(yaml.safe_load(fp))
for item in pathlib.Path(DATA_DIR, "repositories").glob("*.yaml"):
with open(item, "r") as fp:
data["repositories"].append(yaml.safe_load(fp))
for item in pathlib.Path(DATA_DIR, "service_categories").glob(
"*.yaml"
):

View File

@ -20,3 +20,4 @@
documents: []
service_categories: []
services: []
repositories: []

View File

@ -13,6 +13,7 @@
import copy
import warnings
import json
import otc_metadata.data
@ -48,6 +49,11 @@ class Services(object):
self._service_data["services"],
key=lambda x: f"{x.get('service_type')}{x.get('service_title')}",
)
# sort repositories by <service_type>
self._service_data["repositories"] = sorted(
self._service_data["repositories"],
key=lambda x: f"{x.get('service_type')}",
)
# sort service categories by <name>_<title>
self._service_data["service_categories"] = sorted(
self._service_data["service_categories"],
@ -71,6 +77,11 @@ class Services(object):
"Service Docs data listing."
return copy.deepcopy(self._service_data["documents"])
@property
def all_repositories(self):
"Service Repositories data listing."
return copy.deepcopy(self._service_data["repositories"])
@property
def service_dict(self):
"Service Docs data listing."
@ -178,10 +189,10 @@ class Services(object):
return res
def docs_by_service_category(self, category, environment=None):
"""List services matching category
"""List docs matching category
:param str category: Category name
:param str env: Optional service environment. Influeces "repository"
:param str environment: Optional service environment. Influeces "repository"
field
"""
res = []
@ -193,13 +204,21 @@ class Services(object):
warnings.warn("No Service defition of type %s" % (cat))
continue
if service["service_category"] == category:
res_doc = copy.deepcopy(doc)
res_doc.update(**service)
if environment:
for srv_env in service["repositories"]:
if srv_env.get("environment") == environment:
res_doc["repository"] = srv_env["repo"]
res.append(res_doc)
for repositories in self.all_repositories:
if repositories["service_type"] == service["service_type"]:
res_doc = copy.deepcopy(doc)
res_doc["repositories"] = repositories["repositories"]
res_doc.update(**service)
# Get the cloud environments from the document instead of service
res_doc["cloud_environments"] = doc["cloud_environments"]
if environment:
repo_env_filter = []
for repo in repositories["repositories"]:
if repo["environment"] == environment:
repo_env_filter.append(repo)
res_doc["repositories"] = repo_env_filter
res.append(res_doc)
return res
def docs_by_service_type(self, service_type):