Merge branch 'main' into add_cloud_environments
This commit is contained in:
		
							
								
								
									
										62
									
								
								.gitea/workflows/create-weekly-analytics-stats.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								.gitea/workflows/create-weekly-analytics-stats.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,62 @@
 | 
			
		||||
name: Create Weekly Analytics Stats
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  schedule:
 | 
			
		||||
    # 03:00 UTC = 04:00 CET
 | 
			
		||||
    - cron: "0 3 * * 1"
 | 
			
		||||
  workflow_dispatch:
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  run-analytics:
 | 
			
		||||
    runs-on: ubuntu
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout repository
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
        with:
 | 
			
		||||
          token: ${{ secrets.PUSH_TOKEN }}
 | 
			
		||||
 | 
			
		||||
      - name: Set up Python
 | 
			
		||||
        uses: actions/setup-python@v5
 | 
			
		||||
        with:
 | 
			
		||||
          python-version: "3.12"
 | 
			
		||||
 | 
			
		||||
      - name: Install dependencies
 | 
			
		||||
        run: |
 | 
			
		||||
          python -m pip install --upgrade pip
 | 
			
		||||
          pip install requests otc-metadata
 | 
			
		||||
 | 
			
		||||
      - name: Run analytics for eu_de
 | 
			
		||||
        env:
 | 
			
		||||
          UMAMI_USERNAME: ${{ secrets.UMAMI_USERNAME }}
 | 
			
		||||
          UMAMI_PASSWORD: ${{ secrets.UMAMI_PASSWORD }}
 | 
			
		||||
        run: |
 | 
			
		||||
          python ./tools/collect_statistics.py \
 | 
			
		||||
            --website-id "${{ secrets.UMAMI_WEBSITE_ID }}" \
 | 
			
		||||
            --cloud-environment "eu_de" \
 | 
			
		||||
            --environment "public" \
 | 
			
		||||
            --limit "10"
 | 
			
		||||
 | 
			
		||||
      - name: Run analytics for swiss
 | 
			
		||||
        env:
 | 
			
		||||
          UMAMI_USERNAME: ${{ secrets.UMAMI_USERNAME }}
 | 
			
		||||
          UMAMI_PASSWORD: ${{ secrets.UMAMI_PASSWORD }}
 | 
			
		||||
        run: |
 | 
			
		||||
          python ./tools/collect_statistics.py \
 | 
			
		||||
            --website-id "${{ secrets.UMAMI_WEBSITE_ID }}" \
 | 
			
		||||
            --cloud-environment "swiss" \
 | 
			
		||||
            --environment "public" \
 | 
			
		||||
            --limit "10"
 | 
			
		||||
 | 
			
		||||
      - name: Commit and push results
 | 
			
		||||
        run: |
 | 
			
		||||
          git config --global user.name "gitea-actions[bot]"
 | 
			
		||||
          git config --global user.email "actions@users.noreply.local"
 | 
			
		||||
          git checkout -B analytics-update
 | 
			
		||||
          git add otc_metadata/analytics/
 | 
			
		||||
          if git diff --cached --quiet; then
 | 
			
		||||
            echo "No changes to commit"
 | 
			
		||||
          else
 | 
			
		||||
            git commit -m "chore: update analytics data [skip ci]"
 | 
			
		||||
            git push origin analytics-update --force
 | 
			
		||||
          fi
 | 
			
		||||
							
								
								
									
										18
									
								
								.gitea/workflows/python-tox.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								.gitea/workflows/python-tox.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,18 @@
 | 
			
		||||
name: Run Tox Check
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  pull_request:
 | 
			
		||||
    types: [opened, reopened, synchronize, edited]
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  tox-py312:
 | 
			
		||||
    runs-on: ubuntu
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: https://github.com/opentelekomcloud-infra/github-actions/.github/actions/tox-py-test@v1
 | 
			
		||||
 | 
			
		||||
  tox-pep8:
 | 
			
		||||
    runs-on: ubuntu
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: https://github.com/opentelekomcloud-infra/github-actions/.github/actions/tox-py-test@v1
 | 
			
		||||
        with:
 | 
			
		||||
          tox-env: pep8
 | 
			
		||||
							
								
								
									
										32
									
								
								.gitea/workflows/update_opensearch_filters.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								.gitea/workflows/update_opensearch_filters.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,32 @@
 | 
			
		||||
