diff --git a/otc_metadata/data/services.yaml b/otc_metadata/data/services.yaml index ce9a6147..432f99bf 100644 --- a/otc_metadata/data/services.yaml +++ b/otc_metadata/data/services.yaml @@ -631,7 +631,7 @@ documents: title: User Guide type: umn - html_location: docs/sfs/api-ref - link: /api-ref/scalable-file-system/ + link: /api-ref/scalable-file-service/ pdf_name: sfs-api-ref rst_location: api-ref/source service_type: sfs @@ -643,7 +643,7 @@ documents: service_type: sfs title: Manila Client Reference - html_location: docs/sfs/umn - link: /umn/scalable-file-system/ + link: /umn/scalable-file-service/ pdf_name: sfs-umn rst_location: umn/source service_type: sfs @@ -801,6 +801,9 @@ services: - environment: internal repo: docs/anti-ddos type: gitea + teams: + - name: docs-security-rw + permission: "write" - environment: public repo: opentelekomcloud-docs/anti-ddos type: github @@ -1007,22 +1010,24 @@ services: service_category: big_data service_title: Data Warehouse Service service_type: dws - - assignees: - - environment: internal - names: - - docs-compute-ro - repositories: + - repositories: - repo: docs/elastic-cloud-server type: gitea environment: internal + teams: + - name: docs-compute-ro + permission: "read" + - name: docs-compute-rw + permission: "write" + assignees: + - docs-compute-ro - repo: opentelekomcloud-docs/elastic-cloud-server type: github environment: public service_category: compute service_title: Elastic Cloud Server service_type: ecs - - docs: - repositories: + - repositories: - environment: internal repo: docs/enterprise-dashboard type: gitea @@ -1226,10 +1231,10 @@ services: service_type: sdrs - repositories: - environment: internal - repo: docs/scalable-file-system + repo: docs/scalable-file-service type: gitea - environment: public - repo: opentelekomcloud-docs/scalable-file-system + repo: opentelekomcloud-docs/scalable-file-service type: github service_category: storage service_title: Scalable File System diff --git a/tools/generate_doc_gitcontrol_repos.py b/tools/generate_doc_gitcontrol_repos.py new file mode 100644 index 00000000..b748ff49 --- /dev/null +++ b/tools/generate_doc_gitcontrol_repos.py @@ -0,0 +1,134 @@ +#!/usr/bin/python + +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import argparse +import copy +import logging +import yaml + +import otc_metadata.services + +data = otc_metadata.services.Services() + + +def process_repositories(args, services): + """Checkout repositories + + """ + gitea_bp = dict( + branch_name="main", + enable_approvals_whitelist=True, + approvals_whitelist_teams=["docs-infra-team"], + block_on_rejected_reviews=True, + dismiss_stale_approvals=True, + enable_push=False, + enable_status_check_contexts=["gl/check"], + enable_merge_whitelist=True, + merge_whitelist_usernames=["zuul"] + ) + gitea_repo_template = dict( + default_branch="main", + description="Open Telekom Cloud Service docs", + homepage=None, + archived=False, + has_issues=True, + has_projects=False, + has_wiki=False, + default_delete_branch_after_merge=True, + allow_merge_commit=False, + allow_squash_merge=False, + allow_rebase_merge=False, + default_merge_style="squash", + branch_protections=[] + ) + + for service in services: + logging.debug(f"Processing service {service}") + config = None + repo_name = None + + for repo in service["repositories"]: + logging.debug(f"Processing repository {repo}") + if repo["environment"] != args.target_environment: + continue + + if repo["type"] == 'gitea': + teams = [{"name": "docs-infra-team", "permission": "write"}] + branch_protections_main = copy.deepcopy(gitea_bp) + if "teams" in repo: + for team in repo["teams"]: + branch_protections_main["approvals_whitelist_teams"].append( + team["name"]) + teams.append(dict( + name=team["name"], + permission=team["permission"] + )) + data = copy.deepcopy(gitea_repo_template) + data["description"] = ( + f"Open Telekom Cloud {service['service_title']} " + f"Service docs" + ) + data["branch_protections"].append(branch_protections_main) + data["teams"] = teams + repo_name = repo["repo"].split('/')[1] + config = {repo_name: data} + + elif repo["type"] == 'github': + data = None + # TODO + else: + logging.error( + "Repository type %s is not supported", + repo['type']) + exit(1) + + if data: + with open( + f"{args.work_dir}/{repo_name}.yml", 'w', + encoding='utf-8', newline='' + ) as out: + logging.debug( + "Generating %s config from template...", + service['service_type']) + yaml.dump(config, out) + + +def main(): + parser = argparse.ArgumentParser( + description='Update conf.py file in repositories.') + parser.add_argument( + '--target-environment', + required=True, + help='Environment to be used as a source' + ) +# parser.add_argument( +# '--gitcontrol-repo', +# required=True, +# help='Gitcontrol repository url' +# ) + parser.add_argument( + '--work-dir', + required=True, + help='Working directory to use for repository checkout.' + ) + + args = parser.parse_args() + logging.basicConfig(level=logging.DEBUG) + + process_repositories(args, data.all_services) + + +if __name__ == '__main__': + main()