openstack-glance API 镜像管理的部分实现和样例

本文介绍如何利用OpenStack Glance API进行虚拟机镜像的管理操作,包括查询、上传、删除镜像等,并提供了具体实现代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

感谢朋友支持本博客,欢迎共同探讨交流,因为能力和时间有限。错误之处在所难免。欢迎指正。
假设转载,请保留作者信息。
博客地址:http://blog.youkuaiyun.com/qq_21398167

原博文地址:http://blog.youkuaiyun.com/qq_21398167/article/details/46422629

Openstack-glance API

为了方便,可先自己定义一个函数 放在credentials.py里面

# vi credentials.py

#!/usr/bin/env python

import os

def get_keystone_creds():

   d = {}

   d['username'] =os.environ['OS_USERNAME']

   d['password'] =os.environ['OS_PASSWORD']

   d['auth_url'] =os.environ['OS_AUTH_URL']

   d['tenant_name'] = os.environ['OS_TENANT_NAME']

   return d

def get_nova_creds():

   d = {}

   d['username'] =os.environ['OS_USERNAME']

   d['api_key'] =os.environ['OS_PASSWORD']

   d['auth_url'] =os.environ['OS_AUTH_URL']

   d['project_id']= os.environ['OS_TENANT_NAME']

   return d

 

使用API

import keystoneclient.v2_0.client as ksclient

import glanceclient

import glanceclient.v2.client as glclient

from credentials import get_keystone_creds

 

1)查询虚拟机信息  

images = glance.images.list() 获取img的队列

images.next() 依次输出

部分代码:

creds = get_keystone_creds()

keystone = ksclient.Client(**creds)

glance_endpoint=keystone.service_catalog.url_for(service_type='image',endpoint_type='publicURL')

glance = glclient.Client(glance_endpoint,token=keystone.auth_token)

images = glance.images.list()

print images

print images.next()

 

(2)上传img

with open(img_url) as fimage: #img_url镜像存放路径

          glance.images.create(name="cirros_zy",is_public=True,disk_format="qcow2",container_format="bare",data=fimage)

 

 

部分代码:

keystone = ksclient.Client(**creds)

glance_endpoint=keystone.service_catalog.url_for(service_type='image',endpoint_type='publicURL')

glance=glanceclient.Client('1',glance_endpoint,token=keystone.auth_token)

with open(img_url) as fimage:

glance.images.create(name="cirros_zy",is_public=True,disk_format="qcow2",container_format="bare",data=fimage)

3)删除img

glance.images.delete(image_id)

 

4)成员绑定

glance.image_members.create(image_id,mem_id,can_share=True)

 

5)成员删除

glance.image_members.delete(image_id,mem_id)

 

6img下载

   因为glance v2没有支持镜像下载的API 所以直接使用命令行的方式下载

代码例如以下:

Import os

string_1 = 'glance image-download --file ' + image_url +' ' + image_id  

os.system(string_1)

### 如何卸载或移除 OpenStack Glance 组件 对于希望彻底清除并重置 OpenStackGlance 部分,以下是具体操作方法: #### 停止Glance服务 确保所有与 Glance 相关的服务都已停止运行。这一步骤非常重要,因为正在运行的服务可能会阻止文件被删除或者更新。 ```bash systemctl stop openstack-glance-api.service systemctl stop openstack-glance-registry.service ``` #### 卸载Glance软件包 使用 `yum` 工具来安全地移除 Glance 及其关联的软件包,这可以避免因手动删除而可能引发的问题[^1]。 ```bash yum remove openstack-glance python-glanceclient glance* ``` 上述命令会尝试移除所有的 Glance 主要组件以及客户端工具。请注意,在执行此命令前应当确认这些包确实是要完全去除的目标;如果有其他应用依赖于其中某些库,则需谨慎考虑。 #### 清理残留配置数据 为了确保系统干净无残留,还需要清理数据库中的表结构以及其他存储位置的数据。假设使用 MySQL/MariaDB 作为后端数据库引擎的话,可以通过 SQL 客户端连接到相应的实上去删除对应的 schema 或者 drop tables。 ```sql DROP DATABASE glance; DELETE FROM mysql.user WHERE user='glance'; FLUSH PRIVILEGES; ``` 另外也要记得清空镜像存放路径下的内容,默认情况下位于 `/var/lib/glance/images/` 文件夹内。 #### 移除相关用户服务注册项 最后一步是在 Keystone 中注销掉 Glance 用户及其 endpoint 记录。登录 keystone 并执行如下指令完成最终收尾工作: ```bash openstack service delete $(openstack service list | grep image | awk '{print $2}') openstack endpoint delete $(openstack endpoint list | grep image | awk '{print $2}') openstack role assignment list --user glance --project service | grep glance | cut -d' ' -f4 | xargs -n1 openstack role assignment delete openstack user delete glance ``` 以上过程涵盖了从停止服务直到清理用户的整个流程,从而实现OpenStack Glance 组件的安全有效移除[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值