yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #24387
[Bug 1391101] [NEW] Illogical use of "aggregate_instance_extra_specs" prefix in nova AggregateInstanceExtraSpecsFilter
Public bug reported:
How to reproduce this bug
1. Enable AggregateInstanceExtraSpecsFilter in /etc/nova/nova.conf by adding only 'AggregateInstanceExtraSpecsFilter' to scheduler_default_filters variable
2. Example: Specify compute hosts with the same vendor: Intel
# create new host-aggregate
$ nova aggregate-create fast-io nova
# set metadata for new created host-aggregate
$ nova aggregate-set-metadata <aggregate_id> aggregate_instance_extra_specs:cpu_info:vendor=Intel
# check aggregate details
$ nova aggregate-details <aggregate_id>
http://paste.openstack.org/show/131393/
# add a host to an aggregate
$ nova aggregate-add-host <aggregate_id> <host_name>
# list of all flavors
$ nova flavor-list
# set metadata for flavor m1.nano
$ nova flavor-key m1.nano set aggregate_instance_extra_specs:cpu_info:vendor=Intel
# show details of m1.nano flavor
$ nova flavor-show m1.nano
http://paste.openstack.org/show/131394/
# try to launch instance - as a tip: m1.nano flavor id = 42 :)
$ nova boot --flavor <flavor_id> --image <image_id> <instance_name>
For flavor we have metadata: "aggregate_instance_extra_specs:cpu_info:vendor=Intel"
and
For aggregate we have metadata:
"aggregate_instance_extra_specs:cpu_info:vendor=Intel"
and as a result we get.... "No valid host was found. There are not
enough hosts available."
What cases are good for 'AggregateInstanceExtraSpecsFilter' ?
a)
flavor metadata: cpu_info:vendor=Intel
aggregate metadata: aggregate_instance_extra_specs:cpu_info:vendor=Intel
(I think it is about backwards compatibility with extra specs?)
b)
flavor metadata: aggregate_instance_extra_specs:aggregate_instance_extra_specs:cpu_info:vendor=Intel
aggregate metadata: aggregate_instance_extra_specs:cpu_info:vendor=Intel
What is the problem ?
Please take a look at the AggregateInstanceExtraSpecsFilter code
(https://github.com/openstack/nova/blob/master/nova/scheduler/filters/aggregate_instance_extra_specs.py).
The filter is looking for that prefix but in extra specs of flavor, not aggregate!
Filter is matching metadata from flavor with metadata from host aggregate.
In the metadata from flavor prefix (aggregate_instance_extra_specs) is removed (if exist).
But it isn’t removed from aggregate metadata.
So if user doesn’t specify metadata on flavor in the form of: aggregate_instance_extra_specs:aggregate_instance_extra_specs:cpu_info:vendor (because first prefix is stripped from extra spec),
then the filter wouldn’t match any host.
I'd like to disscuss about possible solution of this issue.
Or maybe it is a feature and I didn't understand how AggregateInstanceExtraSpecsFilter should work ?
** Affects: nova
Importance: Undecided
Status: New
--
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/1391101
Title:
Illogical use of "aggregate_instance_extra_specs" prefix in nova
AggregateInstanceExtraSpecsFilter
Status in OpenStack Compute (Nova):
New
Bug description:
How to reproduce this bug
1. Enable AggregateInstanceExtraSpecsFilter in /etc/nova/nova.conf by adding only 'AggregateInstanceExtraSpecsFilter' to scheduler_default_filters variable
2. Example: Specify compute hosts with the same vendor: Intel
# create new host-aggregate
$ nova aggregate-create fast-io nova
# set metadata for new created host-aggregate
$ nova aggregate-set-metadata <aggregate_id> aggregate_instance_extra_specs:cpu_info:vendor=Intel
# check aggregate details
$ nova aggregate-details <aggregate_id>
http://paste.openstack.org/show/131393/
# add a host to an aggregate
$ nova aggregate-add-host <aggregate_id> <host_name>
# list of all flavors
$ nova flavor-list
# set metadata for flavor m1.nano
$ nova flavor-key m1.nano set aggregate_instance_extra_specs:cpu_info:vendor=Intel
# show details of m1.nano flavor
$ nova flavor-show m1.nano
http://paste.openstack.org/show/131394/
# try to launch instance - as a tip: m1.nano flavor id = 42 :)
$ nova boot --flavor <flavor_id> --image <image_id> <instance_name>
For flavor we have metadata: "aggregate_instance_extra_specs:cpu_info:vendor=Intel"
and
For aggregate we have metadata:
"aggregate_instance_extra_specs:cpu_info:vendor=Intel"
and as a result we get.... "No valid host was found. There are not
enough hosts available."
What cases are good for 'AggregateInstanceExtraSpecsFilter' ?
a)
flavor metadata: cpu_info:vendor=Intel
aggregate metadata: aggregate_instance_extra_specs:cpu_info:vendor=Intel
(I think it is about backwards compatibility with extra specs?)
b)
flavor metadata: aggregate_instance_extra_specs:aggregate_instance_extra_specs:cpu_info:vendor=Intel
aggregate metadata: aggregate_instance_extra_specs:cpu_info:vendor=Intel
What is the problem ?
Please take a look at the AggregateInstanceExtraSpecsFilter code
(https://github.com/openstack/nova/blob/master/nova/scheduler/filters/aggregate_instance_extra_specs.py).
The filter is looking for that prefix but in extra specs of flavor, not aggregate!
Filter is matching metadata from flavor with metadata from host aggregate.
In the metadata from flavor prefix (aggregate_instance_extra_specs) is removed (if exist).
But it isn’t removed from aggregate metadata.
So if user doesn’t specify metadata on flavor in the form of: aggregate_instance_extra_specs:aggregate_instance_extra_specs:cpu_info:vendor (because first prefix is stripped from extra spec),
then the filter wouldn’t match any host.
I'd like to disscuss about possible solution of this issue.
Or maybe it is a feature and I didn't understand how AggregateInstanceExtraSpecsFilter should work ?
To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1391101/+subscriptions
Follow ups
References