Source code for yr.resource_group

#!/usr/bin/env python3
# coding=UTF-8
# Copyright (c) Huawei Technologies Co., Ltd. 2025. All rights reserved.
#
# 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.

from dataclasses import dataclass
from typing import Dict, List, Optional
from yr.common import constants
from yr.runtime_holder import global_runtime


[docs] @dataclass(init=True, repr=False, eq=False, order=False, unsafe_hash=False) class ResourceGroup: """ The handle returned after creating a ResourceGroup. Examples: >>> rg = yr.create_resource_group([{"NPU":1},{"CPU":2000,"Memory":2000}], "rgname") """
[docs] def __init__( self, name: '', request_id: '', bundles: Optional[List[Dict]] = None, ): """Initialize ResourceGroup.""" self.name = name self.request_id = request_id self.bundles = bundles
@property def bundle_specs(self) -> List[Dict]: """ Returns all bundles under the current resource group. Returns: All bundles under the current resource group.Data type is List[Dict]. Examples: >>> rg = yr.create_resource_group([{"NPU":1},{"CPU":2000,"Memory":2000}], "rgname") >>> bundles = rg.bundle_specs """ return self.bundles @property def bundle_count(self) -> int: """ Returns the number of bundles in the current resource group. Returns: Number of bundles in the current resource group. Data type is int. Examples: >>> import yr >>> yr.init() >>> rg = yr.create_resource_group([{"NPU":1},{"CPU":2000,"Memory":2000}], "rgname") >>> count = rg.bundle_count >>> print(count) """ return len(self.bundles) @property def resource_group_name(self) -> str: """ Returns the name of the current resource group. Returns: Name of the current resource group. Data type is str. Examples: >>> import yr >>> yr.init() >>> rg = yr.create_resource_group([{"NPU":1},{"CPU":2000,"Memory":2000}], "rgname") >>> name = rg.resource_group_name >>> print(name) """ return self.name
[docs] def wait(self, timeout_seconds: Optional[int] = None) -> None: """ Block and wait for the result of creating a ResourceGroup. Args: timeout_seconds (Optional[int], optional): The timeout time for blocking while waiting for the creation of a ResourceGroup result. The default value is None, which is ``-1`` (never timeout). The value range must be an integer >= ``-1``. If it equals ``-1``, it will wait indefinitely. Raises: ValueError: Timeout is less than ``-1``. Examples: >>> rg = yr.create_resource_group([{"NPU":1},{"CPU":2000,"Memory":2000}], "rgname") >>> rg.wait(60) """ if timeout_seconds is None: timeout_seconds = constants.NO_LIMIT if timeout_seconds < constants.NO_LIMIT: raise ValueError( "Parameter 'timeout_seconds' should be greater than or equal to -1 (no timeout)") global_runtime.get_runtime().wait_resource_group(self.name, self.request_id, timeout_seconds)