Bug 1212080 - RHOS 5 provider unable to inventory if no public images
Summary: RHOS 5 provider unable to inventory if no public images
Keywords:
Status: CLOSED DUPLICATE of bug 1222497
Alias: None
Product: Red Hat CloudForms Management Engine
Classification: Red Hat
Component: Providers
Version: 5.4.0
Hardware: Unspecified
OS: Unspecified
high
high
Target Milestone: GA
: 5.4.0
Assignee: Ladislav Smola
QA Contact: Dave Johnson
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2015-04-15 14:05 UTC by Ramesh A
Modified: 2015-07-20 16:36 UTC (History)
5 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2015-07-20 07:59:43 UTC
Category: ---
Cloudforms Team: ---
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)

Description Ramesh A 2015-04-15 14:05:58 UTC
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

Comment 2 Pete Savage 2015-04-17 12:28:05 UTC
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.

Comment 3 Ladislav Smola 2015-07-20 07:59:43 UTC

*** This bug has been marked as a duplicate of bug 1222497 ***


Note You need to log in before you can comment on or make changes to this bug.