当我尝试从现有的图像模板创建一个vsi时,我使用Python API来创建vsi并遇到了问题 . 我的Python版本是3.6.3,我在Windows 7上运行我的Python脚本 .
您的文档(http://softlayer-python.readthedocs.io/en/latest/api/managers/vs.html)说:
os_code(string) - 要使用的操作系统 . 如果指定了image_id,则无法指定 . image_id(int) - 要加载到服务器上的映像的ID . 如果指定了os_code,则无法指定 .
当我在python脚本中指定不带os_code的image_id时,出现以下错误:
Traceback (most recent call last):
File "C:\Users\ods\Documents\slenv\lib\site-packages\SoftLayer\transports.py", line 173, in __call__
result = utils.xmlrpc_client.loads(resp.content)[0][0]
File "c:\users\ods\appdata\local\programs\python\python36\Lib\xmlrpc\client.py", line 1021, in loads
return u.close(), u.getmethodname()
File "c:\users\ods\appdata\local\programs\python\python36\Lib\xmlrpc\client.py", line 656, in close
raise Fault(**self._stack[0])
xmlrpc.client.Fault: <Fault SoftLayer_Exception_MissingCreationProperty: "The property 'operatingSystemReferenceCode' must be set to create an instance of 'SoftLayer_Virtual_Guest'.">
在处理上述异常期间,发生了另一个异常:
Traceback (most recent call last):
File "C:\Users\ods\Documents\slenv\", line 66, in <module>
create_vsi()
File "C:\Users\ods\Documents\slenv\", line 50, in create_vsi
ssh_keys=ssh_keys)
File "C:\Users\ods\Documents\slenv\lib\site-packages\SoftLayer\managers\vs.py", line 514, in verify_create_instance
return self.guest.generateOrderTemplate(create_options)
File "C:\Users\ods\Documents\slenv\lib\site-packages\SoftLayer\API.py", line 392, in call_handler
return self(name, *args, **kwargs)
File "C:\Users\ods\Documents\slenv\lib\site-packages\SoftLayer\API.py", line 360, in call
return self.client.call(self.name, name, *args, **kwargs)
File "C:\Users\ods\Documents\slenv\lib\site-packages\SoftLayer\API.py", line 263, in call
return self.transport(request)
File "C:\Users\ods\Documents\slenv\lib\site-packages\SoftLayer\transports.py", line 195, in __call__
raise _ex(ex.faultCode, ex.faultString)
SoftLayer.exceptions.SoftLayerAPIError: SoftLayerAPIError(SoftLayer_Exception_MissingCreationProperty): The property 'operatingSystemReferenceCode' must be set to create an instance of 'SoftLayer_Virtual_Guest'.
所以我改变了我的脚本以指定os_code和image_id,然后我能够成功创建一个vsi,但是图像模板没有加载到vsi中 .
你能帮忙吗?谢谢 .
2 回答
文档中存在问题,image_id不是INT类型 . 方法create_instance调用Softlayer_Virtual_Guest::createObject方法,此方法使用图像的全局标识符而不是其id .
要知道全局标识符,可以使用SLCLI或 get_image 中描述的方法http://softlayer-python.readthedocs.io/en/latest/api/managers/image.html
您可以使用以下python代码对其进行测试,使用您自己的数据更改options变量中的值 .
供您参考,下面是我用来实际创建一个vsi或只是尝试干运行的python脚本: