-# Copyright (C) 2021 Wind River Systems, Inc.\r
-#\r
-# Licensed under the Apache License, Version 2.0 (the "License");\r
-# you may not use this file except in compliance with the License.\r
-# You may obtain a copy of the License at\r
-#\r
-# http://www.apache.org/licenses/LICENSE-2.0\r
-#\r
-# Unless required by applicable law or agreed to in writing, software\r
-# distributed under the License is distributed on an "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-# See the License for the specific language governing permissions and\r
-# limitations under the License.\r
-\r
-from __future__ import annotations\r
-\r
-from o2ims.domain.base import AgRoot\r
-# from dataclasses import dataclass\r
-# from datetime import date\r
-# from typing import Optional, List, Set\r
-from .resource_type import ResourceTypeEnum\r
-# from uuid import UUID\r
-\r
-\r
-class Subscription(AgRoot):\r
- def __init__(self, id: str, callback: str, consumersubid: str = '',\r
- filter: str = '') -> None:\r
- self.subscriptionId = id\r
- self.callback = callback\r
- self.consumerSubscriptionId = consumersubid\r
- self.filter = filter\r
-\r
-\r
-class DeploymentManager:\r
- def __init__(self, id: str, name: str, ocloudid: str,\r
- dmsendpoint: str, description: str = '',\r
- supportedLocations: str = '', capabilities: str = '',\r
- capacity: str = '') -> None:\r
- self.deploymentManagerId = id\r
- self.oCloudId = ocloudid\r
- self.name = name\r
- self.description = description\r
- self.deploymentManagementServiceEndpoint = dmsendpoint\r
- self.supportedLocations = supportedLocations\r
- self.capabilities = capabilities\r
- self.capacity = capacity\r
- self.extensions = []\r
-\r
-\r
-class ResourcePool(AgRoot):\r
- def __init__(self, id: str, name: str, location: str,\r
- ocloudid: str, gLocationId: str = '',\r
- description: str = '') -> None:\r
- self.resourcePoolId = id\r
- self.oCloudId = ocloudid\r
- self.globalLocationId = gLocationId\r
- self.name = name\r
- self.location = location\r
- self.description = description\r
- self.extensions = []\r
-\r
-\r
-class ResourceType(AgRoot):\r
- def __init__(self, typeid: str, name: str, typeEnum: ResourceTypeEnum,\r
- ocloudid: str, vender: str = '', model: str = '',\r
- version: str = '',\r
- description: str = '') -> None:\r
- self.resourceTypeId = typeid\r
- self.oCloudId = ocloudid\r
- self.resourceTypeEnum = typeEnum.value\r
- self.name = name\r
- self.vender = vender\r
- self.model = model\r
- self.version = version\r
- self.description = description\r
- self.extensions = []\r
-\r
-\r
-class Resource(AgRoot):\r
- def __init__(self, resourceId: str, resourceTypeId: str,\r
- resourcePoolId: str, oCloudId: str = '',\r
- parentId: str = '', elements: list = [],\r
- description: str = '') -> None:\r
- self.resourceId = resourceId\r
- self.oCloudId = oCloudId\r
- self.resourceTypeId = resourceTypeId\r
- self.resourcePoolId = resourcePoolId\r
- self.parentId = parentId\r
- self.elements = elements\r
- self.description = description\r
- self.extensions = []\r
-\r
-\r
-class Ocloud(AgRoot):\r
- def __init__(self, ocloudid: str, name: str, imsendpoint: str,\r
- globalcloudId: str = '',\r
- description: str = '', version_number: int = 0) -> None:\r
- super().__init__()\r
- self.oCloudId = ocloudid\r
- self.globalcloudId = globalcloudId\r
- self.version_number = version_number\r
- self.name = name\r
- self.description = description\r
- self.infrastructureManagementServiceEndpoint = imsendpoint\r
- self.resourcePools = []\r
- self.deploymentManagers = []\r
- self.resourceTypes = []\r
- self.extensions = []\r
- # self.events = []\r
-\r
- def addDeploymentManager(self,\r
- deploymentManager: DeploymentManager):\r
-\r
- deploymentManager.oCloudId = self.oCloudId\r
- old = filter(\r
- lambda x: x.deploymentManagerId ==\r
- deploymentManager.deploymentManagerId,\r
- self.deploymentManagers)\r
- for o in old or []:\r
- self.deploymentManagers.remove(o)\r
- self.deploymentManagers.append(deploymentManager)\r
+# Copyright (C) 2021 Wind River Systems, Inc.
+#
+# 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 __future__ import annotations
+import json
+
+from o2common.domain.base import AgRoot, Serializer
+from o2common.config import config, conf as CONF
+# from dataclasses import dataclass
+# from datetime import date
+# from typing import Optional, List, Set
+from .resource_type import ResourceKindEnum, ResourceTypeEnum
+
+
+DeploymentManagerProfileDefault = 'native_k8sapi'
+DeploymentManagerProfileSOL018 = 'sol018'
+DeploymentManagerProfileSOL018HelmCLI = 'sol018_helmcli'
+
+
+class DeploymentManager(AgRoot, Serializer):
+ def __init__(self, id: str, name: str, ocloudid: str,
+ dmsendpoint: str, description: str = '',
+ supportedLocations: str = '', capabilities: str = '',
+ capacity: str = '', profile: str = '') -> None:
+ super().__init__()
+ self.deploymentManagerId = id
+ self.name = name
+ self.description = description
+ self.oCloudId = ocloudid
+ self.serviceUri = dmsendpoint
+ self.supportedLocations = supportedLocations
+ self.capabilities = capabilities
+ self.capacity = capacity
+ self.profile = profile
+ self.extensions = []
+
+ self.version_number = 0
+
+ def serialize(self):
+ d = Serializer.serialize(self)
+
+ if 'profile' in d and d['profile'] != '':
+ d['profile'] = json.loads(d['profile'])
+ d['profileSupportList'] = [
+ DeploymentManagerProfileDefault,
+ ]
+ profiles = config.get_dms_support_profiles()
+ for profile in profiles:
+ if profile == DeploymentManagerProfileSOL018:
+ d['profileSupportList'].append(profile)
+ elif profile == DeploymentManagerProfileSOL018HelmCLI:
+ d['profileSupportList'].append(profile)
+
+ return d
+
+
+class ResourcePool(AgRoot, Serializer):
+ def __init__(self, id: str, name: str, location: str,
+ ocloudid: str, gLocationId: str = '',
+ description: str = '') -> None:
+ super().__init__()
+ self.resourcePoolId = id
+ self.globalLocationId = gLocationId
+ self.name = name
+ self.description = description
+ self.oCloudId = ocloudid
+ self.location = location
+ self.resources = ''
+ self.extensions = []
+
+ self.version_number = 0
+
+
+class ResourceType(AgRoot, Serializer):
+ def __init__(self, typeid: str, name: str, typeEnum: ResourceTypeEnum,
+ ocloudid: str, vendor: str = '', model: str = '',
+ version: str = '',
+ description: str = '') -> None:
+ super().__init__()
+ self.resourceTypeId = typeid
+ self.resourceTypeEnum = typeEnum
+ self.name = name
+ self.description = description
+ self.vendor = vendor
+ self.model = model
+ self.version = version
+ self.alarmDictionary = {}
+ self.resourceKind = ResourceKindEnum.UNDEFINED
+ self.resourceClass = ResourceTypeEnum.UNDEFINED
+ self.extensions = []
+
+ self.version_number = 0
+
+ def serialize(self):
+ d = Serializer.serialize(self)
+
+ d["alarmDictionary"] = CONF.alarm_dictionaries.get(
+ d['name']).serialize()
+ return d
+
+
+class Resource(AgRoot, Serializer):
+ def __init__(self, resourceId: str, resourceTypeId: str,
+ resourcePoolId: str, name: str, parentId: str = '',
+ gAssetId: str = '', elements: str = '',
+ description: str = '') -> None:
+ super().__init__()
+ self.resourceId = resourceId
+ self.description = description
+ self.resourceTypeId = resourceTypeId
+ self.globalAssetId = gAssetId
+ self.resourcePoolId = resourcePoolId
+ self.elements = elements
+ self.extensions = []
+
+ self.name = name
+ self.parentId = parentId
+ self.children = []
+
+ self.version_number = 0
+
+ def set_children(self, children: list):
+ self.children = children
+
+ def set_resource_type_name(self, resource_type_name: str):
+ self.resourceTypeName = resource_type_name
+
+ def serialize(self):
+ d = Serializer.serialize(self)
+
+ if 'elements' in d and d['elements'] != '':
+ d['elements'] = json.loads(d['elements'])
+
+ if not hasattr(self, 'children') or len(self.children) == 0:
+ return d
+ else:
+ d['children'] = []
+
+ for child in self.children:
+ d['children'].append(child.serialize())
+ return d
+
+
+class Ocloud(AgRoot, Serializer):
+ def __init__(self, ocloudid: str, name: str, imsendpoint: str,
+ globalcloudId: str = '',
+ description: str = '', version_number: int = 0) -> None:
+ super().__init__()
+ self.oCloudId = ocloudid
+ self.globalCloudId = globalcloudId
+ self.name = name
+ self.description = description
+ self.serviceUri = imsendpoint
+ self.resourceTypes = []
+ self.resourcePools = []
+ self.deploymentManagers = []
+ self.smoRegistrationService = ''
+ self.extensions = []
+
+ self.version_number = version_number
+
+ # def addDeploymentManager(self,
+ # deploymentManager: DeploymentManager):
+
+ # deploymentManager.oCloudId = self.oCloudId
+ # old = filter(
+ # lambda x: x.deploymentManagerId ==
+ # deploymentManager.deploymentManagerId,
+ # self.deploymentManagers)
+ # for o in old or []:
+ # self.deploymentManagers.remove(o)
+ # self.deploymentManagers.append(deploymentManager)