Skip to content

Empty "virtualHubRouteTableV2s" in VHubs #32704

@jantunes-te

Description

@jantunes-te

Describe the bug

When listing or showing a virtual hub, the JSON response field "virtualHubRouteTableV2s" comes back empty, even though we have at least two custom vhub route tables associated with vhub connections on that vhub.

For context, here's the list of route tables on that vhub:

az network vhub route-table list --resource-group experiment_3 --vhub-name e3-frontend-vhub
[
  {
    "name": "defaultRouteTable",
    "associatedConnections": [],
    "etag": "W/\"d9ea95fd-0f0b-45e1-90f2-c1679792ec31\"",
    "id": "/subscriptions/6d7ab240-fc1f-4caf-b121-8f39a62ca086/resourceGroups/experiment_3/providers/Microsoft.Network/virtualHubs/e3-frontend-vhub/hubRouteTables/defaultRouteTable",
    "labels": [
      "default"
    ],
    "propagatingConnections": [],
    "provisioningState": "Succeeded",
    "resourceGroup": "experiment_3",
    "routes": [],
    "type": "Microsoft.Network/virtualHubs/hubRouteTables"
  },
  {
    "name": "noneRouteTable",
    "associatedConnections": [],
    "etag": "W/\"d9ea95fd-0f0b-45e1-90f2-c1679792ec31\"",
    "id": "/subscriptions/6d7ab240-fc1f-4caf-b121-8f39a62ca086/resourceGroups/experiment_3/providers/Microsoft.Network/virtualHubs/e3-frontend-vhub/hubRouteTables/noneRouteTable",
    "labels": [
      "none"
    ],
    "propagatingConnections": [],
    "provisioningState": "Succeeded",
    "resourceGroup": "experiment_3",
    "routes": [],
    "type": "Microsoft.Network/virtualHubs/hubRouteTables"
  },
  {
    "name": "e3-frontend-custom-rt",
    "associatedConnections": [
      "/subscriptions/6d7ab240-fc1f-4caf-b121-8f39a62ca086/resourceGroups/experiment_3/providers/Microsoft.Network/virtualHubs/e3-frontend-vhub/hubVirtualNetworkConnections/e3-frontend-vhub-connection"
    ],
    "etag": "W/\"d9ea95fd-0f0b-45e1-90f2-c1679792ec31\"",
    "id": "/subscriptions/6d7ab240-fc1f-4caf-b121-8f39a62ca086/resourceGroups/experiment_3/providers/Microsoft.Network/virtualHubs/e3-frontend-vhub/hubRouteTables/e3-frontend-custom-rt",
    "labels": [],
    "propagatingConnections": [
      "/subscriptions/6d7ab240-fc1f-4caf-b121-8f39a62ca086/resourceGroups/experiment_3/providers/Microsoft.Network/virtualHubs/e3-frontend-vhub/hubVirtualNetworkConnections/e3-frontend-vhub-connection",
      "/subscriptions/6d7ab240-fc1f-4caf-b121-8f39a62ca086/resourceGroups/experiment_3/providers/Microsoft.Network/virtualHubs/e3-frontend-vhub/hubVirtualNetworkConnections/e3-backend-vhub-connection"
    ],
    "provisioningState": "Succeeded",
    "resourceGroup": "experiment_3",
    "routes": [],
    "type": "Microsoft.Network/virtualHubs/hubRouteTables"
  },
  {
    "name": "e3-backend-custom-rt",
    "associatedConnections": [
      "/subscriptions/6d7ab240-fc1f-4caf-b121-8f39a62ca086/resourceGroups/experiment_3/providers/Microsoft.Network/virtualHubs/e3-frontend-vhub/hubVirtualNetworkConnections/e3-backend-vhub-connection"
    ],
    "etag": "W/\"d9ea95fd-0f0b-45e1-90f2-c1679792ec31\"",
    "id": "/subscriptions/6d7ab240-fc1f-4caf-b121-8f39a62ca086/resourceGroups/experiment_3/providers/Microsoft.Network/virtualHubs/e3-frontend-vhub/hubRouteTables/e3-backend-custom-rt",
    "labels": [],
    "propagatingConnections": [
      "/subscriptions/6d7ab240-fc1f-4caf-b121-8f39a62ca086/resourceGroups/experiment_3/providers/Microsoft.Network/virtualHubs/e3-frontend-vhub/hubVirtualNetworkConnections/e3-frontend-vhub-connection",
      "/subscriptions/6d7ab240-fc1f-4caf-b121-8f39a62ca086/resourceGroups/experiment_3/providers/Microsoft.Network/virtualHubs/e3-frontend-vhub/hubVirtualNetworkConnections/e3-backend-vhub-connection"
    ],
    "provisioningState": "Succeeded",
    "resourceGroup": "experiment_3",
    "routes": [],
    "type": "Microsoft.Network/virtualHubs/hubRouteTables"
  },
  {
    "name": "e3-hub-custom-rt",
    "associatedConnections": [],
    "etag": "W/\"d9ea95fd-0f0b-45e1-90f2-c1679792ec31\"",
    "id": "/subscriptions/6d7ab240-fc1f-4caf-b121-8f39a62ca086/resourceGroups/experiment_3/providers/Microsoft.Network/virtualHubs/e3-frontend-vhub/hubRouteTables/e3-hub-custom-rt",
    "labels": [],
    "propagatingConnections": [
      "/subscriptions/6d7ab240-fc1f-4caf-b121-8f39a62ca086/resourceGroups/experiment_3/providers/Microsoft.Network/virtualHubs/e3-frontend-vhub/hubVirtualNetworkConnections/e3-frontend-vhub-connection",
      "/subscriptions/6d7ab240-fc1f-4caf-b121-8f39a62ca086/resourceGroups/experiment_3/providers/Microsoft.Network/virtualHubs/e3-frontend-vhub/hubVirtualNetworkConnections/e3-backend-vhub-connection"
    ],
    "provisioningState": "Succeeded",
    "resourceGroup": "experiment_3",
    "routes": [],
    "type": "Microsoft.Network/virtualHubs/hubRouteTables"
  }
]

