manageiq: Openstack - Flavor could not be found
Problem: Refresh Provider does not work after the flavor in Openstack is removed/changed.
The appliance release affected: http://releases.manageiq.org/manageiq-openstack-euwe-1-rc1.qc2
Description: If you change the flavour in Openstack (i.e. accessibility,etc), the ID of the flavor changes. ManageIQ is still expecting to find the old non-existant flavor. Here is the error code from ems.log:
[----] E, [2016-11-04T15:57:49.939212 #7736:73913c] ERROR -- : <Fog> excon.error #<Excon::Error::NotFound: Expected([200, 203]) <=> Actual(404 Not Found)
excon.error.response
:body => "{\"itemNotFound\": {\"message\": \"Flavor 7d8afb11-5815-4ee0-9df7-4d63a9d8dc88 could not be found.\", \"code\": 404}}"
:cookies => [
]
:headers => {
"Content-Length" => "109"
"Content-Type" => "application/json; charset=UTF-8"
"Date" => "Fri, 04 Nov 2016 14:57:49 GMT"
"Vary" => "X-OpenStack-Nova-API-Version"
"X-Compute-Request-Id" => "req-480dbd51-482d-48ef-96a7-a167158caddc"
"X-Openstack-Nova-Api-Version" => "2.1"
}
:host => "10.30.1.9"
:local_address => "10.32.5.3"
:local_port => 46902
:path => "/v2.1/48f04d6b0ee14115b8c457bcd3da47e4/flavors/7d8afb11-5815-4ee0-9df7-4d63a9d8dc88/os-flavor-access.json"
:port => 8774
:reason_phrase => "Not Found"
:remote_ip => "10.30.1.9"
:status => 404
:status_line => "HTTP/1.1 404 Not Found\r\n"
>
[----] E, [2016-11-04T15:57:49.939454 #7736:73913c] ERROR -- : MIQ(ManageIQ::Providers::Openstack::CloudManager::Refresher#refresh) EMS: [My Cloud], id: [3] Refresh failed
[----] E, [2016-11-04T15:57:49.939594 #7736:73913c] ERROR -- : [Fog::Compute::OpenStack::NotFound]: Expected([200, 203]) <=> Actual(404 Not Found)
excon.error.response
:body => "{\"itemNotFound\": {\"message\": \"Flavor 7d8afb11-5815-4ee0-9df7-4d63a9d8dc88 could not be found.\", \"code\": 404}}"
:cookies => [
]
:headers => {
"Content-Length" => "109"
"Content-Type" => "application/json; charset=UTF-8"
"Date" => "Fri, 04 Nov 2016 14:57:49 GMT"
"Vary" => "X-OpenStack-Nova-API-Version"
"X-Compute-Request-Id" => "req-480dbd51-482d-48ef-96a7-a167158caddc"
"X-Openstack-Nova-Api-Version" => "2.1"
}
:host => "10.30.1.9"
:local_address => "10.32.5.3"
:local_port => 46902
:path => "/v2.1/48f04d6b0ee14115b8c457bcd3da47e4/flavors/7d8afb11-5815-4ee0-9df7-4d63a9d8dc88/os-flavor-access.json"
:port => 8774
:reason_phrase => "Not Found"
:remote_ip => "10.30.1.9"
:status => 404
:status_line => "HTTP/1.1 404 Not Found\r\n"
Method:[rescue in block in refresh]
[----] E, [2016-11-04T15:57:49.939710 #7736:73913c] ERROR -- : /opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/excon-0.54.0/lib/excon/middlewares/expects.rb:7:in `response_call'
/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/excon-0.54.0/lib/excon/middlewares/response_parser.rb:9:in `response_call'
/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/excon-0.54.0/lib/excon/connection.rb:388:in `response'
/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/excon-0.54.0/lib/excon/connection.rb:252:in `request'
/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/fog-core-1.43.0/lib/fog/core/connection.rb:81:in `request'
/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/fog-openstack-0.1.15/lib/fog/openstack/core.rb:81:in `request'
/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/fog-openstack-0.1.15/lib/fog/compute/openstack/requests/list_tenants_with_flavor_access.rb:6:in `list_tenants_with_flavor_access'
/opt/rubies/ruby-2.3.1/lib/ruby/2.3.0/delegate.rb:83:in `method_missing'
/var/www/miq/vmdb/app/models/manageiq/providers/openstack/refresh_parser_common/flavors.rb:48:in `block in flavor_tenants'
/var/www/miq/vmdb/app/models/manageiq/providers/openstack/refresh_parser_common/helper_methods.rb:24:in `safe_call'
/var/www/miq/vmdb/app/models/manageiq/providers/openstack/refresh_parser_common/helper_methods.rb:45:in `safe_list'
/var/www/miq/vmdb/app/models/manageiq/providers/openstack/refresh_parser_common/flavors.rb:48:in `flavor_tenants'
/var/www/miq/vmdb/app/models/manageiq/providers/openstack/refresh_parser_common/flavors.rb:35:in `parse_flavor'
/var/www/miq/vmdb/app/models/manageiq/providers/openstack/refresh_parser_common/flavors.rb:11:in `block in get_private_flavor'
/var/www/miq/vmdb/app/models/manageiq/providers/openstack/refresh_parser_common/helper_methods.rb:15:in `process_collection_item'
/var/www/miq/vmdb/app/models/manageiq/providers/openstack/refresh_parser_common/helper_methods.rb:9:in `block (2 levels) in process_collection'
/var/www/miq/vmdb/app/models/manageiq/providers/openstack/refresh_parser_common/helper_methods.rb:24:in `safe_call'
/var/www/miq/vmdb/app/models/manageiq/providers/openstack/refresh_parser_common/helper_methods.rb:9:in `block in process_collection'
/var/www/miq/vmdb/app/models/manageiq/providers/openstack/refresh_parser_common/helper_methods.rb:9:in `each'
/var/www/miq/vmdb/app/models/manageiq/providers/openstack/refresh_parser_common/helper_methods.rb:9:in `process_collection'
/var/www/miq/vmdb/app/models/manageiq/providers/openstack/refresh_parser_common/flavors.rb:11:in `get_private_flavor'
/var/www/miq/vmdb/app/models/manageiq/providers/openstack/cloud_manager/refresh_parser.rb:292:in `parse_server'
/var/www/miq/vmdb/app/models/manageiq/providers/openstack/cloud_manager/refresh_parser.rb:148:in `block in get_servers'
/var/www/miq/vmdb/app/models/manageiq/providers/openstack/refresh_parser_common/helper_methods.rb:15:in `process_collection_item'
/var/www/miq/vmdb/app/models/manageiq/providers/openstack/refresh_parser_common/helper_methods.rb:9:in `block (2 levels) in process_collection'
/var/www/miq/vmdb/app/models/manageiq/providers/openstack/refresh_parser_common/helper_methods.rb:24:in `safe_call'
/var/www/miq/vmdb/app/models/manageiq/providers/openstack/refresh_parser_common/helper_methods.rb:9:in `block in process_collection'
/var/www/miq/vmdb/app/models/manageiq/providers/openstack/refresh_parser_common/helper_methods.rb:9:in `each'
/var/www/miq/vmdb/app/models/manageiq/providers/openstack/refresh_parser_common/helper_methods.rb:9:in `process_collection'
/var/www/miq/vmdb/app/models/manageiq/providers/openstack/cloud_manager/refresh_parser.rb:148:in `get_servers'
/var/www/miq/vmdb/app/models/manageiq/providers/openstack/cloud_manager/refresh_parser.rb:69:in `ems_inv_to_hashes'
/var/www/miq/vmdb/app/models/manageiq/providers/openstack/cloud_manager/refresh_parser.rb:13:in `ems_inv_to_hashes'
/var/www/miq/vmdb/app/models/manageiq/providers/openstack/cloud_manager/refresher.rb:6:in `parse_legacy_inventory'
/var/www/miq/vmdb/app/models/ems_refresh/refreshers/ems_refresher_mixin.rb:122:in `block in parse_targeted_inventory'
/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/ems_refresh/refreshers/ems_refresher_mixin.rb:122:in `parse_targeted_inventory'
/var/www/miq/vmdb/app/models/ems_refresh/refreshers/ems_refresher_mixin.rb:87:in `block in refresh_targets_for_ems'
/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/ems_refresh/refreshers/ems_refresher_mixin.rb:86:in `refresh_targets_for_ems'
/var/www/miq/vmdb/app/models/ems_refresh/refreshers/ems_refresher_mixin.rb:24:in `block (2 levels) in refresh'
/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/ems_refresh/refreshers/ems_refresher_mixin.rb:24:in `block in refresh'
/var/www/miq/vmdb/app/models/ems_refresh/refreshers/ems_refresher_mixin.rb:14:in `each'
/var/www/miq/vmdb/app/models/ems_refresh/refreshers/ems_refresher_mixin.rb:14:in `refresh'
/var/www/miq/vmdb/app/models/manageiq/providers/base_manager/refresher.rb:10:in `refresh'
/var/www/miq/vmdb/app/models/ems_refresh.rb:91:in `block in refresh'
/var/www/miq/vmdb/app/models/ems_refresh.rb:90:in `each'
/var/www/miq/vmdb/app/models/ems_refresh.rb:90:in `refresh'
/var/www/miq/vmdb/app/models/miq_queue.rb:347:in `block in deliver'
/opt/rubies/ruby-2.3.1/lib/ruby/2.3.0/timeout.rb:91:in `block in timeout'
/opt/rubies/ruby-2.3.1/lib/ruby/2.3.0/timeout.rb:33:in `block in catch'
/opt/rubies/ruby-2.3.1/lib/ruby/2.3.0/timeout.rb:33:in `catch'
/opt/rubies/ruby-2.3.1/lib/ruby/2.3.0/timeout.rb:33:in `catch'
/opt/rubies/ruby-2.3.1/lib/ruby/2.3.0/timeout.rb:106:in `timeout'
/var/www/miq/vmdb/app/models/miq_queue.rb:343: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:343:in `block in start'
/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/nakayoshi_fork-0.0.3/lib/nakayoshi_fork.rb:24:in `fork'
/opt/rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/nakayoshi_fork-0.0.3/lib/nakayoshi_fork.rb:24:in `fork'
/var/www/miq/vmdb/app/models/miq_worker.rb:341:in `start'
/var/www/miq/vmdb/app/models/miq_worker.rb:270:in `start_worker'
/var/www/miq/vmdb/app/models/mixins/per_ems_worker_mixin.rb:68:in `start_worker_for_ems'
/var/www/miq/vmdb/app/models/mixins/per_ems_worker_mixin.rb:46:in `block in sync_workers'
/var/www/miq/vmdb/app/models/mixins/per_ems_worker_mixin.rb:45:in `each'
/var/www/miq/vmdb/app/models/mixins/per_ems_worker_mixin.rb:45: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:345: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:345:in `monitor'
/var/www/miq/vmdb/app/models/miq_server.rb:367: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:367:in `block in monitor_loop'
/var/www/miq/vmdb/app/models/miq_server.rb:366:in `loop'
/var/www/miq/vmdb/app/models/miq_server.rb:366:in `monitor_loop'
/var/www/miq/vmdb/app/models/miq_server.rb:249: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'
/var/www/miq/vmdb/lib/workers/bin/evm_server.rb:4:in `<main>'
[----] E, [2016-11-04T15:57:49.939792 #7736:73913c] ERROR -- : MIQ(ManageIQ::Providers::Openstack::CloudManager::Refresher#refresh) EMS: [My Cloud], id: [3] Unable to perform refresh for the following targets:
[----] E, [2016-11-04T15:57:49.939900 #7736:73913c] ERROR -- : MIQ(ManageIQ::Providers::Openstack::CloudManager::Refresher#refresh) --- ManageIQ::Providers::Openstack::CloudManager [My Cloud] id [3]
[----] I, [2016-11-04T15:57:49.987472 #7736:73913c] INFO -- : MIQ(ManageIQ::Providers::Openstack::CloudManager::Refresher#refresh) Refreshing all targets...Complete
[----] E, [2016-11-04T15:57
About this issue
- Original URL
- State: closed
- Created 8 years ago
- Comments: 25 (14 by maintainers)
Replacing lines 48-49 with
worked for me.
I’d just add that you will also want to include L49 in the same rescue block you use to catch the error on L48 while testing this.
We’re having difficulties reproducing this error in our environments. Would it be possible to try a direct change to the code in your environment? Specifically, to catch an error on this line:
https://github.com/ManageIQ/manageiq-providers-openstack/blob/master/app/models/manageiq/providers/openstack/refresh_parser_common/flavors.rb#L48
And just return [] if there’s an error?