X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=o2ims%2Fdomain%2Focloud.py;h=ce46e96a53b1f2702149e4f9f0471a3dbf62a07a;hb=1afd31661caed07e670d4371d1ac34caa7eb2539;hp=047fb8bab43e4bc859b752cf62447c7090583ec2;hpb=f7ef52a5b4ead0472b1b5828471b28c88d2a0aea;p=pti%2Fo2.git diff --git a/o2ims/domain/ocloud.py b/o2ims/domain/ocloud.py index 047fb8b..ce46e96 100644 --- a/o2ims/domain/ocloud.py +++ b/o2ims/domain/ocloud.py @@ -15,37 +15,40 @@ from __future__ import annotations import json -from o2common.domain.base import AgRoot, Serializer +from o2common.config import config +from o2common.domain.base import AgRoot, Serializer, \ + InfrastructureInventoryObject # from dataclasses import dataclass # from datetime import date # from typing import Optional, List, Set -from .resource_type import ResourceTypeEnum -# from uuid import UUID +from .resource_type import ResourceKindEnum, ResourceTypeEnum +from .alarm_obj import AlarmDictionary -DeploymentManagerProfileDefault = 'default' +DeploymentManagerProfileDefault = 'native_k8sapi' DeploymentManagerProfileSOL018 = 'sol018' DeploymentManagerProfileSOL018HelmCLI = 'sol018_helmcli' -class DeploymentManager(AgRoot, Serializer): +class DeploymentManager(InfrastructureInventoryObject, 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.version_number = 0 - self.oCloudId = ocloudid self.name = name self.description = description - self.deploymentManagementServiceEndpoint = dmsendpoint + 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) @@ -53,63 +56,97 @@ class DeploymentManager(AgRoot, Serializer): d['profile'] = json.loads(d['profile']) d['profileSupportList'] = [ DeploymentManagerProfileDefault, - DeploymentManagerProfileSOL018, - DeploymentManagerProfileSOL018HelmCLI, ] - + profiles = config.get_dms_support_profiles() + for profile in profiles: + if profile == DeploymentManagerProfileSOL018: + d['profileSupportList'].append(profile) + elif profile == DeploymentManagerProfileSOL018HelmCLI: + d['profileSupportList'].append(profile) + + if 'capabilities' in d and d['capabilities'] != '': + d['capabilities'] = json.loads(d['capabilities']) return d + def get_notification_dict(self): + return self.get_fields_as_dict( + ['deploymentManagerId', 'name', 'oCloudId', 'serviceUri', + 'description']) -class ResourcePool(AgRoot, Serializer): + +class ResourcePool(InfrastructureInventoryObject, AgRoot, Serializer): def __init__(self, id: str, name: str, location: str, ocloudid: str, gLocationId: str = '', description: str = '') -> None: super().__init__() self.resourcePoolId = id - self.version_number = 0 - self.oCloudId = ocloudid self.globalLocationId = gLocationId self.name = name - self.location = location self.description = description + self.oCloudId = ocloudid + self.location = location + self.resources = '' self.extensions = [] + self.version_number = 0 + + def get_notification_dict(self): + return self.get_fields_as_dict( + ['resourcePoolId', 'oCloudId', 'globalLocationId', 'name', + 'description']) + -class ResourceType(AgRoot, Serializer): +class ResourceType(InfrastructureInventoryObject, AgRoot, Serializer): def __init__(self, typeid: str, name: str, typeEnum: ResourceTypeEnum, - ocloudid: str, vender: str = '', model: str = '', + vendor: str = '', model: str = '', version: str = '', description: str = '') -> None: super().__init__() self.resourceTypeId = typeid - self.version_number = 0 - self.oCloudId = ocloudid self.resourceTypeEnum = typeEnum self.name = name - self.vender = vender + self.description = description + self.vendor = vendor self.model = model self.version = version - self.description = description + self.alarmDictionary = None + self.resourceKind = ResourceKindEnum.UNDEFINED + self.resourceClass = ResourceTypeEnum.UNDEFINED self.extensions = [] + self.version_number = 0 -class Resource(AgRoot, Serializer): + def serialize(self): + d = Serializer.serialize(self) + if 'alarmDictionary' in d and \ + type(d['alarmDictionary']) is AlarmDictionary: + d['alarmDictionary'] = d['alarmDictionary'].serialize() + return d + + def get_notification_dict(self): + return self.get_fields_as_dict( + ['resourceTypeId', 'name', 'description', 'vendor', 'model', + 'version']) + + +class Resource(InfrastructureInventoryObject, AgRoot, Serializer): def __init__(self, resourceId: str, resourceTypeId: str, - resourcePoolId: str, name: str, parentId: str = '', + resourcePoolId: str, parentId: str = '', gAssetId: str = '', elements: str = '', - description: str = '') -> None: + description: str = '', extensions: str = '') -> None: super().__init__() self.resourceId = resourceId - self.version_number = 0 + self.description = description self.resourceTypeId = resourceTypeId - self.resourcePoolId = resourcePoolId - self.name = name self.globalAssetId = gAssetId - self.parentId = parentId + self.resourcePoolId = resourcePoolId self.elements = elements - self.description = description + self.extensions = extensions + + self.parentId = parentId self.children = [] - self.extensions = [] + + self.version_number = 0 def set_children(self, children: list): self.children = children @@ -132,23 +169,34 @@ class Resource(AgRoot, Serializer): d['children'].append(child.serialize()) return d + def get_notification_dict(self): + return self.get_fields_as_dict( + ['resourceId', 'resourceTypeId', 'resourcePoolId', 'globalAssetId', + 'description']) + -class Ocloud(AgRoot, Serializer): +class Ocloud(InfrastructureInventoryObject, 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.version_number = version_number + self.globalCloudId = globalcloudId self.name = name self.description = description self.serviceUri = imsendpoint + self.resourceTypes = [] self.resourcePools = [] self.deploymentManagers = [] - self.resourceTypes = [] + self.smoRegistrationService = '' self.extensions = [] + self.version_number = version_number + + def get_notification_dict(self): + return self.get_fields_as_dict( + ['oCloudId', 'globalcloudId', 'globalCloudId', 'name', + 'description', 'serviceUri']) # def addDeploymentManager(self, # deploymentManager: DeploymentManager):