Bug 1379419

Summary: Traceback in chargeback report for sub-tenant filter
Product: Red Hat CloudForms Management Engine Reporter: Tsai Li Ming <ltsai>
Component: ReportingAssignee: Šimon Lukašík <slukasik>
Status: CLOSED DUPLICATE QA Contact: Pavol Kotvan <pakotvan>
Severity: medium Docs Contact:
Priority: medium    
Version: 5.6.0CC: gblomqui, greartes, jhardy, obarenbo, slukasik
Target Milestone: GA   
Target Release: cfme-future   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard: tenant:chargeback
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-12-13 22:15:14 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: CFME Core Target Upstream Version:

Description Tsai Li Ming 2016-09-26 16:40:53 UTC
Description of problem:
A traceback happen when a chargeback has a filter for sub-tenant

Version-Release number of selected component (if applicable):
CF 4.1.1

How reproducible:
Always

Steps to Reproduce:
1. Create a sub-tenant
2. Create a user and group. Assign  the role EvmRole-user_self_service and sub-tenant to the group.
3. Provision a vm and observe the owner/group is assigned correctly. In my case, it is:
Owner 	Juan Dela Cruz
Group 	retail_user_self_service 
4. Create a chargeback report with the following chargeback filter:
show cost by: Tenant
Tenant: Retail
Group by: date
5. Wait for some metrics data
6. Generate a report on demand

When the group has no vm, the exception does not occur.


Actual results:
Chargeback report not generated.

Expected results:
Chargeback report should be generated

