1 Commits

Author SHA1 Message Date
7a054ebab4 dummy test 2025-05-14 06:03:58 +00:00
21 changed files with 27 additions and 234 deletions

View File

@ -1,26 +0,0 @@
# 📁 data/
This directory is the core of the metadata structure for Open Telekom Cloud Service Documentation. It contains structured definitions for services, their document types, categories, and repository configurations.
## 📂 Folder Overview
| Folder Name | Description |
|---------------------|-----------------------------------------------------------------------------|
| `services/` | Contains metadata for each individual service, including its cloud regions and access teams. |
| `documents/` | Holds metadata about documentation types (e.g., user guides, API refs) for each service and cloud region. |
| `service_categories/`| Lists available service categories used to group services (e.g., "Application", "Database"). |
| `repositories/` | Defines where the documentation source code is located (GitHub or Gitea) for each service per cloud environment. |
## 📦 Usage
These metadata files are used to:
- Build documentation portals.
- Generate links and visibility rules dynamically.
- Control contributor access.
- Connect documentation to source control repositories.
Each subfolder contains its own `README.md` with detailed field references and options.
## 📎 Example Structure
![Folder Structure](./folder_structure.png)

View File

@ -1,69 +0,0 @@
# 📁 documents/
This folder contains metadata about documentation files per service, such as user guides or API references. Each file describes a single document variant for a specific cloud environment.
## 🔧 Example: `ecs-umn.yaml`
```yaml
---
hc_location: usermanual/ecs
html_location: docs/ecs/umn
link: /elastic-cloud-server/umn/
rst_location: umn/source
service_type: ecs
title: User Guide
type: umn
cloud_environments:
- name: eu_de
visibility: public
pdf_visibility: public
pdf_enabled: true
- name: swiss
visibility: public
pdf_visibility: public
pdf_enabled: true
```
## 🔧 Example: `ecs-api-ref.yaml`
```yaml
---
hc_location: api/ecs
html_location: docs/ecs/api-ref
link: /elastic-cloud-server/api-ref/
rst_location: api-ref/source
service_type: ecs
title: API Reference
type: api-ref
cloud_environments:
- name: eu_de
visibility: public
pdf_visibility: public
pdf_enabled: true
- name: swiss
visibility: public
pdf_visibility: public
pdf_enabled: true
```
## Parameter Reference
| Field | Type | Description |
| -------------------- | ------ | -------------------------------------------------------- |
| `hc_location` | string | Path used in the Horizon Console. |
| `html_location` | string | Location of the built HTML output. |
| `link` | string | Target URL segment for this document. |
| `rst_location` | string | Source folder for `.rst` input. |
| `service_type` | string | Related service identifier (matches `services/`). |
| `title` | string | Display name of the document. |
| `type` | string | Document type (e.g., `umn`, `api-ref`, etc.). |
| `cloud_environments` | list | Region-specific metadata like visibility or PDF support. |
### `cloud_environments` Options:
| Field | Type | Allowed Values | Description |
| ---------------- | ------- | ------------------------------ | ---------------------------------- |
| `name` | string | e.g., `eu_de`, `swiss` | Name of the cloud region. |
| `visibility` | string | `public`, `internal`, `hidden` | Document visibility level. |
| `pdf_visibility` | string | `public`, `internal`, `hidden` | PDF visibility level |
| `pdf_enabled` | boolean | `true`, `false` | Enable PDF export |

View File

@ -4,7 +4,7 @@ html_location: docs/antiddos/api-ref
link: /anti-ddos/api-ref/
rst_location: api-ref/source
service_type: antiddos
title: API Reference
title: API Reference a
type: api-ref
cloud_environments:
- name: eu_de

View File

@ -14,4 +14,4 @@ cloud_environments:
- name: swiss
visibility: public
pdf_visibility: public
pdf_enabled: false
pdf_enabled: true

View File

@ -14,4 +14,4 @@ cloud_environments:
- name: swiss
visibility: public
pdf_visibility: public
pdf_enabled: false
pdf_enabled: true

View File

@ -5,7 +5,7 @@ link: /object-storage-service-3rd-party/python-sdk/
rst_location: doc/python-sdk/source
service_type: obs_3rd_party
title: Python SDK
type: python-sdk
type: 3rd_party_sdk
cloud_environments:
- name: eu_de
visibility: public

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

