azext_edge/edge/providers/rpsaas/adr/helpers.py (27 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 knack.log import get_logger from typing import Dict, Optional from ...orchestration.resources import Instances logger = get_logger(__name__) def check_cluster_connectivity(cmd, resource: dict): """ Uses the resource's extended location to get the cluster and checks connectivity. Use this for commands that require the cluster to be connected to succeed. resource: dict representing an object that has the extended location property. """ connected_cluster = Instances(cmd=cmd).get_resource_map(resource).connected_cluster if not connected_cluster.connected: logger.warning(f"Cluster {connected_cluster.cluster_name} is not connected.") def get_extended_location( cmd, instance_name: str, instance_resource_group: str, instance_subscription: Optional[str] = None ) -> Dict[str, str]: """ Returns the extended location object with cluster location. Will also check for instance existance and whether the associated cluster is connected. instance_name: str representing the instance name instance_resource_group: str representing the instance resource group instance_subscription: str representing the instance subscription (if it is different from the current one) """ instance_provider = Instances(cmd=cmd, subscription_id=instance_subscription) # instance should exist instance = instance_provider.show( name=instance_name, resource_group_name=instance_resource_group ) resource_map = instance_provider.get_resource_map(instance=instance) connected_cluster = resource_map.connected_cluster if not connected_cluster.connected: logger.warning(f"Cluster {connected_cluster.cluster_name} is not connected.") return { "type": "CustomLocation", "name": instance["extendedLocation"]["name"], "cluster_location": connected_cluster.location }