求助nova_api的问题
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时间不长,向各位大神请教。