glance-0.1.7 分析(六)—— glance/registry 服务

本文深入探讨Glance Registry的核心组件及其功能,包括Registry API的实现方式和客户端交互机制,以及服务器端如何响应Registry API请求。重点阐述了如何通过client.py和server.py实现对image元数据的访问、添加、更新和删除操作。
glance/registry 提供了对 image 元数据访问的一个接口,client.py 提供了访问机制,server.py
提供了服务响应机制。

glance/registry/__init__.py
    定义了 Registry API,通过 client.RegistryClient 来完成实际的工作
    def get_images_list()
    def get_images_detail()
    def get_image_metadata(image_id)
    def add_image_metadata(image_data)
    def update_image_metadata(image_id, image_data)
    def delete_image_metadata(image_id)

glance/registry/client.py
    封装与 Restful 服务的通信,实现 Glance 的 Registry API,提供 image metadata 服务
    class RegistryClient(BaseClient)
        def get_images(self)
        def get_images_detailed(self)
        def get_image(self, image_id)
        def add_image(self, image_metadata)
        def update_image(self, image_id, image_metadata)
        def delete_image(self, image_id)

glance/registry/server.py
    从 db 中获取数据,构造成 dict 后返回给客户端
    class ImageController(wsgi.Controller)
        def index(self, req)
        def detail(self, req)
        def show(self, req, id)
        def delete(self, req, id)
        def create(self, req)
        def update(self, req, id)    
    class API(wsgi.Router)
        所有注册请求的 WSGI 入口点,设置 controller=ImageController()


       