name: Updates Opensearch filters
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  pull_request:
 | 
			
		||||
    types:
 | 
			
		||||
      - closed
 | 
			
		||||
    branches:
 | 
			
		||||
      - main
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
    update-opensearch-filters:
 | 
			
		||||
        if: github.event.pull_request.merged == true
 | 
			
		||||
        runs-on: ubuntu
 | 
			
		||||
 | 
			
		||||
        steps:
 | 
			
		||||
            - name: Checkout code
 | 
			
		||||
              uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
            - name: Set up Python
 | 
			
		||||
              uses: actions/setup-python@v5
 | 
			
		||||
              with:
 | 
			
		||||
                  python-version: '3.12'
 | 
			
		||||
 | 
			
		||||
            - name: Install dependencies and local package otc-metadata package
 | 
			
		||||
              run: |
 | 
			
		||||
                  python -m pip install --upgrade pip
 | 
			
		||||
                  pip install . -r tools-requirements.txt
 | 
			
		||||
 | 
			
		||||
            - name: Update swiss and eu_de Opensearch indizies             
 | 
			
		||||
              run: |
 | 
			
		||||
                  python tools/index_metadata.py --hosts ${{ secrets.OPENSEARCH_HOST1 }} --target-environment public --index search_index_de --cloud-environment eu_de --username ${{ secrets.OPENSEARCH_USER }} --password ${{ secrets.OPENSEARCH_PW }} --delete-index
 | 
			
		||||
                  python tools/index_metadata.py --hosts ${{ secrets.OPENSEARCH_HOST1 }} --target-environment public --index search_index_swiss --cloud-environment swiss --username ${{ secrets.OPENSEARCH_USER }} --password ${{ secrets.OPENSEARCH_PW }} --delete-index
 | 
			
		||||
							
								
								
									
										0
									
								
								otc_metadata/analytics/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								otc_metadata/analytics/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										47
									
								
								otc_metadata/analytics/data.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								otc_metadata/analytics/data.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,47 @@
 | 
			
		||||
# 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.
 | 
			
		||||
 | 
			
		||||
from pathlib import Path
 | 
			
		||||
import json
 | 
			
		||||
 | 
			
		||||
analytics_path = Path("otc_metadata/analytics/public")
 | 
			
		||||
 | 
			
		||||
cloud_environments = [
 | 
			
		||||
    'eu_de',
 | 
			
		||||
    'swiss'
 | 
			
		||||
]
 | 
			
		||||
analytics_data = {k: [] for k in cloud_environments}
 | 
			
		||||
 | 
			
		||||
# Open and read the json data files
 | 
			
		||||
for env in cloud_environments:
 | 
			
		||||
    file_path = analytics_path.joinpath(f"{env}.json")
 | 
			
		||||
    with open(file_path, 'r') as file:
 | 
			
		||||
        analytics_data[env] = json.load(file)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class AnalyticsData(object):
 | 
			
		||||
    """Encapsulate OTC Analystics data"""
 | 
			
		||||
 | 
			
		||||
    def __init__(self):
 | 
			
		||||
        self._analytics_data = analytics_data
 | 
			
		||||
 | 
			
		||||
    def all_analytics_data(self):
 | 
			
		||||
        """returns all analytics data"""
 | 
			
		||||
        return self._analytics_data
 | 
			
		||||
 | 
			
		||||
    def analytics_data_by_cloud_environment(self, cloud_environment):
 | 
			
		||||
        """returns all analytics data"""
 | 
			
		||||
        if cloud_environment and cloud_environment in self._analytics_data:
 | 
			
		||||
            return self._analytics_data[cloud_environment]
 | 
			
		||||
        else:
 | 
			
		||||
            raise ValueError(f"cloud_environment '{cloud_environment}' does not exist.")
 | 
			
		||||
							
								
								
									
										12
									
								
								otc_metadata/analytics/public/eu_de.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								otc_metadata/analytics/public/eu_de.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,12 @@
 | 
			
		||||
[
 | 
			
		||||
  "evs",
 | 
			
		||||
  "ims",
 | 
			
		||||
  "ecs",
 | 
			
		||||
  "cce",
 | 
			
		||||
  "obs",
 | 
			
		||||
  "rds",
 | 
			
		||||
  "sfs",
 | 
			
		||||
  "iam",
 | 
			
		||||
  "elb",
 | 
			
		||||
  "apig"
 | 
			
		||||
]
 | 
			
		||||
							
								
								
									
										12
									
								
								otc_metadata/analytics/public/swiss.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								otc_metadata/analytics/public/swiss.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,12 @@
 | 
			
		||||
[
 | 
			
		||||
  "evs",
 | 
			
		||||
  "ims",
 | 
			
		||||
  "ecs",
 | 
			
		||||
  "cce",
 | 
			
		||||
  "obs",
 | 
			
		||||
  "rds",
 | 
			
		||||
  "iam",
 | 
			
		||||
  "elb",
 | 
			
		||||
  "cbr",
 | 
			
		||||
  "vpc"
 | 
			
		||||
]
 | 
			
		||||
