ironic pecan hooks

查阅ironic的源代码时,看到:

pecan.request.rpcapi.change_node_power_state(pecan.request.context,rpc_node.uuid, target,topic)

比较奇怪的是pecan.request.rpcapi对应的是哪个类,虽然知道对应的是rpcapi.ConductorAPI(),但不知道为什么


关于pecan的hooks详情可以参考http://pecan.readthedocs.org/en/latest/pecan_hooks.html

我们理解的钩子,可以非常方便的接受到request时或request之后做一些巧妙地工作,举上面的例子:

实现类:

class RPCHook(hooks.PecanHook):
    """Attach the rpcapi object to the request so controllers can get to it."""

    def before(self, state):
        state.request.rpcapi = rpcapi.ConductorAPI()


指明request.rpcapi=rpcapi.ConductorAPI(),则之后request.rpcapi被后者代替,在ironic/app.py的setup方法中:

app_hooks = [hooks.ConfigHook(),
                 hooks.DBHook(),
                 hooks.ContextHook(pecan_config.app.acl_public_routes),
                 hooks.RPCHook(),
                 hooks.NoExceptionTracebackHook()]

app = pecan.make_app(
        pecan_config.app.root,
        static_root=pecan_config.app.static_root,
        debug=CONF.pecan_debug,
        force_canonical=getattr(pecan_config.app, 'force_canonical', True),
        hooks=app_hooks,
        wrap_app=middleware.ParsableErrorMiddleware,
    )

有一批钩子设置成功。

根则在cmd目录下的api.py的main方法中:

wsgi = simple_server.make_server(
            host, port,
            app.VersionSelectorApplication(),
            server_class=ThreadedSimpleServer)

在启动服务时候钩子进行设置





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值