And here's the output showing the empty "virtualHubRouteTableV2s" field:

az network vhub show --resource-group experiment_3 --name e3-frontend-vhub
{
  "addressPrefix": "10.10.16.0/20",
  "allowBranchToBranchTraffic": false,
  "etag": "W/\"ff75f058-de01-48ab-9c7c-df3c4a6db1c6\"",
  "hubRoutingPreference": "ExpressRoute",
  "id": "/subscriptions/6d7ab240-fc1f-4caf-b121-8f39a62ca086/resourceGroups/experiment_3/providers/Microsoft.Network/virtualHubs/e3-frontend-vhub",
  "location": "eastus",
  "name": "e3-frontend-vhub",
  "provisioningState": "Succeeded",
  "resourceGroup": "experiment_3",
  "routeTable": {
    "routes": []
  },
  "routingState": "Provisioned",
  "sku": "Standard",
  "tags": {
    "env": "Sandbox",
    "version": "e3"
  },
  "type": "Microsoft.Network/virtualHubs",
  "virtualHubRouteTableV2s": [],
  "virtualRouterAsn": 65515,
  "virtualRouterAutoScaleConfiguration": {
    "minCapacity": 2
  },
  "virtualRouterIps": [
    "10.10.18.6",
    "10.10.18.5"
  ],
  "virtualWan": {
    "id": "/subscriptions/6d7ab240-fc1f-4caf-b121-8f39a62ca086/resourceGroups/experiment_3/providers/Microsoft.Network/virtualWans/e3-vwan",
    "resourceGroup": "experiment_3"
  }
}

Related command

az network vhub show --resource-group experiment_3 --name e3-frontend-vhub

Errors

No errors, but the returned JSON should contain the list of route tables associated with the vhub, and it doesn't.

Issue script & Debug output

