2016-09-01 9 views
0

を返しません。私はOpenStackのPythonのSDKを使用して一目からOpenStackのイメージをダウンロードしようとしているが、私はこれだけのエラーを取得:OpenStackのPythonのSDK - 概要は、画像MD5

Traceback (most recent call last): 
    File "/home/openstack/discovery/discovery.py", line 222, in <module> 
    main(sys.argv[1:]) 
    File "/home/openstack/discovery/discovery.py", line 117, in main 
    image_service.download_image(image) 
    File "/usr/local/lib/python2.7/dist-packages/openstack/image/v2/_proxy.py", line 72, in download_image 
    return image.download(self.session) 
    File "/usr/local/lib/python2.7/dist-packages/openstack/image/v2/image.py", line 166, in download 
    checksum = resp.headers["Content-MD5"] 
    File "/usr/local/lib/python2.7/dist-packages/requests/structures.py", line 54, in __getitem__ 
    return self._store[key.lower()][1] 
KeyError: 'content-md5' 

奇妙な部分があることですIDE(Pythonのリモートデバッグ)を使用してコードを実行するか、スクリプト(python script.py -i ...)を実行するとエラーが発生しますが、Pythonインタプリタ(ipython/python)エラーは起こりません!理由は分かりません。

... 
image_name = node.name + "_" + time.strftime("%Y-%m-%d_%H-%M-%S") 
print "Getting data from", node.name 
compute_service.create_server_image(node, image_name) 
image = image_service.find_image(image_name) 
image_service.wait_for_status(image, 'active') 
fileName = "%s.img" % image.name 

with open(str(fileName), 'w+') as imgFile: 
    imgFile.write(image.download(conn.image.session)) 
... 

をこのコードは、この方法では、このファイル/usr/local/lib/python2.7/dist-packages/openstack/image/v2/image.pyでAPIを呼び出す終わる:

def download(self, session): 
    """Download the data contained in an image""" 
    # TODO(briancurtin): This method should probably offload the get 
    # operation into another thread or something of that nature. 
    url = utils.urljoin(self.base_path, self.id, 'file') 
    resp = session.get(url, endpoint_filter=self.service) 

    checksum = resp.headers["Content-MD5"] 
    digest = hashlib.md5(resp.content).hexdigest() 
    if digest != checksum: 
     raise exceptions.InvalidResponse("checksum mismatch") 

    return resp.content 

resp.headers変数がノーを持っている。ここ

は、私が使用しているコードです。キー「Content-MD5」を選択します。これは私がそれを求めた値である: http://developer.openstack.org/api-ref/image/v2/?expanded=download-binary-image-data-detail

私はちょうどMD5はダウンロード作品をチェックし、コメント場合:

{'Date': 'Thu, 01 Sep 2016 20:17:01 GMT', 'Transfer-Encoding': 'chunked', 
'Connection': 'keep-alive', 'Content-Type': 'application/octet-stream', 
'X-Openstack-Request-Id': 'req-9eb16897-1398-4ab2-9cd4-45706e92819c'} 

しかし、RESTのAPIに応じて、応答がキーのContent-MD5を返す必要がありますdocumentationmこれはSDKの内部にあるので、私は変更できません。誰でもOpenStack Python SDKを使ってこれを達成する方法を提案していますか?これはSDKのバグですか?

答えて

関連する問題