Nova and Ironic-virt-driver to support valid json for capabilities

Registered by Nisha Agarwal

A baremetal may have hardware capabilities which can have multiple values,
example: boot modes. A baremetal may be `UEFI` and `BIOS` capable both.
The ideal capability to be defined at ironic node's node.properties
would be node.properties['capabilities'] = {'boot_mode' : ['uefi', 'bios']}.

There are three parts of the issue here:
* The ironic virt driver assumes the capabilities value is a string and
  manipulates and converts it to a dictionary. It doesn't understand
  any other json value.

* The field into which the ironic virt driver stores the above manipulated
  dictionary doesn't accept json list as valid value. The data type of the
  variable `ComputeNode.fields.stats` is `DictOfNullableStringsField`.

* The ComputeCapabilities filter in the scheduler should be able to
  understand the json list as returned by ironic virt driver.

Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
Nisha Agarwal
Direction:
Needs approval
Assignee:
Nisha Agarwal
Definition:
New
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.