From e4e9108ae2b77f2095c4d1a4300e46b73d8319f8 Mon Sep 17 00:00:00 2001 From: Yuchao Yan Date: Tue, 7 Jul 2026 12:47:18 +0800 Subject: [PATCH 1/6] script and data --- check_mgmt_sdk_data.py | 189 ++++++++++++++++++++++++++++++++++++ data.txt | 137 ++++++++++++++++++++++++++ result.md | 138 ++++++++++++++++++++++++++ test_check_mgmt_sdk_data.py | 56 +++++++++++ 4 files changed, 520 insertions(+) create mode 100644 check_mgmt_sdk_data.py create mode 100644 data.txt create mode 100644 result.md create mode 100644 test_check_mgmt_sdk_data.py diff --git a/check_mgmt_sdk_data.py b/check_mgmt_sdk_data.py new file mode 100644 index 000000000000..6aabd1c48c79 --- /dev/null +++ b/check_mgmt_sdk_data.py @@ -0,0 +1,189 @@ +#!/usr/bin/env python +"""Check management SDK package and TypeSpec metadata from data.txt. + +Quick usage from the azure-sdk-for-python repo root: + + python .\\check_mgmt_sdk_data.py + +By default this reads ./data.txt, checks SDK packages under ./sdk, and writes +./result.md. Use --data, --sdk-repo, or --output to override those paths. +""" + +from __future__ import annotations + +import argparse +import re +import shlex +from dataclasses import dataclass +from pathlib import Path +from typing import Iterable, Sequence + + +SDK_NAME_PATTERN = re.compile(r"\bazure-mgmt-[A-Za-z0-9][A-Za-z0-9_-]*") + + +@dataclass(frozen=True) +class DataRow: + service_folder_1: str + service_folder_2: str + sdk_name: str = "" + + +@dataclass(frozen=True) +class ResultRow: + row_id: int + service_folder_1: str + service_folder_2: str + sdk_name: str + path_exists: bool | None + tsp_file_exists: bool | None + + +def parse_data_file(data_file: Path) -> list[DataRow]: + rows: list[DataRow] = [] + for line in data_file.read_text(encoding="utf-8").splitlines(): + stripped = line.strip() + if not stripped: + continue + + parts = shlex.split(stripped) + if len(parts) < 2 or "service" in stripped.lower() and "folder" in stripped.lower(): + continue + + rows.append(DataRow(parts[0], parts[1], parts[2] if len(parts) > 2 else "")) + return rows + + +def candidate_tsp_roots(rest_repo: Path, service_folder_1: str, service_folder_2: str) -> list[Path]: + service_folder_2_parts = Path(service_folder_2).parts + roots = [ + rest_repo / service_folder_1 / service_folder_2, + rest_repo / "specification" / service_folder_1 / service_folder_2, + ] + + if service_folder_2_parts: + spec_root = rest_repo / "specification" / service_folder_2_parts[0] / "resource-manager" + service_remainder = Path(*service_folder_2_parts[1:]) if len(service_folder_2_parts) > 1 else Path() + if service_remainder.parts and service_remainder.parts[0].lower() == service_folder_1.lower(): + roots.append(spec_root / service_remainder) + else: + roots.append(spec_root / service_folder_1 / service_remainder) + roots.append(rest_repo / "specification" / service_folder_2_parts[0]) + + return roots + + +def iter_tspconfigs(root: Path) -> Iterable[Path]: + direct_tspconfig = root / "tspconfig.yaml" + if direct_tspconfig.is_file(): + yield direct_tspconfig + + if root.is_dir(): + for tspconfig in sorted(root.rglob("tspconfig.yaml")): + if tspconfig != direct_tspconfig: + yield tspconfig + + +def find_sdk_name_from_tspconfig(rest_repo: Path, service_folder_1: str, service_folder_2: str) -> str: + seen: set[Path] = set() + for root in candidate_tsp_roots(rest_repo, service_folder_1, service_folder_2): + for tspconfig in iter_tspconfigs(root): + if tspconfig in seen: + continue + seen.add(tspconfig) + match = SDK_NAME_PATTERN.search(tspconfig.read_text(encoding="utf-8")) + if match: + return match.group(0) + return "" + + +def sdk_package_paths(sdk_repo: Path, sdk_name: str) -> list[Path]: + if not sdk_name: + return [] + return sorted(path for path in (sdk_repo / "sdk").glob(f"*/{sdk_name}") if path.is_dir()) + + +def build_results(data_rows: Sequence[DataRow], rest_repo: Path, sdk_repo: Path) -> list[ResultRow]: + results: list[ResultRow] = [] + for row_id, row in enumerate(data_rows, start=1): + sdk_name = row.sdk_name or find_sdk_name_from_tspconfig(rest_repo, row.service_folder_1, row.service_folder_2) + if row.sdk_name and not SDK_NAME_PATTERN.fullmatch(row.sdk_name): + results.append( + ResultRow( + row_id=row_id, + service_folder_1=row.service_folder_1, + service_folder_2=row.service_folder_2, + sdk_name=sdk_name, + path_exists=None, + tsp_file_exists=None, + ) + ) + continue + + package_paths = sdk_package_paths(sdk_repo, sdk_name) + results.append( + ResultRow( + row_id=row_id, + service_folder_1=row.service_folder_1, + service_folder_2=row.service_folder_2, + sdk_name=sdk_name, + path_exists=bool(package_paths), + tsp_file_exists=any((package_path / "tsp-location.yaml").is_file() for package_path in package_paths), + ) + ) + return results + + +def table_value(value: object) -> str: + return str(value).replace("|", "\\|") + + +def check_value(value: bool | None) -> str: + if value is None: + return "-" + return "Y" if value else "N" + + +def write_result_markdown(results: Sequence[ResultRow], output_file: Path) -> None: + lines = [ + "| id | service folder 1 | service folder 2 | sdk name (azure-mgmt-*) | path exist (Y/N) | tsp file (Y/N) |", + "| --- | --- | --- | --- | --- | --- |", + ] + for result in results: + lines.append( + "| " + + " | ".join( + [ + table_value(result.row_id), + table_value(result.service_folder_1), + table_value(result.service_folder_2), + table_value(result.sdk_name), + check_value(result.path_exists), + check_value(result.tsp_file_exists), + ] + ) + + " |" + ) + + output_file.write_text("\n".join(lines) + "\n", encoding="utf-8") + + +def parse_args(argv: Sequence[str] | None = None) -> argparse.Namespace: + parser = argparse.ArgumentParser(description="Check management SDK packages listed in data.txt.") + parser.add_argument("rest_repo", type=Path, help="Path to the azure-rest-api-specs repository.") + parser.add_argument("--data", type=Path, default=Path("data.txt"), help="Input data file. Defaults to data.txt.") + parser.add_argument("--output", type=Path, default=Path("result.md"), help="Output markdown file. Defaults to result.md.") + parser.add_argument("--sdk-repo", type=Path, default=Path(__file__).resolve().parent, help="Path to this SDK repository.") + return parser.parse_args(argv) + + +def main(argv: Sequence[str] | None = None) -> int: + args = parse_args(argv) + data_rows = parse_data_file(args.data) + results = build_results(data_rows, args.rest_repo, args.sdk_repo) + write_result_markdown(results, args.output) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) \ No newline at end of file diff --git a/data.txt b/data.txt new file mode 100644 index 000000000000..96db6061fd5f --- /dev/null +++ b/data.txt @@ -0,0 +1,137 @@ +"serivce folder 1" "service folder 2" sdk_name +Microsoft.StorageActions storageactions +Microsoft.Bing bing "no specs" +Microsoft.BillingBenefits billingbenefits +Microsoft.Devices deviceprovisioningservices +Microsoft.Network dns +Microsoft.EdgeOrder edgeorder +Microsoft.ElasticSan elasticsan +Microsoft.GuestConfiguration guestconfiguration +Microsoft.HardwareSecurityModules hardwaresecuritymodules +Microsoft.Help help +Microsoft.Kubernetes hybridkubernetes +Microsoft.Maintenance maintenance +Microsoft.NotificationHubs notificationhubs +Microsoft.Network privatedns +Microsoft.SqlVirtualMachine sqlvirtualmachine +Microsoft.Confluent confluent +Microsoft.BotService botservice +Microsoft.PowerBIdedicated powerbidedicated +Microsoft.Advisor advisor +Microsoft.Cdn cdn +Microsoft.ConfidentialLedger confidentialledger +microsoft.databox databox +microsoft.datadog datadog +Microsoft.DataProtection dataprotection +Microsoft.DevCenter devcenter +Microsoft.Network dnsresolver +Microsoft.Elastic elastic +Microsoft.HealthBot healthbot +Microsoft.KeyVault keyvault +microsoft.managedidentity msi +microsoft.dbformysql mysql azure-mgmt-mysqlflexibleservers +nginx.nginxplus nginx +microsoft.dbforpostgresql postgresqlhsc +Microsoft.Quota quota +microsoft.recoveryservices recoveryservicesbackup +microsoft.cache redis +microsoft.relay relay +microsoft.servicebus servicebus +Microsoft.SignalRService signalr +microsoft.storage storage +Microsoft.StorageMover storagemover +microsoft.storagesync storagesync +microsoft.support support +Microsoft.SignalRService webpubsub +Microsoft.Compute compute/Recommender +dynatrace.observability dynatrace +Microsoft.AppConfiguration appconfiguration +microsoft.consumption consumption +microsoft.costmanagement cost-management +microsoft.databoxedge databoxedge +Microsoft.EventHub eventhub +Microsoft.NetApp netapp +Microsoft.NetworkCloud networkcloud +NewRelic.Observability newrelic +PaloAltoNetworks.Cloudngfw paloaltonetworks +microsoft.dbforpostgresql postgresql +Microsoft.ResourceConnector resourceconnector +Microsoft.Network trafficmanager +microsoft.apimanagement apimanagement +Microsoft.Attestation attestation +Microsoft.Batch batch +Microsoft.CognitiveServices cognitiveservices +Microsoft.ContainerRegistry containerregistry +Microsoft.Dashboard dashboard +Microsoft.HybridNetwork hybridnetwork "no specs" +Microsoft.MachineLearningServices machinelearningservices "be part of data-plane package" +Microsoft.Management management/Microsoft.Management/ManagementGroups +Microsoft.Peering peering +Microsoft.ProviderHub providerhub +Microsoft.Cache redisenterprise +Microsoft.Authorization resources/Microsoft.Authorization/policy +Microsoft.SecurityInsights securityinsights +microsoft.web web +microsoft.web web/certificationregistration azure-mgmt-certificateregistration +microsoft.web web/domainregistration azure-mgmt-domainregistration +Microsoft.AlertsManagement alertsmanagement azure-mgmt-alertsmanagement +Microsoft.AzureStackHCI azurestackhci +Microsoft.Commerce commerce +Microsoft.Communication communication +Microsoft.ContainerService containerservice azure-mgmt-containerservice +Microsoft.DocumentDB cosmos-db +Microsoft.DataFactory datafactory +Microsoft.EventGrid eventgrid +Microsoft.KubernetesConfiguration kubernetesconfiguration +Microsoft.KubernetesConfiguration kubernetesconfiguration +Microsoft.Maps maps +Microsoft.Marketplace marketplace +Microsoft.Purview purview +Microsoft.RecoveryServices recoveryservicessiterecovery +Microsoft.Search search +Microsoft.Network frontdoor +Microsoft.NetworkFunction networkfunction +Microsoft.ServiceFabric servicefabric +Microsoft.ServiceFabric servicefabricmanagedclusters +Microsoft.App app +Microsoft.Insights applicationinsights +Microsoft.Authorization authorization +Microsoft.Automation automation +Microsoft.Kusto azure-kusto +Microsoft.Billing billing +Microsoft.ContainerInstance containerinstance +Microsoft.DataMigration datamigration +Microsoft.HDInsight hdinsight +Microsoft.HealthcareApis healthcareapis +Microsoft.HybridCompute hybridcompute +Microsoft.Insights monitor/Microsoft.Insights azure-mgmt-monitor +Microsoft.OperationalInsights operationalinsights +Microsoft.PolicyInsights policyinsights +Microsoft.Capacity reservations +Microsoft.ResourceGraph resourcegraph +Microsoft.ResourceHealth resourcehealth +Microsoft.Security security +Microsoft.Sql sql +Microsoft.StorageCache storagecache +Microsoft.Subscription subscription +Microsoft.Resources resources/Microsoft.Resources/resources +Microsoft.AzureArcData azurearcdata +Microsoft.Databricks databricks +Microsoft.DevHub developerhub +Microsoft.AAD domainservices +Microsoft.Education education +Microsoft.HanaOnAzure hanaonazure +Microsoft.VirtualMachineImages imagebuilder +Microsoft.OffAzure migrate/resource-manager/Microsoft.OffAzure +Microsoft.PowerPlatform powerplatform +Microsoft.RedHatOpenshift redhatopenshift +Microsoft.SerialConsole serialconsole +Microsoft.Solutions solutions +Microsoft.Resources resources/Microsoft.Resources/deployments +Microsoft.Resources resources/Microsoft.Resources/databoundaries +Microsoft.Resources resources/Microsoft.Resources/subscriptions +Microsoft.Resources resources/Microsoft.Resources/bicep +Microsoft.Resources resources/Microsoft.Resources/deploymentstakcs +Microsoft.Management management/Microsoft.Management/ServiceGroups +Microsoft.ExtendedLocation extendedlocation +Microsoft.Devices iothub diff --git a/result.md b/result.md new file mode 100644 index 000000000000..215b533566df --- /dev/null +++ b/result.md @@ -0,0 +1,138 @@ +| id | service folder 1 | service folder 2 | sdk name (azure-mgmt-*) | path exist (Y/N) | tsp file (Y/N) | +| --- | --- | --- | --- | --- | --- | +| 1 | Microsoft.StorageActions | storageactions | azure-mgmt-storageactions | Y | Y | +| 2 | Microsoft.Bing | bing | no specs | - | - | +| 3 | Microsoft.BillingBenefits | billingbenefits | azure-mgmt-billingbenefits | Y | Y | +| 4 | Microsoft.Devices | deviceprovisioningservices | azure-mgmt-iothubprovisioningservices | Y | Y | +| 5 | Microsoft.Network | dns | azure-mgmt-dns | Y | N | +| 6 | Microsoft.EdgeOrder | edgeorder | azure-mgmt-edgeorder | Y | N | +| 7 | Microsoft.ElasticSan | elasticsan | azure-mgmt-elasticsan | Y | Y | +| 8 | Microsoft.GuestConfiguration | guestconfiguration | azure-mgmt-guestconfig | Y | N | +| 9 | Microsoft.HardwareSecurityModules | hardwaresecuritymodules | azure-mgmt-hardwaresecuritymodules | Y | Y | +| 10 | Microsoft.Help | help | azure-mgmt-selfhelp | Y | N | +| 11 | Microsoft.Kubernetes | hybridkubernetes | azure-mgmt-hybridkubernetes | Y | Y | +| 12 | Microsoft.Maintenance | maintenance | azure-mgmt-maintenance | Y | Y | +| 13 | Microsoft.NotificationHubs | notificationhubs | azure-mgmt-notificationhubs | Y | N | +| 14 | Microsoft.Network | privatedns | azure-mgmt-privatedns | Y | N | +| 15 | Microsoft.SqlVirtualMachine | sqlvirtualmachine | azure-mgmt-sqlvirtualmachine | Y | N | +| 16 | Microsoft.Confluent | confluent | azure-mgmt-confluent | Y | Y | +| 17 | Microsoft.BotService | botservice | azure-mgmt-botservice | Y | N | +| 18 | Microsoft.PowerBIdedicated | powerbidedicated | azure-mgmt-powerbidedicated | Y | N | +| 19 | Microsoft.Advisor | advisor | azure-mgmt-advisor | Y | N | +| 20 | Microsoft.Cdn | cdn | azure-mgmt-cdn | Y | Y | +| 21 | Microsoft.ConfidentialLedger | confidentialledger | azure-mgmt-confidentialledger | Y | N | +| 22 | microsoft.databox | databox | azure-mgmt-databox | Y | N | +| 23 | microsoft.datadog | datadog | azure-mgmt-datadog | Y | N | +| 24 | Microsoft.DataProtection | dataprotection | azure-mgmt-dataprotection | Y | Y | +| 25 | Microsoft.DevCenter | devcenter | azure-mgmt-devcenter | Y | N | +| 26 | Microsoft.Network | dnsresolver | azure-mgmt-dnsresolver | Y | Y | +| 27 | Microsoft.Elastic | elastic | azure-mgmt-elastic | Y | N | +| 28 | Microsoft.HealthBot | healthbot | azure-mgmt-healthbot | Y | Y | +| 29 | Microsoft.KeyVault | keyvault | azure-mgmt-keyvault | Y | Y | +| 30 | microsoft.managedidentity | msi | azure-mgmt-msi | Y | Y | +| 31 | microsoft.dbformysql | mysql | azure-mgmt-mysqlflexibleservers | Y | N | +| 32 | nginx.nginxplus | nginx | azure-mgmt-nginx | Y | Y | +| 33 | microsoft.dbforpostgresql | postgresqlhsc | azure-mgmt-cosmosdbforpostgresql | Y | N | +| 34 | Microsoft.Quota | quota | azure-mgmt-quota | Y | Y | +| 35 | microsoft.recoveryservices | recoveryservicesbackup | azure-mgmt-recoveryservicesbackup | Y | Y | +| 36 | microsoft.cache | redis | azure-mgmt-redis | Y | Y | +| 37 | microsoft.relay | relay | azure-mgmt-relay | Y | N | +| 38 | microsoft.servicebus | servicebus | azure-mgmt-servicebus | Y | N | +| 39 | Microsoft.SignalRService | signalr | azure-mgmt-signalr | Y | N | +| 40 | microsoft.storage | storage | azure-mgmt-storage | Y | Y | +| 41 | Microsoft.StorageMover | storagemover | azure-mgmt-storagemover | Y | Y | +| 42 | microsoft.storagesync | storagesync | azure-mgmt-storagesync | Y | N | +| 43 | microsoft.support | support | azure-mgmt-support | Y | N | +| 44 | Microsoft.SignalRService | webpubsub | azure-mgmt-webpubsub | Y | N | +| 45 | Microsoft.Compute | compute/Recommender | azure-mgmt-computerecommender | Y | Y | +| 46 | dynatrace.observability | dynatrace | azure-mgmt-dynatrace | Y | N | +| 47 | Microsoft.AppConfiguration | appconfiguration | azure-mgmt-appconfiguration | Y | Y | +| 48 | microsoft.consumption | consumption | azure-mgmt-consumption | Y | Y | +| 49 | microsoft.costmanagement | cost-management | azure-mgmt-costmanagement | Y | Y | +| 50 | microsoft.databoxedge | databoxedge | azure-mgmt-databoxedge | Y | Y | +| 51 | Microsoft.EventHub | eventhub | azure-mgmt-eventhub | Y | N | +| 52 | Microsoft.NetApp | netapp | azure-mgmt-netapp | Y | Y | +| 53 | Microsoft.NetworkCloud | networkcloud | azure-mgmt-networkcloud | Y | Y | +| 54 | NewRelic.Observability | newrelic | azure-mgmt-newrelicobservability | Y | N | +| 55 | PaloAltoNetworks.Cloudngfw | paloaltonetworks | azure-mgmt-paloaltonetworksngfw | Y | N | +| 56 | microsoft.dbforpostgresql | postgresql | azure-mgmt-postgresqlflexibleservers | Y | Y | +| 57 | Microsoft.ResourceConnector | resourceconnector | azure-mgmt-resourceconnector | Y | Y | +| 58 | Microsoft.Network | trafficmanager | azure-mgmt-trafficmanager | Y | Y | +| 59 | microsoft.apimanagement | apimanagement | azure-mgmt-apimanagement | Y | Y | +| 60 | Microsoft.Attestation | attestation | azure-mgmt-attestation | Y | Y | +| 61 | Microsoft.Batch | batch | azure-mgmt-batch | Y | Y | +| 62 | Microsoft.CognitiveServices | cognitiveservices | azure-mgmt-cognitiveservices | Y | Y | +| 63 | Microsoft.ContainerRegistry | containerregistry | azure-mgmt-containerregistry | Y | Y | +| 64 | Microsoft.Dashboard | dashboard | azure-mgmt-dashboard | Y | Y | +| 65 | Microsoft.HybridNetwork | hybridnetwork | no specs | - | - | +| 66 | Microsoft.MachineLearningServices | machinelearningservices | be part of data-plane package | - | - | +| 67 | Microsoft.Management | management/Microsoft.Management/ManagementGroups | azure-mgmt-managementgroups | Y | Y | +| 68 | Microsoft.Peering | peering | azure-mgmt-peering | Y | N | +| 69 | Microsoft.ProviderHub | providerhub | azure-mgmt-providerhub | N | N | +| 70 | Microsoft.Cache | redisenterprise | azure-mgmt-redisenterprise | Y | Y | +| 71 | Microsoft.Authorization | resources/Microsoft.Authorization/policy | azure-mgmt-resource-policy | Y | Y | +| 72 | Microsoft.SecurityInsights | securityinsights | azure-mgmt-securityinsight | Y | Y | +| 73 | microsoft.web | web | azure-mgmt-web | Y | Y | +| 74 | microsoft.web | web/certificationregistration | azure-mgmt-certificationregistration | N | N | +| 75 | microsoft.web | web/domainregistration | azure-mgmt-domainregistration | Y | Y | +| 76 | Microsoft.AlertsManagement | alertsmanagement | azure-mgmt-alertsmanagement | Y | Y | +| 77 | Microsoft.AzureStackHCI | azurestackhci | azure-mgmt-azurestackhci | Y | Y | +| 78 | Microsoft.Commerce | commerce | azure-mgmt-commerce | Y | N | +| 79 | Microsoft.Communication | communication | azure-mgmt-communication | Y | Y | +| 80 | Microsoft.ContainerService | containerservice | azure-mgmt-containerservice | Y | Y | +| 81 | Microsoft.DocumentDB | cosmos-db | azure-mgmt-cosmosdb | Y | Y | +| 82 | Microsoft.DataFactory | datafactory | azure-mgmt-datafactory | Y | Y | +| 83 | Microsoft.EventGrid | eventgrid | azure-mgmt-eventgrid | Y | Y | +| 84 | Microsoft.KubernetesConfiguration | kubernetesconfiguration | azure-mgmt-kubernetesconfiguration-extensions | Y | Y | +| 85 | Microsoft.KubernetesConfiguration | kubernetesconfiguration | azure-mgmt-kubernetesconfiguration-extensions | Y | Y | +| 86 | Microsoft.Maps | maps | azure-mgmt-maps | Y | Y | +| 87 | Microsoft.Marketplace | marketplace | azure-mgmt-marketplace | N | N | +| 88 | Microsoft.Purview | purview | azure-mgmt-purview | Y | N | +| 89 | Microsoft.RecoveryServices | recoveryservicessiterecovery | azure-mgmt-recoveryservicessiterecovery | Y | Y | +| 90 | Microsoft.Search | search | azure-mgmt-search | Y | Y | +| 91 | Microsoft.Network | frontdoor | azure-mgmt-frontdoor | Y | Y | +| 92 | Microsoft.NetworkFunction | networkfunction | azure-mgmt-networkfunction | Y | Y | +| 93 | Microsoft.ServiceFabric | servicefabric | azure-mgmt-servicefabric | Y | Y | +| 94 | Microsoft.ServiceFabric | servicefabricmanagedclusters | azure-mgmt-servicefabricmanagedclusters | Y | Y | +| 95 | Microsoft.App | app | azure-mgmt-appcontainers | Y | Y | +| 96 | Microsoft.Insights | applicationinsights | azure-mgmt-applicationinsights | Y | Y | +| 97 | Microsoft.Authorization | authorization | azure-mgmt-authorization | Y | Y | +| 98 | Microsoft.Automation | automation | azure-mgmt-automation | Y | Y | +| 99 | Microsoft.Kusto | azure-kusto | azure-mgmt-kusto | Y | Y | +| 100 | Microsoft.Billing | billing | azure-mgmt-billing | Y | Y | +| 101 | Microsoft.ContainerInstance | containerinstance | azure-mgmt-containerinstance | Y | Y | +| 102 | Microsoft.DataMigration | datamigration | azure-mgmt-datamigration | Y | Y | +| 103 | Microsoft.HDInsight | hdinsight | azure-mgmt-hdinsight | Y | Y | +| 104 | Microsoft.HealthcareApis | healthcareapis | azure-mgmt-healthcareapis | Y | Y | +| 105 | Microsoft.HybridCompute | hybridcompute | azure-mgmt-hybridcompute | Y | Y | +| 106 | Microsoft.Insights | monitor/Microsoft.Insights | azure-mgmt-monitor | Y | Y | +| 107 | Microsoft.OperationalInsights | operationalinsights | azure-mgmt-loganalytics | Y | Y | +| 108 | Microsoft.PolicyInsights | policyinsights | azure-mgmt-policyinsights | Y | Y | +| 109 | Microsoft.Capacity | reservations | azure-mgmt-reservations | Y | Y | +| 110 | Microsoft.ResourceGraph | resourcegraph | azure-mgmt-resourcegraph | Y | Y | +| 111 | Microsoft.ResourceHealth | resourcehealth | azure-mgmt-resourcehealth | Y | Y | +| 112 | Microsoft.Security | security | azure-mgmt-security | Y | Y | +| 113 | Microsoft.Sql | sql | azure-mgmt-sql | Y | Y | +| 114 | Microsoft.StorageCache | storagecache | azure-mgmt-storagecache | Y | Y | +| 115 | Microsoft.Subscription | subscription | azure-mgmt-subscription | Y | Y | +| 116 | Microsoft.Resources | resources/Microsoft.Resources/resources | azure-mgmt-resource | Y | Y | +| 117 | Microsoft.AzureArcData | azurearcdata | azure-mgmt-azurearcdata | Y | N | +| 118 | Microsoft.Databricks | databricks | azure-mgmt-databricks | Y | Y | +| 119 | Microsoft.DevHub | developerhub | azure-mgmt-devhub | Y | Y | +| 120 | Microsoft.AAD | domainservices | azure-mgmt-domainservices | N | N | +| 121 | Microsoft.Education | education | azure-mgmt-education | Y | Y | +| 122 | Microsoft.HanaOnAzure | hanaonazure | azure-mgmt-hanaonazure | Y | Y | +| 123 | Microsoft.VirtualMachineImages | imagebuilder | azure-mgmt-imagebuilder | Y | Y | +| 124 | Microsoft.OffAzure | migrate/resource-manager/Microsoft.OffAzure | azure-mgmt-migrate | N | N | +| 125 | Microsoft.PowerPlatform | powerplatform | azure-mgmt-powerplatform | Y | Y | +| 126 | Microsoft.RedHatOpenshift | redhatopenshift | azure-mgmt-redhatopenshift | Y | Y | +| 127 | Microsoft.SerialConsole | serialconsole | azure-mgmt-serialconsole | Y | Y | +| 128 | Microsoft.Solutions | solutions | azure-mgmt-managedapplications | Y | N | +| 129 | Microsoft.Resources | resources/Microsoft.Resources/deployments | azure-mgmt-resource-deployments | Y | Y | +| 130 | Microsoft.Resources | resources/Microsoft.Resources/databoundaries | azure-mgmt-resource-databoundaries | Y | Y | +| 131 | Microsoft.Resources | resources/Microsoft.Resources/subscriptions | azure-mgmt-resource-subscriptions | Y | Y | +| 132 | Microsoft.Resources | resources/Microsoft.Resources/bicep | azure-mgmt-resource-bicep | Y | Y | +| 133 | Microsoft.Resources | resources/Microsoft.Resources/deploymentstakcs | azure-mgmt-resource-policy | Y | Y | +| 134 | Microsoft.Management | management/Microsoft.Management/ServiceGroups | azure-mgmt-servicegroups | Y | Y | +| 135 | Microsoft.ExtendedLocation | extendedlocation | azure-mgmt-extendedlocation | Y | Y | +| 136 | Microsoft.Devices | iothub | azure-mgmt-iothub | Y | Y | diff --git a/test_check_mgmt_sdk_data.py b/test_check_mgmt_sdk_data.py new file mode 100644 index 000000000000..c0873b63c1af --- /dev/null +++ b/test_check_mgmt_sdk_data.py @@ -0,0 +1,56 @@ +from pathlib import Path + +from check_mgmt_sdk_data import main + + +def test_check_mgmt_sdk_data_writes_ordered_markdown(tmp_path): + sdk_repo = tmp_path / "azure-sdk-for-python" + rest_repo = tmp_path / "azure-rest-api-specs" + data_file = sdk_repo / "data.txt" + output_file = sdk_repo / "result.md" + + (sdk_repo / "sdk" / "foo" / "azure-mgmt-foo").mkdir(parents=True) + (sdk_repo / "sdk" / "storageactions" / "azure-mgmt-storageactions").mkdir(parents=True) + explicit_sdk = sdk_repo / "sdk" / "bar" / "azure-mgmt-explicit" + explicit_sdk.mkdir(parents=True) + (explicit_sdk / "tsp-location.yaml").write_text("directory: specification/bar\n", encoding="utf-8") + + tsp_dir = rest_repo / "specification" / "foo" / "resource-manager" / "Microsoft.Foo" / "Foo" + tsp_dir.mkdir(parents=True) + (tsp_dir / "tspconfig.yaml").write_text( + "options:\n" + " '@azure-tools/typespec-python':\n" + " emitter-output-dir: '{project-root}/../azure-sdk-for-python/sdk/foo/azure-mgmt-foo'\n", + encoding="utf-8", + ) + direct_tsp_dir = rest_repo / "specification" / "storageactions" / "StorageAction.Management" + direct_tsp_dir.mkdir(parents=True) + (direct_tsp_dir / "tspconfig.yaml").write_text( + "options:\n" + " '@azure-tools/typespec-python':\n" + " emitter-output-dir: '{output-dir}/{service-dir}/azure-mgmt-storageactions'\n", + encoding="utf-8", + ) + + data_file.write_text( + '"serivce folder 1" "service folder 2" sdk_name\n' + "Microsoft.Foo\tfoo\n" + "Microsoft.StorageActions\tstorageactions\n" + 'Microsoft.NoSpecs\tnospecs "no specs"\n' + "Microsoft.Bar\tbar azure-mgmt-explicit\n" + "Microsoft.Missing\tmissing\n", + encoding="utf-8", + ) + + exit_code = main([str(rest_repo), "--data", str(data_file), "--output", str(output_file), "--sdk-repo", str(sdk_repo)]) + + assert exit_code == 0 + assert output_file.read_text(encoding="utf-8").splitlines() == [ + "| id | service folder 1 | service folder 2 | sdk name (azure-mgmt-*) | path exist (Y/N) | tsp file (Y/N) |", + "| --- | --- | --- | --- | --- | --- |", + "| 1 | Microsoft.Foo | foo | azure-mgmt-foo | Y | N |", + "| 2 | Microsoft.StorageActions | storageactions | azure-mgmt-storageactions | Y | N |", + "| 3 | Microsoft.NoSpecs | nospecs | no specs | - | - |", + "| 4 | Microsoft.Bar | bar | azure-mgmt-explicit | Y | Y |", + "| 5 | Microsoft.Missing | missing | | N | N |", + ] From 606e6c033e6d8778b2fa97e96db8d86c29bd2389 Mon Sep 17 00:00:00 2001 From: Yuchao Yan Date: Tue, 7 Jul 2026 12:51:11 +0800 Subject: [PATCH 2/6] update --- result.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/result.md b/result.md index 215b533566df..7681f503acd9 100644 --- a/result.md +++ b/result.md @@ -5,7 +5,7 @@ | 3 | Microsoft.BillingBenefits | billingbenefits | azure-mgmt-billingbenefits | Y | Y | | 4 | Microsoft.Devices | deviceprovisioningservices | azure-mgmt-iothubprovisioningservices | Y | Y | | 5 | Microsoft.Network | dns | azure-mgmt-dns | Y | N | -| 6 | Microsoft.EdgeOrder | edgeorder | azure-mgmt-edgeorder | Y | N | +| 6 | Microsoft.EdgeOrder | edgeorder | azure-mgmt-edgeorder | Y | Y | | 7 | Microsoft.ElasticSan | elasticsan | azure-mgmt-elasticsan | Y | Y | | 8 | Microsoft.GuestConfiguration | guestconfiguration | azure-mgmt-guestconfig | Y | N | | 9 | Microsoft.HardwareSecurityModules | hardwaresecuritymodules | azure-mgmt-hardwaresecuritymodules | Y | Y | @@ -13,20 +13,20 @@ | 11 | Microsoft.Kubernetes | hybridkubernetes | azure-mgmt-hybridkubernetes | Y | Y | | 12 | Microsoft.Maintenance | maintenance | azure-mgmt-maintenance | Y | Y | | 13 | Microsoft.NotificationHubs | notificationhubs | azure-mgmt-notificationhubs | Y | N | -| 14 | Microsoft.Network | privatedns | azure-mgmt-privatedns | Y | N | +| 14 | Microsoft.Network | privatedns | azure-mgmt-privatedns | Y | Y | | 15 | Microsoft.SqlVirtualMachine | sqlvirtualmachine | azure-mgmt-sqlvirtualmachine | Y | N | | 16 | Microsoft.Confluent | confluent | azure-mgmt-confluent | Y | Y | | 17 | Microsoft.BotService | botservice | azure-mgmt-botservice | Y | N | -| 18 | Microsoft.PowerBIdedicated | powerbidedicated | azure-mgmt-powerbidedicated | Y | N | +| 18 | Microsoft.PowerBIdedicated | powerbidedicated | azure-mgmt-powerbidedicated | Y | Y | | 19 | Microsoft.Advisor | advisor | azure-mgmt-advisor | Y | N | | 20 | Microsoft.Cdn | cdn | azure-mgmt-cdn | Y | Y | | 21 | Microsoft.ConfidentialLedger | confidentialledger | azure-mgmt-confidentialledger | Y | N | -| 22 | microsoft.databox | databox | azure-mgmt-databox | Y | N | +| 22 | microsoft.databox | databox | azure-mgmt-databox | Y | Y | | 23 | microsoft.datadog | datadog | azure-mgmt-datadog | Y | N | | 24 | Microsoft.DataProtection | dataprotection | azure-mgmt-dataprotection | Y | Y | | 25 | Microsoft.DevCenter | devcenter | azure-mgmt-devcenter | Y | N | | 26 | Microsoft.Network | dnsresolver | azure-mgmt-dnsresolver | Y | Y | -| 27 | Microsoft.Elastic | elastic | azure-mgmt-elastic | Y | N | +| 27 | Microsoft.Elastic | elastic | azure-mgmt-elastic | Y | Y | | 28 | Microsoft.HealthBot | healthbot | azure-mgmt-healthbot | Y | Y | | 29 | Microsoft.KeyVault | keyvault | azure-mgmt-keyvault | Y | Y | | 30 | microsoft.managedidentity | msi | azure-mgmt-msi | Y | Y | @@ -36,16 +36,16 @@ | 34 | Microsoft.Quota | quota | azure-mgmt-quota | Y | Y | | 35 | microsoft.recoveryservices | recoveryservicesbackup | azure-mgmt-recoveryservicesbackup | Y | Y | | 36 | microsoft.cache | redis | azure-mgmt-redis | Y | Y | -| 37 | microsoft.relay | relay | azure-mgmt-relay | Y | N | +| 37 | microsoft.relay | relay | azure-mgmt-relay | Y | Y | | 38 | microsoft.servicebus | servicebus | azure-mgmt-servicebus | Y | N | | 39 | Microsoft.SignalRService | signalr | azure-mgmt-signalr | Y | N | | 40 | microsoft.storage | storage | azure-mgmt-storage | Y | Y | | 41 | Microsoft.StorageMover | storagemover | azure-mgmt-storagemover | Y | Y | -| 42 | microsoft.storagesync | storagesync | azure-mgmt-storagesync | Y | N | +| 42 | microsoft.storagesync | storagesync | azure-mgmt-storagesync | Y | Y | | 43 | microsoft.support | support | azure-mgmt-support | Y | N | | 44 | Microsoft.SignalRService | webpubsub | azure-mgmt-webpubsub | Y | N | | 45 | Microsoft.Compute | compute/Recommender | azure-mgmt-computerecommender | Y | Y | -| 46 | dynatrace.observability | dynatrace | azure-mgmt-dynatrace | Y | N | +| 46 | dynatrace.observability | dynatrace | azure-mgmt-dynatrace | Y | Y | | 47 | Microsoft.AppConfiguration | appconfiguration | azure-mgmt-appconfiguration | Y | Y | | 48 | microsoft.consumption | consumption | azure-mgmt-consumption | Y | Y | | 49 | microsoft.costmanagement | cost-management | azure-mgmt-costmanagement | Y | Y | @@ -73,7 +73,7 @@ | 71 | Microsoft.Authorization | resources/Microsoft.Authorization/policy | azure-mgmt-resource-policy | Y | Y | | 72 | Microsoft.SecurityInsights | securityinsights | azure-mgmt-securityinsight | Y | Y | | 73 | microsoft.web | web | azure-mgmt-web | Y | Y | -| 74 | microsoft.web | web/certificationregistration | azure-mgmt-certificationregistration | N | N | +| 74 | microsoft.web | web/certificationregistration | azure-mgmt-certificateregistration | Y | Y | | 75 | microsoft.web | web/domainregistration | azure-mgmt-domainregistration | Y | Y | | 76 | Microsoft.AlertsManagement | alertsmanagement | azure-mgmt-alertsmanagement | Y | Y | | 77 | Microsoft.AzureStackHCI | azurestackhci | azure-mgmt-azurestackhci | Y | Y | From 4ef2c944461e16c51560e09048341531c55a69da Mon Sep 17 00:00:00 2001 From: Yuchao Yan Date: Tue, 7 Jul 2026 15:06:11 +0800 Subject: [PATCH 3/6] update --- data.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data.txt b/data.txt index 96db6061fd5f..cc180f81cf5d 100644 --- a/data.txt +++ b/data.txt @@ -122,7 +122,7 @@ Microsoft.AAD domainservices Microsoft.Education education Microsoft.HanaOnAzure hanaonazure Microsoft.VirtualMachineImages imagebuilder -Microsoft.OffAzure migrate/resource-manager/Microsoft.OffAzure +Microsoft.OffAzure migrate/resource-manager/Microsoft.OffAzure "no specs" Microsoft.PowerPlatform powerplatform Microsoft.RedHatOpenshift redhatopenshift Microsoft.SerialConsole serialconsole From 195c0b69a9dadb5bf2666861a7c584f1daf176ba Mon Sep 17 00:00:00 2001 From: Yuchao Yan Date: Tue, 7 Jul 2026 15:24:05 +0800 Subject: [PATCH 4/6] update --- result.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/result.md b/result.md index 7681f503acd9..fe5264b55279 100644 --- a/result.md +++ b/result.md @@ -123,7 +123,7 @@ | 121 | Microsoft.Education | education | azure-mgmt-education | Y | Y | | 122 | Microsoft.HanaOnAzure | hanaonazure | azure-mgmt-hanaonazure | Y | Y | | 123 | Microsoft.VirtualMachineImages | imagebuilder | azure-mgmt-imagebuilder | Y | Y | -| 124 | Microsoft.OffAzure | migrate/resource-manager/Microsoft.OffAzure | azure-mgmt-migrate | N | N | +| 124 | Microsoft.OffAzure | migrate/resource-manager/Microsoft.OffAzure | no specs | - | - | | 125 | Microsoft.PowerPlatform | powerplatform | azure-mgmt-powerplatform | Y | Y | | 126 | Microsoft.RedHatOpenshift | redhatopenshift | azure-mgmt-redhatopenshift | Y | Y | | 127 | Microsoft.SerialConsole | serialconsole | azure-mgmt-serialconsole | Y | Y | From c926107a0d873539fec2c730ed005839bc886148 Mon Sep 17 00:00:00 2001 From: Yuchao Yan Date: Wed, 8 Jul 2026 12:49:33 +0800 Subject: [PATCH 5/6] update data --- data.txt | 4 ++-- result.md | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/data.txt b/data.txt index cc180f81cf5d..5ebc8ac39555 100644 --- a/data.txt +++ b/data.txt @@ -47,7 +47,7 @@ Microsoft.Compute compute/Recommender dynatrace.observability dynatrace Microsoft.AppConfiguration appconfiguration microsoft.consumption consumption -microsoft.costmanagement cost-management +microsoft.costmanagement cost-management azure-mgmt-costmanagement microsoft.databoxedge databoxedge Microsoft.EventHub eventhub Microsoft.NetApp netapp @@ -65,7 +65,7 @@ Microsoft.ContainerRegistry containerregistry Microsoft.Dashboard dashboard Microsoft.HybridNetwork hybridnetwork "no specs" Microsoft.MachineLearningServices machinelearningservices "be part of data-plane package" -Microsoft.Management management/Microsoft.Management/ManagementGroups +Microsoft.Management management/Microsoft.Management/ManagementGroups azure-mgmt-managementgroups Microsoft.Peering peering Microsoft.ProviderHub providerhub Microsoft.Cache redisenterprise diff --git a/result.md b/result.md index fe5264b55279..040fe035fa39 100644 --- a/result.md +++ b/result.md @@ -67,7 +67,7 @@ | 65 | Microsoft.HybridNetwork | hybridnetwork | no specs | - | - | | 66 | Microsoft.MachineLearningServices | machinelearningservices | be part of data-plane package | - | - | | 67 | Microsoft.Management | management/Microsoft.Management/ManagementGroups | azure-mgmt-managementgroups | Y | Y | -| 68 | Microsoft.Peering | peering | azure-mgmt-peering | Y | N | +| 68 | Microsoft.Peering | peering | azure-mgmt-peering | Y | Y | | 69 | Microsoft.ProviderHub | providerhub | azure-mgmt-providerhub | N | N | | 70 | Microsoft.Cache | redisenterprise | azure-mgmt-redisenterprise | Y | Y | | 71 | Microsoft.Authorization | resources/Microsoft.Authorization/policy | azure-mgmt-resource-policy | Y | Y | @@ -87,7 +87,7 @@ | 85 | Microsoft.KubernetesConfiguration | kubernetesconfiguration | azure-mgmt-kubernetesconfiguration-extensions | Y | Y | | 86 | Microsoft.Maps | maps | azure-mgmt-maps | Y | Y | | 87 | Microsoft.Marketplace | marketplace | azure-mgmt-marketplace | N | N | -| 88 | Microsoft.Purview | purview | azure-mgmt-purview | Y | N | +| 88 | Microsoft.Purview | purview | azure-mgmt-purview | Y | Y | | 89 | Microsoft.RecoveryServices | recoveryservicessiterecovery | azure-mgmt-recoveryservicessiterecovery | Y | Y | | 90 | Microsoft.Search | search | azure-mgmt-search | Y | Y | | 91 | Microsoft.Network | frontdoor | azure-mgmt-frontdoor | Y | Y | @@ -119,7 +119,7 @@ | 117 | Microsoft.AzureArcData | azurearcdata | azure-mgmt-azurearcdata | Y | N | | 118 | Microsoft.Databricks | databricks | azure-mgmt-databricks | Y | Y | | 119 | Microsoft.DevHub | developerhub | azure-mgmt-devhub | Y | Y | -| 120 | Microsoft.AAD | domainservices | azure-mgmt-domainservices | N | N | +| 120 | Microsoft.AAD | domainservices | azure-mgmt-domainservices | Y | Y | | 121 | Microsoft.Education | education | azure-mgmt-education | Y | Y | | 122 | Microsoft.HanaOnAzure | hanaonazure | azure-mgmt-hanaonazure | Y | Y | | 123 | Microsoft.VirtualMachineImages | imagebuilder | azure-mgmt-imagebuilder | Y | Y | From 56fceaf4f5648cdb173c829989d003edd91d5485 Mon Sep 17 00:00:00 2001 From: Yuchao Yan Date: Wed, 8 Jul 2026 15:19:32 +0800 Subject: [PATCH 6/6] update data --- result.md | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/result.md b/result.md index 040fe035fa39..d0eb2ff1819e 100644 --- a/result.md +++ b/result.md @@ -4,23 +4,23 @@ | 2 | Microsoft.Bing | bing | no specs | - | - | | 3 | Microsoft.BillingBenefits | billingbenefits | azure-mgmt-billingbenefits | Y | Y | | 4 | Microsoft.Devices | deviceprovisioningservices | azure-mgmt-iothubprovisioningservices | Y | Y | -| 5 | Microsoft.Network | dns | azure-mgmt-dns | Y | N | +| 5 | Microsoft.Network | dns | azure-mgmt-dns | Y | Y | | 6 | Microsoft.EdgeOrder | edgeorder | azure-mgmt-edgeorder | Y | Y | | 7 | Microsoft.ElasticSan | elasticsan | azure-mgmt-elasticsan | Y | Y | -| 8 | Microsoft.GuestConfiguration | guestconfiguration | azure-mgmt-guestconfig | Y | N | +| 8 | Microsoft.GuestConfiguration | guestconfiguration | azure-mgmt-guestconfig | Y | Y | | 9 | Microsoft.HardwareSecurityModules | hardwaresecuritymodules | azure-mgmt-hardwaresecuritymodules | Y | Y | -| 10 | Microsoft.Help | help | azure-mgmt-selfhelp | Y | N | +| 10 | Microsoft.Help | help | azure-mgmt-selfhelp | Y | Y | | 11 | Microsoft.Kubernetes | hybridkubernetes | azure-mgmt-hybridkubernetes | Y | Y | | 12 | Microsoft.Maintenance | maintenance | azure-mgmt-maintenance | Y | Y | | 13 | Microsoft.NotificationHubs | notificationhubs | azure-mgmt-notificationhubs | Y | N | | 14 | Microsoft.Network | privatedns | azure-mgmt-privatedns | Y | Y | -| 15 | Microsoft.SqlVirtualMachine | sqlvirtualmachine | azure-mgmt-sqlvirtualmachine | Y | N | +| 15 | Microsoft.SqlVirtualMachine | sqlvirtualmachine | azure-mgmt-sqlvirtualmachine | Y | Y | | 16 | Microsoft.Confluent | confluent | azure-mgmt-confluent | Y | Y | -| 17 | Microsoft.BotService | botservice | azure-mgmt-botservice | Y | N | +| 17 | Microsoft.BotService | botservice | azure-mgmt-botservice | Y | Y | | 18 | Microsoft.PowerBIdedicated | powerbidedicated | azure-mgmt-powerbidedicated | Y | Y | -| 19 | Microsoft.Advisor | advisor | azure-mgmt-advisor | Y | N | +| 19 | Microsoft.Advisor | advisor | azure-mgmt-advisor | Y | Y | | 20 | Microsoft.Cdn | cdn | azure-mgmt-cdn | Y | Y | -| 21 | Microsoft.ConfidentialLedger | confidentialledger | azure-mgmt-confidentialledger | Y | N | +| 21 | Microsoft.ConfidentialLedger | confidentialledger | azure-mgmt-confidentialledger | Y | Y | | 22 | microsoft.databox | databox | azure-mgmt-databox | Y | Y | | 23 | microsoft.datadog | datadog | azure-mgmt-datadog | Y | N | | 24 | Microsoft.DataProtection | dataprotection | azure-mgmt-dataprotection | Y | Y | @@ -30,31 +30,31 @@ | 28 | Microsoft.HealthBot | healthbot | azure-mgmt-healthbot | Y | Y | | 29 | Microsoft.KeyVault | keyvault | azure-mgmt-keyvault | Y | Y | | 30 | microsoft.managedidentity | msi | azure-mgmt-msi | Y | Y | -| 31 | microsoft.dbformysql | mysql | azure-mgmt-mysqlflexibleservers | Y | N | +| 31 | microsoft.dbformysql | mysql | azure-mgmt-mysqlflexibleservers | Y | Y | | 32 | nginx.nginxplus | nginx | azure-mgmt-nginx | Y | Y | -| 33 | microsoft.dbforpostgresql | postgresqlhsc | azure-mgmt-cosmosdbforpostgresql | Y | N | +| 33 | microsoft.dbforpostgresql | postgresqlhsc | azure-mgmt-cosmosdbforpostgresql | Y | Y | | 34 | Microsoft.Quota | quota | azure-mgmt-quota | Y | Y | | 35 | microsoft.recoveryservices | recoveryservicesbackup | azure-mgmt-recoveryservicesbackup | Y | Y | | 36 | microsoft.cache | redis | azure-mgmt-redis | Y | Y | | 37 | microsoft.relay | relay | azure-mgmt-relay | Y | Y | -| 38 | microsoft.servicebus | servicebus | azure-mgmt-servicebus | Y | N | -| 39 | Microsoft.SignalRService | signalr | azure-mgmt-signalr | Y | N | +| 38 | microsoft.servicebus | servicebus | azure-mgmt-servicebus | Y | Y | +| 39 | Microsoft.SignalRService | signalr | azure-mgmt-signalr | Y | Y | | 40 | microsoft.storage | storage | azure-mgmt-storage | Y | Y | | 41 | Microsoft.StorageMover | storagemover | azure-mgmt-storagemover | Y | Y | | 42 | microsoft.storagesync | storagesync | azure-mgmt-storagesync | Y | Y | | 43 | microsoft.support | support | azure-mgmt-support | Y | N | -| 44 | Microsoft.SignalRService | webpubsub | azure-mgmt-webpubsub | Y | N | +| 44 | Microsoft.SignalRService | webpubsub | azure-mgmt-webpubsub | Y | Y | | 45 | Microsoft.Compute | compute/Recommender | azure-mgmt-computerecommender | Y | Y | | 46 | dynatrace.observability | dynatrace | azure-mgmt-dynatrace | Y | Y | | 47 | Microsoft.AppConfiguration | appconfiguration | azure-mgmt-appconfiguration | Y | Y | | 48 | microsoft.consumption | consumption | azure-mgmt-consumption | Y | Y | | 49 | microsoft.costmanagement | cost-management | azure-mgmt-costmanagement | Y | Y | | 50 | microsoft.databoxedge | databoxedge | azure-mgmt-databoxedge | Y | Y | -| 51 | Microsoft.EventHub | eventhub | azure-mgmt-eventhub | Y | N | +| 51 | Microsoft.EventHub | eventhub | azure-mgmt-eventhub | Y | Y | | 52 | Microsoft.NetApp | netapp | azure-mgmt-netapp | Y | Y | | 53 | Microsoft.NetworkCloud | networkcloud | azure-mgmt-networkcloud | Y | Y | -| 54 | NewRelic.Observability | newrelic | azure-mgmt-newrelicobservability | Y | N | -| 55 | PaloAltoNetworks.Cloudngfw | paloaltonetworks | azure-mgmt-paloaltonetworksngfw | Y | N | +| 54 | NewRelic.Observability | newrelic | azure-mgmt-newrelicobservability | Y | Y | +| 55 | PaloAltoNetworks.Cloudngfw | paloaltonetworks | azure-mgmt-paloaltonetworksngfw | Y | Y | | 56 | microsoft.dbforpostgresql | postgresql | azure-mgmt-postgresqlflexibleservers | Y | Y | | 57 | Microsoft.ResourceConnector | resourceconnector | azure-mgmt-resourceconnector | Y | Y | | 58 | Microsoft.Network | trafficmanager | azure-mgmt-trafficmanager | Y | Y | @@ -77,7 +77,7 @@ | 75 | microsoft.web | web/domainregistration | azure-mgmt-domainregistration | Y | Y | | 76 | Microsoft.AlertsManagement | alertsmanagement | azure-mgmt-alertsmanagement | Y | Y | | 77 | Microsoft.AzureStackHCI | azurestackhci | azure-mgmt-azurestackhci | Y | Y | -| 78 | Microsoft.Commerce | commerce | azure-mgmt-commerce | Y | N | +| 78 | Microsoft.Commerce | commerce | azure-mgmt-commerce | Y | Y | | 79 | Microsoft.Communication | communication | azure-mgmt-communication | Y | Y | | 80 | Microsoft.ContainerService | containerservice | azure-mgmt-containerservice | Y | Y | | 81 | Microsoft.DocumentDB | cosmos-db | azure-mgmt-cosmosdb | Y | Y | @@ -127,7 +127,7 @@ | 125 | Microsoft.PowerPlatform | powerplatform | azure-mgmt-powerplatform | Y | Y | | 126 | Microsoft.RedHatOpenshift | redhatopenshift | azure-mgmt-redhatopenshift | Y | Y | | 127 | Microsoft.SerialConsole | serialconsole | azure-mgmt-serialconsole | Y | Y | -| 128 | Microsoft.Solutions | solutions | azure-mgmt-managedapplications | Y | N | +| 128 | Microsoft.Solutions | solutions | azure-mgmt-managedapplications | Y | Y | | 129 | Microsoft.Resources | resources/Microsoft.Resources/deployments | azure-mgmt-resource-deployments | Y | Y | | 130 | Microsoft.Resources | resources/Microsoft.Resources/databoundaries | azure-mgmt-resource-databoundaries | Y | Y | | 131 | Microsoft.Resources | resources/Microsoft.Resources/subscriptions | azure-mgmt-resource-subscriptions | Y | Y |