`<< Back <../../openstack>`__
.. _5-interfaces-and-apis:
5. Interfaces and APIs
======================
.. raw:: html
   

Table of Contents
-----------------
-  `5.1 Introduction <#5.1>`__
-  `5.2 Core OpenStack Services APIs <#5.2>`__
-  `5.3 Consolidated Set of APIs <#5.3>`__
.. _51-introduction:
5.1 Introduction
----------------
This chapter presents a consolidated set of OpenStack Service APIs
corresponding to the ETSI NFV Nf-Vi, Vi-Vnfm and Or-Vi interfaces. The
OpenStack Train version is used as the baseline for these APIs and CLIs
in this Reference Architecture (RA-1) version. Any Cloud Infrastructure
+ VIM reference implementations that **get certified by RC** can be
considered as Anuket RA Conformant.
The Chapter presents the APIs for the core OpenStack services defined in
Chapter 3 and a consolidated view of these and other APIs that are of
interest.
OpenStack is a multi-project framework composed of services evolving
independently. It is not enough to rely only on the OpenStack release to
characterise the capabilities supported by these services. Regarding
OpenStack services APIs, an "API version" is associated to each
OpenStack service. In addition to major API versions, some OpenStack
services (Nova, Glance, Keystone, Cinder...) support microversions. The
microversions allow to introduce new features over time. In this
chapter, the **major version** and **microversion** are specified per
service. The mentioned microversion is the minimal microversion that
supports the features requested for Anuket. For the purpose of
conformance tests, this chapter also identifies the set of the features,
offered by a service, that are mandatory for Anuket compliant
implementation.
.. _52-core-openstack-services-apis:
5.2. Core OpenStack Services APIs
---------------------------------
Please note that OpenStack provides a maximum microversion to be used
with an OpenStack release. In the following sections the "Maximal API
Version" refers to this maximum microversion specified for the OpenStack
Train release. Please note that in Reference Conformance (RC-1) testing,
the System Under Test (SUT) can utilise newer microversions because of
the OpenStack microversion policies. As per multiple OpenStack services
documentation, for example the `Compute
Service `__,
"A cloud that is upgraded to support newer microversions will still
support all older microversions to maintain the backward compatibility
for those users who depend on older microversions."
.. _521-keystone:
5.2.1. Keystone
~~~~~~~~~~~~~~~
===================== =============== ============================
**OpenStack Service** **API Version** **Maximal API Microversion**
===================== =============== ============================
Identity: Keystone    v3              3.14
===================== =============== ============================
======================= =============
**Keystone Features**   **Mandatory**
======================= =============
 access_rules           
