Skip to content

Role assignment failing when creating an AKS cluster #32215

@sabbour

Description

@sabbour

Describe the bug

When creating an AKS cluster with the Azure CLI, the command fails after the cluster is created and the apparent point is during role assignment creation.

Related command

az aks create -n automatic --sku automatic -g automatic-bugbash -l uksouth --no-ssh --debug

Errors

The command failed with an unexpected error. Here is the traceback:
'NoneType' object has no attribute 'split'
Traceback (most recent call last):
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/profiles/_shared.py", line 352, in __init__
    if 'preview' in api_version_str:
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: argument of type 'NoneType' is not iterable

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/profiles/_shared.py", line 392, in _parse_api_version
    return _DateAPIFormat(api_version)
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/profiles/_shared.py", line 359, in __init__
    raise ValueError('The API version {} is not in a '
                     'supported format'.format(api_version_str))
ValueError: The API version None is not in a supported format

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/az/lib/python3.13/site-packages/knack/cli.py", line 233, in invoke
    cmd_result = self.invocation.execute(args)
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/__init__.py", line 666, in execute
    raise ex
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/__init__.py", line 734, in _run_jobs_serially
    results.append(self._run_job(expanded_arg, cmd_copy))
                   ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/__init__.py", line 703, in _run_job
    result = cmd_copy(params)
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/__init__.py", line 336, in __call__
    return self.handler(*args, **kwargs)
           ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/command_operation.py", line 120, in handler
    return op(**command_args)
  File "/home/asabbour/.azure/cliextensions/aks-preview/azext_aks_preview/custom.py", line 799, in aks_create
    return aks_create_decorator.create_mc(mc)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^
  File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/acs/managed_cluster_decorator.py", line 7501, in create_mc
    cluster = self.put_mc(mc)
  File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/acs/managed_cluster_decorator.py", line 7475, in put_mc
    self.postprocessing_after_mc_created(cluster)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
  File "/home/asabbour/.azure/cliextensions/aks-preview/azext_aks_preview/managed_cluster_decorator.py", line 4230, in postprocessing_after_mc_created
    self.context.external_functions._add_role_assignment_executor_new(  # type: ignore # pylint: disable=protected-access
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        self.cmd,
        ^^^^^^^^^
    ...<3 lines>...
        resolve_assignee=False,
        ^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/home/asabbour/.azure/cliextensions/aks-preview/azext_aks_preview/_roleassignments.py", line 59, in _add_role_assignment_executor_new
    if cmd.supported_api_version(min_api="2018-01-01-preview", resource_type=ResourceType.MGMT_AUTHORIZATION):
       ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/__init__.py", line 353, in supported_api_version
    return self.loader.supported_api_version(resource_type=resource_type, min_api=min_api, max_api=max_api,
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                             operation_group=operation_group)
                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/__init__.py", line 782, in supported_api_version
    api_support = supported_api_version(
        cli_ctx=self.cli_ctx,
    ...<2 lines>...
        max_api=max_api,
        operation_group=operation_group)
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/profiles/__init__.py", line 41, in supported_api_version
    return _sdk_supported_api_version(cli_ctx.cloud.profile,
                                      resource_type=resource_type,
                                      min_api=min_api,
                                      max_api=max_api,
                                      operation_group=operation_group)
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/profiles/_shared.py", line 437, in supported_api_version
    return _validate_api_version(api_version_obj, min_api, max_api)
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/profiles/_shared.py", line 414, in _validate_api_version
    if min_api and _cross_api_format_less_than(api_version_str, min_api):
                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/profiles/_shared.py", line 403, in _cross_api_format_less_than
    api_version = _parse_api_version(api_version)
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/profiles/_shared.py", line 394, in _parse_api_version
    return _SemVerAPIFormat(api_version)
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/profiles/_shared.py", line 322, in __init__
    parts = api_version_str.split('.')
            ^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'split'
To check existing issues, please visit: https://github.com/Azure/azure-cli/issues

Issue script & Debug output

cli.azure.cli.core.util: Request URL: 'https://graph.microsoft.com/v1.0/me'
cli.azure.cli.core.util: Request method: 'GET'
cli.azure.cli.core.util: Request headers:
cli.azure.cli.core.util:     'User-Agent': 'python/3.13.7 (Linux-6.6.87.2-microsoft-standard-WSL2-x86_64-with-glibc2.39) AZURECLI/2.77.0 (DEB)'
cli.azure.cli.core.util:     'Accept-Encoding': 'gzip, deflate'
cli.azure.cli.core.util:     'Accept': '*/*'
cli.azure.cli.core.util:     'Connection': 'keep-alive'
cli.azure.cli.core.util:     'x-ms-client-request-id': 'c19679d8-93c6-4a41-8752-54960ca5e84d'
cli.azure.cli.core.util:     'CommandName': 'aks create'
cli.azure.cli.core.util:     'ParameterSetName': '-n --sku -g -l --no-ssh --debug'
cli.azure.cli.core.util:     'Authorization': 'Bearer eyJ0eXAiOiJKV...'
cli.azure.cli.core.util: Request body:
cli.azure.cli.core.util: None
urllib3.connectionpool: Starting new HTTPS connection (1): graph.microsoft.com:443
urllib3.connectionpool: https://graph.microsoft.com:443 "GET /v1.0/me HTTP/1.1" 200 None
cli.azure.cli.core.util: Response status: 200
cli.azure.cli.core.util: Response headers:
cli.azure.cli.core.util:     'Cache-Control': 'no-cache'
cli.azure.cli.core.util:     'Transfer-Encoding': 'chunked'
cli.azure.cli.core.util:     'Content-Type': 'application/json; odata.metadata=minimal; odata.streaming=true; IEEE754Compatible=false; charset=utf-8'
cli.azure.cli.core.util:     'Content-Encoding': 'gzip'
cli.azure.cli.core.util:     'Vary': 'Accept-Encoding'
cli.azure.cli.core.util:     'Strict-Transport-Security': 'max-age=31536000'
cli.azure.cli.core.util:     'request-id': 'ed8b088a-c4eb-4b26-a96e-6a4fae59ca82'
cli.azure.cli.core.util:     'client-request-id': 'ed8b088a-c4eb-4b26-a96e-6a4fae59ca82'
cli.azure.cli.core.util:     'x-ms-ags-diagnostic': '{"ServerInfo":{"DataCenter":"West US 2","Slice":"E","Ring":"4","ScaleUnit":"004","RoleInstance":"MW2PEPF0000E01A"}}'
cli.azure.cli.core.util:     'x-ms-gateway-esc': '200'
cli.azure.cli.core.util:     'x-ms-resource-unit': '1'
cli.azure.cli.core.util:     'OData-Version': '4.0'
cli.azure.cli.core.util:     'Date': 'Fri, 03 Oct 2025 00:08:01 GMT'
cli.azure.cli.core.util: Response content:
cli.azure.cli.core.util: {"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#users/$entity","businessPhones":["+1 xxxx"],"displayName":"xxxr","givenName":"xxx","jobTitle":"Pxxx","mail":"xxx","mobilePhone":null,"officeLocation":"xxx","preferredLanguage":null,"surname":"xxx","userPrincipalName":"xxx","id":"xxx"}
cli.azure.cli.core.sdk.policies: Request URL: 'https://management.azure.com/subscriptions/90ab3701-83f0-4ba1-a90a-f2e68683adab/resourcegroups/automatic-bugbash/providers/Microsoft.ContainerService/managedClusters/automatic/providers/Microsoft.Authorization/roleDefinitions?$filter=roleName%20eq%20%27Azure%20Kubernetes%20Service%20RBAC%20Cluster%20Admin%27&api-version=2022-05-01-preview'
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': 'a4d85cb2-9feb-11f0-9f57-00155deeaac6'
cli.azure.cli.core.sdk.policies:     'CommandName': 'aks create'
cli.azure.cli.core.sdk.policies:     'ParameterSetName': '-n --sku -g -l --no-ssh --debug'
cli.azure.cli.core.sdk.policies:     'User-Agent': 'AZURECLI/2.77.0 (DEB) azsdk-python-core/1.35.0 Python/3.13.7 (Linux-6.6.87.2-microsoft-standard-WSL2-x86_64-with-glibc2.39)'
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/90ab3701-83f0-4ba1-a90a-f2e68683adab/resourcegroups/automatic-bugbash/providers/Microsoft.ContainerService/managedClusters/automatic/providers/Microsoft.Authorization/roleDefinitions?$filter=roleName%20eq%20%27Azure%20Kubernetes%20Service%20RBAC%20Cluster%20Admin%27&api-version=2022-05-01-preview HTTP/1.1" 200 949
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': '949'
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': 'c0d3ebd6-34e0-4dd4-9a77-ad9732cea4f1'
cli.azure.cli.core.sdk.policies:     'X-Content-Type-Options': 'nosniff'
cli.azure.cli.core.sdk.policies:     'Strict-Transport-Security': 'max-age=31536000; includeSubDomains'
cli.azure.cli.core.sdk.policies:     'x-ms-operation-identifier': 'tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=c4279823-a7c7-477e-982e-f4145bb0a83d/southcentralus/6652b2bc-4662-4e63-bf43-b6233cbd9f67'
cli.azure.cli.core.sdk.policies:     'x-ms-ratelimit-remaining-subscription-reads': '1099'
cli.azure.cli.core.sdk.policies:     'x-ms-ratelimit-remaining-subscription-global-reads': '16499'
cli.azure.cli.core.sdk.policies:     'x-ms-correlation-request-id': '49a61cd0-43be-4ae4-be06-ba513886a4cd'
cli.azure.cli.core.sdk.policies:     'x-ms-routing-request-id': 'SOUTHCENTRALUS:20251003T000802Z:49a61cd0-43be-4ae4-be06-ba513886a4cd'
cli.azure.cli.core.sdk.policies:     'X-Cache': 'CONFIG_NOCACHE'
cli.azure.cli.core.sdk.policies:     'X-MSEdge-Ref': 'Ref A: 36F1DC41129E449D8C84C37920D1BA68 Ref B: MWH011020807034 Ref C: 2025-10-03T00:08:02Z'
cli.azure.cli.core.sdk.policies:     'Date': 'Fri, 03 Oct 2025 00:08:02 GMT'
cli.azure.cli.core.sdk.policies: Response content:
cli.azure.cli.core.sdk.policies: {"value":[{"properties":{"roleName":"Azure Kubernetes Service RBAC Cluster Admin","type":"BuiltInRole","description":"Lets you manage all resources in the cluster.","assignableScopes":["/"],"permissions":[{"actions":["Microsoft.Authorization/*/read","Microsoft.Resources/subscriptions/operationresults/read","Microsoft.Resources/subscriptions/read","Microsoft.Resources/subscriptions/resourceGroups/read","Microsoft.ContainerService/managedClusters/listClusterUserCredential/action"],"notActions":[],"dataActions":["Microsoft.ContainerService/managedClusters/*"],"notDataActions":[]}],"createdOn":"2020-07-02T17:47:24.4071415Z","updatedOn":"2022-10-13T03:34:52.0122969Z","createdBy":null,"updatedBy":null},"id":"/subscriptions/90ab3701-83f0-4ba1-a90a-f2e68683adab/providers/Microsoft.Authorization/roleDefinitions/b1ff04bb-8a4e-4dc4-8eb5-8693973ce19b","type":"Microsoft.Authorization/roleDefinitions","name":"b1ff04bb-8a4e-4dc4-8eb5-8693973ce19b"}]}
cli.azure.cli.core.azclierror: Traceback (most recent call last):
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/profiles/_shared.py", line 352, in __init__
    if 'preview' in api_version_str:
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: argument of type 'NoneType' is not iterable

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/profiles/_shared.py", line 392, in _parse_api_version
    return _DateAPIFormat(api_version)
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/profiles/_shared.py", line 359, in __init__
    raise ValueError('The API version {} is not in a '
                     'supported format'.format(api_version_str))
ValueError: The API version None is not in a supported format

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/az/lib/python3.13/site-packages/knack/cli.py", line 233, in invoke
    cmd_result = self.invocation.execute(args)
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/__init__.py", line 666, in execute
    raise ex
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/__init__.py", line 734, in _run_jobs_serially
    results.append(self._run_job(expanded_arg, cmd_copy))
                   ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/__init__.py", line 703, in _run_job
    result = cmd_copy(params)
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/__init__.py", line 336, in __call__
    return self.handler(*args, **kwargs)
           ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/command_operation.py", line 120, in handler
    return op(**command_args)
  File "/home/asabbour/.azure/cliextensions/aks-preview/azext_aks_preview/custom.py", line 799, in aks_create
    return aks_create_decorator.create_mc(mc)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^
  File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/acs/managed_cluster_decorator.py", line 7501, in create_mc
    cluster = self.put_mc(mc)
  File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/acs/managed_cluster_decorator.py", line 7475, in put_mc
    self.postprocessing_after_mc_created(cluster)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
  File "/home/asabbour/.azure/cliextensions/aks-preview/azext_aks_preview/managed_cluster_decorator.py", line 4230, in postprocessing_after_mc_created
    self.context.external_functions._add_role_assignment_executor_new(  # type: ignore # pylint: disable=protected-access
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        self.cmd,
        ^^^^^^^^^
    ...<3 lines>...
        resolve_assignee=False,
        ^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/home/asabbour/.azure/cliextensions/aks-preview/azext_aks_preview/_roleassignments.py", line 59, in _add_role_assignment_executor_new
    if cmd.supported_api_version(min_api="2018-01-01-preview", resource_type=ResourceType.MGMT_AUTHORIZATION):
       ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/__init__.py", line 353, in supported_api_version
    return self.loader.supported_api_version(resource_type=resource_type, min_api=min_api, max_api=max_api,
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                             operation_group=operation_group)
                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/__init__.py", line 782, in supported_api_version
    api_support = supported_api_version(
        cli_ctx=self.cli_ctx,
    ...<2 lines>...
        max_api=max_api,
        operation_group=operation_group)
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/profiles/__init__.py", line 41, in supported_api_version
    return _sdk_supported_api_version(cli_ctx.cloud.profile,
                                      resource_type=resource_type,
                                      min_api=min_api,
                                      max_api=max_api,
                                      operation_group=operation_group)
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/profiles/_shared.py", line 437, in supported_api_version
    return _validate_api_version(api_version_obj, min_api, max_api)
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/profiles/_shared.py", line 414, in _validate_api_version
    if min_api and _cross_api_format_less_than(api_version_str, min_api):
                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/profiles/_shared.py", line 403, in _cross_api_format_less_than
    api_version = _parse_api_version(api_version)
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/profiles/_shared.py", line 394, in _parse_api_version
    return _SemVerAPIFormat(api_version)
  File "/opt/az/lib/python3.13/site-packages/azure/cli/core/profiles/_shared.py", line 322, in __init__
    parts = api_version_str.split('.')
            ^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'split'

Expected behavior

The command executes without issues and the role assignment gets created

Environment Summary

azure-cli 2.77.0

core 2.77.0
telemetry 1.1.0

Extensions:
aks-preview 18.0.0b41
alb 2.0.1
k8s-extension 1.7.0

Dependencies:
msal 1.34.0b1
azure-mgmt-resource 23.3.0

Python location '/opt/az/bin/python3'
Config directory '/home/asabbour/.azure'
Extensions directory '/home/asabbour/.azure/cliextensions'

Python (Linux) 3.13.7 (main, Aug 26 2025, 08:47:19) [GCC 13.3.0]

Legal docs and information: aka.ms/AzureCliLegal

Your CLI is up-to-date.

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    AKSaz aks/acs/openshiftAuto-AssignAuto assign by botService AttentionThis issue is responsible by Azure service team.bugThis issue requires a change to an existing behavior in the product in order to be resolved.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions