tree 4b70083118b66ae4c846e962301aced6a66faabd
parent 34e98ad7cc8624c2f27d5374360d34917d99466b
author raiesmh08 <mh.raies@nectechnologies.in> 1403497143 +0530
committer raiesmh08 <mh.raies@nectechnologies.in> 1403605040 +0530

Missing node driver interface validation API

This patch implements missing API test for node validation.

There are three categories of driver interfaces:

- `Core` interfaces provide the essential functionality for Ironic
   within OpenStack, and may be depended upon by other services.
   All drivers must implement these interfaces. Presently, the Core
   interfaces are "power" and "deploy".
- `Standard` interfaces provide functionality beyond the needs of
  OpenStack, but which has been standardized across all drivers and
  becomes part of Ironic's API.
  If a driver implements this interface, it must adhere to the standard.
  This is presented to encourage vendors to work together with the
  Ironic project and implement common features in a consistent way,
  thus reducing the burden on consumers of the API.
  Presently, the Standard interfaces are rescue and console.
- The `Vendor` interface allows an exemption to the API contract when
  a vendor wishes to expose unique functionality provided by their
  hardware and is unable to do so within the core or standard interfaces.
  In this case, Ironic will merely relay the message from the API service
  to the appropriate driver.

As all drivers must implement core interfaces, I am checking only
core interfaces for response body validation.

part of blueprint: missing-baremetal-api-test

Change-Id: Ib6e81c875d55fb0c86dbb0de1c9a8337831196cc
