Nova API是访问并使用Nova所提供的各种服务的唯一途径,作为客户端和Nova之间的中间层,Nova API扮演了一个桥梁,或者说中间人的角色,Nova API把客户端的请求传达给Nova,待Nova处理完请求后再将处理结果返回给客户端。
基于这样的特殊性,Nova API要求保持高度稳定,他们的名称以及返回的数据结构都不能轻易地作出改变。
Nova发展到现在,我们所需要的API现在已经比较完备,从这个意义上来说,在耗费宝贵的时间去研究API的实现是毫无意义的事情。然而,对于希望能够对Nova有更深理解的我们来说,仔细研究一下少量的API仍然是十分值得的。这样就有机会了解一些概念,并可以趁机详细了解一下Openstack开发特点,就像Nova API本身在客户端和Nova间的桥梁作用一样,学习并理解它也是我们走向Openstack的一个很好的过渡。
此外,作为Openstack两种主要通信方式(RESTFUL API和消息总线)之一,理解API的设计思路和执行过程,也有助于我们对Openstack 有更好的理解。
Nova API的代码位于nova/api目录下,目录结构为:
[root@localhost api]# tree
.
├── auth.py
├── auth.pyc
├── compute_req_id.py
├── compute_req_id.pyc
├── ec2
│ ├── cloud.py
│ ├── ec2utils.py
│ ├── ec2utils.pyc
│ ├── __init__.py
│ └── __init__.pyc
├── __init__.py
├── __init__.pyc
├── manager.py
├── manager.pyc
├── metadata
│ ├── base.py
│ ├── base.pyc
│ ├── handler.py
│ ├── handler.pyc
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── password.py
│ ├── password.pyc
│ ├── vendordata_dynamic.py
│ ├── vendordata_dynamic.pyc
│ ├── vendordata_json.py
│ ├── vendordata_json.pyc
│ ├── vendordata.py
│ └── vendordata.pyc
├── openstack
│ ├── api_version_request.py
│ ├── api_version_request.pyc
│ ├── auth.py
│ ├── common.py
│ ├── common.pyc
│ ├── compute
│ │ ├── admin_actions.py
│ │ ├── admin_actions.pyc
│ │ ├── admin_password.py
│ │ ├── admin_password.pyc
│ │ ├── agents.py
│ │ ├── agents.pyc
│ │ ├── aggregates.py
│ │ ├── aggregates.pyc
│ │ ├── assisted_volume_snapshots.py
│ │ ├── assisted_volume_snapshots.pyc
│ │ ├── attach_interfaces.py
│ │ ├── attach_interfaces.pyc
│ │ ├── availability_zone.py
│ │ ├── availability_zone.pyc
│ │ ├── baremetal_nodes.py
│ │ ├── baremetal_nodes.pyc
│ │ ├── block_device_mapping.py
│ │ ├── block_device_mapping.pyc
│ │ ├── block_device_mapping_v1.py
│ │ ├── block_device_mapping_v1.pyc
│ │ ├── cells.py
│ │ ├── cells.pyc
│ │ ├── certificates.py
│ │ ├── certificates.pyc
│ │ ├── cloudpipe.py
│ │ ├── cloudpipe.pyc
│ │ ├── config_drive.py
│ │ ├── config_drive.pyc
│ │ ├── con