Создание собственного изображения с помощью Python Azure SDK в DevTestLabs

Я пытаюсь создать собственный образ из виртуального жесткого диска, который я загрузил в лабораторию разработчиков.

Я использую следующий код для этого:

from azure.mgmt.storage import StorageManagementClient
....
credentials = ServicePrincipalCredentials( client_id = '##', tenant = '##', secret = "##")
resource_client = DevTestLabsClient(credentials, subscriptID)

....
custom_image_properties = CustomImagePropertiesCustom(CustomImageOsType.windows, config.CustomImage.Name, True)
custom_image = CustomImage(vhd = custom_image_properties)
resource_client.custom_images.create_or_update(rgName,labName, imageName, custom_image)

Это выдает мне следующую ошибку: Не удалось проанализировать URI с именем ImageName со значением '##customImageName##'.

Дайте мне знать, что я делаю не так? А где мне положено вводить путь к VHD в API. Я не могу найти аргумент, который идет по пути!

2 ответа

Это выдает мне следующую ошибку: Не удалось проанализировать URI с именем ImageName со значением '##customImageName##'.

Согласно сообщению об ошибке, кажется, imagename значение является URI.

Имя изображения должно быть строкой.

create_or_update(resource_group_name, lab_name, name, custom_image, custom_headers=None, raw=False, **operation_config)


Parameters: 
resource_group_name (str) – The name of the resource group.
lab_name (str) – The name of the lab.
name (str) – The name of the custom image.

Более подробную информацию можно найти по этой ссылке.


Кстати, чтобы решить эту проблему более эффективно, не могли бы вы опубликовать весь ваш сценарий:)

Я пытался создать custom image с кодом, который вы предложили.

from azure.common.credentials import ServicePrincipalCredentials
from azure.mgmt.devtestlabs import DevTestLabsClient
from azure.mgmt.devtestlabs.models.custom_image_properties_custom import CustomImagePropertiesCustom
from azure.mgmt.devtestlabs.models.custom_image import CustomImage
from azure.mgmt.devtestlabs.models.dev_test_labs_client_enums import CustomImageOsType

client_id = <your client id>
tenant = <your tenant id>
secret = <your secret id>
subscriptID = <your subcript id>
imageName='jaygong.vhd'
name=<your custom image name as you want>
rgName = <your resource name>
labName = <your lab name>

credentials = ServicePrincipalCredentials(client_id=client_id, tenant=tenant , secret=secret)
resource_client = DevTestLabsClient(credentials, subscriptID)
custom_image_properties = CustomImagePropertiesCustom(CustomImageOsType.windows, imageName, True)
custom_image = CustomImage(vhd = custom_image_properties)
resource_client.custom_images.create_or_update(rgName,labName, name, custom_image)

тогда я воспроизвожу твой вопрос.

E:\Python27\python.exe E:/PythonWorkSpace/CreateVM/Create.py
Traceback (most recent call last):
  File "E:/PythonWorkSpace/CreateVM/Create.py", line 19, in <module>
    resource_client.custom_images.create_or_update(rgName,labName, imageName, custom_image)
  File "E:\Python27\lib\site-packages\azure\mgmt\devtestlabs\operations\custom_images_operations.py", line 293, in create_or_update
    get_long_running_status, long_running_operation_timeout)
  File "E:\Python27\lib\site-packages\msrestazure\azure_operation.py", line 350, in __init__
    raise CloudError(self._response)
msrestazure.azure_exceptions.CloudError: Azure Error: InvalidUrlProvided
Message: Failed to parse URI named ImageName with value of 'aaa'.

Process finished with exit code 1

После исследования я обнаружил, что imageName параметр выше не только ваш VHD имя, это должно быть complete url вашей VHD файл в вашем хранилище имя. Это выглядит как:

https://<your storage account>.blob.core.windows.net/<your container name>/<your vhd file name>

Я изменил значение imageName затем успешно создал пользовательское изображение.

Надеюсь, это поможет вам. Любое беспокойство, пожалуйста, не стесняйтесь, позвольте мне знать.

Другие вопросы по тегам