$ az network vhub show --resource-group experiment_3 --name e3-frontend-vhub --debug
cli.knack.cli: Command arguments: ['network', 'vhub', 'show', '--resource-group', 'experiment_3', '--name', 'e3-frontend-vhub', '--debug']
cli.knack.cli: __init__ debug log:
Enable color in terminal.
cli.knack.cli: Event: Cli.PreExecute []
cli.knack.cli: Event: CommandParser.OnGlobalArgumentsCreate [<function CLILogging.on_global_arguments at 0x1096ccd60>, <function OutputProducer.on_global_arguments at 0x1098a2de0>, <function CLIQuery.on_global_arguments at 0x1098e91c0>]
cli.knack.cli: Event: CommandInvoker.OnPreCommandTableCreate []
cli.azure.cli.core: Modules found from index for 'network': ['azure.cli.command_modules.network', 'azure.cli.command_modules.privatedns', 'azext_vwan']
cli.azure.cli.core: Loading command modules:
cli.azure.cli.core: Name                  Load Time    Groups  Commands
cli.azure.cli.core: network                   0.377       120       368
cli.azure.cli.core: privatedns                0.010        14        60
cli.azure.cli.core: Total (2)                 0.387       134       428
cli.azure.cli.core: These extensions are not installed and will be skipped: ['azext_ai_examples', 'azext_next']
cli.azure.cli.core: Loading extensions:
cli.azure.cli.core: Name                  Load Time    Groups  Commands  Directory
cli.azure.cli.core: virtual-wan               0.059        23        84  /Users/jantunes/.azure/cliextensions/virtual-wan
cli.azure.cli.core: Total (1)                 0.059        23        84
cli.azure.cli.core: Loaded 155 groups, 512 commands.
cli.azure.cli.core: Found a match in the command table.
cli.azure.cli.core: Raw command  : network vhub show
cli.azure.cli.core: Command table: network vhub show
cli.knack.cli: Event: CommandInvoker.OnPreCommandTableTruncate [<function AzCliLogging.init_command_file_logging at 0x10a79f380>]
cli.azure.cli.core.azlogging: metadata file logging enabled - writing logs to '/Users/jantunes/.azure/commands/2026-01-26.16-11-19.network_vhub_show.71504.log'.
az_command_data_logger: command args: network vhub show --resource-group {} --name {} --debug
cli.knack.cli: Event: CommandInvoker.OnPreArgumentLoad [<function register_global_subscription_argument.<locals>.add_subscription_parameter at 0x10a7eefc0>]
cli.knack.cli: Event: CommandInvoker.OnPostArgumentLoad []
cli.knack.cli: Event: CommandInvoker.OnPostCommandTableCreate [<function register_ids_argument.<locals>.add_ids_arguments at 0x10a7ef060>, <function register_cache_arguments.<locals>.add_cache_arguments at 0x10a7ef240>, <function register_upcoming_breaking_change_info.<locals>.update_breaking_change_info at 0x10a7ef2e0>]
cli.knack.cli: Event: CommandInvoker.OnCommandTableLoaded []
cli.knack.cli: Event: CommandInvoker.OnPreParseArgs []
cli.knack.cli: Event: CommandInvoker.OnPostParseArgs [<function OutputProducer.handle_output_argument at 0x1098a2e80>, <function CLIQuery.handle_query_parameter at 0x1098e9260>, <function register_ids_argument.<locals>.parse_ids_arguments at 0x10a7ef100>]
az_command_data_logger: extension name: virtual-wan
az_command_data_logger: extension version: 1.0.1
cli.azure.cli.core.auth.persistence: build_persistence: location='/Users/jantunes/.azure/msal_token_cache.json', encrypt=False
cli.azure.cli.core.auth.binary_cache: load: /Users/jantunes/.azure/msal_http_cache.bin
urllib3.util.retry: Converted retries value: 1 -> Retry(total=1, connect=None, read=None, redirect=None, status=None)
msal.authority: Initializing with Entra authority: https://login.microsoftonline.com/5ae1af62-9505-4097-a69a-c1553ef7840e
msal.authority: openid_config("https://login.microsoftonline.com/5ae1af62-9505-4097-a69a-c1553ef7840e/v2.0/.well-known/openid-configuration") = {'token_endpoint': 'https://login.microsoftonline.com/5ae1af62-9505-4097-a69a-c1553ef7840e/oauth2/v2.0/token', 'token_endpoint_auth_methods_supported': ['client_secret_post', 'private_key_jwt', 'client_secret_basic', 'self_signed_tls_client_auth'], 'jwks_uri': 'https://login.microsoftonline.com/5ae1af62-9505-4097-a69a-c1553ef7840e/discovery/v2.0/keys', 'response_modes_supported': ['query', 'fragment', 'form_post'], 'subject_types_supported': ['pairwise'], 'id_token_signing_alg_values_supported': ['RS256'], 'response_types_supported': ['code', 'id_token', 'code id_token', 'id_token token'], 'scopes_supported': ['openid', 'profile', 'email', 'offline_access'], 'issuer': 'https://login.microsoftonline.com/5ae1af62-9505-4097-a69a-c1553ef7840e/v2.0', 'request_uri_parameter_supported': False, 'userinfo_endpoint': 'https://graph.microsoft.com/oidc/userinfo', 'authorization_endpoint': 'https://login.microsoftonline.com/5ae1af62-9505-4097-a69a-c1553ef7840e/oauth2/v2.0/authorize', 'device_authorization_endpoint': 'https://login.microsoftonline.com/5ae1af62-9505-4097-a69a-c1553ef7840e/oauth2/v2.0/devicecode', 'http_logout_supported': True, 'frontchannel_logout_supported': True, 'end_session_endpoint': 'https://login.microsoftonline.com/5ae1af62-9505-4097-a69a-c1553ef7840e/oauth2/v2.0/logout', 'claims_supported': ['sub', 'iss', 'cloud_instance_name', 'cloud_instance_host_name', 'cloud_graph_host_name', 'msgraph_host', 'aud', 'exp', 'iat', 'auth_time', 'acr', 'nonce', 'preferred_username', 'name', 'tid', 'ver', 'at_hash', 'c_hash', 'email'], 'kerberos_endpoint': 'https://login.microsoftonline.com/5ae1af62-9505-4097-a69a-c1553ef7840e/kerberos', 'mtls_endpoint_aliases': {'token_endpoint': 'https://mtlsauth.microsoft.com/5ae1af62-9505-4097-a69a-c1553ef7840e/oauth2/v2.0/token'}, 'tls_client_certificate_bound_access_tokens': True, 'tenant_region_scope': 'NA', 'cloud_instance_name': 'microsoftonline.com', 'cloud_graph_host_name': 'graph.windows.net', 'msgraph_host': 'graph.microsoft.com', 'rbac_url': 'https://pas.windows.net'}
msal.application: Broker enabled? None
cli.azure.cli.core.auth.credential_adaptor: CredentialAdaptor.get_token: scopes=('https://management.core.windows.net//.default',), kwargs={}
cli.azure.cli.core.auth.msal_credentials: UserCredential.acquire_token: scopes=['https://management.core.windows.net//.default'], claims_challenge=None, kwargs={}
msal.application: Cache hit an AT
msal.telemetry: Generate or reuse correlation_id: defa1fb9-bd19-4c79-a2ac-a705713fb9d4
cli.azure.cli.core.sdk.policies: Request URL: 'https://management.azure.com/subscriptions/6d7ab240-fc1f-4caf-b121-8f39a62ca086/resourceGroups/experiment_3/providers/Microsoft.Network/virtualHubs/e3-frontend-vhub?api-version=2022-05-01'
cli.azure.cli.core.sdk.policies: Request method: 'GET'
cli.azure.cli.core.sdk.policies: Request headers:
cli.azure.cli.core.sdk.policies:     'Accept': 'application/json'
cli.azure.cli.core.sdk.policies:     'x-ms-client-request-id': 'b472fb44-fb14-11f0-b14b-2aef7617e0f7'
cli.azure.cli.core.sdk.policies:     'CommandName': 'network vhub show'
cli.azure.cli.core.sdk.policies:     'ParameterSetName': '--resource-group --name --debug'
cli.azure.cli.core.sdk.policies:     'User-Agent': 'AZURECLI/2.82.0 (HOMEBREW) azsdk-python-core/1.37.0 Python/3.13.11 (macOS-26.2-arm64-arm-64bit-Mach-O)'
cli.azure.cli.core.sdk.policies:     'Authorization': '*****'
cli.azure.cli.core.sdk.policies: Request body:
cli.azure.cli.core.sdk.policies: This request has no body
urllib3.connectionpool: Starting new HTTPS connection (1): management.azure.com:443
urllib3.connectionpool: https://management.azure.com:443 "GET /subscriptions/6d7ab240-fc1f-4caf-b121-8f39a62ca086/resourceGroups/experiment_3/providers/Microsoft.Network/virtualHubs/e3-frontend-vhub?api-version=2022-05-01 HTTP/1.1" 200 884
cli.azure.cli.core.sdk.policies: Response status: 200
cli.azure.cli.core.sdk.policies: Response headers:
cli.azure.cli.core.sdk.policies:     'Cache-Control': 'no-cache'
cli.azure.cli.core.sdk.policies:     'Pragma': 'no-cache'
cli.azure.cli.core.sdk.policies:     'Content-Length': '884'
cli.azure.cli.core.sdk.policies:     'Content-Type': 'application/json; charset=utf-8'
cli.azure.cli.core.sdk.policies:     'Expires': '-1'
cli.azure.cli.core.sdk.policies:     'x-ms-request-id': '8eed8e57-b4e4-4fd7-92e6-4ab26ba4738d'
cli.azure.cli.core.sdk.policies:     'x-ms-correlation-request-id': '266b4a5f-9b9e-4381-a992-ff2b66a36711'
cli.azure.cli.core.sdk.policies:     'x-ms-arm-service-request-id': 'd19dee08-f31c-4263-8b13-8d67f987391b'
cli.azure.cli.core.sdk.policies:     'Strict-Transport-Security': 'max-age=31536000; includeSubDomains'
cli.azure.cli.core.sdk.policies:     'x-ms-ratelimit-remaining-subscription-reads': '249'
cli.azure.cli.core.sdk.policies:     'x-ms-ratelimit-remaining-subscription-global-reads': '3749'
cli.azure.cli.core.sdk.policies:     'x-ms-routing-request-id': 'EASTUS:20260127T001120Z:266b4a5f-9b9e-4381-a992-ff2b66a36711'
cli.azure.cli.core.sdk.policies:     'X-Content-Type-Options': 'nosniff'
cli.azure.cli.core.sdk.policies:     'X-Cache': 'CONFIG_NOCACHE'
cli.azure.cli.core.sdk.policies:     'X-MSEdge-Ref': 'Ref A: 1B7E9A8ABBCB4E468F01D6D72E1C2437 Ref B: MWH011020806023 Ref C: 2026-01-27T00:11:20Z'
cli.azure.cli.core.sdk.policies:     'Date': 'Tue, 27 Jan 2026 00:11:19 GMT'
cli.azure.cli.core.sdk.policies: Response content:
cli.azure.cli.core.sdk.policies: {"name":"e3-frontend-vhub","id":"/subscriptions/6d7ab240-fc1f-4caf-b121-8f39a62ca086/resourceGroups/experiment_3/providers/Microsoft.Network/virtualHubs/e3-frontend-vhub","etag":"W/\"79d2f7ae-8c28-4d26-8267-d515be02233b\"","type":"Microsoft.Network/virtualHubs","location":"eastus","tags":{"env":"Sandbox","version":"e3"},"properties":{"provisioningState":"Succeeded","virtualHubRouteTableV2s":[],"addressPrefix":"10.10.16.0/20","virtualRouterAsn":65515,"virtualRouterIps":["10.10.18.6","10.10.18.5"],"routeTable":{"routes":[]},"virtualRouterAutoScaleConfiguration":{"minCapacity":2},"virtualWan":{"id":"/subscriptions/6d7ab240-fc1f-4caf-b121-8f39a62ca086/resourceGroups/experiment_3/providers/Microsoft.Network/virtualWans/e3-vwan"},"networkVirtualAppliances":[],"sku":"Standard","routingState":"Provisioned","allowBranchToBranchTraffic":false,"hubRoutingPreference":"ExpressRoute"}}
cli.knack.cli: Event: CommandInvoker.OnTransformResult [<function _resource_group_transform at 0x10a7ec5e0>, <function _x509_from_base64_to_hex_transform at 0x10a7ec680>]
cli.knack.cli: Event: CommandInvoker.OnFilterResult []
{
  "addressPrefix": "10.10.16.0/20",
  "allowBranchToBranchTraffic": false,
  "etag": "W/\"79d2f7ae-8c28-4d26-8267-d515be02233b\"",
  "hubRoutingPreference": "ExpressRoute",
  "id": "/subscriptions/6d7ab240-fc1f-4caf-b121-8f39a62ca086/resourceGroups/experiment_3/providers/Microsoft.Network/virtualHubs/e3-frontend-vhub",
  "location": "eastus",
  "name": "e3-frontend-vhub",
  "provisioningState": "Succeeded",
  "resourceGroup": "experiment_3",
  "routeTable": {
    "routes": []
  },
  "routingState": "Provisioned",
  "sku": "Standard",
  "tags": {
    "env": "Sandbox",
    "version": "e3"
  },
  "type": "Microsoft.Network/virtualHubs",
  "virtualHubRouteTableV2s": [],
  "virtualRouterAsn": 65515,
  "virtualRouterAutoScaleConfiguration": {
    "minCapacity": 2
  },
  "virtualRouterIps": [
    "10.10.18.6",
    "10.10.18.5"
  ],
  "virtualWan": {
    "id": "/subscriptions/6d7ab240-fc1f-4caf-b121-8f39a62ca086/resourceGroups/experiment_3/providers/Microsoft.Network/virtualWans/e3-vwan",
    "resourceGroup": "experiment_3"
  }
}
cli.knack.cli: Event: Cli.SuccessfulExecute []
cli.knack.cli: Event: Cli.PostExecute [<function AzCliLogging.deinit_cmd_metadata_logging at 0x10a79f600>]
az_command_data_logger: exit code: 0
cli.__main__: Command ran in 1.232 seconds (init: 0.147, invoke: 1.085)
telemetry.main: Begin splitting cli events and extra events, total events: 1
telemetry.client: Accumulated 0 events. Flush the clients.
telemetry.main: Finish splitting cli events and extra events, cli events: 1
telemetry.save: Save telemetry record of length 4135 in cache file under /Users/jantunes/.azure/telemetry/20260126161120512
telemetry.main: Begin creating telemetry upload process.
telemetry.process: Creating upload process: "/opt/homebrew/Cellar/azure-cli/2.82.0/libexec/bin/python /opt/homebrew/Cellar/azure-cli/2.82.0/libexec/lib/python3.13/site-packages/azure/cli/telemetry/__init__.py /Users/jantunes/.azure /Users/jantunes/.azure/telemetry/20260126161120512"
telemetry.process: Return from creating process 71510
telemetry.main: Finish creating telemetry upload process.

Expected behavior

We expect the returned JSON to contain the list of route tables in the vhub: "e3-backend-custom-rt", and "e3-frontend-custom-rt".

Environment Summary

azure-cli                         2.82.0

core                              2.82.0
telemetry                          1.1.0

Extensions:
virtual-wan                        1.0.1

Dependencies:
msal                            1.34.0b1
azure-mgmt-resource               23.3.0

Python location '/opt/homebrew/Cellar/azure-cli/2.82.0/libexec/bin/python'
Config directory '/Users/jantunes/.azure'
Extensions directory '/Users/jantunes/.azure/cliextensions'

Python (Darwin) 3.13.11 (main, Dec  5 2025, 16:06:33) [Clang 17.0.0 (clang-1700.4.4.1)]

Legal docs and information: aka.ms/AzureCliLegal


Your CLI is up-to-date.

Additional context

No response

Metadata

Metadata

Assignees

Labels

Auto-AssignAuto assign by botAzure CLI TeamThe command of the issue is owned by Azure CLI teamNetworkaz network vnet/lb/nic/dns/etc...customer-reportedIssues that are reported by GitHub users external to the Azure organization.questionThe issue doesn't require a change to the product in order to be resolved. Most issues start as that

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions