]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commit
Add an instance-locality filter
authorAdrien Vergé <adrien.verge@numergy.com>
Fri, 5 Dec 2014 15:09:10 +0000 (16:09 +0100)
committerAdrien Vergé <adrien.verge@numergy.com>
Wed, 7 Jan 2015 09:40:07 +0000 (10:40 +0100)
commit0269a26f13ed36b670e55b92f7645fb989cbce86
tree35002f0c3b2ecbec1de667cc96c374a322f6e52f
parentebc819cc5232c5b749ab22bd082d90c279969d3d
Add an instance-locality filter

Having an instance and an attached volume on the same physical host
(i.e. data locality) can be desirable in some configurations, in order
to achieve high-performance disk I/O.

This patch adds an InstanceLocalityFilter filter that allow users to
request creation of volumes 'local' to an existing instance, without
specifying the hypervisor's hostname, and without any knowledge of the
underlying back-ends.

In order to work:
- At least one physical host should run both nova-compute and
  cinder-volume services.
- The Extended Server Attributes extension needs to be active in Nova
  (this is by default), so that the 'OS-EXT-SRV-ATTR:host' property is
  returned when requesting instance info.
- The user making the call needs to have sufficient rights for the
  property to be returned by Nova. This can be achieved either by
  changing Nova's policy.json (the 'extended_server_attributes' option),
  or by setting an account with privileged rights in Cinder conf.

For example:
  Instance 01234567-89ab-cdef is running in a hypervisor on the physical
  host 'my-host'.

  To create a 42 GB volume in a back-end hosted by 'my-host':
    cinder create --hint local_to_instance=01234567-89ab-cdef 42

Note:
  Currently it is not recommended to allow instance migrations for
  hypervisors where this hint will be used. In case of instance
  migration, a previously locally-created volume will not be
  automatically migrated. Also in case of instance migration during the
  volume's scheduling, the result is unpredictable.

DocImpact: New Cinder scheduler filter
Change-Id: Id428fa2132c1afed424443083645787ee3cb0399
cinder/compute/nova.py
cinder/exception.py
cinder/scheduler/filters/instance_locality_filter.py [new file with mode: 0644]
cinder/tests/compute/test_nova.py
cinder/tests/scheduler/fakes.py
cinder/tests/scheduler/test_host_filters.py
setup.cfg