Migrate function docs_by_service_category
This commit is contained in:
		@ -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"
 | 
			
		||||
        ):
 | 
			
		||||
 | 
			
		||||
@ -20,3 +20,4 @@
 | 
			
		||||
documents: []
 | 
			
		||||
service_categories: []
 | 
			
		||||
services: []
 | 
			
		||||
repositories: []
 | 
			
		||||
 | 
			
		||||
@ -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"],
 | 
			
		||||
@ -70,6 +76,11 @@ class Services(object):
 | 
			
		||||
    def all_docs(self):
 | 
			
		||||
        "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):
 | 
			
		||||
@ -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):
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user