diff --git a/otc_metadata/data/documents/wafd-api-ref.yaml b/otc_metadata/data/documents/wafd-api-ref.yaml index 17dd7ce..0655885 100644 --- a/otc_metadata/data/documents/wafd-api-ref.yaml +++ b/otc_metadata/data/documents/wafd-api-ref.yaml @@ -1,5 +1,4 @@ --- -environment: internal hc_location: api/dwaf html_location: docs/wafd/api-ref link: /web-application-firewall-dedicated/api-ref/ diff --git a/otc_metadata/data/documents/wafd-umn.yaml b/otc_metadata/data/documents/wafd-umn.yaml index 5aaacfe..c358e37 100644 --- a/otc_metadata/data/documents/wafd-umn.yaml +++ b/otc_metadata/data/documents/wafd-umn.yaml @@ -1,5 +1,4 @@ --- -environment: internal hc_location: usermanual/dwaf html_location: docs/wafd/umn link: /web-application-firewall-dedicated/umn/ diff --git a/otc_metadata/services.py b/otc_metadata/services.py index 0b0099f..ef96506 100644 --- a/otc_metadata/services.py +++ b/otc_metadata/services.py @@ -122,6 +122,58 @@ class Services(object): res[cat]["docs"].append(res_doc) return res + def service_types_with_doc_types(self, environment=None): + """Retrieve type and title from services and corresponding docs. + As well as a list of all available doc types with title. + + :param str environment: Optional service environment. + """ + service_list = [] + docs = [] + + for service in self.all_services: + if "environment" in service: + if service["environment"] != environment: + continue + if not service["service_title"]: + continue + if not service["service_type"]: + continue + + doc_list = [] + for doc in self.all_docs: + if "environment" in doc: + if doc["environment"] != environment: + continue + if doc["service_type"] == service["service_type"]: + doc_list.append({ + "title": doc["title"], + "type": doc["type"] + }) + + new_doc = { + "type": doc["type"], + "title": doc["title"] + } + type_exists = any( + doc_dict["type"] == new_doc["type"] for doc_dict in docs + ) + if not type_exists: + docs.append(new_doc) + + service_list.append({ + "service_title": service["service_title"], + "service_type": service["service_type"], + "docs": doc_list + }) + + res = { + "services": service_list, + "docs": docs + } + + return res + def docs_by_service_category(self, category, environment=None): """List services matching category @@ -185,6 +237,8 @@ class Services(object): srv_res = dict( service_title=srv["service_title"], service_type=srv["service_type"], + service_category=srv["service_category"], + service_environment=environment, docs=[], ) if "teams" in srv: @@ -208,6 +262,7 @@ class Services(object): rst_location=doc["rst_location"], title=doc["title"], type=doc.get("type", "dummy"), + link=doc["link"], ) if "pdf_name" in doc: doc_res["pdf_name"] = doc["pdf_name"] diff --git a/otc_metadata/templates/conf.py.j2 b/otc_metadata/templates/conf.py.j2 index 3686480..431df1b 100644 --- a/otc_metadata/templates/conf.py.j2 +++ b/otc_metadata/templates/conf.py.j2 @@ -26,7 +26,6 @@ extensions = [ otcdocs_auto_name = False otcdocs_auto_version = False -otcdocs_search_environment = 'hc_swiss' project = '{{ project }}' otcdocs_repo_name = '{{ repo_name }}' @@ -38,6 +37,17 @@ otcdocs_git_fqdn = '{{ git_fqdn }}' otcdocs_git_type = '{{ git_type }}' {%- endif %} +# Those variables are needed for indexing into OpenSearch +otcdocs_doc_environment = '{{ doc_environment }}' +otcdocs_doc_link = '{{ doc_link }}' +otcdocs_doc_title = '{{ doc_title }}' +otcdocs_doc_type = '{{ doc_type }}' +otcdocs_service_category = '{{ service_category }}' +otcdocs_service_title = '{{ service_title }}' +otcdocs_service_type = '{{ service_type }}' +otcdocs_search_environment = 'hc_swiss' +otcdocs_search_url = "https://opensearch.eco.tsi-dev.otc-service.com/" + # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here.