Description of problem: EMS refresh fails after adding RHOS-5 provider Version-Release number of selected component (if applicable): 5.4.0.0.19.20150410165622_ad23806 How reproducible: Everytime Steps to Reproduce: 1. Navigate to Clouds ==> Provider ==> Configuration ==> Add a New Cloud Provider 2. Add RHOS 5 provider and wait for some time Actual results: Error is throw in the evm.log file. Refer the evm.log file for more information Expected results: EMS refresh should happen successfully and should not throw any error message Additional info: evm.log: ======== [----] E, [2015-04-15T09:54:19.189278 #8638:5a9eac] ERROR -- : MIQ(EmsRefresh::Refreshers::OpenstackRefresher.refresh) EMS: [rhos 5], id: [4] Refresh failed [----] E, [2015-04-15T09:54:19.189728 #8638:5a9eac] ERROR -- : [NoMethodError]: undefined method `id' for nil:NilClass Method:[rescue in block in refresh] [----] E, [2015-04-15T09:54:19.190016 #8638:5a9eac] ERROR -- : /var/www/miq/lib/openstack/openstack_handle/image_delegate.rb:16:in `images_with_pagination_loop' /var/www/miq/lib/openstack/openstack_handle/handle.rb:317:in `block in accessor_for_accessible_tenants' /var/www/miq/lib/openstack/openstack_handle/handle.rb:303:in `call' /var/www/miq/lib/openstack/openstack_handle/handle.rb:303:in `block in service_for_each_accessible_tenant' /var/www/miq/lib/openstack/openstack_handle/handle.rb:303:in `each' /var/www/miq/lib/openstack/openstack_handle/handle.rb:303:in `service_for_each_accessible_tenant' /var/www/miq/lib/openstack/openstack_handle/handle.rb:313:in `accessor_for_accessible_tenants' /var/www/miq/lib/openstack/openstack_handle/image_delegate.rb:25:in `images_for_accessible_tenants' /var/www/miq/vmdb/app/models/ems_refresh/parsers/openstack_common/images.rb:5:in `get_images' /var/www/miq/vmdb/app/models/ems_refresh/parsers/openstack.rb:51:in `ems_inv_to_hashes' /var/www/miq/vmdb/app/models/ems_refresh/parsers/openstack.rb:14:in `ems_inv_to_hashes' /var/www/miq/vmdb/app/models/ems_refresh/refreshers/openstack_refresher.rb:6:in `parse_inventory' /var/www/miq/vmdb/app/models/ems_refresh/refreshers/ems_refresher_mixin.rb:20:in `block in refresh' /var/www/miq/vmdb/app/models/ems_refresh/refreshers/ems_refresher_mixin.rb:8:in `each' /var/www/miq/vmdb/app/models/ems_refresh/refreshers/ems_refresher_mixin.rb:8:in `refresh' /var/www/miq/vmdb/app/models/ems_refresh/refreshers/base_refresher.rb:8:in `refresh' /var/www/miq/vmdb/app/models/ems_refresh.rb:78:in `block in refresh' /var/www/miq/vmdb/app/models/ems_refresh.rb:77:in `each' /var/www/miq/vmdb/app/models/ems_refresh.rb:77:in `refresh' /var/www/miq/vmdb/app/models/miq_queue.rb:356:in `block in deliver' /opt/rh/ruby200/root/usr/share/ruby/timeout.rb:66:in `timeout' /var/www/miq/vmdb/app/models/miq_queue.rb:352:in `deliver' /var/www/miq/vmdb/lib/workers/queue_worker_base.rb:107:in `deliver_queue_message' /var/www/miq/vmdb/lib/workers/queue_worker_base.rb:135:in `deliver_message' /var/www/miq/vmdb/lib/workers/queue_worker_base.rb:152:in `block in do_work' /var/www/miq/vmdb/lib/workers/queue_worker_base.rb:146:in `loop' /var/www/miq/vmdb/lib/workers/queue_worker_base.rb:146:in `do_work' /var/www/miq/vmdb/lib/workers/worker_base.rb:323:in `block in do_work_loop' /var/www/miq/vmdb/lib/workers/worker_base.rb:320:in `loop' /var/www/miq/vmdb/lib/workers/worker_base.rb:320:in `do_work_loop' /var/www/miq/vmdb/lib/workers/worker_base.rb:141:in `run' /var/www/miq/vmdb/lib/workers/worker_base.rb:122:in `start' /var/www/miq/vmdb/lib/workers/worker_base.rb:23:in `start_worker' /var/www/miq/vmdb/lib/workers/bin/worker.rb:3:in `<top (required)>' /opt/rh/cfme-gemset/bundler/gems/rails-8f014fba21f9/railties/lib/rails/commands/runner.rb:52:in `eval' /opt/rh/cfme-gemset/bundler/gems/rails-8f014fba21f9/railties/lib/rails/commands/runner.rb:52:in `<top (required)>' /opt/rh/cfme-gemset/bundler/gems/rails-8f014fba21f9/railties/lib/rails/commands.rb:64:in `require' /opt/rh/cfme-gemset/bundler/gems/rails-8f014fba21f9/railties/lib/rails/commands.rb:64:in `<top (required)>' script/rails:6:in `require' script/rails:6:in `<main>' [----] E, [2015-04-15T09:54:19.190162 #8638:5a9eac] ERROR -- : MIQ(EmsRefresh::Refreshers::OpenstackRefresher.refresh) EMS: [rhos 5], id: [4] Unable to perform refresh for the following targets: [----] E, [2015-04-15T09:54:19.190472 #8638:5a9eac] ERROR -- : --- EmsOpenstack [rhos 5] id [4] [----] I, [2015-04-15T09:54:19.423162 #8638:5a9eac] INFO -- : MIQ(EmsRefresh::Refreshers::OpenstackRefresher.refresh) Refreshing all targets...Complete
Did some further debugging on this looking at the code below all_images = images.details last_image = all_images.last # There is always default pagination in Glance, so we obtain all # the images in loop, using last image of each page as marker. while (images = self.images.details('marker', last_image.id)).count > 0 If images is an empty array last_image.id will be trying to access id on a nil object. Looking at a tcpdump I saw this ==== HTTP/1.1 200 OK Content-Type: application/json; charset=UTF-8 Content-Length: 14 X-Openstack-Request-Id: req-e481537b-e65c-42a0-b1ac-5ee07ffbf8f8 Date: Tue, 14 Apr 2015 07:24:47 GMT {"images": []} ==== There are images on the system, but none of them were public. As soon as I added a public image, the inventory completed after a refresh.
*** This bug has been marked as a duplicate of bug 1222497 ***