azext_edge/edge/providers/orchestration/rp_namespace.py (23 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 Optional
from knack.log import get_logger
from ...util.az_client import get_resource_client
logger = get_logger(__name__)
ADR_PROVIDER = "Microsoft.DeviceRegistry"
RP_NAMESPACE_SET = frozenset(
[
"Microsoft.IoTOperations",
"Microsoft.SecretSyncController",
ADR_PROVIDER
]
)
def register_providers(subscription_id: str, resource_provider: Optional[str] = None):
resource_client = get_resource_client(subscription_id=subscription_id)
providers_list = resource_client.providers.list()
required_providers = [resource_provider] if resource_provider else RP_NAMESPACE_SET
for provider in providers_list:
if "namespace" in provider and provider["namespace"] in required_providers:
if provider["registrationState"] == "Registered":
logger.debug("RP %s is already registered.", provider["namespace"])
continue
logger.debug("Registering RP %s.", provider["namespace"])
resource_client.providers.register(provider["namespace"])