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
│   │   ├── console_auth_tokens.py
│   │   ├── console_auth_tokens.pyc
│   │   ├── console_output.py
│   │   ├── console_output.pyc
│   │   ├── consoles.py
│   │   ├── consoles.pyc
│   │   ├── create_backup.py
│   │   ├── create_backup.pyc
│   │   ├── deferred_delete.py
│   │   ├── deferred_delete.pyc
│   │   ├── evacuate.py
│   │   ├── evacuate.pyc
│   │   ├── extended_availability_zone.py
│   │   ├── extended_availability_zone.pyc
│   │   ├── extended_server_attributes.py
│   │   ├── extended_server_attributes.pyc
│   │   ├── extended_status.py
│   │   ├── extended_status.pyc
│   │   ├── extended_volumes.py
│   │   ├── extended_volumes.pyc
│   │   ├── extension_info.py
│   │   ├── extension_info.pyc
│   │   ├── fixed_ips.py
│   │   ├── fixed_ips.pyc
│   │   ├── flavor_access.py
│   │   ├── flavor_access.pyc
│   │   ├── flavor_manage.py
│   │   ├── flavor_manage.pyc
│   │   ├── flavor_rxtx.py
│   │   ├── flavor_rxtx.pyc
│   │   ├── flavors_extraspecs.py
│   │   ├── flavors_extraspecs.pyc
│   │   ├── flavors.py
│   │   ├── flavors.pyc
│   │   ├── floating_ip_dns.py
│   │   ├── floating_ip_dns.pyc
│   │   ├── floating_ip_pools.py
│   │   ├── floating_ip_pools.pyc
│   │   ├── floating_ips_bulk.py
│   │   ├── floating_ips_bulk.pyc
│   │   ├── floating_ips.py
│   │   ├── floating_ips.pyc
│   │   ├── fping.py
│   │   ├── fping.pyc
│   │   ├── helpers.py
│   │   ├── helpers.pyc
│   │   ├── hide_server_addresses.py
│   │   ├── hide_server_addresses.pyc
│   │   ├── hosts.py
│   │   ├── hosts.pyc
│   │   ├── hypervisors.py
│   │   ├── hypervisors.pyc
│   │   ├── image_metadata.py
│   │   ├── image_metadata.pyc
│   │   ├── image_size.py
│   │   ├── image_size.pyc
│   │   ├── images.py
│   │   ├── images.pyc
│   │   ├── __init__.py
│   │   ├── __init__.pyc
│   │   ├── instance_actions.py
│   │   ├── instance_actions.pyc
│   │   ├── instance_usage_audit_log.py
│   │   ├── instance_usage_audit_log.pyc
│   │   ├── ips.py
│   │   ├── ips.pyc
│   │   ├── keypairs.py
│   │   ├── keypairs.pyc
│   │   ├── limits.py
│   │   ├── limits.pyc
│   │   ├── lock_server.py
│   │   ├── lock_server.pyc
│   │   ├── migrate_server.py
│   │   ├── migrate_server.pyc
│   │   ├── migrations.py
│   │   ├── migrations.pyc
│   │   ├── multinic.py
│   │   ├── multinic.pyc
│   │   ├── multiple_create.py
│   │   ├── multiple_create.pyc
│   │   ├── networks_associate.py
│   │   ├── networks_associate.pyc
│   │   ├── networks.py
│   │   ├── networks.pyc
│   │   ├── pause_server.py
│   │   ├── pause_server.pyc
│   │   ├── pci.py
│   │   ├── quota_classes.py
│   │   ├── quota_classes.pyc
│   │   ├── quota_sets.py
│   │   ├── quota_sets.pyc
│   │   ├── remote_consoles.py
│   │   ├── remote_consoles.pyc
│   │   ├── rescue.py
│   │   ├── rescue.pyc
│   │   ├── rest_api_version_history.rst
│   │   ├── scheduler_hints.py
│   │   ├── scheduler_hints.pyc
│   │   ├── schemas
│   │   │   ├── 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
│   │   │   ├── block_device_mapping.py
│   │   │   ├── block_device_mapping.pyc
│   │   │   ├── block_device_mapping_v1.py
│   │   │   ├── block_device_mapping_v1.pyc
│   │   │   ├── cells.py
│   │   │   ├── cells.pyc
│   │   │   ├── cloudpipe.py
│   │   │   ├── cloudpipe.pyc
│   │   │   ├── config_drive.py
│   │   │   ├── config_drive.pyc
│   │   │   ├── console_output.py
│   │   │   ├── console_output.pyc
│   │   │   ├── create_backup.py
│   │   │   ├── create_backup.pyc
│   │   │   ├── evacuate.py
│   │   │   ├── evacuate.pyc
│   │   │   ├── fixed_ips.py
│   │   │   ├── fixed_ips.pyc
│   │   │   ├── flavor_access.py
│   │   │   ├── flavor_access.pyc
│   │   │   ├── flavor_manage.py
│   │   │   ├── flavor_manage.pyc
│   │   │   ├── flavors_extraspecs.py
│   │   │   ├── flavors_extraspecs.pyc
│   │   │   ├── floating_ip_dns.py
│   │   │   ├── floating_ip_dns.pyc
│   │   │   ├── floating_ips_bulk.py
│   │   │   ├── floating_ips_bulk.pyc
│   │   │   ├── floating_ips.py
│   │   │   ├── floating_ips.pyc
│   │   │   ├── hosts.py
│   │   │   ├── hosts.pyc
│   │   │   ├── image_metadata.py
│   │   │   ├── image_metadata.pyc
│   │   │   ├── __init__.py
│   │   │   ├── __init__.pyc
│   │   │   ├── keypairs.py
│   │   │   ├── keypairs.pyc
│   │   │   ├── migrate_server.py
│   │   │   ├── migrate_server.pyc
│   │   │   ├── multinic.py
│   │   │   ├── multinic.pyc
│   │   │   ├── multiple_create.py
│   │   │   ├── multiple_create.pyc
│   │   │   ├── networks_associate.py
│   │   │   ├── networks_associate.pyc
│   │   │   ├── networks.py
│   │   │   ├── networks.pyc
│   │   │   ├── quota_classes.py
│   │   │   ├── quota_classes.pyc
│   │   │   ├── quota_sets.py
│   │   │   ├── quota_sets.pyc
│   │   │   ├── remote_consoles.py
│   │   │   ├── remote_consoles.pyc
│   │   │   ├── rescue.py
│   │   │   ├── rescue.pyc
│   │   │   ├── reset_server_state.py
│   │   │   ├── reset_server_state.pyc
│   │   │   ├── scheduler_hints.py
│   │   │   ├── scheduler_hints.pyc
│   │   │   ├── security_groups.py
│   │   │   ├── security_groups.pyc
│   │   │   ├── server_external_events.py
│   │   │   ├── server_external_events.pyc
│   │   │   ├── server_groups.py
│   │   │   ├── server_groups.pyc
│   │   │   ├── server_metadata.py
│   │   │   ├── server_metadata.pyc
│   │   │   ├── server_migrations.py
│   │   │   ├── server_migrations.pyc
│   │   │   ├── servers.py
│   │   │   ├── servers.pyc
│   │   │   ├── server_tags.py
│   │   │   ├── server_tags.pyc
│   │   │   ├── services.py
│   │   │   ├── services.pyc
│   │   │   ├── tenant_networks.py
│   │   │   ├── tenant_networks.pyc
│   │   │   ├── user_data.py
│   │   │   ├── user_data.pyc
│   │   │   ├── volumes.py
│   │   │   └── volumes.pyc
│   │   ├── security_group_default_rules.py
│   │   ├── security_group_default_rules.pyc
│   │   ├── security_groups.py
│   │   ├── security_groups.pyc
│   │   ├── server_diagnostics.py
│   │   ├── server_diagnostics.pyc
│   │   ├── server_external_events.py
│   │   ├── server_external_events.pyc
│   │   ├── server_groups.py
│   │   ├── server_groups.pyc
│   │   ├── server_metadata.py
│   │   ├── server_metadata.pyc
│   │   ├── server_migrations.py
│   │   ├── server_migrations.pyc
│   │   ├── server_password.py
│   │   ├── server_password.pyc
│   │   ├── servers.py
│   │   ├── servers.pyc
│   │   ├── server_tags.py
│   │   ├── server_tags.pyc
│   │   ├── server_usage.py
│   │   ├── server_usage.pyc
│   │   ├── services.py
│   │   ├── services.pyc
│   │   ├── shelve.py
│   │   ├── shelve.pyc
│   │   ├── simple_tenant_usage.py
│   │   ├── simple_tenant_usage.pyc
│   │   ├── suspend_server.py
│   │   ├── suspend_server.pyc
│   │   ├── tenant_networks.py
│   │   ├── tenant_networks.pyc
│   │   ├── used_limits.py
│   │   ├── used_limits.pyc
│   │   ├── user_data.py
│   │   ├── user_data.pyc
│   │   ├── versions.py
│   │   ├── versions.pyc
│   │   ├── versionsV21.py
│   │   ├── versionsV21.pyc
│   │   ├── views
│   │   │   ├── addresses.py
│   │   │   ├── addresses.pyc
│   │   │   ├── flavors.py
│   │   │   ├── flavors.pyc
│   │   │   ├── hypervisors.py
│   │   │   ├── hypervisors.pyc
│   │   │   ├── images.py
│   │   │   ├── images.pyc
│   │   │   ├── __init__.py
│   │   │   ├── __init__.pyc
│   │   │   ├── keypairs.py
│   │   │   ├── keypairs.pyc
│   │   │   ├── limits.py
│   │   │   ├── limits.pyc
│   │   │   ├── servers.py
│   │   │   ├── servers.pyc
│   │   │   ├── server_tags.py
│   │   │   ├── server_tags.pyc
│   │   │   ├── usages.py
│   │   │   ├── usages.pyc
│   │   │   ├── versions.py
│   │   │   └── versions.pyc
│   │   ├── virtual_interfaces.py
│   │   ├── virtual_interfaces.pyc
│   │   ├── volumes.py
│   │   └── volumes.pyc
│   ├── extensions.py
│   ├── extensions.pyc
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── placement
│   │   ├── auth.py
│   │   ├── auth.pyc
│   │   ├── deploy.py
│   │   ├── deploy.pyc
│   │   ├── handler.py
│   │   ├── handler.pyc
│   │   ├── handlers
│   │   │   ├── aggregate.py
│   │   │   ├── aggregate.pyc
│   │   │   ├── allocation.py
│   │   │   ├── allocation.pyc
│   │   │   ├── __init__.py
│   │   │   ├── __init__.pyc
│   │   │   ├── inventory.py
│   │   │   ├── inventory.pyc
│   │   │   ├── resource_class.py
│   │   │   ├── resource_class.pyc
│   │   │   ├── resource_provider.py
│   │   │   ├── resource_provider.pyc
│   │   │   ├── root.py
│   │   │   ├── root.pyc
│   │   │   ├── usage.py
│   │   │   └── usage.pyc
│   │   ├── __init__.py
│   │   ├── __init__.pyc
│   │   ├── microversion.py
│   │   ├── microversion.pyc
│   │   ├── policy.py
│   │   ├── policy.pyc
│   │   ├── requestlog.py
│   │   ├── requestlog.pyc
│   │   ├── rest_api_version_history.rst
│   │   ├── util.py
│   │   ├── util.pyc
│   │   ├── wsgi.py
│   │   └── wsgi.pyc
│   ├── urlmap.py
│   ├── urlmap.pyc
│   ├── versioned_method.py
│   ├── versioned_method.pyc
│   ├── wsgi.py
│   └── wsgi.pyc
└── validation├── __init__.py├── __init__.pyc├── parameter_types.py├── parameter_types.pyc├── validators.py└── validators.pyc
9 directories, 369 files
目录ec2、openstack与metadata分别对应了Amazon EC2 API、Openstack API与Metadata API三种API服务,而在juno版本中共存v2、v3、v2.1三个版本的Openstack API源码都位于nova/api/openstack/compute目录下。
对于Openstack API来说,每一个API都对应一种资源,Openstack共定义了两种类型的资源:核心资源与扩展资源。核心资源可简单认为是云平台中最为基础的资源,比如images、servers等。而扩展资源根据是否为核心资源的扩展又分两种情况,比如:keypairs是对server的扩展,cells则是独立资源。

