2015-05-15 116 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

相關問題