0

I am trying to write a python program that helps me manage my virtual machines. When I create several virtual machines at some point a error occurs:

    async_vm_creation = compute_client.virtual_machines.create_or_update(
  File "C:\Python38\lib\site-packages\azure\mgmt\compute\v2019_03_01\operations\virtual_machines_operations.py", line 292, in create_or_update
    raw_result = self._create_or_update_initial(
  File "C:\Python38\lib\site-packages\azure\mgmt\compute\v2019_03_01\operations\virtual_machines_operations.py", line 252, in _create_or_update_initial   
    raise exp
msrestazure.azure_exceptions.CloudError: <unprintable CloudError object>

I have looked for similar problems but coudn't find a solution that works for me! Has anybody got an idea what the problem is?

Here is my Function that creates a Virtual Machine: When I want to create a VM the "createVM" method is called with the corresponding credentials

import os
import traceback

from azure.common.credentials import ServicePrincipalCredentials
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.network import NetworkManagementClient
from azure.mgmt.compute import ComputeManagementClient
from azure.mgmt.compute.models import DiskCreateOption

from msrestazure.azure_exceptions import CloudError

# Azure Datacenter
LOCATION = 'westus'

# Resource Group
#resource_group = 'myResourceGroup6'

# Network
VNET_NAME = 'azure-sample-vnet'
SUBNET_NAME = 'azure-sample-subnet'

# VM
OS_DISK_NAME = 'azure-sample-osdisk'

IP_CONFIG_NAME = 'azure-sample-ip-config'
NIC_NAME = 'azure-sample-nic'
USERNAME = 'userlogin'
PASSWORD = 'Pa$$w0rd91'
#vmName = 'VmName'

VM_REFERENCE = {
    'linux': {
        'publisher': 'Canonical',
        'offer': 'UbuntuServer',
        'sku': '16.04.0-LTS',
        'version': 'latest'
    }
}

def run_example(credentials, subscription_id, resource_group, vmName):
    resource_client = ResourceManagementClient(credentials, subscription_id)
    compute_client = ComputeManagementClient(credentials, subscription_id)
    network_client = NetworkManagementClient(credentials, subscription_id)

    # Create Resource group
    print('\nCreate Resource Group')
    resource_client.resource_groups.create_or_update(
        resource_group, {'location': LOCATION})

    try:
        # Create a NIC
        nic = create_nic(network_client, resource_group)

        # Create Linux VM
        print('Creating Linux Virtual Machine')
        vm_parameters = create_vm_parameters(nic.id, VM_REFERENCE['linux'], vmName)
        async_vm_creation = compute_client.virtual_machines.create_or_update(
            resource_group, vmName, vm_parameters)
        async_vm_creation.wait()

    except CloudError:
        print('A VM operation failed:\n{}'.format(traceback.format_exc()))
    else:
        print('VM erfolgreich erstellt!')

def create_nic(network_client, resource_group):
    # Create VNet
    print('Create Vnet')
    async_vnet_creation = network_client.virtual_networks.create_or_update(
        resource_group,
        VNET_NAME,
        {
            'location': LOCATION,
            'address_space': {
                'address_prefixes': ['10.0.0.0/16']
            }
        }
    )
    async_vnet_creation.wait()

    # Create Subnet
    print('Create Subnet')
    async_subnet_creation = network_client.subnets.create_or_update(
        resource_group,
        VNET_NAME,
        SUBNET_NAME,
        {'address_prefix': '10.0.0.0/24'}
    )
    subnet_info = async_subnet_creation.result()

    # Create NIC
    print('Create NIC')
    async_nic_creation = network_client.network_interfaces.create_or_update(
        resource_group,
        NIC_NAME,
        {
            'location': LOCATION,
            'ip_configurations': [{
                'name': IP_CONFIG_NAME,
                'subnet': {
                    'id': subnet_info.id
                }
            }]
        }
    )
    return async_nic_creation.result()


def create_vm_parameters(nic_id, vm_reference, vmName):
    return {
        'location': LOCATION,
        'os_profile': {
            'computer_name': vmName,
            'admin_username': USERNAME,
            'admin_password': PASSWORD
        },
        'hardware_profile': {
            'vm_size': 'Standard_DS1_v2'
        },
        'storage_profile': {
            'image_reference': {
                'publisher': vm_reference['publisher'],
                'offer': vm_reference['offer'],
                'sku': vm_reference['sku'],
                'version': vm_reference['version']
            },
        },
        'network_profile': {
            'network_interfaces': [{
                'id': nic_id,
            }]
        },
    }


def createVM(credentials, subscription_id, vm_name):
    resourceGroup = "resourceGroup" + vm_name
    run_example(credentials, subscription_id, resourceGroup, vm_name)
Bhargavi Annadevara
  • 4,923
  • 2
  • 13
  • 30
David
  • 51
  • 1
  • 6
  • Starting msrestazure 0.6.3, the "unprintable CloudError object" should be solved, that might help you to understand the error. Also, this sample might help: https://github.com/Azure-Samples/virtual-machines-python-manage – Laurent Mazuel Apr 03 '20 at 16:37
  • how do I start msrestazure 0.6.3 or what do you mean exactly with that? – David Apr 03 '20 at 17:43
  • pip install msrestazure>=0.6.3, or re-install a fresh Python virtual environement – Laurent Mazuel Apr 04 '20 at 22:39
  • Please give all the python code in the question. I didn't see the authentication in the code for the error. – Charles Xu Apr 10 '20 at 02:27

0 Answers0