azext_edge/edge/providers/orchestration/resources/custom_locations.py (46 lines of code) (raw):

# coding=utf-8 # ---------------------------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. See License file in the project root for license information. # ---------------------------------------------------------------------------------------------- from typing import TYPE_CHECKING, Optional, Iterable from knack.log import get_logger from ....util.az_client import get_extloc_mgmt_client, wait_for_terminal_state from ....util.queryable import Queryable logger = get_logger(__name__) if TYPE_CHECKING: from ....vendor.clients.extendedlocmgmt.operations import CustomLocationsOperations class CustomLocations(Queryable): def __init__(self, cmd): super().__init__(cmd=cmd) self.extloc_mgmt_client = get_extloc_mgmt_client( subscription_id=self.default_subscription_id, ) self.ops: "CustomLocationsOperations" = self.extloc_mgmt_client.custom_locations def show(self, name: str, resource_group_name: str) -> dict: return self.ops.get(resource_group_name=resource_group_name, resource_name=name) def create( self, name: str, resource_group_name: str, host_resource_id: str, namespace: str, cluster_extension_ids: Iterable[str], location: str, display_name: Optional[str] = None, tags: Optional[dict] = None, **kwargs ) -> dict: properties = { "hostResourceId": host_resource_id, "namespace": namespace, "clusterExtensionIds": list( cluster_extension_ids, ), } parameters = {"properties": properties, "location": location} if tags: parameters["tags"] = tags if display_name: properties["displayName"] = display_name poller = self.ops.begin_create_or_update( resource_group_name=resource_group_name, resource_name=name, parameters=parameters, ) return wait_for_terminal_state(poller, **kwargs)