View File

@ -1,47 +0,0 @@
# 📁 repositories/
Defines the documentation repositories associated with each service for both internal and public environments. Used for resolving documentation sources and CI sync jobs.
## 🔧 Example: `ecs.yaml`
```yaml
---
service_type: ecs
repositories:
- environment: public
repo: opentelekomcloud-docs/elastic-cloud-server
type: github
cloud_environments:
- eu_de
- environment: internal
repo: docs/elastic-cloud-server
type: gitea
cloud_environments:
- eu_de
- environment: public
repo: opentelekomcloud-docs-swiss/elastic-cloud-server
type: github
cloud_environments:
- swiss
- environment: internal
repo: docs-swiss/elastic-cloud-server
type: gitea
cloud_environments:
- swiss
```
## Parameter Options:
| Field | Type | Description |
| -------------- | ------ | ---------------------------------------------------- |
| `service_type` | string | Links this configuration to a service (`services/`). |
| `repositories` | list | List of repositories per environment and cloud. |
### `repositories` Options:
| Field | Type | Allowed Values | Description |
| -------------------- | ------ | ---------------------- | ------------------------------------- |
| `environment` | string | `public`, `internal` | Visibility level of the repository. |
| `repo` | string | Git path | Path to the Git repository. |
| `type` | string | `github`, `gitea` | Type of Git service. |
| `cloud_environments` | list | e.g., `eu_de`, `swiss` | Supported regions for the repository. |

View File

@ -5,9 +5,9 @@ repositories:
repo: opentelekomcloud-docs/glossary
type: github
cloud_environments:
- eu_de
-
- environment: internal
repo: docs/glossary
type: gitea
cloud_environments:
- eu_de
-

View File

@ -1,18 +0,0 @@
# 📁 service_categories/
Contains the list of service category definitions. These categories help group services (e.g., "Application", "Database").
## 🔧 Example: `compute.yaml`
```yaml
---
name: compute
title: Computing
```
## Parameter Reference
| Field | Type | Description |
| ------- | ------ | ------------------------------------- |
| `name` | string | Internal identifier for the category. |
| `title` | string | Display name used in UIs. |

View File

@ -1,3 +1,3 @@
---
name: application
title: Application
title: Application Services

View File

@ -1,3 +1,3 @@
---
name: big_data
title: Data Analysis
title: Big Data and Data Analysis

View File

@ -1,3 +1,3 @@
---
name: network
title: Network
title: Networking

View File

@ -1,48 +0,0 @@
# 📁 services/
This folder contains metadata files that describe individual cloud services. Each file defines a single service and its configuration across environments.
## 🔧 Example: `ecs.yaml`
```yaml
---
service_category: compute
service_title: Elastic Cloud Server
service_type: ecs
service_uri: elastic-cloud-server
teams:
- name: docs-compute-rw
permission: write
cloud_environments:
- name: eu_de
visibility: public
- name: swiss
visibility: public
is_global: false
```
## Parameter Reference
| Parameter | Type | Description |
| -------------------- | ------- | --------------------------------------------------------------------- |
| `is_global` | boolean | Indicates whether the service is available globally (`true`/`false`). |
| `service_category` | string | Category reference, defined in `service_categories/`. |
| `service_title` | string | Display name of the service. |
| `service_type` | string | Unique identifier used across all metadata. |
| `service_uri` | string | URI component used in documentation links. |
| `cloud_environments` | list | List of cloud regions and their visibility settings. |
| `teams` | list | Contributor teams with write or read access. |
### `cloud_environments` Options:
| Field | Type | Allowed Values | Description |
| ------------ | ------ | ------------------------------ | ----------------------------------- |
| `name` | string | e.g., `eu_de`, `swiss` | Name of the cloud region. |
| `visibility` | string | `public`, `internal`, `hidden` | Controls visibility of the service. |
### `teams` Options:
| Field | Type | Allowed Values | Description |
| ------------ | ------ | --------------- | ---------------------------------------- |
| `name` | string | team identifier | Name of the team (e.g., `docs-compute-rw`). |
| `permission` | string | `read`, `write` | Access level to the metadata. |

View File

