adding Swisscloud content metadata

This commit is contained in:
2023-05-17 14:02:14 +00:00
commit 408b2ece89
57 changed files with 3910 additions and 0 deletions

35
otc_metadata/__init__.py Normal file
View File

@ -0,0 +1,35 @@
# 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.
__all__ = ['__version__', 'Docs']
import pbr.version
from otc_metadata.services import Services # flake8: noqa
__version__ = pbr.version.VersionInfo('otc-metadata').version_string()
_service_manager = None
def get_service_data(*args, **kwargs):
"""Return singleton instance of the Services object.
Parameters are all passed through to the
:class:`~otc_metadata.services.Services` constructor.
.. note::
Only one singleton is kept, so if instances with different parameter
values are desired, directly calling the constructor is necessary.
:returns: Singleton instance of
:class:`~otc_metadata.services.Services`
"""
global _service_manager
if not _service_manager:
_service_manager = Services(*args, **kwargs)
return _service_manager

View File

@ -0,0 +1,41 @@
# 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 os
import yaml
__all__ = ['read_data']
DATA_DIR = os.path.dirname(__file__)
def read_data(filename):
"""Return data that is shipped inside the Python package.
"""
filepath = os.path.join(DATA_DIR, filename)
with open(filepath, 'r') as fd:
return yaml.safe_load(fd)
def rewrite_data(filename, data):
"""Rewrites data formatting it
"""
from ruamel.yaml import YAML
_yaml = YAML()
_yaml.indent(mapping=2, sequence=4, offset=2)
filepath = os.path.join(DATA_DIR, filename)
with open(filepath, 'w') as fd:
_yaml.dump(data, fd)

File diff suppressed because it is too large Load Diff

38
otc_metadata/docs.py Normal file
View File

@ -0,0 +1,38 @@
# 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 copy
import otc_metadata.data
__all__ = ['Service']
BUILTIN_DATA = otc_metadata.data.read_data('docs.yaml')
def _normalize_type(service_type):
if service_type:
return service_type.replace('_', '-')
class Service(object):
"""Encapsulation of the OTC Docs data
"""
def __init__(self):
self._service_data = BUILTIN_DATA
@property
def all_services(self):
"Service Categories data listing."
return copy.deepcopy(self._service_data['services'])

230
otc_metadata/services.py Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
sphinx>=2.0.0,!=2.1.0 # BSD
otcdocstheme # Apache-2.0
# releasenotes
reno>=3.1.0 # Apache-2.0
otc-sphinx-directives>=0.1.0
git+https://gitea.eco.tsi-dev.otc-service.com/infra/otc-metadata-swiss.git#egg=otc_metadata

View File

@ -0,0 +1,7 @@
{{ sbv_title }}
.. directive_wrapper::
:class: container-sbv
.. service_card::
:service_type: {{ service_type }}

File diff suppressed because it is too large Load Diff

View File

View File

@ -0,0 +1,65 @@
# -*- coding: utf-8 -*-
# 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.
"""
test_otc-metadata
----------------------------------
Tests for `otc-metadata` module.
"""
from unittest import TestCase
from otc_metadata import services
class TestOtcMetadata(TestCase):
def setUp(self):
self.data = services.Services()
def test_data_is_sorted(self):
curr = self.data
new = services.Services()
new._sort_data()
self.assertEqual(
curr._service_data, new._service_data, "Data is sorted properly"
)
def test_service_categories(self):
category = dict()
for cat in self.data._service_data["service_categories"]:
category[cat["name"]] = cat["title"]
for srv in self.data.all_services:
self.assertTrue(
srv["service_category"] in category,
f"Category {srv['service_category']} is present",
)
def test_doc_contains_required_data(self):
srv_types = dict()
for srv in self.data.all_services:
srv_types[srv["service_type"]] = srv
for doc in self.data.all_docs:
for attr in [
"rst_location",
"service_type",
"title",
"type",
]:
self.assertIn(attr, doc, f"Document {doc} contains {attr}")
self.assertIn(
doc["service_type"],
srv_types,
f"Document {doc} contains valid service_type",
)