Nova API简单介绍相关推荐

  1. jira以及jira API简单介绍

    最近需要预言:是否可以通过jira API实现用例管理,对jira的应用.API.扩展等进行了一定的了解. Jira介绍: jira是目前比较流行的基于Java架构的管理系统(Atlassian公司支 ...

  2. OpenVR API简单介绍

    最近可能是元宇宙这概念火了,有挺多小伙伴私信说对VR开发产生浓浓的兴趣,想知道关于OpenVR的API介绍等等. 大家可以看看官方的OpenVR API 链接:官方OpenVR API 如果想在开发V ...

  3. Java自动化获取页面主题_基于Selenium2+Java的UI自动化(4) - WebDriver API简单介绍

    1. 启动浏览器 前边有详细介绍启动三种浏览器的方式(IE.Chrome.Firefox): private WebDriver driver = null; private String chrom ...

  4. REST API 概念的简单介绍

    REST API 概念的简单介绍 最近发现很多人不了解REST是什么,我综合了下网上的文章,摘录了一下. 首先要明确一点:REST(Representational State Transfer,表述 ...

  5. 简单介绍如何制作.chm文件(以Java API文档为例)

    简单介绍如何制作.chm文件--以将官方的Java API文档制作成.chm文件为例 1. 下载Java API 文档 2. 如何制作成.chm文件 (1)使用CHMWriter制作 (2)使用别的软 ...

  6. FatFs 的用户层API接口应用简单介绍(基于STM32F1)

    ℹ️ 本篇文章没有说明实现方法,仅是简单介绍了 FatFs 的部分函数和结构体定义. FatFs API 应用程序接口 ▶️ 根据 FatFS 的教程手册来看,将程序接口分为了四个部分. 文件访问 目 ...

  7. nova api 分析

    0. 总览 nova的服务在功能上主要分为应用层和逻辑层两类,nova-api就是应用层的服务,而nova-scheduler.nova-conductor等则是逻辑层服务.本文主要通过注释的方式讲述 ...

  8. OpenStack之Nova分析——Nova API服务

    Nova是OpenStack中最核心的组件,可以说OpenStack中的其它组件都是为Nova服务的.所以Nova也是OpenStack最复杂的组件.Nova服务由多个子服务组成,这些子服务通过RPC ...

  9. [nova]nova api执行过程分析

    新手,水平较低,很多地方还不是很理解,错漏在所难免,后续会慢慢完善的. 我总结了一下,想要通过读懂源代码来学习一个新技术,大概可以分为三个步骤走: 1.理解相关的类库的功能及使用. 2.理清代码中对象 ...

最新文章

  1. python 字符串数组互转
  2. Eclipse启动报错Java was started but returned exit code=13
  3. yield %%% generator
  4. 梅捷SY-A780G+冷启动黑屏,需Reset才能进入系统
  5. Facebook想用机器人取代App
  6. 数学建模、统计学之方差分析
  7. java代码中的缓存类怎么找,JAVA缓存的实现 - dreamcloudz的个人空间 - OSCHINA - 中文开源技术交流社区...
  8. 软件外包相关职业规划
  9. Java常用的设计模式是什么?
  10. 自然语言处理核心期刊_计算机核心期刊
  11. 多方向如何选择数据分析之营业额不一定可以决定方向
  12. QT WA_TranslucentBackground CEF界面无法展现 透明无效
  13. 【技巧分享】股票代码规则
  14. 大量discuz电脑模板企业模板手机模板免费下载,百度云下载地址
  15. Python 3 迁移怨声载道
  16. iMeta|中科院地球环境研究所王云强组解析了草地土壤微生物生活史策略
  17. 限制input框只能输入数字,加减号也不可以输入
  18. 在SpringBoot项目中使用Ureport2报表工具
  19. 碧砚适合佳能328 4452 ICD520 4472 4450 硒鼓4700一体机墨盒4770
  20. 【视频】运行第一个容器 - 每天5分钟玩转容器技术(5)

热门文章

  1. 从Git安装、配置远程仓库到免输入密码推送一次搞掂
  2. 从零开始学python大数据与量化交易下载_GitHub - mignonwong/Python-100-Days-1: Python - 100天从新手到大师...
  3. 怎么取消此电脑中的百度网盘图标?
  4. vivo X5 Pro拆机图解
  5. 王者荣耀为什么会保留铭文系统和皮肤属性加成?
  6. PHY芯片lan8720调试笔记
  7. HTTP请求行、请求头、请求体解
  8. vite打包配置(gzip、文件分类等)
  9. 美媒:可可产量减少巧克力或在六年后成奢侈品
  10. 蚂蚁风险大脑亮相ATEC城市峰会:为数字经济时代做好“安全守护”