aboutsummaryrefslogtreecommitdiffstats
path: root/src/onapsdk/aai/cloud_infrastructure/tenant.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/onapsdk/aai/cloud_infrastructure/tenant.py')
-rw-r--r--src/onapsdk/aai/cloud_infrastructure/tenant.py101
1 files changed, 101 insertions, 0 deletions
diff --git a/src/onapsdk/aai/cloud_infrastructure/tenant.py b/src/onapsdk/aai/cloud_infrastructure/tenant.py
new file mode 100644
index 0000000..13d9aec
--- /dev/null
+++ b/src/onapsdk/aai/cloud_infrastructure/tenant.py
@@ -0,0 +1,101 @@
+"""A&AI Tenant module."""
+# Copyright 2022 Orange, Deutsche Telekom AG
+#
+# 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 onapsdk.aai.cloud_infrastructure.cloud_region import CloudRegion
+from ..aai_element import AaiResource
+
+
+class Tenant(AaiResource):
+ """Tenant class."""
+
+ def __init__(self, # pylint: disable=too-many-arguments
+ cloud_region: "CloudRegion",
+ tenant_id: str,
+ tenant_name: str,
+ tenant_context: str = None,
+ resource_version: str = None):
+ """Tenant object initialization.
+
+ Tenant object represents A&AI Tenant resource.
+
+ Args:
+ cloud_region (str): Cloud region object
+ tenant_id (str): Unique Tenant ID
+ tenant_name (str): Tenant name
+ tenant_context (str, optional): Tenant context. Defaults to None.
+ resource_version (str, optional): Tenant resource version. Defaults to None.
+
+ """
+ super().__init__()
+ self.cloud_region: "CloudRegion" = cloud_region
+ self.tenant_id: str = tenant_id
+ self.name: str = tenant_name
+ self.context: str = tenant_context
+ self.resource_version: str = resource_version
+
+ def __repr__(self) -> str:
+ """Tenant repr.
+
+ Returns:
+ str: Human readable Tenant object description
+
+ """
+ return (
+ f"Tenant(tenant_id={self.tenant_id}, tenant_name={self.name}, "
+ f"tenant_context={self.context}, "
+ f"resource_version={self.resource_version}, "
+ f"cloud_region={self.cloud_region.cloud_region_id})"
+ )
+
+ @classmethod
+ def get_all_url(cls, cloud_region: "CloudRegion") -> str: # pylint: disable=arguments-differ
+ """Return an url to get all tenants for given cloud region.
+
+ Args:
+ cloud_region (CloudRegion): Cloud region object
+
+ Returns:
+ str: Url to get all tenants
+
+ """
+ return (f"{cls.base_url}{cls.api_version}/cloud-infrastructure/cloud-regions/cloud-region/"
+ f"{cloud_region.cloud_owner}/{cloud_region.cloud_region_id}"
+ f"/tenants/")
+
+ @property
+ def url(self) -> str:
+ """Tenant url.
+
+ Returns:
+ str: Url which can be used to update or delete tenant.
+
+ """
+ return (
+ f"{self.base_url}{self.api_version}/cloud-infrastructure/cloud-regions/cloud-region/"
+ f"{self.cloud_region.cloud_owner}/{self.cloud_region.cloud_region_id}"
+ f"/tenants/tenant/{self.tenant_id}?"
+ f"resource-version={self.resource_version}"
+ )
+
+ def delete(self) -> None:
+ """Delete tenant.
+
+ Remove tenant from cloud region.
+
+ """
+ return self.send_message(
+ "DELETE",
+ f"Remove tenant {self.name} from {self.cloud_region.cloud_region_id} cloud region",
+ url=self.url,
+ )