Nova API Support - Microversions and Extensions

Registered by Travis Tripp

This blueprint has been superseded. See the newer blueprint "Integrate with Nova Versioned Notifications" for updated plans.

This BP likely should be combined with: https://blueprints.launchpad.net/searchlight/+spec/nova-versioned-notifications

Required reading: https://dague.net/2015/06/05/the-nova-api-in-kilo-and-beyond-2/

http://specs.openstack.org/openstack/nova-specs/specs/kilo/implemented/api-microversions.html

We should index almost everything (stripping links is fine). If Nova has data that we can rely on, then it would be bad to force them to make a call to nova api to get that data. The caveat being that we have to be able to have a list of fields that are excluded unless admin is searching.

We need to have a good methodology for handling microversions in nova. This may come down to just allowing a config option for the nova plugin to specify the desired version to index or most likely will require a bit more complexity to handle data mapping (not relying on dynamic mapping) and config based specification of admin only fields.

It is also unclear if we should do anything with extensions. Extensions are deprecated in Nova, but we need to understand what that really means. If we have to support extensions, we might need to support having separate extension files for all these extension fields. The extensions enabled would all be invoked during serialize function and also would be called to add to the mapping. This way deployers could add their extension without modifying source just like they do for nova. BP needed.

    {
      "hostId": "f57bcb1e1ba43de39322dc473d69e180f9b5a554aa0892c7a34a11e3",
      "OS-EXT-STS:task_state": null,
      "OS-EXT-STS:vm_state": "active",
      "OS-EXT-SRV-ATTR:instance_name": "instance-00000001",
      "OS-SRV-USG:launched_at": "2015-08-12T23:49:55.000000",
      "OS-EXT-SRV-ATTR:hypervisor_hostname": "ubuntu",
      "security_groups": [
        {
          "name": "foo sg"
        },
        {
          "name": "a sg"
        },
        {
          "name": "lolz sg"
        }
      ],
      "OS-DCF:diskConfig": "AUTO",
      "os-extended-volumes:volumes_attached": [],
      "accessIPv4": "",
      "accessIPv6": "",
      "progress": 0,
      "config_drive": "True",
    }

We also need to understand how the Nova Versioned Object notifications affect this: https://review.openstack.org/#/c/224755/11/specs/mitaka/approved/versioned-notification-api.rst

Blueprint information

Status:
Complete
Approver:
None
Priority:
High
Drafter:
Travis Tripp
Direction:
Needs approval
Assignee:
None
Definition:
Superseded
Series goal:
None
Implementation:
Unknown
Milestone target:
None
Completed by
Travis Tripp

Related branches

Sprints

Whiteboard

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.