@ -6,6 +6,7 @@ rst_location: api-ref/source
 | 
			
		||||
service_type: bcc
 | 
			
		||||
title: API Reference
 | 
			
		||||
type: api-ref
 | 
			
		||||
disable_import: true
 | 
			
		||||
cloud_environments:
 | 
			
		||||
  - name: eu_de
 | 
			
		||||
    visibility: internal
 | 
			
		||||
 | 
			
		||||
@ -6,6 +6,7 @@ rst_location: umn/source
 | 
			
		||||
service_type: bcc
 | 
			
		||||
title: User Guide
 | 
			
		||||
type: umn
 | 
			
		||||
disable_import: true
 | 
			
		||||
cloud_environments:
 | 
			
		||||
  - name: eu_de
 | 
			
		||||
    visibility: internal
 | 
			
		||||
 | 
			
		||||
@ -1,13 +0,0 @@
 | 
			
		||||
---
 | 
			
		||||
hc_location: usermanual/bd
 | 
			
		||||
html_location: docs/bd/umn
 | 
			
		||||
link: /business-dashboard/umn/
 | 
			
		||||
rst_location: umn/source
 | 
			
		||||
service_type: bd
 | 
			
		||||
title: User Guide
 | 
			
		||||
type: umn
 | 
			
		||||
cloud_environments:
 | 
			
		||||
  - name: eu_de
 | 
			
		||||
    visibility: public
 | 
			
		||||
    pdf_visibility: hidden
 | 
			
		||||
    pdf_enabled: false
 | 
			
		||||
@ -6,6 +6,7 @@ rst_location: umn/source
 | 
			
		||||
service_type: sd
 | 
			
		||||
title: User Guide
 | 
			
		||||
type: umn
 | 
			
		||||
disable_import: true
 | 
			
		||||
cloud_environments:
 | 
			
		||||
  - name: swiss
 | 
			
		||||
    visibility: public
 | 
			
		||||
 | 
			
		||||
@ -1,8 +0,0 @@
 | 
			
		||||
---
 | 
			
		||||
service_type: bd
 | 
			
		||||
repositories:
 | 
			
		||||
  - environment: internal
 | 
			
		||||
    repo: docs/business-dashboard
 | 
			
		||||
    type: gitea
 | 
			
		||||
    cloud_environments:
 | 
			
		||||
      - eu_de
 | 
			
		||||
@ -1,12 +0,0 @@
 | 
			
		||||
---
 | 
			
		||||
service_category: other
 | 
			
		||||
service_title: Business Dashboard
 | 
			
		||||
service_type: bd
 | 
			
		||||
service_uri: business-dashboard
 | 
			
		||||
is_global: false
 | 
			
		||||
teams:
 | 
			
		||||
  - name: docs-dashboard-rw
 | 
			
		||||
    permission: write
 | 
			
		||||
cloud_environments:
 | 
			
		||||
  - name: eu_de
 | 
			
		||||
    visibility: internal
 | 
			
		||||
@ -463,3 +463,25 @@ class Services(object):
 | 
			
		||||
        res.sort(key=lambda x: x.get("name", "").lower())
 | 
			
		||||
 | 
			
		||||
        return res
 | 
			
		||||
 | 
			
		||||
    def all_services_by_cloud_environment(self, cloud_environment, environments):
 | 
			
		||||
        """Retrieve all services filtered by cloud_environment
 | 
			
		||||
        """
 | 
			
		||||
        res = []
 | 
			
		||||
        for srv in self.all_services:
 | 
			
		||||
            if environments and cloud_environment:
 | 
			
		||||
                for srv_cloud_environment in srv["cloud_environments"]:
 | 
			
		||||
                    if srv_cloud_environment["name"] == cloud_environment:
 | 
			
		||||
                        for environment in environments:
 | 
			
		||||
                            if srv_cloud_environment["visibility"] == environment:
 | 
			
		||||
                                res.append(srv)
 | 
			
		||||
                    else:
 | 
			
		||||
                        continue
 | 
			
		||||
            else:
 | 
			
		||||
                raise Exception("No cloud_environment or environments "
 | 
			
		||||
                                "specified in function all_services_by_cloud_environment.")
 | 
			
		||||
 | 
			
		||||
        # Sort services
 | 
			
		||||
        res.sort(key=lambda x: x.get("service_title", "").lower())
 | 
			
		||||
 | 
			
		||||
        return res
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										188
									
								
								tools/collect_statistics.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										188
									
								
								tools/collect_statistics.py
									
									
									
									
									
										Executable file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user