Openstack图像上传

问题描述 投票:0回答:1

我是openstack的新手,我正在尝试使用python SDK访问openstack服务。我尝试使用create函数将图像上传到openstack,并将图像的数据(要写入的图像)作为参数包含在内,执行了脚本并且没有任何错误,但是当我登录并导航到图像时标签在openstack仪表板中,已经创建了图像,但是图像的状态始终为queued。我尝试从openstack库添加上载函数,这次图像的状态更改为Active,但是图像的大小仅为字节(图像的原始大小为12 MB)。我不明白哪里丢失了数据。我什至尝试使用Keystone身份库登录,但仍然发生相同的情况。任何帮助将非常有用。在此先感谢

def upload_image():
    # imagefile = 'CirrOS.qcow2'
    # loader = loading.get_plugin_loader('password')
    auth = v3.Password(user_domain_name='******',
                       username='***',
                       password='***',
                       project_domain_name='******',
                       project_name='***',
                       auth_url='http://*.*.*.**:****/v3')
    sess = session.Session(auth=auth)
    glance = client.Client(session=sess)
    # with open(imagefile, 'rb'):
    image = glance.images.create(name="my_image", is_public='True', disk_format="qcow2",
                                 container_format="bare", data='CirrOS.qcow2')
    glance.images.upload(image.id, image_data='CirrOS.qcow2')
python openstack openstack-glance
1个回答
1
投票

我确实使用openstack rest API来上传图像。它的步骤是:-步骤1.创建映像,它将创建处于排队状态的映像,其中包含所有必需的信息,但是没有映像数据。步骤2.读取图像并将其二进制数据上传到创建的图像上。

当您使用openstack python客户端库时,第一步是创建图像,但是在步骤2中,我看不到您正在读取和上传图像数据。因此,第二个函数调用应该是-

glance.images.upload(image.id, open('<image-path>', 'rb'))

因为您没有提及图像路径。在您的情况下,图像数据的大小为文本“ CirrOS.qcow2”。

有关更多信息,请参考此链接:-https://docs.openstack.org/python-glanceclient/latest/reference/apiv2.html

© www.soinside.com 2019 - 2024. All rights reserved.