From 9a7a97abb8f11f7b8dd28392d415f461ddf632a0 Mon Sep 17 00:00:00 2001 From: Artem Goncharov Date: Tue, 23 Aug 2022 12:56:56 +0200 Subject: [PATCH] and another fixes --- otc_metadata/data/services.yaml | 128 ++++++++++++++++++-------------- otc_metadata/services.py | 55 ++++++++++++-- 2 files changed, 122 insertions(+), 61 deletions(-) diff --git a/otc_metadata/data/services.yaml b/otc_metadata/data/services.yaml index 7a5f4a84..0c69da00 100644 --- a/otc_metadata/data/services.yaml +++ b/otc_metadata/data/services.yaml @@ -15,49 +15,49 @@ documents: type: umn - html_location: docs/aom/api-ref pdf_name: aom-api-ref - rst_location: docs/aom/api-ref + rst_location: api-ref/source service_type: aom title: API Reference link: /api-ref/application-operations-management/ type: api-ref - html_location: docs/aom/umn pdf_name: aom-umn - rst_location: docs/aom/umn + rst_location: umn/source service_type: aom title: User Guide link: /umn/application-operations-management/ type: umn - html_location: docs/as/api-ref pdf_name: as-api-ref - rst_location: docs/as/api-ref + rst_location: api-ref/source service_type: as title: API Reference link: /api-ref/auto-scaling/ type: api-ref - html_location: docs/as/dev pdf_name: as-dev-guide - rst_location: docs/as/dev + rst_location: dev_guide/source service_type: as title: Developer Guide link: /dev/auto-scaling/ type: dev - html_location: docs/as/umn pdf_name: as-umn - rst_location: docs/as/umn + rst_location: umn/source service_type: as title: User Guide link: /umn/auto-scaling/ type: umn - html_location: docs/bms/api-ref pdf_name: bms-api-ref - rst_location: docs/bms/api-ref + rst_location: api-ref/source service_type: bms title: API Reference link: /api-ref/bare-metal-server/ type: api-ref - html_location: docs/bms/dev pdf_name: bms-dev-guide - rst_location: docs/bms/dev + rst_location: dev_guide/source service_type: bms title: Developer Guide link: /dev/bare-metal-server/ @@ -69,7 +69,7 @@ documents: title: Private Image Creation Guide - html_location: docs/bms/umn pdf_name: bms-umn - rst_location: docs/bms/umn + rst_location: umn/source service_type: bms title: User Guide link: /umn/bare-metal-server/ @@ -90,14 +90,14 @@ documents: type: umn - html_location: docs/cce/api-ref pdf_name: cce-api-ref - rst_location: docs/cce/api-ref + rst_location: api-ref/source service_type: cce title: API Reference link: /api-ref/cloud-container-service/ type: api-ref - html_location: docs/cce/umn pdf_name: cce-umn - rst_location: docs/cce/umn + rst_location: umn/source service_type: cce title: User Guide link: /umn/cloud-container-service/ @@ -139,14 +139,14 @@ documents: type: umn - html_location: docs/css/api-ref pdf_name: css-api-ref - rst_location: docs/css/api-ref + rst_location: api-ref/source service_type: css title: API Reference link: /api-ref/cloud-search-service/ type: api-ref - html_location: docs/css/umn pdf_name: css-umn - rst_location: docs/css/umn + rst_location: umn/source service_type: css title: User Guide link: /umn/cloud-search-service/ @@ -167,7 +167,7 @@ documents: type: umn - html_location: docs/das/umn pdf_name: das-umn - rst_location: docs/das/umn + rst_location: umn/source service_type: das title: User Guide link: /umn/data-admin-service/ @@ -188,77 +188,77 @@ documents: type: umn - html_location: docs/dcs/api-ref pdf_name: dcs-api-ref - rst_location: docs/dcs/api-ref + rst_location: api-ref/source service_type: dcs title: API Reference link: /api-ref/distributed-cache-service/ type: api-ref - html_location: docs/dcs/umn pdf_name: dcs-umn - rst_location: docs/dcs/umn + rst_location: umn/source service_type: dcs title: User Guide link: /umn/distributed-cache-service/ type: umn - html_location: docs/dds/api-ref pdf_name: dds-api-ref - rst_location: docs/dds/api-ref + rst_location: api-ref/source service_type: dds title: API Reference link: /api-ref/document-database-service/ type: api-ref - html_location: docs/dds/umn pdf_name: dds-umn - rst_location: docs/dds/umn + rst_location: umn/source service_type: dds title: User Guide link: /umn/document-database-service/ type: umn - html_location: docs/deh/api-ref pdf_name: deh-api-ref - rst_location: docs/deh/api-ref + rst_location: api-ref/source service_type: deh title: API Reference link: /api-ref/dedicated-host/ type: api-ref - html_location: docs/deh/umn pdf_name: deh-umn - rst_location: docs/deh/umn + rst_location: umn/source service_type: deh title: User Guide link: /umn/dedicated-host/ type: umn - html_location: docs/dis/api-ref pdf_name: dis-api-ref - rst_location: docs/dis/api-ref + rst_location: api-ref/source service_type: dis title: API Reference link: /api-ref/data-ingestion-service/ type: api-ref - html_location: docs/dis/umn pdf_name: dis-umn - rst_location: docs/dis/umn + rst_location: umn/source service_type: dis title: User Guide link: /umn/data-ingestion-service/ type: umn - html_location: docs/dms/api-ref pdf_name: dms-api-ref - rst_location: docs/dms/api-ref + rst_location: api-ref/source service_type: dms title: API Reference link: /api-ref/distributed-message-service/ type: api-ref - html_location: docs/dms/dev pdf_name: dms-dev-guide - rst_location: docs/dms/dev + rst_location: dev_guide/source service_type: dms title: Developer Guide link: /dev/distributed-message-service/ type: dev - html_location: docs/dms/umn pdf_name: dms-umn - rst_location: docs/dms/umn + rst_location: umn/source service_type: dms title: User Guide link: /umn/distributed-message-service/ @@ -279,54 +279,60 @@ documents: type: umn - html_location: docs/drs/umn pdf_name: drs-umn - rst_location: docs/drs/umn + rst_location: umn/source service_type: drs title: User Guide link: /umn/data-replication-service/ type: umn - html_location: docs/dws/api-ref pdf_name: dws-api-ref - rst_location: docs/dws/api-ref + rst_location: api-ref/source service_type: dws title: API Reference - link: /api-ref/data-ingestion-service/ + link: /api-ref/data-warehouse-service/ type: api-ref - html_location: docs/dws/dev pdf_name: dws-dev-guide - rst_location: docs/dws/dev + rst_location: dev_guide/source service_type: dws title: Developer Guide - link: /dev/data-ingestion-service/ + link: /dev/data-warehouse-service/ type: dev - html_location: docs/dws/tool pdf_name: dws-tool-guide - rst_location: docs/dws/tool + rst_location: doc/tool/source service_type: dws title: Tool Guide - html_location: docs/dws/umn pdf_name: dws-umn - rst_location: docs/dws/umn + rst_location: umn/source service_type: dws title: User Guide - link: /umn/data-ingestion-service/ + link: /umn/data-warehouse-service/ type: umn - html_location: docs/ecs/api-ref pdf_name: ecs-api-ref - rst_location: docs/ecs/api-ref + rst_location: api-ref/source service_type: ecs title: API Reference link: /api-ref/elastic-cloud-server/ type: api-ref - html_location: docs/ecs/dev pdf_name: ecs-dev-guide - rst_location: docs/ecs/dev + rst_location: dev_guide/source service_type: ecs title: Developer Guide link: /dev/elastic-cloud-server/ type: dev + - rst_location: docs/ecs/hld + service_type: ecs + title: HLD + link: /not_present/elastic-cloud-server/ + type: hld + environment: internal - html_location: docs/ecs/umn pdf_name: ecs-umn - rst_location: docs/ecs/umn + rst_location: umn/source service_type: ecs title: User Guide link: /umn/elastic-cloud-server/ @@ -387,14 +393,14 @@ documents: type: umn - html_location: docs/gaussdb_mysql/api-ref pdf_name: gaussdb_mysql-api-ref - rst_location: docs/gaussdb_mysql/api-ref + rst_location: api-ref/source service_type: gaussdb_mysql title: API Reference link: /api-ref/gaussdb-mysql/ type: api-ref - html_location: docs/gaussdb_mysql/umn pdf_name: gaussdb_mysql-umn - rst_location: docs/gaussdb_mysql/umn + rst_location: umn/source service_type: gaussdb_mysql title: User Guide link: /umn/gaussdb-mysql/ @@ -422,14 +428,14 @@ documents: type: umn - html_location: docs/ims/api-ref pdf_name: ims-api-ref - rst_location: docs/ims/api-ref + rst_location: api-ref/source service_type: ims title: API Reference link: /api-ref/image-management-service/ type: api-ref - html_location: docs/ims/dev pdf_name: ims-dev-guide - rst_location: docs/ims/dev + rst_location: dev_guide/source service_type: ims title: Developer Guide link: /dev/image-management-service/ @@ -441,7 +447,7 @@ documents: title: Public Image Introduction - html_location: docs/ims/umn pdf_name: ims-umn - rst_location: docs/ims/umn + rst_location: umn/source service_type: ims title: User Guide link: /umn/image-management-service/ @@ -476,21 +482,21 @@ documents: type: umn - html_location: docs/modelarts/api-ref pdf_name: ma-api-ref - rst_location: docs/modelarts/api-ref + rst_location: api-ref/source service_type: ma title: API Reference link: /api-ref/modelarts/ type: api-ref - html_location: docs/modelarts/umn pdf_name: ma-umn - rst_location: docs/modelarts/umn + rst_location: umn/source service_type: ma title: User Guide link: /umn/modelarts/ type: umn - html_location: docs/mrs/api-ref pdf_name: mrs-api-ref - rst_location: docs/mrs/api-ref + rst_location: api-ref/source service_type: mrs title: API Reference link: /api-ref/mapreduce-service/ @@ -502,7 +508,7 @@ documents: title: Component Operation Guide - html_location: docs/mrs/umn pdf_name: mrs-umn - rst_location: docs/mrs/umn + rst_location: umn/source service_type: mrs title: User Guide link: /umn/mapreduce-service/ @@ -651,28 +657,28 @@ documents: type: umn - html_location: docs/smn/api-ref pdf_name: smn-api-ref - rst_location: docs/smn/api-ref + rst_location: api-ref/source service_type: smn title: API Reference link: /api-ref/simple-message-notification/ type: api-ref - html_location: docs/smn/umn pdf_name: smn-umn - rst_location: docs/smn/umn + rst_location: umn/source service_type: smn title: User Guide link: /umn/simple-message-notification/ type: umn - html_location: docs/swr/api-ref pdf_name: swr-api-ref - rst_location: docs/swr/api-ref + rst_location: api-ref/source service_type: swr title: API Reference link: /api-ref/software-repository-container/ type: api-ref - html_location: docs/swr/umn pdf_name: swr-umn - rst_location: docs/swr/umn + rst_location: umn/source service_type: swr title: User Guide link: /umn/software-repository-container/ @@ -719,17 +725,17 @@ documents: title: User Guide link: /umn/virtual-private-cloud/ type: umn - - html_location: docs/vpce/api-ref - pdf_name: vpce-api-ref + - html_location: docs/vpcep/api-ref + pdf_name: vpcep-api-ref rst_location: api-ref/source - service_type: vpce + service_type: vpcep title: API Reference link: /api-ref/vpc-endpoint/ type: api-ref - - html_location: docs/vpce/umn - pdf_name: vpce-umn + - html_location: docs/vpcep/umn + pdf_name: vpcep-umn rst_location: umn/source - service_type: vpce + service_type: vpcep title: User Guide link: /umn/vpc-endpoint/ type: umn @@ -768,6 +774,7 @@ documents: title: API Reference link: /api-ref/web-application-firewall-dedicated/ type: api-ref + environment: internal - html_location: docs/wafd/umn pdf_name: wafd-umn rst_location: umn/source @@ -775,15 +782,24 @@ documents: title: User Guide link: /umn/web-application-firewall-dedicated/ type: umn + environment: internal service_categories: - name: application + title: Application Services - name: big_data + title: Big Data and Data Analysis - name: compute + title: Compute - name: container + title: Container - name: database + title: Database - name: network + title: Networking - name: md + title: Management & Deployment - name: security + title: Security services: - repositories: - environment: internal @@ -926,7 +942,7 @@ services: service_title: Data Replication Service service_type: drs - repositories: - - repo: docs/data-ingestion-service + - repo: docs/data-warehouse-service type: gitea environment: internal service_category: big_data @@ -1135,7 +1151,7 @@ services: type: gitea service_category: network service_title: VPC Endpoint - service_type: vpce + service_type: vpcep - repositories: - environment: internal repo: docs/virtual-private-network diff --git a/otc_metadata/services.py b/otc_metadata/services.py index 42fbb44f..0e024525 100644 --- a/otc_metadata/services.py +++ b/otc_metadata/services.py @@ -12,6 +12,7 @@ # limitations under the License. import copy +import warnings import otc_metadata.data @@ -32,13 +33,17 @@ class Services(object): def __init__(self): self._service_data = BUILTIN_DATA - def _sorted_data(self): + def _sort_data(self): 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')}" ) 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')}" ) @@ -66,6 +71,15 @@ class Services(object): res[srv["service_type"]] = copy.deepcopy(srv) 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): """List services matching category """ @@ -75,6 +89,33 @@ class Services(object): res.append(copy.deepcopy(srv)) 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): """List services matching category @@ -85,11 +126,15 @@ class Services(object): res = [] services = self.service_dict 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: res_doc = copy.deepcopy(doc) res_doc.update(**service) - if env: + if environment: for srv_env in service["repositories"]: if srv_env.get("environment") == environment: res_doc["repository"] = srv_env["repo"]