X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=o2ims%2Fdomain%2Focloud.py;h=bdc07d9b7eaf9a3df29cd26ddbb8db768890cc7b;hb=39f31c58d87c6d83fd7ef25247f9d30122cd8a77;hp=7ed2c1e05b6a51765971e1ab77f8d08956c3ace6;hpb=b21c925328b0c700fde9001b7a56ea55decdf088;p=pti%2Fo2.git diff --git a/o2ims/domain/ocloud.py b/o2ims/domain/ocloud.py index 7ed2c1e..bdc07d9 100644 --- a/o2ims/domain/ocloud.py +++ b/o2ims/domain/ocloud.py @@ -1,121 +1,185 @@ -# 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 - -from o2ims.domain.base import AgRoot -# from dataclasses import dataclass -# from datetime import date -# from typing import Optional, List, Set -from .resource_type import ResourceTypeEnum -# from uuid import UUID - - -class Subscription(AgRoot): - def __init__(self, id: str, callback: str, consumersubid: list = [], - filter: list = []) -> None: - self.subscriptionId = id - self.callback = callback - self.consumerSubscriptionId = consumersubid - self.filter = filter - - -class DeploymentManager: - def __init__(self, id: str, name: str, ocloudid: str, - dmsendpoint: str, description: str = '', - supportedLocations: str = '', capabilities: str = '', - capacity: str = '') -> None: - self.deploymentManagerId = id - self.oCloudId = ocloudid - self.name = name - self.description = description - self.deploymentManagementServiceEndpoint = dmsendpoint - self.supportedLocations = supportedLocations - self.capabilities = capabilities - self.capacity = capacity - self.extensions = [] - - -class ResourcePool(AgRoot): - def __init__(self, id: str, name: str, location: str, - ocloudid: str, gLocationId: str = '', - description: str = '') -> None: - self.resourcePoolId = id - self.oCloudId = ocloudid - self.globalLocationId = gLocationId - self.name = name - self.location = location - self.description = description - self.extensions = [] - - -class ResourceType(AgRoot): - def __init__(self, typeid: str, name: str, typeEnum: ResourceTypeEnum, - ocloudid: str, vender: str = '', model: str = '', - version: str = '', - description: str = '') -> None: - self.resourceTypeId = typeid - self.oCloudId = ocloudid - self.resourceTypeEnum = typeEnum.value - self.name = name - self.vender = vender - self.model = model - self.version = version - self.description = description - self.extensions = [] - - -class Resource(AgRoot): - def __init__(self, resourceId: str, resourceTypeId: str, - resourcePoolId: str, oCloudId: str = '', - parentId: str = '', elements: list = [], - description: str = '') -> None: - self.resourceId = resourceId - self.oCloudId = oCloudId - self.resourceTypeId = resourceTypeId - self.resourcePoolId = resourcePoolId - self.parentId = parentId - self.elements = elements - self.description = description - self.extensions = [] - - -class Ocloud(AgRoot): - 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.version_number = version_number - self.name = name - self.description = description - self.infrastructureManagementServiceEndpoint = imsendpoint - self.resourcePools = [] - self.deploymentManagers = [] - self.resourceTypes = [] - self.extensions = [] - # self.events = [] - - 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) +# 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) + + if CONF.alarm_dictionaries.get(d['name']) is not None: + 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)