#修改成自己的ip openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 192.168.80.144 openstack-config --set /etc/nova/nova.conf DEFAULT use_neutron true openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver openstack-config --set /etc/nova/nova.conf DEFAULT enabled_apis osapi_compute,metadata openstack-config --set /etc/nova/nova.conf DEFAULT transport_url rabbit://openstack:123456@manager.node openstack-config --set /etc/nova/nova.conf api auth_strategy keystone openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_url http://manager.node:5000/v3 openstack-config --set /etc/nova/nova.conf keystone_authtoken memcached_servers manager.node:11211 openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_type password openstack-config --set /etc/nova/nova.conf keystone_authtoken project_domain_name default openstack-config --set /etc/nova/nova.conf keystone_authtoken user_domain_name default openstack-config --set /etc/nova/nova.conf keystone_authtoken project_name service openstack-config --set /etc/nova/nova.conf keystone_authtoken username nova openstack-config --set /etc/nova/nova.conf keystone_authtoken password nv123456 openstack-config --set /etc/nova/nova.conf vnc enabled true openstack-config --set /etc/nova/nova.conf vnc server_listen 0.0.0.0 openstack-config --set /etc/nova/nova.conf vnc server_proxyclient_address '$my_ip' openstack-config --set /etc/nova/nova.conf vnc novncproxy_base_url http://manager.node:6080/vnc_auto.html openstack-config --set /etc/nova/nova.conf glance api_servers http://manager.node:9292 openstack-config --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp openstack-config --set /etc/nova/nova.conf placement region_name RegionOne openstack-config --set /etc/nova/nova.conf placement project_domain_name Default openstack-config --set /etc/nova/nova.conf placement project_name service openstack-config --set /etc/nova/nova.conf placement auth_type password openstack-config --set /etc/nova/nova.conf placement user_domain_name Default openstack-config --set /etc/nova/nova.conf placement auth_url http://manager.node:5000/v3 openstack-config --set /etc/nova/nova.conf placement username placement openstack-config --set /etc/nova/nova.conf placement password pm123456控制节点是manager.node,计算节点是master.node
最新发布
06-21
### 配置 OpenStack Nova 服务的相关参数 在 OpenStack 中,`openstack-config` 命令可以用来设置配置文件中的参数。以下是针对 `Nova` 服务的各个参数配置方法: #### 配置 `my_ip` 通过以下命令设置 Nova 的 IP 地址: ```bash openstack-config --set /etc/nova/nova.conf DEFAULT my_ip <your-ip-address> ``` 这将指定 Nova 使用的 IP 地址[^1]。 #### 集成 Neutron 启用 Neutron 并设置防火墙驱动程序: ```bash openstack-config --set /etc/nova/nova.conf DEFAULT use_neutron True openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver ``` 上述命令启用了 Neutron,并禁用了防火墙功能[^3]。 #### 设置认证策略 启用的 API 和认证策略可以通过以下命令进行配置: ```bash openstack-config --set /etc/nova/nova.conf api enabled_apis osapi_compute,metadata openstack-config --set /etc/nova/nova.conf api auth_strategy keystone ``` 这确保了仅允许经过 Keystone 认证的用户访问 Nova API[^4]。 #### 消息队列配置 设置消息队列的传输 URL: ```bash openstack-config --set /etc/nova/nova.conf DEFAULT transport_url rabbit://<user>:<password>@<rabbitmq-host>:5672/ ``` 此命令定义了 RabbitMQ 的连接信息[^3]。 #### Keystone 认证令牌 配置 Keystone 认证令牌相关参数: ```bash openstack-config --set /etc/nova/nova.conf keystone_authtoken www_authenticate_uri http://<controller-ip>:5000/v3 openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_url http://<controller-ip>:5000/v3 openstack-config --set /etc/nova/nova.conf keystone_authtoken memcached_servers <controller-ip>:11211 openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_type password openstack-config --set /etc/nova/nova.conf keystone_authtoken project_domain_name Default openstack-config --set /etc/nova/nova.conf keystone_authtoken user_domain_name Default openstack-config --set /etc/nova/nova.conf keystone_authtoken project_name service openstack-config --set /etc/nova/nova.conf keystone_authtoken username nova openstack-config --set /etc/nova/nova.conf keystone_authtoken password <nova-password> ``` 这些参数确保了 Nova 能够正确地与 Keystone 进行身份验证[^4]。 #### VNC 设置 配置 VNC 相关参数以支持远程控制台访问: ```bash openstack-config --set /etc/nova/nova.conf vnc enabled True openstack-config --set /etc/nova/nova.conf vnc vncserver_listen 0.0.0.0 openstack-config --set /etc/nova/nova.conf vnc vncserver_proxyclient_address <compute-node-ip> openstack-config --set /etc/nova/nova.conf vnc novncproxy_base_url http://<controller-ip>:6080/vnc_auto.html ``` 这为计算节点上的虚拟机实例启用了 VNC 控制台访问[^1]。 #### Glance API 配置 设置 Glance API 的地址: ```bash openstack-config --set /etc/nova/nova.conf glance api_servers http://<controller-ip>:9292 ``` 此命令指定了 Glance API 的地址,以便 Nova 可以获取镜像信息。 #### 并发控制 配置并发控制参数以限制线程和进程数量: ```bash openstack-config --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp ``` 这设置了锁路径以避免多线程冲突[^2]。 #### Placement 服务配置 确保 Placement 服务被正确配置: ```bash openstack-config --set /etc/nova/nova.conf placement region_name RegionOne openstack-config --set /etc/nova/nova.conf placement project_domain_name Default openstack-config --set /etc/nova/nova.conf placement project_name service openstack-config --set /etc/nova/nova.conf placement auth_type password openstack-config --set /etc/nova/nova.conf placement auth_url http://<controller-ip>:5000/v3 openstack-config --set /etc/nova/nova.conf placement username placement openstack-config --set /etc/nova/nova.conf placement password <placement-password> ``` 这些参数确保了 Nova 能够与 Placement 服务交互以管理资源分配。 ### 示例代码 以下是一个完整的脚本示例,用于批量配置上述参数: ```bash #!/bin/bash # 定义变量 MY_IP="<your-ip-address>" RABBITMQ_USER="<user>" RABBITMQ_PASSWORD="<password>" RABBITMQ_HOST="<rabbitmq-host>" CONTROLLER_IP="<controller-ip>" NOVA_PASSWORD="<nova-password>" PLACEMENT_PASSWORD="<placement-password>" # 配置 my_ip openstack-config --set /etc/nova/nova.conf DEFAULT my_ip $MY_IP # 配置 Neutron openstack-config --set /etc/nova/nova.conf DEFAULT use_neutron True openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver # 配置认证策略 openstack-config --set /etc/nova/nova.conf api enabled_apis osapi_compute,metadata openstack-config --set /etc/nova/nova.conf api auth_strategy keystone # 配置消息队列 openstack-config --set /etc/nova/nova.conf DEFAULT transport_url rabbit://$RABBITMQ_USER:$RABBITMQ_PASSWORD@$RABBITMQ_HOST:5672/ # 配置 Keystone 认证令牌 openstack-config --set /etc/nova/nova.conf keystone_authtoken www_authenticate_uri http://$CONTROLLER_IP:5000/v3 openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_url http://$CONTROLLER_IP:5000/v3 openstack-config --set /etc/nova/nova.conf keystone_authtoken memcached_servers $CONTROLLER_IP:11211 openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_type password openstack-config --set /etc/nova/nova.conf keystone_authtoken project_domain_name Default openstack-config --set /etc/nova/nova.conf keystone_authtoken user_domain_name Default openstack-config --set /etc/nova/nova.conf keystone_authtoken project_name service openstack-config --set /etc/nova/nova.conf keystone_authtoken username nova openstack-config --set /etc/nova/nova.conf keystone_authtoken password $NOVA_PASSWORD # 配置 VNC openstack-config --set /etc/nova/nova.conf vnc enabled True openstack-config --set /etc/nova/nova.conf vnc vncserver_listen 0.0.0.0 openstack-config --set /etc/nova/nova.conf vnc vncserver_proxyclient_address $MY_IP openstack-config --set /etc/nova/nova.conf vnc novncproxy_base_url http://$CONTROLLER_IP:6080/vnc_auto.html # 配置 Glance API openstack-config --set /etc/nova/nova.conf glance api_servers http://$CONTROLLER_IP:9292 # 配置并发控制 openstack-config --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp # 配置 Placement openstack-config --set /etc/nova/nova.conf placement region_name RegionOne openstack-config --set /etc/nova/nova.conf placement project_domain_name Default openstack-config --set /etc/nova/nova.conf placement project_name service openstack-config --set /etc/nova/nova.conf placement auth_type password openstack-config --set /etc/nova/nova.conf placement auth_url http://$CONTROLLER_IP:5000/v3 openstack-config --set /etc/nova/nova.conf placement username placement openstack-config --set /etc/nova/nova.conf placement password $PLACEMENT_PASSWORD ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值