Public bug reported: There appears to be a bug in the code dealing with adding a disabled host to an aggregate that is exported as an availability zone.
I disable the nova-compute service on a host and then tried to add it to an aggregate that is exported as an availabilty zone. This resulted in the following error. File "/usr/lib64/python2.7/site-packages/oslo/utils/excutils.py", line 82, in __exit__ six.reraise(self.type_, self.value, self.tb) File "/usr/lib64/python2.7/site-packages/nova/exception.py", line 71, in wrapped return f(self, context, *args, **kw) File "/usr/lib64/python2.7/site-packages/nova/compute/api.py", line 3673, in add_host_to_aggregate aggregate=aggregate) File "/usr/lib64/python2.7/site-packages/nova/compute/api.py", line 3591, in is_safe_to_update_az host_az = host_azs.pop() IndexError: pop from empty list The code looks like this: if 'availability_zone' in metadata: _hosts = hosts or aggregate.hosts zones, not_zones = availability_zones.get_availability_zones( context, with_hosts=True) for host in _hosts: # NOTE(sbauza): Host can only be in one AZ, so let's take only # the first element host_azs = [az for (az, az_hosts) in zones if host in az_hosts and az != CONF.internal_service_availability_zone] host_az = host_azs.pop() It appears that for a disabled host, host_azs can be empty, resulting in an error when we try to pop() from it. It works fine if the service is enabled on the host, and it works fine if the service is diabled and I try to add the host to an aggregate that is not exported as an availability zone. ** Affects: nova Importance: Undecided Status: New ** Tags: compute -- 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/1419115 Title: IndexError adding host to availability zone Status in OpenStack Compute (Nova): New Bug description: There appears to be a bug in the code dealing with adding a disabled host to an aggregate that is exported as an availability zone. I disable the nova-compute service on a host and then tried to add it to an aggregate that is exported as an availabilty zone. This resulted in the following error. File "/usr/lib64/python2.7/site-packages/oslo/utils/excutils.py", line 82, in __exit__ six.reraise(self.type_, self.value, self.tb) File "/usr/lib64/python2.7/site-packages/nova/exception.py", line 71, in wrapped return f(self, context, *args, **kw) File "/usr/lib64/python2.7/site-packages/nova/compute/api.py", line 3673, in add_host_to_aggregate aggregate=aggregate) File "/usr/lib64/python2.7/site-packages/nova/compute/api.py", line 3591, in is_safe_to_update_az host_az = host_azs.pop() IndexError: pop from empty list The code looks like this: if 'availability_zone' in metadata: _hosts = hosts or aggregate.hosts zones, not_zones = availability_zones.get_availability_zones( context, with_hosts=True) for host in _hosts: # NOTE(sbauza): Host can only be in one AZ, so let's take only # the first element host_azs = [az for (az, az_hosts) in zones if host in az_hosts and az != CONF.internal_service_availability_zone] host_az = host_azs.pop() It appears that for a disabled host, host_azs can be empty, resulting in an error when we try to pop() from it. It works fine if the service is enabled on the host, and it works fine if the service is diabled and I try to add the host to an aggregate that is not exported as an availability zone. To manage notifications about this bug go to: https://bugs.launchpad.net/nova/+bug/1419115/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : yahoo-eng-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp