← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1279719] Re: Fail to createVM with extra_spec using ComputeCapabilitiesFilter

 

** Changed in: nova
       Status: Fix Committed => Fix Released

** Changed in: nova
    Milestone: None => liberty-1

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1279719

Title:
  Fail to createVM with extra_spec using ComputeCapabilitiesFilter

Status in OpenStack Compute (Nova):
  Fix Released

Bug description:
  Fails to createVM with extra_spec using ComputeCapabilitiesFilter, the
  scheduler will always fail to find a suitable host.

  ------------

  Here's the test steps:

  1. Create an aggregate, and set its metadata, like ssd=True.

  2. Add one host to this aggregate.

  3. Create a new flavor, set extra_spcs like ssd=True.

  4. Create a new VM using this flavor.

  5. Creation failed due to no valid hosts.

  -------------
  Let's look at the codes:
  In ComputeCapabilitiesFilter, it'll match hosts' capacities with extra_spec.

  Before in Grizzly, there's a periodic_task named '_report_driver_status()' to report hosts' capacities.
  But in Havana, the task is canceled. So the capacities won't be updated, the value is always 'None'.

  So, if you boot a VM with extra_spec, those hosts will be filtered out.
  And the exception will be raised.

  -----------------

  Some observations with this filter:
  1- only first level properties can be used without 'capabilities' scope
  This will be correct:
      hypervisor_type = QEMU
  This will fail:
      cpu_info:features <in> aes
      cpu_info:vendor = Intel

  From the docs:

  ComputeCapabilitiesFilter

  Matches properties defined in an instance type's extra specs against
  compute capabilities.

  If an extra specs key contains a colon ":", anything before the colon
  is treated as a namespace, and anything after the colon is treated as
  the key to be matched. If a namespace is present and is not
  'capabilities', it is ignored by this filter.

  2- If you use both filters, ComputeCapabilitiesFilter and AggregateInstanceExtraSpecFilter, you can't use non-scoped extra_specs. That decisions were made here:
            https://bugs.launchpad.net/nova/+bug/1037503
            https://bugs.launchpad.net/nova/+bug/1039386
            http://www.gossamer-threads.com/lists/openstack/dev/18355

  3- cpu_info data is loaded as unicode in HostState. ComputeCapabilitiesFilter fails to get attributes from this property.
  This will fail:
      capabilities:cpu_info:features <in> aes

  This last one is addressed here:
       https://bugs.launchpad.net/nova/+bug/1331176

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1279719/+subscriptions


References