Openstack 镜像上传

Openstack Image upload

我是 openstack 的新手,我正在尝试使用 python SDK 访问 openstack 服务。我尝试使用 create 函数将图像的数据(要写入的图像)作为参数上传到 openstack,执行脚本并且没有任何错误,但是当我登录并导航到 openstack 仪表板中的图像选项卡,图像已创建但图像状态始终在 queued 中。我尝试从 openstack library 添加上传功能,这次图像的状态更改为 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')

我确实使用 openstack rest API 来上传图片。它的步骤是:-
Step 1. Create Image,它将创建一个队列状态的图像,其中包含所有必需的信息,但不会有图像数据。
第 2 步。读取图像并将其二进制数据上传到创建的图像上。

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

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

因为你没有提到图片路径。在您的情况下,图像数据是文本的大小 "CirrOS.qcow2".

有关详细信息,请参阅此 link:- https://docs.openstack.org/python-glanceclient/latest/reference/apiv2.html