求助nova_api的问题

Chen_Xiao_Long 2017-10-25 04:23:29
admin用户登录dashboard,管理员功能下面有个虚拟机管理器,上面有个关闭服务的功能。
具体的调用代码如下:
/opt/stack/horizon/openstack_dashboard/dashboards/admin/hypervisors/compute/forms.py
class DisableServiceForm(forms.SelfHandlingForm):
... ...
api.nova.service_disable(request, host, "nova-compute",
reason=reason)
... ...

其中service_disable定义在
/opt/stack/horizon/openstack_dashboard/api/nova.py

@profiler.trace
def service_disable(request, host, binary, reason=None):
if reason:
return novaclient(request).services.disable_log_reason(host,
binary, reason)
else:
return novaclient(request).services.disable(host, binary)

接着找disable_log_reason函数
/usr/lib/python2.7/site-packages/novaclient/v2/services.py:
def disable_log_reason(self, host, binary, reason):
"""Disable the service with reason."""
body = self._update_body(host, binary, reason)
return self._update("/os-services/disable-log-reason", body, "service")

接着找_update函数
/usr/lib/python2.7/site-packages/novaclient/base.py
def _update(self, url, body, response_key=None, **kwargs):
self.run_hooks('modify_body_for_update', body, **kwargs)
resp, body = self.api.client.put(url, body=body)
if body:
if response_key:
return self.resource_class(self, body[response_key], resp=resp)
else:
return self.resource_class(self, body, resp=resp)
else:
return StrWithMeta(body, resp)

到这里我就看不懂了,到底在哪个函数在真正的处理“关闭服务”这个功能?

接触Openstack时间不长,向各位大神请教。
...全文
552 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
SimonYCJ 2017-10-26
  • 打赏
  • 举报
回复
@oShenLongXia nova当中如果你要关闭一个服务,首先要disable这个服务,然后再关闭这个服务,所以你现在看到的方法只是disable这个服务,并非真正关闭服务的方法。

999

社区成员

发帖
与我相关
我的任务
社区描述
OpenStack
社区管理员
  • OpenStack社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