2017-09-26 86 views
0

我想从我上传到devtest实验室的VHD创建自定义图像。在DevTestLabs中使用python Azure SDK创建自定义图像

我使用下面的代码来做到这一点:

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 ##”。

让我知道我在做什么错了?我在哪里肯定要在API中输入VHD的路径。我无法找到任何采取路径的论据!

+0

有没有进展?我的回答能帮助你吗? –

回答

0

它引发了以下错误:无法解析名为ImageName 的值为'## customImageName ##'的URI。

根据错误消息,似乎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. 

更多信息请参考此link


顺便说一句,要解决此问题更高的效率,你可以请把你的整个脚本:)

0

我想与你所提供的代码创建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的名字,它应该是你的VHD文件存储的名字的complete url。 它看起来像:

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

我成功地改变了imageName然后创建的自定义图像的价值。

enter image description here

希望它能帮助you.Any关注,请随时让我kown。

相关问题