# Copyright (C) 2022 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. import uuid from typing import List from o2common.service.client.base_client import BaseClient from o2ims.domain import stx_object as ocloudModel from o2ims.domain.resource_type import ResourceTypeEnum from o2common.helper import o2logging logger = o2logging.get_logger(__name__) class ComputeAggClient(BaseClient): def __init__(self, driver=None): super().__init__() self.driver = AggClientImp() def _get(self, id) -> ocloudModel.StxGenericModel: return self.driver.getComputeList(res_pool=self._pool_id)[0] def _list(self, **filters): return self.driver.getComputeList(res_pool=self._pool_id) def _set_stx_client(self): pass class NetworkAggClient(BaseClient): def __init__(self, driver=None): super().__init__() self.driver = AggClientImp() def _get(self, id) -> ocloudModel.StxGenericModel: return self.driver.getNetworkList(res_pool=self._pool_id)[0] def _list(self, **filters): return self.driver.getNetworkList(res_pool=self._pool_id) def _set_stx_client(self): pass class StorageAggClient(BaseClient): def __init__(self, driver=None): super().__init__() self.driver = AggClientImp() def _get(self, id) -> ocloudModel.StxGenericModel: return self.driver.getStorageList(res_pool=self._pool_id)[0] def _list(self, **filters): return self.driver.getStorageList(res_pool=self._pool_id) def _set_stx_client(self): pass class UndefinedAggClient(BaseClient): def __init__(self, driver=None): super().__init__() self.driver = AggClientImp() def _get(self, id) -> ocloudModel.StxGenericModel: return self.driver.getUndefinedList(res_pool=self._pool_id)[0] def _list(self, **filters): return self.driver.getUndefinedList(res_pool=self._pool_id) def _set_stx_client(self): pass class AggClientImp(object): def __init__(self): super().__init__() def getComputeList(self, **filters) -> List[ocloudModel.StxGenericModel]: compute = ComputeAggregate(filters['res_pool']) return [ocloudModel.StxGenericModel( ResourceTypeEnum.COMPUTE_AGGREGATE, compute)] def getNetworkList(self, **filters) -> List[ocloudModel.StxGenericModel]: network = NetworkAggregate(filters['res_pool']) return [ocloudModel.StxGenericModel( ResourceTypeEnum.NETWORK_AGGREGATE, network)] def getStorageList(self, **filters) -> List[ocloudModel.StxGenericModel]: storage = StorageAggregate(filters['res_pool']) return [ocloudModel.StxGenericModel( ResourceTypeEnum.STORAGE_AGGREGATE, storage)] def getUndefinedList(self, **filters) -> List[ocloudModel.StxGenericModel]: undefined = UndefinedAggregate(filters['res_pool']) return [ocloudModel.StxGenericModel( ResourceTypeEnum.UNDEFINED_AGGREGATE, undefined)] class Aggregate: def __init__(self, res_pool_id: str, name: str) -> None: self.name = name setattr(self, 'name', self.name) setattr(self, 'uuid', uuid.uuid3(uuid.NAMESPACE_URL, res_pool_id + self.name)) setattr(self, 'updated_at', None) setattr(self, 'created_at', None) def to_dict(self): return {} class ComputeAggregate(Aggregate): def __init__(self, res_pool_id: str) -> None: super().__init__(res_pool_id, 'compute_aggregate') class NetworkAggregate(Aggregate): def __init__(self, res_pool_id: str) -> None: super().__init__(res_pool_id, 'network_aggregate') class StorageAggregate(Aggregate): def __init__(self, res_pool_id: str) -> None: super().__init__(res_pool_id, 'storage_aggregate') class UndefinedAggregate(Aggregate): def __init__(self, res_pool_id: str) -> None: super().__init__(res_pool_id, 'undefined_aggregate')