Azure / Azure/azure-cli

Empty "virtualHubRouteTableV2s" in VHubs

Open
#32,704 2 comments 0 reactions 1 assignee Claimed by @necusjz View on GitHub
act-quality-productivity-squad Auto-Assign Azure CLI Team customer-reported Network question
Dominant language
Python
Stars
4.6k
Forks
3.5k
Avg merge
3d 2h
Merged PRs (30d)
60

Description

### 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:

```shell
az network vhub route-table list --resource-group experiment_3 --vhub-name e3-frontend-vhub
```

```json
[
{
"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:
```shell
az network vhub show --resource-group experiment_3 --name e3-frontend-vhub
```

```json
{
"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 [, , ]
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 []
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 [.add_subscription_parameter at 0x10a7eefc0>]
cli.knack.cli: Event: CommandInvoker.OnPostArgumentLoad []
cli.knack.cli: Event: CommandInvoker.OnPostCommandTableCreate [.add_ids_arguments at 0x10a7ef060>, .add_cache_arguments at 0x10a7ef240>, .update_breaking_change_info at 0x10a7ef2e0>]
cli.knack.cli: Event: CommandInvoker.OnCommandTableLoaded []
cli.knack.cli: Event: CommandInvoker.OnPreParseArgs []
cli.knack.cli: Event: CommandInvoker.OnPostParseArgs [, , .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 [, ]
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 []
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_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.