1

Python で libcloud api を使用して、CloudStack のイメージを一覧表示しようとしています。

from libcloud.compute.types import Provider 
from libcloud.compute.providers import get_driver 
from libcloud.common.base import Response 
#import libcloud.security as sec 
#sec.VERIFY_SSL_CERT = False 
#USER = 'ACCESSKEY' 
#API_KEY = 'SECRETKEY' 
Driver = get_driver(Provider.CLOUDSTACK) 
url = 'MY URL' 
conn = Driver(key=USER, secret=API_KEY, url=url) 
print "Connection established" 
images = conn.list_images() 
print images

このコードを実行すると、次のエラーが発生します。

 body = self.parse_body()
 File "/usr/local/lib/python2.7/dist-packages/libcloud/common/base.py", line 195,
 in parse_body driver=self.connection.driver) 
 libcloud.common.types.MalformedResponseError: <MalformedResponseException in
 <libcloud.compute.drivers.cloudstack.CloudStackNodeDriver object at 0x7fc356f55b50>
 'Failed to parse JSON'>: 'Unknown_ApiKey'

私は何が欠けていますか? 

4

1 に答える 1

1

CloudStack を使用する libcloud には「リージョン」は必要ありません。実際の例については、このリンクを参照してください。

あなたのコメントから、interoute.com を使用していることがわかります。簡単な検索で、このチュートリアルを見つけました。githubでさらに多くの例を見つけることができます。

すべての画像をリストするコードは正しいようです。ただし、エラー メッセージには が含まれUnknown_ApiKeyているため、要求に対して有効な資格情報を提供していることを確認してください。

(編集) CloudStack(interoute.com)の実際の例は次のとおりです。

from libcloud.compute.types import Provider
from libcloud.compute.providers import get_driver

VDCDriver=get_driver(Provider.CLOUDSTACK)

vdc_apikey= 'INSERT YOUR VDC ACCOUNT API KEY HERE'
vdc_secretkey= 'INSERT YOUR VDC ACCOUNT SECRET KEY HERE'
vdc_url= 'https://myservices.interoute.com/myservices/api/vdc'

conn=VDCDriver(key=vdc_apikey, secret=vdc_secretkey, url=vdc_url)

images = conn.list_images()
for i in images:
    print "%s - %s" % (i.extra['displaytext'],i.id)

これにより、利用可能なすべての画像の名前と ID が出力されます。

openSUSE 13.2 - abcde-1111-abc-1111-abcde
Ubuntu 14.10 - abcde-2222-abc-2222-abcde
Fedora 21 - abcde-3333-abc-333-abcde
于 2015-03-31T08:18:18.780 に答える