【问题标题】:Openstack Image uploadOpenstack 图片上传
【发布时间】:2020-02-05 08:29:12
【问题描述】:

我是 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】:

    我确实使用 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-19
      • 2010-12-02
      • 2010-12-15
      • 1970-01-01
      • 2018-03-22
      • 2012-01-25
      相关资源
      最近更新 更多