start up

来源:互联网 发布:淘宝网上客服服务时间 编辑:程序博客网 时间:2024/04/29 19:29

btw: Centos 下执行systemctl启动/停止openstack的命令时,调用的是/usr/lib/systemd/system目录下的service文件,用源码安装ironic后发现没有对应的service文件,需要

自己添加。


ironic-api是启动一个符合WSGI规范的service,用于响应rest call, ironic-conductor启动RPCService,和其他的openstack模块没有什么不同,应该是复用自其他模块而来,

稍有改动,走一条简单的线,从rest call 进来到响应,RPC调用怎么走的,RPC调用最绕的是nova,之后会顺着网上看,也把之前积累的文档重新整理一下思路写出来。


1. 各个装有conductor service服务的节点启动ironic conductor service,关于RPC的终点在:

target = messaging.Target(topic=self.topic, server=self.host)
endpoints = [self.manager]
serializer = objects_base.IronicObjectSerializer()
self.rpcserver = rpc.get_server(target, endpoints, serializer) #在self.host上对topic为self.top的消息队列监听,用self.manager处理


2.以node 的power调用为例:

topic = pecan.request.rpcapi.get_topic_for(rpc_node)
pecan.request.rpcapi.change_node_power_state(pecan.request.context, node_uuid, target, topic)

前面讲ironic的hooks中提到:pecan.request.rpcapi=rpcapi.ConductorAPI()

而在ConductorAPI的__init__中:

        self.topic = topic
        if self.topic is None:
            self.topic = manager.MANAGER_TOPIC

所以rpc call之后会被对应host的RPC server收到,收到之后用manager对应的方法处理。

0 0