pai/api/code_source.py (55 lines of code) (raw):
# Copyright 2023 Alibaba, Inc. or its affiliates.
#
# 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
#
# https://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 datetime import datetime
from typing import Any, Dict
from ..libs.alibabacloud_aiworkspace20210204.models import (
CreateCodeSourceRequest,
ListCodeSourcesRequest,
)
from .base import PaginatedResult, ServiceName, WorkspaceScopedResourceAPI
class CodeSourceAPI(WorkspaceScopedResourceAPI):
"""Class which provide API to operate CodeSource resource."""
BACKEND_SERVICE_NAME = ServiceName.PAI_WORKSPACE
_list_method = "list_code_sources_with_options"
_get_method = "get_code_source_with_options"
_delete_method = "delete_code_source_with_options"
_create_method = "create_code_source_with_options"
@classmethod
def _generate_display_name(cls, job):
return "{}-{}".format(
type(job).__name__, datetime.now().isoformat(sep="-", timespec="seconds")
)
def list(
self,
display_name=None,
order=None,
page_number=1,
page_size=50,
sort_by=None,
) -> PaginatedResult:
"""Returns a List of CodeSource match the conditions.
Args:
display_name: Display name of the CodeSource.
sort_by: Filed using in code source sort.
order:
page_size: Page size.
page_number: Page number.
Returns:
list: A list of code source.
"""
request = ListCodeSourcesRequest(
display_name=display_name,
order=order,
page_number=page_number,
page_size=page_size,
sort_by=sort_by,
)
resp = self._do_request(method_=self._list_method, request=request).to_map()
return self.make_paginated_result(resp)
def count(
self,
display_name=None,
):
"""Returns count of CodeSource match the conditions.
Args:
display_name: Display name of the CodeSource.
Returns:
int: Count of code source.
"""
request = ListCodeSourcesRequest(
display_name=display_name,
)
result = self._do_request(self._list_method, request=request)
return result.total_count
def get_api_object_by_resource_id(self, resource_id):
result = self._do_request(self._get_method, code_source_id=resource_id)
return result.to_map()
def get(self, id: str) -> Dict[str, Any]:
"""Get CodeSource by Id.
Returns:
Dict[str, Any]
"""
return self.get_api_object_by_resource_id(resource_id=id)
def delete(self, id):
"""Delete the CodeSource."""
self._do_request(self._delete_method, code_source_id=id)
def create(self, code_source):
"""Create a CodeSource resource."""
request = CreateCodeSourceRequest().from_map(code_source.to_api_object())
resp = self._do_request(self._create_method, request=request)
return resp.code_source_id