2015-05-15 86 views
1

我在创建虚拟机或云服务时遇到了libcloud/drivers/azure.py的问题,我总是收到一个没有正文的400错误请求。有人可以帮我解决这个问题吗?使用libcloud在Azure上创建虚拟机或云服务?

这里是我的代码:

# connectHandler use my pem file to create a connection with the server, return a AzureNodeDriver objet 
conn = _connectHandler.api_connect(compute_ressource) 
try: 
    result = conn.ex_create_cloud_service(name= "testCloudServiceZT200", location= "Central US") 
except Exception as e: 
    logger.error(e) 
else: 
    return result 

这里是我得到的回报: <LibcloudError in <libcloud.compute.drivers.azure.AzureNodeDriver object at 0x7fceaeb457d0> 'Message: Bad Request, Body: , Status code: 400'>

可能有人请告诉我,为什么这个错误,也许给我azure.py的一些例子,它将非常感激。谢谢!!

回答

0

Azure驱动程序看起来很新,因为它甚至没有包含在通过PyPI提供的最新版本中。我遇到了同样的问题,使用ipdb查看由Azure驱动程序创建的请求和XML。起初我以为我发现了一些问题,但在查看源代码后,不仅看到了调试器的输出,而且还看到了一个简单的修复。

下卷曲的要求对我的作品:

curl -v -E {PATH_TO_PEM_FILE} -H 'x-ms-version: 2015-04-01' -H 'Content-Type: application/xml' -d '<?xml version="1.0" encoding="utf-8"?><CreateHostedService xmlns="http://schemas.microsoft.com/windowsazure"><ServiceName>test-cloudservice-libcloud-azure-driver</ServiceName><Label>dGVzdC1jbG91ZHNlcnZpY2UtbGliY2xvdWQtYXp1cmUtZHJpdmVyCg==</Label><Location>West Europe</Location></CreateHostedService>' https://management.core.windows.net/{SUBSCRIPTION_ID}/services/hostedservices 

但是,这是由天青驱动器产生的XML包含encoding='utf8',这是行不通的。它必须是utf-8。如果您将github回购(e105433e941262e03eb3bb922db47dabdd8efa75)的当前头中的第2710行替换为result = ensure_string(ET.tostring(doc, encoding='utf-8')),则该行可行,encoding='utf8'是罪魁祸首,至少对我来说是罪魁祸首。

我已经打开拉请求,希望它也能为你解决问题:https://github.com/apache/libcloud/pull/538

相关问题