コード例 #1
0
def org_vdc_list(data, operation_context: ctx.OperationContext):
    """Request handler for org vdc list operation.

    This handler returns a paginated response.
    :return: Dictionary containing paginated response with Org VDC runtime info
    :rtype: dict
    """
    query_params = data.get(RequestKey.QUERY_PARAMS, {})
    page_number = int(
        query_params.get(PaginationKey.PAGE_NUMBER,
                         CSE_PAGINATION_FIRST_PAGE_NUMBER))
    page_size = int(
        query_params.get(PaginationKey.PAGE_SIZE,
                         CSE_PAGINATION_DEFAULT_PAGE_SIZE))
    result = ovdc_service.list_org_vdcs(operation_context,
                                        page_number=page_number,
                                        page_size=page_size)
    # remove duplicate /api path while forming the endpoint url
    base_uri = f"{operation_context.client.get_api_uri().strip('/api')}{data['url']}"  # noqa: E501
    return server_utils.create_links_and_construct_paginated_result(
        base_uri,
        result[PaginationKey.VALUES],
        result[PaginationKey.RESULT_TOTAL],
        page_number=page_number,
        page_size=page_size)
コード例 #2
0
def cluster_acl_info(data: dict, op_ctx: ctx.OperationContext):
    """Request handler for cluster acl list operation."""
    rde_in_use = server_utils.get_rde_version_in_use()

    # Redirect to generic handler if the backend supports RDE-2.0
    if semantic_version.Version(rde_in_use) >= semantic_version.Version(
            rde_constants.RDEVersion.RDE_2_0_0.value):  # noqa: E501
        return cluster_handler.cluster_acl_info(data=data, op_ctx=op_ctx)

    svc = cluster_service_factory.ClusterServiceFactory(op_ctx). \
        get_cluster_service(rde_in_use)
    cluster_id = data[RequestKey.CLUSTER_ID]
    query = data.get(RequestKey.QUERY_PARAMS, {})
    page = int(
        query.get(PaginationKey.PAGE_NUMBER,
                  CSE_PAGINATION_FIRST_PAGE_NUMBER))  # noqa: E501
    page_size = int(
        query.get(PaginationKey.PAGE_SIZE,
                  CSE_PAGINATION_DEFAULT_PAGE_SIZE))  # noqa: E501
    result: dict = svc.get_cluster_acl_info(cluster_id, page, page_size)

    uri = f"{op_ctx.client.get_api_uri().strip('/api')}{data['url']}"
    return server_utils.create_links_and_construct_paginated_result(
        base_uri=uri,
        values=result.get(PaginationKey.VALUES, []),
        result_total=result.get(PaginationKey.RESULT_TOTAL, 0),
        page_number=page,
        page_size=page_size)
コード例 #3
0
def cluster_acl_info(data: dict, op_ctx: ctx.OperationContext):
    """Request handler for cluster acl list operation."""
    cluster_id = data[RequestKey.CLUSTER_ID]
    def_entity_service = entity_service.DefEntityService(
        op_ctx.cloudapi_client)  # noqa: E501
    def_entity = def_entity_service.get_entity(cluster_id)
    rde_utils.raise_error_if_tkgm_cluster_operation(
        def_entity.entity.kind)  # noqa: E501
    query = data.get(RequestKey.QUERY_PARAMS, {})
    page = int(
        query.get(PaginationKey.PAGE_NUMBER,
                  CSE_PAGINATION_FIRST_PAGE_NUMBER))  # noqa: E501
    page_size = int(
        query.get(PaginationKey.PAGE_SIZE,
                  CSE_PAGINATION_DEFAULT_PAGE_SIZE))  # noqa: E501
    op_ctx.entity_id = data[
        RequestKey.CLUSTER_ID]  # hack for passing entity id  # noqa: E501
    svc = cluster_service_factory.ClusterServiceFactory(
        _get_request_context(op_ctx)).get_cluster_service()  # noqa: E501
    result: dict = svc.get_cluster_acl_info(cluster_id, page, page_size)

    # remove duplicate /api path while forming the endpoint url
    uri = f"{op_ctx.client.get_api_uri().strip('/api')}{data['url']}"
    return server_utils.create_links_and_construct_paginated_result(
        base_uri=uri,
        values=result.get(PaginationKey.VALUES, []),
        result_total=result.get(PaginationKey.RESULT_TOTAL, 0),
        page_number=page,
        page_size=page_size)
