from o2common.service import unit_of_work
from o2common.config import config
+from o2common.views.view import gen_filter, check_filter
from o2common.views.pagination_view import Pagination
+from o2common.views.route_exception import BadRequestException, \
+ NotFoundException
+
from o2ims.domain import ocloud
from o2ims.views.ocloud_dto import SubscriptionDTO
from o2ims.domain.subscription_obj import Subscription
def resource_types(uow: unit_of_work.AbstractUnitOfWork, **kwargs):
pagination = Pagination(**kwargs)
- filter_kwargs = pagination.get_filter()
+ query_kwargs = pagination.get_pagination()
+ args = gen_filter(ocloud.ResourceType,
+ kwargs['filter']) if 'filter' in kwargs else []
with uow:
- li = uow.resource_types.list_with_count(**filter_kwargs)
+ li = uow.resource_types.list_with_count(*args, **query_kwargs)
return pagination.get_result(li)
def resource_pools(uow: unit_of_work.AbstractUnitOfWork, **kwargs):
pagination = Pagination(**kwargs)
- filter_kwargs = pagination.get_filter()
+ query_kwargs = pagination.get_pagination()
+ args = gen_filter(ocloud.ResourcePool,
+ kwargs['filter']) if 'filter' in kwargs else []
with uow:
- li = uow.resource_pools.list_with_count(**filter_kwargs)
+ li = uow.resource_pools.list_with_count(*args, **query_kwargs)
return pagination.get_result(li)
**kwargs):
pagination = Pagination(**kwargs)
# filter key should be the same with database name
- filter_kwargs = pagination.get_filter()
+ query_kwargs = pagination.get_pagination()
if 'resourceTypeName' in kwargs:
resource_type_name = kwargs['resourceTypeName']
with uow:
# restype_id = '' if len(restype_ids) == 0 else restype_ids[0]
res_type = uow.resource_types.get_by_name(resource_type_name)
restype_id = '' if res_type is None else res_type.resourceTypeId
- filter_kwargs['resourceTypeId'] = restype_id
+ query_kwargs['resourceTypeId'] = restype_id
+ args = gen_filter(
+ ocloud.Resource, kwargs['filter']) if 'filter' in kwargs else []
+ args.append(ocloud.Resource.resourcePoolId == resourcePoolId)
+ # args.append(ocloud.Resource.parentId == None)
if 'parentId' in kwargs:
- filter_kwargs['parentId'] = kwargs['parentId']
+ query_kwargs['parentId'] = kwargs['parentId']
if 'sort' in kwargs:
- filter_kwargs['sort'] = kwargs['sort']
+ query_kwargs['sort'] = kwargs['sort']
with uow:
- ret = uow.resources.list_with_count(resourcePoolId, **filter_kwargs)
+ ret = uow.resources.list_with_count(
+ resourcePoolId, *args, **query_kwargs)
return pagination.get_result(ret)
def deployment_managers(uow: unit_of_work.AbstractUnitOfWork, **kwargs):
pagination = Pagination(**kwargs)
- filter_kwargs = pagination.get_filter()
+ query_kwargs = pagination.get_pagination()
+ args = gen_filter(ocloud.DeploymentManager,
+ kwargs['filter']) if 'filter' in kwargs else []
with uow:
- li = uow.deployment_managers.list_with_count(**filter_kwargs)
+ li = uow.deployment_managers.list_with_count(*args, **query_kwargs)
return pagination.get_result(li)
def deployment_manager_one(deploymentManagerId: str,
uow: unit_of_work.AbstractUnitOfWork,
- profile: str = 'default'):
+ profile: str =
+ ocloud.DeploymentManagerProfileDefault):
profile = profile.lower()
with uow:
first = uow.deployment_managers.get(deploymentManagerId)
return None
profile_data = result.pop("profile", None)
- result['profileName'] = profile
-
- if ocloud.DeploymentManagerProfileDefault == profile:
- pass
- elif ocloud.DeploymentManagerProfileSOL018 == profile:
- result['deploymentManagementServiceEndpoint'] = \
+ profiles = config.get_dms_support_profiles()
+ if profile not in profiles:
+ return ""
+
+ extensions = {
+ 'profileName': profile
+ }
+ if ocloud.DeploymentManagerProfileDefault == profile \
+ or ocloud.DeploymentManagerProfileSOL018 == profile:
+ result['serviceUri'] = \
profile_data['cluster_api_endpoint']
- result['profileData'] = profile_data
+ extensions['profileData'] = profile_data
elif ocloud.DeploymentManagerProfileSOL018HelmCLI == profile:
- result['deploymentManagementServiceEndpoint'] = \
+ result['serviceUri'] = \
profile_data['cluster_api_endpoint']
helmcli_profile = dict()
config.get_helmcli_access()
helmcli_profile["helmcli_kubeconfig"] = _gen_kube_config(
deploymentManagerId, profile_data)
- result['profileData'] = helmcli_profile
+ extensions['profileData'] = helmcli_profile
else:
- return None
+ return ""
+ result['extensions'] = extensions
return result
def subscriptions(uow: unit_of_work.AbstractUnitOfWork, **kwargs):
pagination = Pagination(**kwargs)
- filter_kwargs = pagination.get_filter()
+ query_kwargs = pagination.get_pagination()
+ args = gen_filter(Subscription,
+ kwargs['filter']) if 'filter' in kwargs else []
with uow:
- li = uow.subscriptions.list_with_count(**filter_kwargs)
+ li = uow.subscriptions.list_with_count(*args, **query_kwargs)
return pagination.get_result(li)
return first.serialize() if first is not None else None
-def subscription_create(subscriptionDto: SubscriptionDTO.subscription,
+def subscription_create(subscriptionDto: SubscriptionDTO.subscription_create,
uow: unit_of_work.AbstractUnitOfWork):
+ filter = subscriptionDto.get('filter', '')
+ consumer_subs_id = subscriptionDto.get('consumerSubscriptionId', '')
+
+ check_filter(ocloud.Resource, filter)
sub_uuid = str(uuid.uuid4())
subscription = Subscription(
sub_uuid, subscriptionDto['callback'],
- subscriptionDto['consumerSubscriptionId'],
- subscriptionDto['filter'])
+ consumer_subs_id, filter)
with uow:
+ args = list()
+ args.append(getattr(Subscription, 'callback')
+ == subscriptionDto['callback'])
+ args.append(getattr(Subscription, 'filter') == filter)
+ args.append(getattr(Subscription,
+ 'consumerSubscriptionId') == consumer_subs_id)
+ count, _ = uow.subscriptions.list_with_count(*args)
+ if count > 0:
+ raise BadRequestException("The value of parameters is duplicated")
uow.subscriptions.add(subscription)
uow.commit()
- return {"subscriptionId": sub_uuid}
+ first = uow.subscriptions.get(sub_uuid)
+ return first.serialize()
def subscription_delete(subscriptionId: str,
uow: unit_of_work.AbstractUnitOfWork):
with uow:
+ first = uow.subscriptions.get(subscriptionId)
+ if not first:
+ raise NotFoundException(
+ "Subscription {} not found.".format(subscriptionId))
uow.subscriptions.delete(subscriptionId)
uow.commit()
return True