From 2ff9eeca274c913b621d38a47e01e0874e21017a Mon Sep 17 00:00:00 2001 From: Artem Goncharov Date: Mon, 22 Aug 2022 12:04:17 +0200 Subject: [PATCH] Create doc-exports metadata generator script - add script to generate metadata file for doc-exports repository - fix metadata issues which became visible with that script --- otc_metadata/data/services.yaml | 15 +++++++++----- otc_metadata/services.py | 34 +++++++++++++++++++++++++++++++ tools/generate_docexports_data.py | 21 +++++++++++++++++++ 3 files changed, 65 insertions(+), 5 deletions(-) create mode 100644 tools/generate_docexports_data.py diff --git a/otc_metadata/data/services.yaml b/otc_metadata/data/services.yaml index b9488fbb..12131699 100644 --- a/otc_metadata/data/services.yaml +++ b/otc_metadata/data/services.yaml @@ -7,7 +7,7 @@ documents: - html_location: docs/antiddos/api-ref pdf_name: antiddos-api-ref rst_location: api-ref/source - service_ype: antiddos + service_type: antiddos title: API Reference - html_location: docs/cbr/umn pdf_name: cbr-umn @@ -75,13 +75,15 @@ documents: service_type: eip title: API Reference - html_location: docs/elb/umn + pdf_name: elb-umn rst_location: umn/source service_type: elb title: User Guide - html_location: docs/elb/api-ref + pdf_name: elb-api-ref rst_location: api-ref/source title: API Reference - type: api-ref + service_type: elb - html_location: docs/ed/umn pdf_name: edb-umn rst_location: umn/source @@ -212,7 +214,7 @@ documents: pdf_name: obs-dev-guide rst_location: dev_guide/source title: Developer Guide - type: tool-guide + service_type: obs - html_location: docs/plas/umn pdf_name: plas-umn rst_location: umn/source @@ -569,6 +571,9 @@ service_categories: - name: compute - name: container - name: database + - name: network + - name: md + - name: security services: - repositories: - repo: docs/application-operations-management @@ -773,7 +778,7 @@ services: service_category: md service_title: Tag Management Service service_type: tms - - repository: + - repositories: - environment: internal repo: docs/content-delivery-network type: gitea @@ -865,7 +870,7 @@ services: service_category: security service_title: Anti DDoS service_type: antiddos - - repositores: + - repositories: - environment: internal repo: docs/key-management-service type: gitea diff --git a/otc_metadata/services.py b/otc_metadata/services.py index 864e5d82..00f30d07 100644 --- a/otc_metadata/services.py +++ b/otc_metadata/services.py @@ -95,3 +95,37 @@ class Services(object): res_doc["repository"] = srv_env["repo"] res.append(res_doc) return res + + def docs_html_by_category(self, environment): + """Generate structure for doc-exports repository + + """ + doc_struct = dict() + services = self.service_dict + for srv in self.all_services: + doc_struct.setdefault(srv["service_category"], []) + srv_res = dict( + service_title=srv['service_title'], + service_type=srv['service_type'], + docs=[] + ) + if "repositories" in srv and environment: + for repo in srv["repositories"]: + if "environment" in repo and repo["environment"] == environment: + srv_res["repository"] = repo["repo"] + for doc in self.all_docs: + if ( + "html_location" in doc + and doc["service_type"] == srv_res["service_type"] + ): + doc_res = dict( + html_location=doc["html_location"], + rst_location=doc["rst_location"], + title=doc["title"], + pdf_name=doc["pdf_name"] + ) + srv_res["docs"].append(doc_res) + if len(srv_res["docs"]) > 0: + doc_struct[srv["service_category"]].append(srv_res) + + return dict(categories=doc_struct) diff --git a/tools/generate_docexports_data.py b/tools/generate_docexports_data.py new file mode 100644 index 00000000..90ce0dd9 --- /dev/null +++ b/tools/generate_docexports_data.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import sys + +from ruamel.yaml import YAML + +import otc_metadata.services + + +def main(): + data = otc_metadata.services.Services() + + _yaml = YAML() + _yaml.indent(mapping=2, sequence=4, offset=2) + filepath = sys.stdout + sys.stdout.write('# Auto-generated by otc_metadata.generate_docexports.data\n') + _yaml.dump(data.docs_html_by_category('internal'), sys.stdout) + +if __name__ == '__main__': + main()