Additional info:
[----] E, [2016-09-27T00:30:09.202718 #3569:100598c] ERROR -- : [NoMethodError]: undefined method `name' for nil:NilClass  Method:[rescue in _async_generate_table]
[----] E, [2016-09-27T00:30:09.207004 #3569:100598c] ERROR -- : /var/www/miq/vmdb/app/models/chargeback_vm.rb:93:in `get_keys_and_extra_fields'
/var/www/miq/vmdb/app/models/chargeback.rb:45:in `block (2 levels) in build_results_for_report_chargeback'
/opt/rh/cfme-gemset/gems/activerecord-5.0.0/lib/active_record/relation/delegation.rb:38:in `each'
/opt/rh/cfme-gemset/gems/activerecord-5.0.0/lib/active_record/relation/delegation.rb:38:in `each'
/var/www/miq/vmdb/app/models/chargeback.rb:43:in `block in build_results_for_report_chargeback'
/var/www/miq/vmdb/app/models/chargeback.rb:34:in `each'
/var/www/miq/vmdb/app/models/chargeback.rb:34:in `each_cons'
/var/www/miq/vmdb/app/models/chargeback.rb:34:in `build_results_for_report_chargeback'
/var/www/miq/vmdb/app/models/chargeback_vm.rb:85:in `build_results_for_report_ChargebackVm'
/var/www/miq/vmdb/app/models/miq_report/generator.rb:201:in `_generate_table'
/var/www/miq/vmdb/app/models/miq_report/generator.rb:176:in `block in generate_table'
/var/www/miq/vmdb/app/models/user.rb:280:in `with_user'
/var/www/miq/vmdb/app/models/miq_report/generator.rb:176:in `generate_table'
/var/www/miq/vmdb/app/models/miq_report/generator/async.rb:96:in `_async_generate_table'
/var/www/miq/vmdb/app/models/miq_queue.rb:345:in `block in deliver'
/opt/rh/rh-ruby22/root/usr/share/ruby/timeout.rb:89:in `block in timeout'
/opt/rh/rh-ruby22/root/usr/share/ruby/timeout.rb:34:in `block in catch'
/opt/rh/rh-ruby22/root/usr/share/ruby/timeout.rb:34:in `catch'
/opt/rh/rh-ruby22/root/usr/share/ruby/timeout.rb:34:in `catch'
/opt/rh/rh-ruby22/root/usr/share/ruby/timeout.rb:104:in `timeout'
/var/www/miq/vmdb/app/models/miq_queue.rb:341:in `deliver'
/var/www/miq/vmdb/app/models/miq_queue_worker_base/runner.rb:106:in `deliver_queue_message'
/var/www/miq/vmdb/app/models/miq_queue_worker_base/runner.rb:134:in `deliver_message'
/var/www/miq/vmdb/app/models/miq_queue_worker_base/runner.rb:152:in `block in do_work'
/var/www/miq/vmdb/app/models/miq_queue_worker_base/runner.rb:146:in `loop'
/var/www/miq/vmdb/app/models/miq_queue_worker_base/runner.rb:146:in `do_work'
/var/www/miq/vmdb/app/models/miq_worker/runner.rb:334:in `block in do_work_loop'
/var/www/miq/vmdb/app/models/miq_worker/runner.rb:331:in `loop'
/var/www/miq/vmdb/app/models/miq_worker/runner.rb:331:in `do_work_loop'
/var/www/miq/vmdb/app/models/miq_worker/runner.rb:153:in `run'
/var/www/miq/vmdb/app/models/miq_worker/runner.rb:128:in `start'
/var/www/miq/vmdb/app/models/miq_worker/runner.rb:21:in `start_worker'
/var/www/miq/vmdb/app/models/miq_worker.rb:347:in `block in start'
/opt/rh/cfme-gemset/gems/nakayoshi_fork-0.0.3/lib/nakayoshi_fork.rb:24:in `fork'
/opt/rh/cfme-gemset/gems/nakayoshi_fork-0.0.3/lib/nakayoshi_fork.rb:24:in `fork'
/var/www/miq/vmdb/app/models/miq_worker.rb:345:in `start'
/var/www/miq/vmdb/app/models/miq_worker.rb:274:in `start_worker'
/var/www/miq/vmdb/app/models/miq_worker.rb:154:in `block in sync_workers'
/var/www/miq/vmdb/app/models/miq_worker.rb:154:in `times'
/var/www/miq/vmdb/app/models/miq_worker.rb:154:in `sync_workers'
/var/www/miq/vmdb/app/models/miq_server/worker_management/monitor.rb:52:in `block in sync_workers'
/var/www/miq/vmdb/app/models/miq_server/worker_management/monitor.rb:50:in `each'
/var/www/miq/vmdb/app/models/miq_server/worker_management/monitor.rb:50:in `sync_workers'
/var/www/miq/vmdb/app/models/miq_server/worker_management/monitor.rb:22:in `monitor_workers'
/var/www/miq/vmdb/app/models/miq_server.rb:362:in `block in monitor'
/var/www/miq/vmdb/gems/pending/util/extensions/miq-benchmark.rb:11:in `realtime_store'
/var/www/miq/vmdb/gems/pending/util/extensions/miq-benchmark.rb:30:in `realtime_block'
/var/www/miq/vmdb/app/models/miq_server.rb:362:in `monitor'
/var/www/miq/vmdb/app/models/miq_server.rb:382:in `block (2 levels) in monitor_loop'
/var/www/miq/vmdb/gems/pending/util/extensions/miq-benchmark.rb:11:in `realtime_store'
/var/www/miq/vmdb/gems/pending/util/extensions/miq-benchmark.rb:30:in `realtime_block'
/var/www/miq/vmdb/app/models/miq_server.rb:382:in `block in monitor_loop'
/var/www/miq/vmdb/app/models/miq_server.rb:381:in `loop'
/var/www/miq/vmdb/app/models/miq_server.rb:381:in `monitor_loop'
/var/www/miq/vmdb/app/models/miq_server.rb:266:in `start'
/var/www/miq/vmdb/lib/workers/evm_server.rb:65:in `start'
/var/www/miq/vmdb/lib/workers/evm_server.rb:92:in `start'

Comment 2 Šimon Lukašík 2016-12-13 22:12:07 UTC
This has been fixed a while ago.

Upstream commit 102227572e339abcd02bbd53d958d5e8dd019d27
Upstream pr https://github.com/manageiq/manageiq/pull/10812