コード例 #4
0
def native_cluster_list(data: dict, op_ctx: ctx.OperationContext):
    """Request handler for cluster list operation.

    :return: List
    """
    svc = cluster_service_factory.ClusterServiceFactory(op_ctx).get_cluster_service()  # noqa: E501
    filters = data.get(RequestKey.QUERY_PARAMS, {})
    page_number = int(filters.get(PaginationKey.PAGE_NUMBER,
                                  CSE_PAGINATION_FIRST_PAGE_NUMBER))
    page_size = int(filters.get(PaginationKey.PAGE_SIZE,
                                CSE_PAGINATION_DEFAULT_PAGE_SIZE))

    # remove page number and page size from the filters as it is treated
    # differently from other filters
    if PaginationKey.PAGE_NUMBER in filters:
        del filters[PaginationKey.PAGE_NUMBER]
    if PaginationKey.PAGE_SIZE in filters:
        del filters[PaginationKey.PAGE_SIZE]

    # response needs to paginated
    result = svc.get_clusters_by_page(filters=filters)
    clusters = [def_entity.to_dict() for def_entity in result[PaginationKey.VALUES]]  # noqa: E501

    uri = data['url']
    return server_utils.create_links_and_construct_paginated_result(
        uri,
        clusters,
        result_total=result[PaginationKey.RESULT_TOTAL],
        page_number=page_number,
        page_size=page_size,
        query_params=filters)
コード例 #5
0
def org_vdc_list(data, operation_context: ctx.OperationContext):
    """Request handler for org vdc list operation.

    This handler returns a paginated response.
    :return: Dictionary containing paginated response with Org VDC runtime info
    :rtype: dict
    """
    query_params = data.get(RequestKey.V35_QUERY, {})
    page_number = int(
        query_params.get(PaginationKey.PAGE_NUMBER,
                         CSE_PAGINATION_FIRST_PAGE_NUMBER))
    page_size = int(
        query_params.get(PaginationKey.PAGE_SIZE,
                         CSE_PAGINATION_DEFAULT_PAGE_SIZE))
    result = ovdc_service.list_org_vdcs(operation_context,
                                        page_number=page_number,
                                        page_size=page_size)
    api_path = CseServerOperationInfo.V35_ORG_VDC_LIST.api_path_format
    base_uri = f"{operation_context.client.get_api_uri().strip('/')}{api_path}"
    return server_utils.create_links_and_construct_paginated_result(
        base_uri,
        result[PaginationKey.VALUES],
        result[PaginationKey.RESULT_TOTAL],
        page_number=page_number,
        page_size=page_size)
コード例 #6
0
def native_cluster_list(data: dict, op_ctx: ctx.OperationContext):
    """Request handler for cluster list operation.

    :return: List
    """
    rde_in_use = server_utils.get_rde_version_in_use()

    # Redirect to generic handler if the backend supports RDE-2.0
    if semantic_version.Version(rde_in_use) >= semantic_version.Version(
            rde_constants.RDEVersion.RDE_2_0_0.value):  # noqa: E501
        response_data: dict = cluster_handler.native_cluster_list(
            data=data, op_ctx=op_ctx)  # noqa: E501
        rde_list: list[dict] = response_data[PaginationKey.VALUES]
        formatted_rde_list = [
            _convert_rde_to_1_0_format(rde_data) for rde_data in rde_list
        ]  # noqa: E501
        response_data[PaginationKey.VALUES] = formatted_rde_list
        return response_data

    svc = cluster_service_factory.ClusterServiceFactory(op_ctx). \
        get_cluster_service(rde_in_use)
    filters = data.get(RequestKey.QUERY_PARAMS, {})
    page_number = int(
        filters.get(PaginationKey.PAGE_NUMBER,
                    CSE_PAGINATION_FIRST_PAGE_NUMBER))
    page_size = int(
        filters.get(PaginationKey.PAGE_SIZE, CSE_PAGINATION_DEFAULT_PAGE_SIZE))

    # remove page number and page size from the filters as it is treated
    # differently from other filters
    if PaginationKey.PAGE_NUMBER in filters:
        del filters[PaginationKey.PAGE_NUMBER]
    if PaginationKey.PAGE_SIZE in filters:
        del filters[PaginationKey.PAGE_SIZE]

    # response needs to paginated
    result = svc.get_clusters_by_page(filters=filters)
    clusters = [
        def_entity.to_dict() for def_entity in result[PaginationKey.VALUES]
    ]  # noqa: E501

    # remove duplicate /api path while forming the endpoint url
    uri = f"{op_ctx.client.get_api_uri().strip('/api')}{data['url']}"
    return server_utils.create_links_and_construct_paginated_result(
        uri,
        clusters,
        result_total=result[PaginationKey.RESULT_TOTAL],
        page_number=page_number,
        page_size=page_size,
        query_params=filters)
コード例 #7
0
def cluster_acl_info(data: dict, op_ctx: ctx.OperationContext):
    """Request handler for cluster acl list operation."""
    svc = cluster_service_factory.ClusterServiceFactory(op_ctx).get_cluster_service()  # noqa: E501
    cluster_id = data[RequestKey.CLUSTER_ID]
    query = data.get(RequestKey.QUERY_PARAMS, {})
    page = int(query.get(PaginationKey.PAGE_NUMBER, CSE_PAGINATION_FIRST_PAGE_NUMBER))  # noqa: E501
    page_size = int(query.get(PaginationKey.PAGE_SIZE, CSE_PAGINATION_DEFAULT_PAGE_SIZE))  # noqa: E501
    result: dict = svc.get_cluster_acl_info(cluster_id, page, page_size)

    uri = data['url']
    return server_utils.create_links_and_construct_paginated_result(
        base_uri=uri,
        values=result.get(PaginationKey.VALUES, []),
        result_total=result.get(PaginationKey.RESULT_TOTAL, 0),
        page_number=page,
        page_size=page_size)
