Search code examples
azureazure-cliazure-cloud-servicesazure-sdkazure-sdk-python

Azure Python SDK not able to consume output of list_of_vms with azure-mgmt-compute==20.0.0


I am using azure python sdk for resource management. below snippet was working with Azure -> azure-mgmt-compute==12.0.0 after upgrade to azure-mgmt-compute==20.0.0 below snippet is not working

creds = ServicePrincipalCredentials(client_id=client_id, secret=secret, tenant=tenant_id, **kwargs)

compute_client =  ComputeManagementClient(creds,
                                   subscription_id,
                                   base_url='https://management.azure.com')

paged_iter = compute_client.virtual_machines.list_all(raw=True)

output = []
paged_iter.get(paged_iter.next_link)
while True:
    chunk = json.loads(paged_iter.raw.response.content)
    if 'nextLink' in chunk:
        paged_iter.get(chunk['nextLink'])
    else:
        break
resp = {'value': output}
print(resp)

after upgrade getting error AttributeError: 'ItemPaged' object has no attribute 'get'

Please help to understand how to consume output of compute_client.virtual_machines.list_all(raw=True)


Solution

  • Try this:

    from azure.mgmt.compute import ComputeManagementClient
    from azure.identity import ClientSecretCredential
    
    credentials = ClientSecretCredential(
       client_id='',
       client_secret='',
       tenant_id=''
    )
    
    subID= ''
    
    computer_client = ComputeManagementClient(credentials,subID)
    vms = computer_client.virtual_machines.list_all()
    
    for vm in vms:
       print( vm.name )
    

    Result:

    enter image description here enter image description here