Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
940cc987e7 |
@ -1,62 +0,0 @@
|
|||||||
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
|
|
@ -1,18 +0,0 @@
|
|||||||
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
|
|
@ -1,32 +0,0 @@
|
|||||||
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
|
|
@ -1,48 +0,0 @@
|
|||||||
# 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
|
|
||||||
|
|
||||||
BASE_DIR = Path(__file__).resolve().parent
|
|
||||||
analytics_path = BASE_DIR / "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 / f"{env}.json"
|
|
||||||
with file_path.open(encoding="utf-8") 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.")
|
|
@ -1,12 +0,0 @@
|
|||||||
[
|
|
||||||
"evs",
|
|
||||||
"ims",
|
|
||||||
"ecs",
|
|
||||||
"cce",
|
|
||||||
"obs",
|
|
||||||
"rds",
|
|
||||||
"sfs",
|
|
||||||
"iam",
|
|
||||||
"elb",
|
|
||||||
"apig"
|
|
||||||
]
|
|
@ -1,12 +0,0 @@
|
|||||||
[
|
|
||||||
"evs",
|
|
||||||
"ims",
|
|
||||||
"ecs",
|
|
||||||
"cce",
|
|
||||||
"obs",
|
|
||||||
"rds",
|
|
||||||
"iam",
|
|
||||||
"elb",
|
|
||||||
"cbr",
|
|
||||||
"vpc"
|
|
||||||
]
|
|
@ -6,7 +6,6 @@ rst_location: api-ref/source
|
|||||||
service_type: bcc
|
service_type: bcc
|
||||||
title: API Reference
|
title: API Reference
|
||||||
type: api-ref
|
type: api-ref
|
||||||
disable_import: true
|
|
||||||
cloud_environments:
|
cloud_environments:
|
||||||
- name: eu_de
|
- name: eu_de
|
||||||
visibility: internal
|
visibility: internal
|
||||||
|
@ -6,7 +6,6 @@ rst_location: umn/source
|
|||||||
service_type: bcc
|
service_type: bcc
|
||||||
title: User Guide
|
title: User Guide
|
||||||
type: umn
|
type: umn
|
||||||
disable_import: true
|
|
||||||
cloud_environments:
|
cloud_environments:
|
||||||
- name: eu_de
|
- name: eu_de
|
||||||
visibility: internal
|
visibility: internal
|
||||||
|
@ -6,7 +6,6 @@ rst_location: umn/source
|
|||||||
service_type: sd
|
service_type: sd
|
||||||
title: User Guide
|
title: User Guide
|
||||||
type: umn
|
type: umn
|
||||||
disable_import: true
|
|
||||||
cloud_environments:
|
cloud_environments:
|
||||||
- name: swiss
|
- name: swiss
|
||||||
visibility: public
|
visibility: public
|
||||||
|
@ -10,4 +10,3 @@ cloud_environments:
|
|||||||
teams:
|
teams:
|
||||||
- name: docs-paas-rw
|
- name: docs-paas-rw
|
||||||
permission: write
|
permission: write
|
||||||
description: API Gateway (APIG) is a high-performance, high-availability, and high-security API hosting service that helps you build, manage, and deploy APIs at any scale. With just a few clicks, you can integrate internal systems, and selectively expose capabilities with minimal costs and risks.
|
|
||||||
|
@ -12,4 +12,3 @@ cloud_environments:
|
|||||||
visibility: public
|
visibility: public
|
||||||
- name: swiss
|
- name: swiss
|
||||||
visibility: public
|
visibility: public
|
||||||
description: Cloud Backup and Recovery (CBR) allows you to back up cloud disks, elastic cloud servers, and bare metal servers, protecting the security and accuracy of your data to the greatest extent for service security.
|
|
||||||
|
@ -12,4 +12,3 @@ cloud_environments:
|
|||||||
- name: swiss
|
- name: swiss
|
||||||
visibility: public
|
visibility: public
|
||||||
is_global: false
|
is_global: false
|
||||||
description: CCE provides highly scalable, high-performance, enterprise-class Kubernetes clusters. It supports native Kubernetes applications, tools and easy setup of container runtime environment.
|
|
||||||
|
@ -12,4 +12,3 @@ cloud_environments:
|
|||||||
- name: swiss
|
- name: swiss
|
||||||
visibility: public
|
visibility: public
|
||||||
is_global: false
|
is_global: false
|
||||||
description: An ECS is a computing server consisting of CPUs, memory, images, and Elastic Volume Service (EVS) disks that allow on-demand allocation and elastic scaling. ECSs integrate virtual private cloud (VPC), virtual firewalls, and multi-data-copy capabilities to create an efficient, reliable, and secure computing environment. This ensures stable and uninterrupted operation of services.
|
|
||||||
|
@ -12,4 +12,3 @@ cloud_environments:
|
|||||||
- name: swiss
|
- name: swiss
|
||||||
visibility: public
|
visibility: public
|
||||||
is_global: false
|
is_global: false
|
||||||
description: Elastic Load Balancing (ELB) is a service that automatically distributes access traffic to multiple Elastic Cloud Servers (ECSs) to balance their service load. ELB enables you to achieve higher levels of fault tolerance in your applications and expand application service capabilities.
|
|
||||||
|
@ -12,4 +12,3 @@ cloud_environments:
|
|||||||
- name: swiss
|
- name: swiss
|
||||||
visibility: public
|
visibility: public
|
||||||
is_global: false
|
is_global: false
|
||||||
description: Elastic Volume Service (EVS) offers scalable block storage for servers. With high reliability, high performance, and rich specifications, EVS disks can be used for distributed file systems, development and testing environments, data warehouse applications, and high-performance computing (HPC) scenarios to meet diverse service requirements.
|
|
||||||
|
@ -12,4 +12,3 @@ cloud_environments:
|
|||||||
- name: swiss
|
- name: swiss
|
||||||
visibility: public
|
visibility: public
|
||||||
is_global: false
|
is_global: false
|
||||||
description: Identity and Access Management (IAM) provides a public cloud system (Open Telekom Cloud) with user identity management and access control.
|
|
||||||
|
@ -12,4 +12,3 @@ cloud_environments:
|
|||||||
- name: swiss
|
- name: swiss
|
||||||
visibility: public
|
visibility: public
|
||||||
is_global: false
|
is_global: false
|
||||||
description: Image Management Service (IMS) provides flexible self-service and comprehensive image management capabilities. You can use a public image or create a private image to apply for an Elastic Cloud Server (ECS) or multiple ECSs in batches.
|
|
||||||
|
@ -12,4 +12,3 @@ cloud_environments:
|
|||||||
- name: swiss
|
- name: swiss
|
||||||
visibility: public
|
visibility: public
|
||||||
is_global: false
|
is_global: false
|
||||||
description: Object Storage Service (OBS) is an object-based storage service that provides customers with massive, secure, reliable, and cost-effective data storage capabilities, such as bucket creation, modification, and deletion, as well as object upload, download, and deletion.
|
|
||||||
|
@ -12,4 +12,3 @@ cloud_environments:
|
|||||||
- name: swiss
|
- name: swiss
|
||||||
visibility: public
|
visibility: public
|
||||||
is_global: false
|
is_global: false
|
||||||
description: Relational Database Service (RDS) is an online relational database service based on the cloud computing platform. The RDS is reliable, scalable, secure, and easy to manage, allowing you to deploy a database within minutes.
|
|
||||||
|
@ -10,4 +10,3 @@ cloud_environments:
|
|||||||
- name: eu_de
|
- name: eu_de
|
||||||
visibility: public
|
visibility: public
|
||||||
is_global: false
|
is_global: false
|
||||||
description: Scalable File Service (SFS) provides high-performance file storage that is scalable on demand. It can be shared with multiple Elastic Cloud Servers (ECS).
|
|
||||||
|
@ -12,4 +12,3 @@ cloud_environments:
|
|||||||
- name: swiss
|
- name: swiss
|
||||||
visibility: public
|
visibility: public
|
||||||
is_global: false
|
is_global: false
|
||||||
description: The Virtual Private Cloud (VPC) service enables you to provision logically isolated, configurable, and manageable virtual networks for Elastic Cloud Servers (ECSs), improving the security of resources in the cloud system and simplifying network deployment.
|
|
||||||
|
@ -453,55 +453,3 @@ class Services(object):
|
|||||||
res.sort(key=lambda x: x.get("name", "").lower())
|
res.sort(key=lambda x: x.get("name", "").lower())
|
||||||
|
|
||||||
return res
|
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
|
|
||||||
|
|
||||||
def all_services_by_cloud_environment_as_dict(self, cloud_environment, environments):
|
|
||||||
"""Retrieve all services filtered by cloud_environment
|
|
||||||
Returns a dict keyed by service_type.
|
|
||||||
"""
|
|
||||||
|
|
||||||
res = {}
|
|
||||||
|
|
||||||
if not (environments and cloud_environment):
|
|
||||||
raise Exception(
|
|
||||||
"No cloud_environment or environments specified in function all_services_by_cloud_environment."
|
|
||||||
)
|
|
||||||
|
|
||||||
for srv in self.all_services:
|
|
||||||
for srv_cloud_environment in srv.get("cloud_environments", []):
|
|
||||||
if srv_cloud_environment.get("name") == cloud_environment:
|
|
||||||
for environment in environments:
|
|
||||||
if srv_cloud_environment.get("visibility") == environment:
|
|
||||||
service_type = srv.get("service_type")
|
|
||||||
if service_type:
|
|
||||||
res[service_type] = srv
|
|
||||||
break
|
|
||||||
res = dict(
|
|
||||||
sorted(
|
|
||||||
res.items(),
|
|
||||||
key=lambda item: item[1].get("service_type", "").lower()
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
return res
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user