@ -11,3 +11,4 @@ cloud_environments:
- name: eu_de
visibility: public
is_global: false
is_global: false

View File

@ -8,5 +8,5 @@ teams:
permission: write
cloud_environments:
- name: eu_de
visibility: hidden
visibility: internal
is_global: false

View File

@ -13,6 +13,7 @@
import copy
import warnings
import json
import otc_metadata.data
@ -75,7 +76,7 @@ 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."
@ -103,11 +104,6 @@ class Services(object):
for srv in self.all_services:
if environment and cloud_environment:
cloud_environment_check = False
if srv["is_global"] is True:
if srv["environment"] == environment:
cloud_environment_check = True
else:
continue
if srv["is_global"] is not True:
for srv_cloud_environment in srv["cloud_environments"]:
if srv_cloud_environment["name"] == cloud_environment:
@ -287,7 +283,7 @@ class Services(object):
if not service:
warnings.warn("No Service defition of type %s" % (cat))
continue
for repositories in self.all_repositories:
if repositories["service_type"] == service["service_type"]:
res_doc = copy.deepcopy(doc)
@ -390,7 +386,7 @@ class Services(object):
break
break
return res
def get_service_with_repo_by_service_type(self, service_type):
"""Retrieve service with repos by service_type
@ -421,7 +417,7 @@ class Services(object):
res[i]["repositories"] = repositories["repositories"]
break
return res
def all_services_by_categories(self, cloud_environment, environments):
"""Retrieve all services sorted by categories
"""
@ -444,7 +440,7 @@ class Services(object):
for i, category in enumerate(res):
if category["name"] == srv["service_category"]:
res[i]["services"].append(srv)
# Sort services
for category in res:
category["services"].sort(key=lambda x: x.get("service_title", "").lower())
@ -452,4 +448,4 @@ class Services(object):
# Sort categories
res.sort(key=lambda x: x.get("name", "").lower())
return res
return res

View File

@ -11,6 +11,10 @@ reno>=3.1.0 # Apache-2.0
otc-sphinx-directives>=0.1.0
sphinx-minify>=0.0.1 # Apache-2.0
git+https://gitea.eco.tsi-dev.otc-service.com/infra/otc-metadata-rework.git#egg=otc_metadata
{% if otcdocs_cloud_environment == 'eu_de' %}
git+https://gitea.eco.tsi-dev.otc-service.com/infra/otc-metadata.git#egg=otc_metadata
{% elif otcdocs_cloud_environment == 'swiss' %}
git+https://gitea.eco.tsi-dev.otc-service.com/infra/otc-metadata-swiss.git#egg=otc_metadata
{% endif %}
setuptools
gitpython

View File

@ -28,7 +28,7 @@ commands = {posargs}
[testenv:docs]
deps =
-r{toxinidir}/doc/requirements.txt
-c https://raw.githubusercontent.com/opentelekomcloud-docs/docs-constraints/main/constraints/{{otcdocs_cloud_environment}}/{{target_environment}}/constraints.txt
-c https://raw.githubusercontent.com/opentelekomcloud-docs/docs-constraints/main/constraints.txt
allowlist_externals =
mkdir
cp

View File

@ -170,7 +170,7 @@ def process_repositories(args, service):
if target_repo.get("type") != "github":
context["git_type"] = target_repo["type"]
if (args.target_environment == "public"
and args.cloud_environment == "swiss"):
and args.cloud_environment == "swiss"):
context["html_options"] = dict(
logo_url="https://docs.sc.otc.t-systems.com",
)
@ -183,7 +183,7 @@ def process_repositories(args, service):
context["otcdocs_search_environment"] = "hc_de"
context["otcdocs_search_index"] = "search_index_de"
elif (args.target_environment == "internal"
and args.cloud_environment == "swiss"):
and args.cloud_environment == "swiss"):
context["html_options"] = dict(
disable_search=True,
site_name="Internal Documentation Portal",

View File

@ -24,7 +24,7 @@ def main():
data = otc_metadata.services.Services()
data._sort_data()
docs = data.docs_html_by_category(environment="internal", cloud_environment=args.cloud_environment)
docs = data.docs_html_by_category(environment="internal",cloud_environment=args.cloud_environment)
# Filter out documents with "disable_import": True
for category, services in docs['categories'].items():