Migrate function docs_by_service_category
This commit is contained in:
parent
e87a2c2b57
commit
f18cf1ee35
@ -30,12 +30,16 @@ def read_data(filename):
|
|||||||
data.setdefault("documents", list())
|
data.setdefault("documents", list())
|
||||||
data.setdefault("services", list())
|
data.setdefault("services", list())
|
||||||
data.setdefault("service_categories", list())
|
data.setdefault("service_categories", list())
|
||||||
|
data.setdefault("repositories", list())
|
||||||
for item in pathlib.Path(DATA_DIR, "documents").glob("*.yaml"):
|
for item in pathlib.Path(DATA_DIR, "documents").glob("*.yaml"):
|
||||||
with open(item, "r") as fp:
|
with open(item, "r") as fp:
|
||||||
data["documents"].append(yaml.safe_load(fp))
|
data["documents"].append(yaml.safe_load(fp))
|
||||||
for item in pathlib.Path(DATA_DIR, "services").glob("*.yaml"):
|
for item in pathlib.Path(DATA_DIR, "services").glob("*.yaml"):
|
||||||
with open(item, "r") as fp:
|
with open(item, "r") as fp:
|
||||||
data["services"].append(yaml.safe_load(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(
|
for item in pathlib.Path(DATA_DIR, "service_categories").glob(
|
||||||
"*.yaml"
|
"*.yaml"
|
||||||
):
|
):
|
||||||
|
@ -20,3 +20,4 @@
|
|||||||
documents: []
|
documents: []
|
||||||
service_categories: []
|
service_categories: []
|
||||||
services: []
|
services: []
|
||||||
|
repositories: []
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
import copy
|
import copy
|
||||||
import warnings
|
import warnings
|
||||||
|
import json
|
||||||
|
|
||||||
import otc_metadata.data
|
import otc_metadata.data
|
||||||
|
|
||||||
@ -48,6 +49,11 @@ class Services(object):
|
|||||||
self._service_data["services"],
|
self._service_data["services"],
|
||||||
key=lambda x: f"{x.get('service_type')}{x.get('service_title')}",
|
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>
|
# sort service categories by <name>_<title>
|
||||||
self._service_data["service_categories"] = sorted(
|
self._service_data["service_categories"] = sorted(
|
||||||
self._service_data["service_categories"],
|
self._service_data["service_categories"],
|
||||||
@ -71,6 +77,11 @@ class Services(object):
|
|||||||
"Service Docs data listing."
|
"Service Docs data listing."
|
||||||
return copy.deepcopy(self._service_data["documents"])
|
return copy.deepcopy(self._service_data["documents"])
|
||||||
|
|
||||||
|
@property
|
||||||
|
def all_repositories(self):
|
||||||
|
"Service Repositories data listing."
|
||||||
|
return copy.deepcopy(self._service_data["repositories"])
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def service_dict(self):
|
def service_dict(self):
|
||||||
"Service Docs data listing."
|
"Service Docs data listing."
|
||||||
@ -178,10 +189,10 @@ class Services(object):
|
|||||||
return res
|
return res
|
||||||
|
|
||||||
def docs_by_service_category(self, category, environment=None):
|
def docs_by_service_category(self, category, environment=None):
|
||||||
"""List services matching category
|
"""List docs matching category
|
||||||
|
|
||||||
:param str category: Category name
|
:param str category: Category name
|
||||||
:param str env: Optional service environment. Influeces "repository"
|
:param str environment: Optional service environment. Influeces "repository"
|
||||||
field
|
field
|
||||||
"""
|
"""
|
||||||
res = []
|
res = []
|
||||||
@ -193,12 +204,20 @@ class Services(object):
|
|||||||
warnings.warn("No Service defition of type %s" % (cat))
|
warnings.warn("No Service defition of type %s" % (cat))
|
||||||
continue
|
continue
|
||||||
if service["service_category"] == category:
|
if service["service_category"] == category:
|
||||||
|
for repositories in self.all_repositories:
|
||||||
|
if repositories["service_type"] == service["service_type"]:
|
||||||
res_doc = copy.deepcopy(doc)
|
res_doc = copy.deepcopy(doc)
|
||||||
|
res_doc["repositories"] = repositories["repositories"]
|
||||||
res_doc.update(**service)
|
res_doc.update(**service)
|
||||||
|
|
||||||
|
# Get the cloud environments from the document instead of service
|
||||||
|
res_doc["cloud_environments"] = doc["cloud_environments"]
|
||||||
if environment:
|
if environment:
|
||||||
for srv_env in service["repositories"]:
|
repo_env_filter = []
|
||||||
if srv_env.get("environment") == environment:
|
for repo in repositories["repositories"]:
|
||||||
res_doc["repository"] = srv_env["repo"]
|
if repo["environment"] == environment:
|
||||||
|
repo_env_filter.append(repo)
|
||||||
|
res_doc["repositories"] = repo_env_filter
|
||||||
res.append(res_doc)
|
res.append(res_doc)
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user