application_credentials X
external_idp            
federation              
oauth1                  
project_tags            X
security_compliance     X
trust                   X
======================= =============
Identity API v3:
`https://docs.openstack.org/api-ref/identity/v3/index.html `__
Identity API v3 extensions:
`https://docs.openstack.org/api-ref/identity/v3-ext/ `__
Security compliance and PCI-DSS:
`https://docs.openstack.org/keystone/train/admin/configuration.html#security-compliance-and-pci-dss `__
.. _522-glance:
5.2.2 Glance
~~~~~~~~~~~~
===================== =============== ============================
**OpenStack Service** **API Version** **Maximal API Microversion**
===================== =============== ============================
Image: Glance         v2              2.9
===================== =============== ============================
=================== =============
**Glance Features** **Mandatory**
=================== =============
import_image        
os_glance_reserved  
web-download import 
=================== =============
Image Service Versions:
`https://docs.openstack.org/api-ref/image/versions/index.html#version-history `__
.. _523-cinder:
5.2.3. Cinder
~~~~~~~~~~~~~
===================== =============== ============================
**OpenStack Service** **API Version** **Maximal API Microversion**
===================== =============== ============================
Block Storage: Cinder v3              3.64
===================== =============== ============================
================================ =============
**Cinder Features**              **Mandatory**
================================ =============
backup                           X
clone                            X
consistency_group                
extend_attached_volume           
extend_attached_encrypted_volume 
manage_snapshot                  X
manage_volume                    X
multi_backend                    
snapshot                         X
volume_revert                    X
================================ =============
Block Storage API:
`https://docs.openstack.org/api-ref/block-storage/ `__
REST API Version History:
`https://docs.openstack.org/cinder/latest/contributor/api_microversion_history.html `__
.. _524-swift:
5.2.4. Swift
~~~~~~~~~~~~
===================== ===============
**OpenStack Service** **API Version**
===================== ===============
Object Storage: Swift v1
===================== ===============
================== =============
**Swift Features** **Mandatory**
================== =============
account_quotas     X
bulk_delete        X
bulk_upload        X
container_quotas   X
container_sync     
crossdomain        X
discoverability    X
form_post          X
ratelimit          X
s3api              
slo                X
staticweb          X
symlink            X
temp_url           X
tempauth           X
versioned_writes   X
================== =============
Object Storage API:
`https://docs.openstack.org/api-ref/object-store/index.html `__
Discoverability:
`https://docs.openstack.org/swift/latest/api/discoverability.html `__
.. _525-neutron:
5.2.5. Neutron
~~~~~~~~~~~~~~
===================== ===============
**OpenStack Service** **API Version**
===================== ===============
Networking: Neutron   v2.0
===================== ===============
============================== =============
**Neutron Extensions**         **Mandatory**
============================== =============
address-scope                  X
agent                          X
allowed-address-pairs          X
auto-allocated-topology        X
availability_zone              X
availability_zone_filter       X
binding                        X
binding-extended               X
default-subnetpools            X
dhcp_agent_scheduler           
dns-domain-ports               
dns-integration                
dvr                            
empty-string-filtering         X
ext-gw-mode                    X
external-net                   X
extra_dhcp_opt                 X
extraroute                     X
extraroute-atomic              
flavors                        X
filter-validation              
fip-port-details               
floating-ip-port-forwarding    
floatingip-pools               
ip-substring-filtering         X
l3_agent_scheduler             
l3-flavors                     
l3-ha                          
logging                        
metering                       
multi-provider                 X
net-mtu                        X
net-mtu-writable               X
network_availability_zone      X
network-ip-availability        X
network-segment-range          
pagination                     X
port-mac-address-regenerate    
port-resource-request          
port-security                  X
port-security-groups-filtering X
project-id                     X
provider                       X
rbac-policies                  X
router                         X
router_availability_zone       X
qos                            X
qos-bw-limit-direction         X
qos-bw-minimum-ingress         X
qos-default                    X
qos-fip                        X
qos-gateway-ip                 X
qos-rule-type-details          X
qos-rules-alias                X
quotas                         X
quota_details                  X
revision-if-match              X
rbac-address-scope             
rbac-security-groups           
rbac-subnetpool                
router-interface-fip           
security-group                 X
service-type                   X
sorting                        X
standard-attr-description      X
standard-attr-revisions        X
standard-attr-tag              X
standard-attr-timestamp        X
subnet_allocation              X
subnet-service-types           X
subnetpool-prefix-ops          
tag-ext                        
tag-ports-during-bulk-creation 
trunk                          X
trunk-details                  X
uplink-status-propagation      
============================== =============
======================== =============
**Neutron Type Drivers** **Mandatory**
======================== =============
geneve                   
gre                      
vlan                     X
vxlan                    
======================== =============
Networking Service APIs:
`https://docs.openstack.org/api-ref/network/ `__
The exhaustive list of extensions is available at
`https://docs.openstack.org/api-ref/network/v2/ `__
.. _526-nova:
5.2.6. Nova
~~~~~~~~~~~
===================== =============== ============================
**OpenStack Service** **API Version** **Maximal API Microversion**
===================== =============== ============================
Compute: Nova         v2.1            2.88
===================== =============== ============================
======================= =============
**Nova Features**       **Mandatory**
======================= =============
attach_encrypted_volume 
cert                    
change_password         
cold_migration          X
console_output          X
disk_config             X
instance_password       X
interface_attach        X
live_migration          X
metadata_service        X
pause                   X
personality             
rdp_console             
rescue                  X
resize                  X
serial_console          
shelve                  X
shelve_migrate          
snapshot                X
stable_rescue           
spice_console           
suspend                 X
swap_volume             
vnc_console             
volume_multiattach      
xenapi_apis             
======================= =============
Compute API:
`https://docs.openstack.org/api-ref/compute/ `__
REST API Version History:
`https://docs.openstack.org/nova/latest/reference/api-microversion-history.html `__
.. _527-placement:
5.2.7. Placement
~~~~~~~~~~~~~~~~
===================== =============== ============================
**OpenStack Service** **API Version** **Maximal API Microversion**
===================== =============== ============================
Placement             v1              1.36
===================== =============== ============================
Placement API:
`https://docs.openstack.org/api-ref/placement/ `__
REST API Version History:
`https://docs.openstack.org/placement/latest/placement-api-microversion-history.html `__
.. _528-heat:
5.2.8. Heat
~~~~~~~~~~~
===================== =============== ============================
**OpenStack Service** **API Version** **Maximal Template Version**
===================== =============== ============================
Orchestration: Heat   v1              2021-04-16
===================== =============== ============================
Orchestration Service API:
`https://docs.openstack.org/api-ref/orchestration/ `__
Template version history:
`https://docs.openstack.org/heat/latest/template_guide/hot_spec.html `__
Heat Orchestration Template (HOT) specification:
`https://docs.openstack.org/heat/latest/template_guide/hot_spec.html#rocky `__
.. _53-consolidated-set-of-apis:
5.3. Consolidated Set of APIs
-----------------------------
.. _531-openstack-interfaces:
5.3.1. OpenStack Interfaces
~~~~~~~~~~~~~~~~~~~~~~~~~~~
This section illustrates some of the Interfaces provided by OpenStack;
the exhaustive list of APIs is available at
`https://docs.openstack.org/api-ref/ `__.
OpenStack REST APIs are simple to interact with using either of two
options. Clients can either call the APIs directly using the HTTP or
REST library, or they can use one of the many programming language
specific cloud libraries.
**APIs**
+----------------+----------------+----------------+----------------+
| **OpenStack    | Link for API   | **API          | **Maximal API  |
| Service**      | list           | Version**      | Microversion** |
+================+================+================+================+
| Identity:      | `ht            | v3             | 3.13           |
| Keystone       | tps://docs.ope |                |                |
|                | nstack.org/api |                |                |
|                | -ref/identity/ |                |                |
|                | v3/ `__ |                |                |
+----------------+----------------+----------------+----------------+
| Compute: Nova  | `https://      | v2.1           | 2.79           |
|                | docs.openstack |                |                |
|                | .org/api-ref/c |                |                |
|                | ompute/ `__ |                |                |
+----------------+----------------+----------------+----------------+
| Networking:    | `              | v2.0           |                |
| Neutron        | https://docs.o |                |                |
|                | penstack.org/a |                |                |
|                | pi-ref/network |                |                |
|                | /v2/ `__ |                |                |
+----------------+----------------+----------------+----------------+
| Image: Glance  | `https://do    | v2             | 2.9            |
|                | cs.openstack.o |                |                |
|                | rg/api-ref/ima |                |                |
|                | ge/v2/ `__ |                |                |
+----------------+----------------+----------------+----------------+
| Block Storage: | `https://docs  | v3             | 3.59           |
| Cinder         | .openstack.org |                |                |
|                | /api-ref/block |                |                |
|                | -storage/v3/ < |                |                |
|                | https://docs.o |                |                |
|                | penstack.org/a |                |                |
|                | pi-ref/block-s |                |                |
|                | torage/v3/>`__ |                |                |
+----------------+----------------+----------------+----------------+
| Object         | `http          | v1             |                |
| Storage: Swift | s://docs.opens |                |                |
|                | tack.org/api-r |                |                |
|                | ef/object-stor |                |                |
|                | e/ `__ |                |                |
+----------------+----------------+----------------+----------------+
| Placement      | `https://docs  | v1             | 1.36           |
|                | .openstack.org |                |                |
|                | /api-ref/place |                |                |
|                | ment/ `__ |                |                |
+----------------+----------------+----------------+----------------+
| Orchestration: | `https://docs  | v1             |                |
| Heat           | .openstack.org |                |                |
|                | /api-ref/orche |                |                |
|                | stration/v1/ < |                |                |
|                | https://docs.o |                |                |
|                | penstack.org/a |                |                |
|                | pi-ref/orchest |                |                |
|                | ration/v1/>`__ |                |                |
+----------------+----------------+----------------+----------------+
.. raw:: html
   
.. _532-kubernetes-interfaces:
5.3.2. Kubernetes Interfaces
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The Kubernetes APIs are available at
`https://kubernetes.io/docs/concepts/overview/kubernetes-api/ `__.
.. _533-kvm-interfaces:
5.3.3. KVM Interfaces
~~~~~~~~~~~~~~~~~~~~~
The KVM APIs are documented in Section 4 of the document
`https://www.kernel.org/doc/Documentation/virtual/kvm/api.txt `__.
.. _5331-libvirt-interfaces:
5.3.3.1. Libvirt Interfaces
^^^^^^^^^^^^^^^^^^^^^^^^^^^
The Libvirt APIs are documented in
`https://libvirt.org/html/index.html `__.
.. _534-barbican:
5.3.4. Barbican
~~~~~~~~~~~~~~~
===================== ===============
**OpenStack Service** **API Version**
===================== ===============
Key Manager: Barbican v1
===================== ===============
Barbican API Documentation:
`https://docs.openstack.org/barbican/latest/api/ `__