1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
"""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): # pylint: disable=too-many-instance-attributes
"""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/"
f"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/"
f"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,
)
|