追踪openstack创建虚拟机入口
2018-11-30 本文已影响10人
我是王串串的崔先生
wsgi 暂不分析
直接进入nova restful api 分析
每个API对应的Controller都在nova/api/openstack/compute/目录下的各个API对应的模 块中。这些模块注册就是setup.cfg中所描述的。
例如
servers = nova.api.openstack.compute.servers:Servers
则\nova\api\openstack\compute\servers.py
class Servers(extensions.V21APIExtensionBase):
"""Servers."""
name = "Servers"
alias = ALIAS
version = 1
def get_resources(self):
member_actions = {'action': 'POST'}
collection_actions = {'detail': 'GET',
'count': 'GET',
'import_server': 'POST'}
resources = [
extensions.ResourceExtension(
ALIAS,
ServersController(extension_info=self.extension_info),
member_name='server', collection_actions=collection_actions,
member_actions=member_actions)]
return resources
def get_controller_extensions(self):
return []
get_resources方法用来返回所要 注册的资源,这里注册了一个资源,名字为ALIAS所指定。
ALIAS = 'servers'
所以在API中所对应的URL为“/v2.1/servers”。这个资源所对应的Controller是 ServersController。除了添加新资源,还可以扩展现有资源,则通过
get_controller_extensions方法来注册,这里没扩展servers资源。
ServersController中,公共方法有 index/create/get/update/delete/count
创建流程走的是create