コード例 #8
0
def native_cluster_list(request_data, op_ctx: ctx.OperationContext):
    """Request handler for cluster list operation.

    Optional data and default values: org_name=None, ovdc_name=None

    (data validation handled in broker)

    :return: List
    """
    vcd_broker = VcdBroker(op_ctx)

    query_params = request_data.get(RequestKey.QUERY_PARAMS, {})
    page_number = int(query_params.get(PaginationKey.PAGE_NUMBER, CSE_PAGINATION_FIRST_PAGE_NUMBER))  # noqa: E501
    page_size = int(query_params.get(PaginationKey.PAGE_SIZE, CSE_PAGINATION_DEFAULT_PAGE_SIZE))  # noqa: E501 =
    query_params_others = {}
    for k, v in query_params.items():
        if k not in [PaginationKey.PAGE_NUMBER, PaginationKey.PAGE_SIZE]:
            query_params_others[k] = v

    data = req_utils.flatten_request_data(
        request_data, [RequestKey.QUERY_PARAMS])

    vcd_clusters_info = vcd_broker.get_clusters_by_page(
        data=data, page_number=page_number, page_size=page_size)

    properties_to_retain = [
        'name',
        'vdc',
        'status',
        'org_name',
        'k8s_version',
        K8S_PROVIDER_KEY
    ]
    clusters = vcd_clusters_info[PaginationKey.VALUES]
    result = _retain_cluster_list_common_properties(clusters,
                                                    properties_to_retain)
    # remove duplicate /api path while forming the endpoint url
    base_url = f"{op_ctx.client.get_api_uri().strip('/api')}" \
        f"{request_data['url']}"
    return server_utils.create_links_and_construct_paginated_result(
        base_url,
        result,
        vcd_clusters_info[PaginationKey.RESULT_TOTAL],
        page_number=page_number,
        page_size=page_size,
        query_params=query_params_others)
コード例 #9
0
def cluster_acl_info(data: dict, op_ctx: ctx.OperationContext):
    """Request handler for cluster acl list operation."""
    rde_in_use = server_utils.get_rde_version_in_use()
    svc = cluster_service_factory.ClusterServiceFactory(op_ctx). \
        get_cluster_service(rde_in_use)
    cluster_id = data[RequestKey.CLUSTER_ID]
    query = data.get(RequestKey.V35_QUERY, {})
    page = int(
        query.get(PaginationKey.PAGE_NUMBER,
                  CSE_PAGINATION_FIRST_PAGE_NUMBER))  # noqa: E501
    page_size = int(
        query.get(PaginationKey.PAGE_SIZE,
                  CSE_PAGINATION_DEFAULT_PAGE_SIZE))  # noqa: E501
    result: dict = svc.get_cluster_acl_info(cluster_id, page, page_size)
    api_path = CseServerOperationInfo.V35_CLUSTER_ACL_LIST.api_path_format % cluster_id  # noqa: E501
    uri = f"{op_ctx.client.get_api_uri().strip('/')}{api_path}"
    return server_utils.create_links_and_construct_paginated_result(
        base_uri=uri,
        values=result.get(PaginationKey.VALUES, []),
        result_total=result.get(PaginationKey.RESULT_TOTAL, 0),
        page_number=page,
        page_size=page_size)
コード例 #10
0
def native_cluster_list(data: dict, op_ctx: ctx.OperationContext):
    """Request handler for cluster list operation.

    :return: List
    """
    rde_in_use = server_utils.get_rde_version_in_use()
    svc = cluster_service_factory.ClusterServiceFactory(op_ctx). \
        get_cluster_service(rde_in_use)
    filters = data.get(RequestKey.V35_QUERY, {})
    page_number = int(
        filters.get(PaginationKey.PAGE_NUMBER,
                    CSE_PAGINATION_FIRST_PAGE_NUMBER))
    page_size = int(
        filters.get(PaginationKey.PAGE_SIZE, CSE_PAGINATION_DEFAULT_PAGE_SIZE))

    # remove page number and page size from the filters as it is treated
    # differently from other filters
    if PaginationKey.PAGE_NUMBER in filters:
        del filters[PaginationKey.PAGE_NUMBER]
    if PaginationKey.PAGE_SIZE in filters:
        del filters[PaginationKey.PAGE_SIZE]

    # response needs to paginated
    result = svc.get_clusters_by_page(filters=filters)
    clusters = [
        asdict(def_entity) for def_entity in result[PaginationKey.VALUES]
    ]  # noqa: E501
    api_path = CseServerOperationInfo.V35_NATIVE_CLUSTER_LIST.api_path_format
    uri = f"{op_ctx.client.get_api_uri().strip('/')}{api_path}"
    return server_utils.create_links_and_construct_paginated_result(
        uri,
        clusters,
        result_total=result[PaginationKey.RESULT_TOTAL],
        page_number=page_number,
        page_size=page_size,
        query_params=filters)