and another fixes
This commit is contained in:
		
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -12,6 +12,7 @@
 | 
				
			|||||||
# limitations under the License.
 | 
					# limitations under the License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import copy
 | 
					import copy
 | 
				
			||||||
 | 
					import warnings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import otc_metadata.data
 | 
					import otc_metadata.data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -32,13 +33,17 @@ class Services(object):
 | 
				
			|||||||
    def __init__(self):
 | 
					    def __init__(self):
 | 
				
			||||||
        self._service_data = BUILTIN_DATA
 | 
					        self._service_data = BUILTIN_DATA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def _sorted_data(self):
 | 
					    def _sort_data(self):
 | 
				
			||||||
        self._service_data['documents'] = sorted(
 | 
					        self._service_data['documents'] = sorted(
 | 
				
			||||||
            self._service_data['documents'], 
 | 
					            self._service_data['documents'],
 | 
				
			||||||
 | 
					            key=lambda x: f"{x.get('service_type')}{x.get('title')}"
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        self._service_data['documents'] = sorted(
 | 
				
			||||||
 | 
					            self._service_data['documents'],
 | 
				
			||||||
            key=lambda x: f"{x.get('service_type')}{x.get('title')}"
 | 
					            key=lambda x: f"{x.get('service_type')}{x.get('title')}"
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        self._service_data['services'] = sorted(
 | 
					        self._service_data['services'] = sorted(
 | 
				
			||||||
            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')}"
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -66,6 +71,15 @@ class Services(object):
 | 
				
			|||||||
            res[srv["service_type"]] = copy.deepcopy(srv)
 | 
					            res[srv["service_type"]] = copy.deepcopy(srv)
 | 
				
			||||||
        return res
 | 
					        return res
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @property
 | 
				
			||||||
 | 
					    def service_categories(self):
 | 
				
			||||||
 | 
					        """List services categories
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        res = []
 | 
				
			||||||
 | 
					        for cat in self._service_data["service_categories"]:
 | 
				
			||||||
 | 
					            res.append(copy.deepcopy(cat))
 | 
				
			||||||
 | 
					        return res
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def services_by_category(self, category):
 | 
					    def services_by_category(self, category):
 | 
				
			||||||
        """List services matching category
 | 
					        """List services matching category
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
@ -75,6 +89,33 @@ class Services(object):
 | 
				
			|||||||
                res.append(copy.deepcopy(srv))
 | 
					                res.append(copy.deepcopy(srv))
 | 
				
			||||||
        return res
 | 
					        return res
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def services_with_docs_by_category(self, category, environment=None):
 | 
				
			||||||
 | 
					        """Retrieve service category docs data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        :param str category: Optional Category filter
 | 
				
			||||||
 | 
					        :param str env: Optional service environment. Influeces "repository"
 | 
				
			||||||
 | 
					            field
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        res = dict()
 | 
				
			||||||
 | 
					        services = self.service_dict
 | 
				
			||||||
 | 
					        for doc in self.all_docs:
 | 
				
			||||||
 | 
					            cat = doc["service_type"]
 | 
				
			||||||
 | 
					            service = services.get(cat)
 | 
				
			||||||
 | 
					            if not service:
 | 
				
			||||||
 | 
					                warnings.warn("No Service defition of type %s" % (cat))
 | 
				
			||||||
 | 
					                continue
 | 
				
			||||||
 | 
					            if category and service["service_category"] != category:
 | 
				
			||||||
 | 
					                continue
 | 
				
			||||||
 | 
					            res.setdefault(cat, service)
 | 
				
			||||||
 | 
					            res_doc = copy.deepcopy(doc)
 | 
				
			||||||
 | 
					            res_doc.update(**service)
 | 
				
			||||||
 | 
					            if environment:
 | 
				
			||||||
 | 
					                if "environment" in doc and doc["environment"] != environment:
 | 
				
			||||||
 | 
					                    continue
 | 
				
			||||||
 | 
					            res[cat].setdefault("docs", [])
 | 
				
			||||||
 | 
					            res[cat]["docs"].append(res_doc)
 | 
				
			||||||
 | 
					        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 services matching category
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -85,11 +126,15 @@ class Services(object):
 | 
				
			|||||||
        res = []
 | 
					        res = []
 | 
				
			||||||
        services = self.service_dict
 | 
					        services = self.service_dict
 | 
				
			||||||
        for doc in self.all_docs:
 | 
					        for doc in self.all_docs:
 | 
				
			||||||
            service = services[doc["service_type"]]
 | 
					            cat = doc["service_type"]
 | 
				
			||||||
 | 
					            service = services.get(cat)
 | 
				
			||||||
 | 
					            if not service:
 | 
				
			||||||
 | 
					                warnings.warn("No Service defition of type %s" % (cat))
 | 
				
			||||||
 | 
					                continue
 | 
				
			||||||
            if service["service_category"] == category:
 | 
					            if service["service_category"] == category:
 | 
				
			||||||
                res_doc = copy.deepcopy(doc)
 | 
					                res_doc = copy.deepcopy(doc)
 | 
				
			||||||
                res_doc.update(**service)
 | 
					                res_doc.update(**service)
 | 
				
			||||||
                if env:
 | 
					                if environment:
 | 
				
			||||||
                    for srv_env in service["repositories"]:
 | 
					                    for srv_env in service["repositories"]:
 | 
				
			||||||
                        if srv_env.get("environment") == environment:
 | 
					                        if srv_env.get("environment") == environment:
 | 
				
			||||||
                            res_doc["repository"] = srv_env["repo"]
 | 
					                            res_doc["repository"] = srv_env["repo"]
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user