From fdc3b4cd4c20a13df20ddd4ae510f50016832d12 Mon Sep 17 00:00:00 2001 From: Joe Rafaniello Date: Thu, 11 May 2017 16:49:22 -0400 Subject: [PATCH 01/12] Move dependencies to bundler groups that workers require Use an environment variable for now to default which groups are loaded. In workers, override this variable with what individual workers need. Delay requires or move them to where they are needed. Please enter the commit message for your changes. Lines starting --- Gemfile | 117 ++++++++++++++++------ app/models/application_record.rb | 6 +- app/models/miq_worker.rb | 2 +- config/application.rb | 39 +++++++- config/initializers/secure_headers.rb | 30 +++--- lib/workers/bin/miq_event_handler.rb | 6 ++ lib/workers/bin/miq_generic_worker.rb | 6 ++ lib/workers/bin/miq_priority_worker.rb | 6 ++ lib/workers/bin/miq_reporting_worker.rb | 6 ++ lib/workers/bin/miq_schedule_worker.rb | 6 ++ lib/workers/bin/miq_ui_worker.rb | 7 ++ lib/workers/bin/miq_web_service_worker.rb | 7 ++ lib/workers/bin/miq_websocket_worker.rb | 7 ++ 13 files changed, 199 insertions(+), 46 deletions(-) create mode 100644 lib/workers/bin/miq_event_handler.rb create mode 100644 lib/workers/bin/miq_generic_worker.rb create mode 100644 lib/workers/bin/miq_priority_worker.rb create mode 100644 lib/workers/bin/miq_reporting_worker.rb create mode 100644 lib/workers/bin/miq_schedule_worker.rb create mode 100644 lib/workers/bin/miq_ui_worker.rb create mode 100644 lib/workers/bin/miq_web_service_worker.rb create mode 100644 lib/workers/bin/miq_websocket_worker.rb diff --git a/Gemfile b/Gemfile index cce41e7dd85..2060f15ea45 100644 --- a/Gemfile +++ b/Gemfile @@ -19,29 +19,15 @@ end manageiq_plugin "manageiq-automation_engine" manageiq_plugin "manageiq-content" -manageiq_plugin "manageiq-providers-amazon" -manageiq_plugin "manageiq-providers-ansible_tower" -manageiq_plugin "manageiq-providers-azure" -manageiq_plugin "manageiq-providers-foreman" -manageiq_plugin "manageiq-providers-google" -manageiq_plugin "manageiq-providers-hawkular" -manageiq_plugin "manageiq-providers-kubernetes" -manageiq_plugin "manageiq-providers-lenovo" +manageiq_plugin "manageiq-providers-ansible_tower" # can't move this down yet, because we can't autoload ManageIQ::Providers::AnsibleTower::Shared manageiq_plugin "manageiq-providers-nuage" -manageiq_plugin "manageiq-providers-openshift" -manageiq_plugin "manageiq-providers-openstack" -manageiq_plugin "manageiq-providers-ovirt" -manageiq_plugin "manageiq-providers-scvmm" -manageiq_plugin "manageiq-providers-vmware" manageiq_plugin "manageiq-schema" -manageiq_plugin "manageiq-ui-classic" # Unmodified gems gem "activerecord-id_regions", "~>0.2.0" gem "activerecord-session_store", "~>1.0.0" gem "acts_as_tree", "~>2.1.0" # acts_as_tree needs to be required so that it loads before ancestry gem "ancestry", "~>2.2.1", :require => false -gem "ansible_tower_client", "~>0.12.2", :require => false gem "bundler", ">=1.11.1", :require => false gem "color", "~>1.8" gem "config", "~>1.3.0", :require => false @@ -52,9 +38,7 @@ gem "fast_gettext", "~>1.2.0" gem "gettext_i18n_rails", "~>1.7.2" gem "gettext_i18n_rails_js", "~>1.1.0" gem "hamlit", "~>2.7.0" -gem "htauth", "2.0.0", :require => false gem "inifile", "~>3.0", :require => false -gem "jbuilder", "~>2.5.0" # For the REST API gem "manageiq-api-client", "~>0.1.0", :require => false gem "manageiq-network_discovery", "~>0.1.1", :require => false gem "manageiq-smartstate", "~>0.1.1", :require => false @@ -66,28 +50,17 @@ gem "net-ping", "~>1.7.4", :require => false gem "net-ssh", "=3.2.0", :require => false gem "open4", "~>1.3.0", :require => false gem "openscap", "~>0.4.3", :require => false -gem "ovirt-engine-sdk", "~>4.1.4", :require => false # Required by the oVirt provider -gem "ovirt_metrics", "~>1.4.1", :require => false -gem "pg-pglogical", "~>1.1.0", :require => false -gem "puma", "~>3.3.0" gem "query_relation", "~>0.1.0", :require => false gem "rails", "~>5.0.2" gem "rails-i18n", "~>5.x" -gem "responders", "~>2.0" gem "rest-client", "~>2.0.0", :require => false gem "ripper_ruby_parser", :require => false -gem "ruby-dbus" # For external auth gem "ruby-progressbar", "~>1.7.0", :require => false gem "rubyzip", "~>1.2.1", :require => false gem "rufus-scheduler", "~>3.1.3", :require => false gem "rugged", "~>0.25.0", :require => false -gem "secure_headers", "~>3.0.0" gem "simple-rss", "~>1.3.1", :require => false gem "snmp", "~>1.2.0", :require => false -gem "sshkey", "~>1.8.0", :require => false -gem "thin", "~>1.7.0", :require => false -gem "vmware_web_service", "~>0.1.1", :require => false -gem "websocket-driver", "~>0.6.3" # Modified gems (forked on Github) gem "amazon_ssa_support", :require => false, :git => "https://github.com/ManageIQ/amazon_ssa_support.git", :branch => "master" # Temporary dependency to be moved to manageiq-providers-amazon when officially release @@ -99,12 +72,100 @@ gem "ruport", "=1.7.0", :git => "h # https://github.com/jeremyevans/ruby-american_date gem "american_date" +### providers +group :amazon do + manageiq_plugin "manageiq-providers-amazon" +end + +group :ansible do + gem "ansible_tower_client", "~>0.12.2", :require => false +end + +group :azure do + manageiq_plugin "manageiq-providers-azure" +end + +group :foreman do + manageiq_plugin "manageiq-providers-foreman" + gem "foreman_api_client", ">=0.1.0", :require => false, :git => "https://github.com/ManageIQ/foreman_api_client.git", :branch => "master" +end + +group :google do + manageiq_plugin "manageiq-providers-google" + gem "fog-google", ">=0.5.2", :require => false + gem "google-api-client", "~>0.8.6", :require => false +end + +group :hawkular do + manageiq_plugin "manageiq-providers-hawkular" +end + +group :kubernetes, :openshift do + manageiq_plugin "manageiq-providers-kubernetes" +end + +group :lenovo do + manageiq_plugin "manageiq-providers-lenovo" +end + +group :openshift do + manageiq_plugin "manageiq-providers-openshift" + gem "htauth", "2.0.0", :require => false # used by container deployment +end + +group :openstack do + manageiq_plugin "manageiq-providers-openstack" +end + +group :ovirt do + manageiq_plugin "manageiq-providers-ovirt" + gem "ovirt-engine-sdk", "~>4.1.4", :require => false # Required by the oVirt provider + gem "ovirt_metrics", "~>1.4.1", :require => false +end + +group :scvmm do + manageiq_plugin "manageiq-providers-scvmm" +end + +group :vmware do + manageiq_plugin "manageiq-providers-vmware" + gem "vmware_web_service", "~>0.1.1", :require => false +end + +### shared dependencies +group :google, :openshift do + gem "sshkey", "~>1.8.0", :require => false +end + +### end of provider bundler groups + +group :replication do + gem "pg-pglogical", "~>1.1.0", :require => false +end + +group :rest_api do + gem "jbuilder", "~>2.5.0" # For the REST API +end + group :ui_dependencies do # Added to Bundler.require in config/application.rb + manageiq_plugin "manageiq-ui-classic" # Modified gems (forked on Github) gem "font-fabulous", :git => "https://github.com/ManageIQ/font-fabulous.git", :branch => "master" # FIXME: this is just a temporary solution and it'll go to the ui-classic later gem "jquery-rjs", "=0.1.1", :git => "https://github.com/ManageIQ/jquery-rjs.git", :tag => "v0.1.1-1" end +group :web_server do + gem "puma", "~>3.3.0" + gem "responders", "~>2.0" + gem "ruby-dbus" # For external auth + gem "thin", "~>1.7.0", :require => false + gem "secure_headers", "~>3.0.0" +end + +group :web_socket do + gem "websocket-driver", "~>0.6.3" +end + ### Start of gems excluded from the appliances. # The gems listed below do not need to be packaged until we find it necessary or useful. # Only add gems here that we do not need on an appliance. diff --git a/app/models/application_record.rb b/app/models/application_record.rb index 4f455efa999..6d99cdc1960 100644 --- a/app/models/application_record.rb +++ b/app/models/application_record.rb @@ -15,6 +15,8 @@ class ApplicationRecord < ActiveRecord::Base extend ArTableLock # FIXME: UI code - decorator support - extend MiqDecorator::Klass - include MiqDecorator::Instance + if defined?(ManageIQ::UI::Classic) + extend MiqDecorator::Klass + include MiqDecorator::Instance + end end diff --git a/app/models/miq_worker.rb b/app/models/miq_worker.rb index df539fb5b4f..5effc09fd1c 100644 --- a/app/models/miq_worker.rb +++ b/app/models/miq_worker.rb @@ -370,7 +370,7 @@ def self.runner_script end def start_runner_via_spawn - pid = Kernel.spawn(self.class.build_command_line(guid), :out => "/dev/null", :err => [Rails.root.join("log", "evm.log"), "a"]) + pid = Kernel.spawn(self.class.build_command_line(guid), [:out, :err] => [Rails.root.join("log", "evm.log"), "a"]) Process.detach(pid) pid end diff --git a/config/application.rb b/config/application.rb index 4eb32c58502..e49f3b3e39d 100644 --- a/config/application.rb +++ b/config/application.rb @@ -9,8 +9,45 @@ require 'sprockets/railtie' require 'action_cable/engine' +# We use bundler groups to select which dependencies to require in our different processes. +# * Anything not in a group are in bundler's 'default' group, and are required all the time +# * Anything in development, test, or production will get required by Bundler.require(*Rails.groups) in application.rb +# See: https://github.com/rails/rails/blob/c48b21685f4fec1c7a1c9b4e0dde4da89140ee22/railties/lib/rails.rb#L81-L101 +# +# Loading application.rb requires any additional BUNDLER_GROUPS based on the environment variable. +# This variable should be a comma separated list of groups. +# The default BUNDLER_GROUPS below includes all bundler groups not in the Rails.groups. +# +ENV['BUNDLER_GROUPS'] ||= %w( + amazon + ansible + azure + foreman + google + hawkular + kubernetes + lenovo + openshift + openstack + ovirt + scvmm + vmware + replication + rest_api + ui_dependencies + web_server + web_socket +).join(",") + if defined?(Bundler) - Bundler.require(*Rails.groups, :ui_dependencies) + groups = ENV['BUNDLER_GROUPS'].split(",").collect(&:to_sym) + + if $DEBUG + puts "** Loading Rails bundler groups: #{Rails.groups.inspect}" + puts "** Loading other bundler groups: #{groups.inspect}" + end + + Bundler.require(*Rails.groups, *groups) end module Vmdb diff --git a/config/initializers/secure_headers.rb b/config/initializers/secure_headers.rb index fbbab5da1b4..1598bcca5ae 100644 --- a/config/initializers/secure_headers.rb +++ b/config/initializers/secure_headers.rb @@ -1,15 +1,17 @@ -SecureHeaders::Configuration.default do |config| - config.hsts = "max-age=#{20.years.to_i}" - config.x_frame_options = 'SAMEORIGIN' - config.x_content_type_options = "nosniff" - config.x_xss_protection = "1; mode=block" - config.csp = { - :report_only => false, - :default_src => ["'self'"], - :frame_src => ["'self'"], - :connect_src => ["'self'"], - :style_src => ["'unsafe-inline'", "'self'"], - :script_src => ["'unsafe-eval'", "'unsafe-inline'", "'self'"], - :report_uri => ["/dashboard/csp_report"] - } +if defined?(SecureHeaders) + SecureHeaders::Configuration.default do |config| + config.hsts = "max-age=#{20.years.to_i}" + config.x_frame_options = 'SAMEORIGIN' + config.x_content_type_options = "nosniff" + config.x_xss_protection = "1; mode=block" + config.csp = { + :report_only => false, + :default_src => ["'self'"], + :frame_src => ["'self'"], + :connect_src => ["'self'"], + :style_src => ["'unsafe-inline'", "'self'"], + :script_src => ["'unsafe-eval'", "'unsafe-inline'", "'self'"], + :report_uri => ["/dashboard/csp_report"] + } + end end diff --git a/lib/workers/bin/miq_event_handler.rb b/lib/workers/bin/miq_event_handler.rb new file mode 100644 index 00000000000..446400cf8e8 --- /dev/null +++ b/lib/workers/bin/miq_event_handler.rb @@ -0,0 +1,6 @@ +ENV['BUNDLER_GROUPS'] = "" + +require File.expand_path('../../../config/application', __dir__) + +Vmdb::Application.initialize! +MiqEventHandler::Runner.start_worker(*ARGV) diff --git a/lib/workers/bin/miq_generic_worker.rb b/lib/workers/bin/miq_generic_worker.rb new file mode 100644 index 00000000000..a0ea6d14f65 --- /dev/null +++ b/lib/workers/bin/miq_generic_worker.rb @@ -0,0 +1,6 @@ +ENV['BUNDLER_GROUPS'] = "" + +require File.expand_path('../../../config/application', __dir__) + +Vmdb::Application.initialize! +MiqGenericWorker::Runner.start_worker(*ARGV) diff --git a/lib/workers/bin/miq_priority_worker.rb b/lib/workers/bin/miq_priority_worker.rb new file mode 100644 index 00000000000..2925ea47849 --- /dev/null +++ b/lib/workers/bin/miq_priority_worker.rb @@ -0,0 +1,6 @@ +ENV['BUNDLER_GROUPS'] = "" + +require File.expand_path('../../../config/application', __dir__) + +Vmdb::Application.initialize! +MiqPriorityWorker::Runner.start_worker(*ARGV) diff --git a/lib/workers/bin/miq_reporting_worker.rb b/lib/workers/bin/miq_reporting_worker.rb new file mode 100644 index 00000000000..d944312407f --- /dev/null +++ b/lib/workers/bin/miq_reporting_worker.rb @@ -0,0 +1,6 @@ +ENV['BUNDLER_GROUPS'] = "" + +require File.expand_path('../../../config/application', __dir__) + +Vmdb::Application.initialize! +MiqReportingWorker::Runner.start_worker(*ARGV) diff --git a/lib/workers/bin/miq_schedule_worker.rb b/lib/workers/bin/miq_schedule_worker.rb new file mode 100644 index 00000000000..33c3df72c78 --- /dev/null +++ b/lib/workers/bin/miq_schedule_worker.rb @@ -0,0 +1,6 @@ +ENV['BUNDLER_GROUPS'] = "" + +require File.expand_path('../../../config/application', __dir__) + +Vmdb::Application.initialize! +MiqScheduleWorker::Runner.start_worker(*ARGV) diff --git a/lib/workers/bin/miq_ui_worker.rb b/lib/workers/bin/miq_ui_worker.rb new file mode 100644 index 00000000000..a82621a6f7f --- /dev/null +++ b/lib/workers/bin/miq_ui_worker.rb @@ -0,0 +1,7 @@ +ENV['BUNDLER_GROUPS'] = "web_server,ui_dependencies" + +require File.expand_path('../../../config/application', __dir__) + +Vmdb::Application.initialize! +MiqUiWorker.preload_for_worker_role +MiqUiWorker::Runner.start_worker(*ARGV) diff --git a/lib/workers/bin/miq_web_service_worker.rb b/lib/workers/bin/miq_web_service_worker.rb new file mode 100644 index 00000000000..4268b846329 --- /dev/null +++ b/lib/workers/bin/miq_web_service_worker.rb @@ -0,0 +1,7 @@ +ENV['BUNDLER_GROUPS'] = "web_server,rest_api" + +require File.expand_path('../../../config/application', __dir__) + +Vmdb::Application.initialize! +MiqWebServiceWorker.preload_for_worker_role +MiqWebServiceWorker::Runner.start_worker(*ARGV) diff --git a/lib/workers/bin/miq_websocket_worker.rb b/lib/workers/bin/miq_websocket_worker.rb new file mode 100644 index 00000000000..87b887307f2 --- /dev/null +++ b/lib/workers/bin/miq_websocket_worker.rb @@ -0,0 +1,7 @@ +ENV['BUNDLER_GROUPS'] = "ui_dependencies,web_server,web_socket" + +require File.expand_path('../../../config/application', __dir__) + +Vmdb::Application.initialize! +MiqWebsocketWorker.preload_for_worker_role +MiqWebsocketWorker::Runner.start_worker(*ARGV) From a63b4d51fe4ae90b87d2f812cf9db1015a3834c6 Mon Sep 17 00:00:00 2001 From: Nick LaMuro Date: Wed, 7 Jun 2017 15:03:13 -0500 Subject: [PATCH 02/12] Add MIQ_DEFAULT_BUNDLER_GROUPS to global constants Defines a variable for defining the default bundler groups in the lib/workers/miq_worker_types.rb file that is reusable. --- config/application.rb | 22 ++-------------------- lib/workers/miq_worker_types.rb | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/config/application.rb b/config/application.rb index e49f3b3e39d..0eaae5757ba 100644 --- a/config/application.rb +++ b/config/application.rb @@ -8,6 +8,7 @@ require 'active_job/railtie' require 'sprockets/railtie' require 'action_cable/engine' +require_relative '../lib/workers/miq_worker_types' unless defined? MIQ_DEFAULT_BUNDLER_GROUPS # We use bundler groups to select which dependencies to require in our different processes. # * Anything not in a group are in bundler's 'default' group, and are required all the time @@ -18,26 +19,7 @@ # This variable should be a comma separated list of groups. # The default BUNDLER_GROUPS below includes all bundler groups not in the Rails.groups. # -ENV['BUNDLER_GROUPS'] ||= %w( - amazon - ansible - azure - foreman - google - hawkular - kubernetes - lenovo - openshift - openstack - ovirt - scvmm - vmware - replication - rest_api - ui_dependencies - web_server - web_socket -).join(",") +ENV['BUNDLER_GROUPS'] ||= MIQ_DEFAULT_BUNDLER_GROUPS.join(",") if defined?(Bundler) groups = ENV['BUNDLER_GROUPS'].split(",").collect(&:to_sym) diff --git a/lib/workers/miq_worker_types.rb b/lib/workers/miq_worker_types.rb index 2044823f3f1..7cd4e2430c7 100644 --- a/lib/workers/miq_worker_types.rb +++ b/lib/workers/miq_worker_types.rb @@ -1,6 +1,27 @@ # TODO: Consider putting this in a module namespace instead of poluting the # global namespace +MIQ_DEFAULT_BUNDLER_GROUPS = %w( + amazon + ansible + azure + foreman + google + hawkular + kubernetes + lenovo + openshift + openstack + ovirt + scvmm + vmware + replication + rest_api + ui_dependencies + web_server + web_socket +) + MIQ_WORKER_TYPES = %w( ManageIQ::Providers::Azure::CloudManager::MetricsCollectorWorker ManageIQ::Providers::Amazon::CloudManager::MetricsCollectorWorker From f74bac10ad222b115673cd16db7c681224a154fe Mon Sep 17 00:00:00 2001 From: Nick LaMuro Date: Wed, 7 Jun 2017 15:16:10 -0500 Subject: [PATCH 03/12] Add bundler group info to MIQ_WORKER_TYPES Converts MIQ_WORKER_TYPES into a hash to then be usable to set the bundler groups for a particular worker. Also allows the run_single_worker script function with the changes to the MiqWorker and MiqWorker::Runner classes to work with the new worker spawning workflow. Using this method removes duplicate code in the lib/workers/bin directory and makes things simpler to extend in the future. --- .../worker_management/monitor/class_names.rb | 2 +- lib/workers/bin/miq_event_handler.rb | 6 - lib/workers/bin/miq_generic_worker.rb | 6 - lib/workers/bin/miq_priority_worker.rb | 6 - lib/workers/bin/miq_reporting_worker.rb | 6 - lib/workers/bin/miq_schedule_worker.rb | 6 - lib/workers/bin/miq_ui_worker.rb | 7 - lib/workers/bin/miq_web_service_worker.rb | 7 - lib/workers/bin/miq_websocket_worker.rb | 7 - lib/workers/bin/run_single_worker.rb | 7 +- lib/workers/miq_worker_types.rb | 142 +++++++++--------- 11 files changed, 76 insertions(+), 126 deletions(-) delete mode 100644 lib/workers/bin/miq_event_handler.rb delete mode 100644 lib/workers/bin/miq_generic_worker.rb delete mode 100644 lib/workers/bin/miq_priority_worker.rb delete mode 100644 lib/workers/bin/miq_reporting_worker.rb delete mode 100644 lib/workers/bin/miq_schedule_worker.rb delete mode 100644 lib/workers/bin/miq_ui_worker.rb delete mode 100644 lib/workers/bin/miq_web_service_worker.rb delete mode 100644 lib/workers/bin/miq_websocket_worker.rb diff --git a/app/models/miq_server/worker_management/monitor/class_names.rb b/app/models/miq_server/worker_management/monitor/class_names.rb index 6054d7ed366..973d8efc67c 100644 --- a/app/models/miq_server/worker_management/monitor/class_names.rb +++ b/app/models/miq_server/worker_management/monitor/class_names.rb @@ -5,7 +5,7 @@ module MiqServer::WorkerManagement::Monitor::ClassNames # This are loaded from `lib/workers/miq_worker_types.rb`, and are just a # memory reference to them for compatability. - MONITOR_CLASS_NAMES = MIQ_WORKER_TYPES + MONITOR_CLASS_NAMES = MIQ_WORKER_TYPES.keys MONITOR_CLASS_NAMES_IN_KILL_ORDER = MIQ_WORKER_TYPES_IN_KILL_ORDER module ClassMethods diff --git a/lib/workers/bin/miq_event_handler.rb b/lib/workers/bin/miq_event_handler.rb deleted file mode 100644 index 446400cf8e8..00000000000 --- a/lib/workers/bin/miq_event_handler.rb +++ /dev/null @@ -1,6 +0,0 @@ -ENV['BUNDLER_GROUPS'] = "" - -require File.expand_path('../../../config/application', __dir__) - -Vmdb::Application.initialize! -MiqEventHandler::Runner.start_worker(*ARGV) diff --git a/lib/workers/bin/miq_generic_worker.rb b/lib/workers/bin/miq_generic_worker.rb deleted file mode 100644 index a0ea6d14f65..00000000000 --- a/lib/workers/bin/miq_generic_worker.rb +++ /dev/null @@ -1,6 +0,0 @@ -ENV['BUNDLER_GROUPS'] = "" - -require File.expand_path('../../../config/application', __dir__) - -Vmdb::Application.initialize! -MiqGenericWorker::Runner.start_worker(*ARGV) diff --git a/lib/workers/bin/miq_priority_worker.rb b/lib/workers/bin/miq_priority_worker.rb deleted file mode 100644 index 2925ea47849..00000000000 --- a/lib/workers/bin/miq_priority_worker.rb +++ /dev/null @@ -1,6 +0,0 @@ -ENV['BUNDLER_GROUPS'] = "" - -require File.expand_path('../../../config/application', __dir__) - -Vmdb::Application.initialize! -MiqPriorityWorker::Runner.start_worker(*ARGV) diff --git a/lib/workers/bin/miq_reporting_worker.rb b/lib/workers/bin/miq_reporting_worker.rb deleted file mode 100644 index d944312407f..00000000000 --- a/lib/workers/bin/miq_reporting_worker.rb +++ /dev/null @@ -1,6 +0,0 @@ -ENV['BUNDLER_GROUPS'] = "" - -require File.expand_path('../../../config/application', __dir__) - -Vmdb::Application.initialize! -MiqReportingWorker::Runner.start_worker(*ARGV) diff --git a/lib/workers/bin/miq_schedule_worker.rb b/lib/workers/bin/miq_schedule_worker.rb deleted file mode 100644 index 33c3df72c78..00000000000 --- a/lib/workers/bin/miq_schedule_worker.rb +++ /dev/null @@ -1,6 +0,0 @@ -ENV['BUNDLER_GROUPS'] = "" - -require File.expand_path('../../../config/application', __dir__) - -Vmdb::Application.initialize! -MiqScheduleWorker::Runner.start_worker(*ARGV) diff --git a/lib/workers/bin/miq_ui_worker.rb b/lib/workers/bin/miq_ui_worker.rb deleted file mode 100644 index a82621a6f7f..00000000000 --- a/lib/workers/bin/miq_ui_worker.rb +++ /dev/null @@ -1,7 +0,0 @@ -ENV['BUNDLER_GROUPS'] = "web_server,ui_dependencies" - -require File.expand_path('../../../config/application', __dir__) - -Vmdb::Application.initialize! -MiqUiWorker.preload_for_worker_role -MiqUiWorker::Runner.start_worker(*ARGV) diff --git a/lib/workers/bin/miq_web_service_worker.rb b/lib/workers/bin/miq_web_service_worker.rb deleted file mode 100644 index 4268b846329..00000000000 --- a/lib/workers/bin/miq_web_service_worker.rb +++ /dev/null @@ -1,7 +0,0 @@ -ENV['BUNDLER_GROUPS'] = "web_server,rest_api" - -require File.expand_path('../../../config/application', __dir__) - -Vmdb::Application.initialize! -MiqWebServiceWorker.preload_for_worker_role -MiqWebServiceWorker::Runner.start_worker(*ARGV) diff --git a/lib/workers/bin/miq_websocket_worker.rb b/lib/workers/bin/miq_websocket_worker.rb deleted file mode 100644 index 87b887307f2..00000000000 --- a/lib/workers/bin/miq_websocket_worker.rb +++ /dev/null @@ -1,7 +0,0 @@ -ENV['BUNDLER_GROUPS'] = "ui_dependencies,web_server,web_socket" - -require File.expand_path('../../../config/application', __dir__) - -Vmdb::Application.initialize! -MiqWebsocketWorker.preload_for_worker_role -MiqWebsocketWorker::Runner.start_worker(*ARGV) diff --git a/lib/workers/bin/run_single_worker.rb b/lib/workers/bin/run_single_worker.rb index 5b22aeff807..adc831c7729 100644 --- a/lib/workers/bin/run_single_worker.rb +++ b/lib/workers/bin/run_single_worker.rb @@ -38,18 +38,19 @@ require File.expand_path("../miq_worker_types", __dir__) if options[:list] - puts ::MIQ_WORKER_TYPES + puts ::MIQ_WORKER_TYPES.keys exit end opt_parser.abort(opt_parser.help) unless worker_class -unless ::MIQ_WORKER_TYPES.include?(worker_class) +unless ::MIQ_WORKER_TYPES.keys.include?(worker_class) puts "ERR: `#{worker_class}` WORKER CLASS NOT FOUND! Please run with `-l` to see possible worker class names." exit 1 end # Skip heartbeating with single worker ENV["DISABLE_MIQ_WORKER_HEARTBEAT"] ||= options[:heartbeat] ? nil : '1' +ENV["BUNDLER_GROUPS"] = MIQ_WORKER_TYPES[worker_class].join(',') require File.expand_path("../../../config/environment", __dir__) @@ -63,7 +64,7 @@ end begin - worker.class::Runner.start_worker(:guid => worker.guid) + worker.class::Runner.start_worker(worker.guid) ensure worker.delete end diff --git a/lib/workers/miq_worker_types.rb b/lib/workers/miq_worker_types.rb index 7cd4e2430c7..5bc046a215a 100644 --- a/lib/workers/miq_worker_types.rb +++ b/lib/workers/miq_worker_types.rb @@ -22,77 +22,77 @@ web_socket ) -MIQ_WORKER_TYPES = %w( - ManageIQ::Providers::Azure::CloudManager::MetricsCollectorWorker - ManageIQ::Providers::Amazon::CloudManager::MetricsCollectorWorker - ManageIQ::Providers::Redhat::InfraManager::MetricsCollectorWorker - ManageIQ::Providers::Kubernetes::ContainerManager::MetricsCollectorWorker - ManageIQ::Providers::Openshift::ContainerManager::MetricsCollectorWorker - ManageIQ::Providers::Google::CloudManager::MetricsCollectorWorker - ManageIQ::Providers::Vmware::InfraManager::MetricsCollectorWorker - ManageIQ::Providers::Openstack::CloudManager::MetricsCollectorWorker - ManageIQ::Providers::Openstack::NetworkManager::MetricsCollectorWorker - ManageIQ::Providers::Openstack::InfraManager::MetricsCollectorWorker - MiqEmsMetricsProcessorWorker - MiqEmsRefreshCoreWorker - ManageIQ::Providers::Azure::CloudManager::RefreshWorker - ManageIQ::Providers::Azure::NetworkManager::RefreshWorker - ManageIQ::Providers::Amazon::CloudManager::RefreshWorker - ManageIQ::Providers::Amazon::NetworkManager::RefreshWorker - ManageIQ::Providers::Amazon::StorageManager::Ebs::RefreshWorker - ManageIQ::Providers::Amazon::StorageManager::S3::RefreshWorker - ManageIQ::Providers::Google::CloudManager::RefreshWorker - ManageIQ::Providers::Google::NetworkManager::RefreshWorker - ManageIQ::Providers::AnsibleTower::AutomationManager::RefreshWorker - ManageIQ::Providers::EmbeddedAnsible::AutomationManager::RefreshWorker - ManageIQ::Providers::Foreman::ConfigurationManager::RefreshWorker - ManageIQ::Providers::Foreman::ProvisioningManager::RefreshWorker - ManageIQ::Providers::Hawkular::MiddlewareManager::RefreshWorker - ManageIQ::Providers::Hawkular::DatawarehouseManager::RefreshWorker - ManageIQ::Providers::Kubernetes::ContainerManager::RefreshWorker - ManageIQ::Providers::Openshift::ContainerManager::RefreshWorker - ManageIQ::Providers::Microsoft::InfraManager::RefreshWorker - ManageIQ::Providers::Redhat::InfraManager::RefreshWorker - ManageIQ::Providers::Openstack::CloudManager::RefreshWorker - ManageIQ::Providers::Openstack::NetworkManager::RefreshWorker - ManageIQ::Providers::Openstack::InfraManager::RefreshWorker - ManageIQ::Providers::StorageManager::CinderManager::RefreshWorker - ManageIQ::Providers::StorageManager::SwiftManager::RefreshWorker - ManageIQ::Providers::Vmware::CloudManager::RefreshWorker - ManageIQ::Providers::Vmware::NetworkManager::RefreshWorker - ManageIQ::Providers::Vmware::InfraManager::RefreshWorker - ManageIQ::Providers::Nuage::NetworkManager::RefreshWorker - ManageIQ::Providers::Lenovo::PhysicalInfraManager::RefreshWorker - ManageIQ::Providers::Amazon::CloudManager::EventCatcher - ManageIQ::Providers::AnsibleTower::AutomationManager::EventCatcher - ManageIQ::Providers::EmbeddedAnsible::AutomationManager::EventCatcher - ManageIQ::Providers::Azure::CloudManager::EventCatcher - ManageIQ::Providers::Hawkular::MiddlewareManager::EventCatcher - ManageIQ::Providers::Hawkular::DatawarehouseManager::EventCatcher - ManageIQ::Providers::Google::CloudManager::EventCatcher - ManageIQ::Providers::Kubernetes::ContainerManager::EventCatcher - ManageIQ::Providers::Openshift::ContainerManager::EventCatcher - ManageIQ::Providers::Redhat::InfraManager::EventCatcher - ManageIQ::Providers::Openstack::CloudManager::EventCatcher - ManageIQ::Providers::Openstack::NetworkManager::EventCatcher - ManageIQ::Providers::Openstack::InfraManager::EventCatcher - ManageIQ::Providers::StorageManager::CinderManager::EventCatcher - ManageIQ::Providers::Vmware::InfraManager::EventCatcher - ManageIQ::Providers::Vmware::CloudManager::EventCatcher - ManageIQ::Providers::Lenovo::PhysicalInfraManager::EventCatcher - EmbeddedAnsibleWorker - MiqEventHandler - MiqGenericWorker - MiqPriorityWorker - MiqReportingWorker - MiqScheduleWorker - MiqSmartProxyWorker - MiqWebsocketWorker - MiqUiWorker - MiqVimBrokerWorker - MiqWebServiceWorker - MiqCockpitWsWorker -).freeze +MIQ_WORKER_TYPES = { + "ManageIQ::Providers::Azure::CloudManager::MetricsCollectorWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Amazon::CloudManager::MetricsCollectorWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Redhat::InfraManager::MetricsCollectorWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Kubernetes::ContainerManager::MetricsCollectorWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Openshift::ContainerManager::MetricsCollectorWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Google::CloudManager::MetricsCollectorWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Vmware::InfraManager::MetricsCollectorWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Openstack::CloudManager::MetricsCollectorWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Openstack::NetworkManager::MetricsCollectorWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Openstack::InfraManager::MetricsCollectorWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "MiqEmsMetricsProcessorWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "MiqEmsRefreshCoreWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Azure::CloudManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Azure::NetworkManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Amazon::CloudManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Amazon::NetworkManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Amazon::StorageManager::Ebs::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Amazon::StorageManager::S3::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Google::CloudManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Google::NetworkManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::AnsibleTower::AutomationManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::EmbeddedAnsible::AutomationManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Foreman::ConfigurationManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Foreman::ProvisioningManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Hawkular::MiddlewareManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Hawkular::DatawarehouseManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Kubernetes::ContainerManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Openshift::ContainerManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Microsoft::InfraManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Redhat::InfraManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Openstack::CloudManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Openstack::NetworkManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Openstack::InfraManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::StorageManager::CinderManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::StorageManager::SwiftManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Vmware::CloudManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Vmware::NetworkManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Vmware::InfraManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Nuage::NetworkManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Lenovo::PhysicalInfraManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Amazon::CloudManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::AnsibleTower::AutomationManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::EmbeddedAnsible::AutomationManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Azure::CloudManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Hawkular::MiddlewareManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Hawkular::DatawarehouseManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Google::CloudManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Kubernetes::ContainerManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Openshift::ContainerManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Redhat::InfraManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Openstack::CloudManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Openstack::NetworkManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Openstack::InfraManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::StorageManager::CinderManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Vmware::InfraManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Vmware::CloudManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Lenovo::PhysicalInfraManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, + "EmbeddedAnsibleWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "MiqEventHandler" => [], + "MiqGenericWorker" => [], + "MiqPriorityWorker" => [], + "MiqReportingWorker" => [], + "MiqScheduleWorker" => [], + "MiqSmartProxyWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "MiqWebsocketWorker" => %w(ui_dependencies web_server web_socket), + "MiqUiWorker" => %w(web_server ui_dependencies), + "MiqVimBrokerWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "MiqWebServiceWorker" => %w(web_server ui_dependencies), + "MiqCockpitWsWorker" => MIQ_DEFAULT_BUNDLER_GROUPS +}.freeze MIQ_WORKER_TYPES_IN_KILL_ORDER = %w( MiqEmsMetricsProcessorWorker From 1e29ba1a3762e7300c105d776d7e642d591ab017 Mon Sep 17 00:00:00 2001 From: Joe Rafaniello Date: Wed, 14 Jun 2017 13:48:01 -0400 Subject: [PATCH 04/12] Add a bundler group that includes all miq groups This manageiq_default group functions like the :default group that all ungrouped gems are put in. We require this new group for all processes by default and specifici worker processes can bypass it via the BUNDLER_GROUPS env variable or updating the list of groups in the worker class list. --- Gemfile | 41 ++--- .../mixins/miq_web_server_worker_mixin.rb | 3 - config/application.rb | 3 +- lib/workers/miq_worker_types.rb | 143 ++++++++---------- 4 files changed, 84 insertions(+), 106 deletions(-) diff --git a/Gemfile b/Gemfile index 2060f15ea45..dbb9753dd08 100644 --- a/Gemfile +++ b/Gemfile @@ -72,89 +72,92 @@ gem "ruport", "=1.7.0", :git => "h # https://github.com/jeremyevans/ruby-american_date gem "american_date" +# Make sure to tag your new bundler group with the manageiq_default group in addition to your specific bundler group name. +# This default is used to automatically require all of our gems in processes that don't specify which bundler groups they want. +# ### providers -group :amazon do +group :amazon, :manageiq_default do manageiq_plugin "manageiq-providers-amazon" end -group :ansible do +group :ansible, :manageiq_default do gem "ansible_tower_client", "~>0.12.2", :require => false end -group :azure do +group :azure, :manageiq_default do manageiq_plugin "manageiq-providers-azure" end -group :foreman do +group :foreman, :manageiq_default do manageiq_plugin "manageiq-providers-foreman" gem "foreman_api_client", ">=0.1.0", :require => false, :git => "https://github.com/ManageIQ/foreman_api_client.git", :branch => "master" end -group :google do +group :google, :manageiq_default do manageiq_plugin "manageiq-providers-google" gem "fog-google", ">=0.5.2", :require => false gem "google-api-client", "~>0.8.6", :require => false end -group :hawkular do +group :hawkular, :manageiq_default do manageiq_plugin "manageiq-providers-hawkular" end -group :kubernetes, :openshift do +group :kubernetes, :openshift, :manageiq_default do manageiq_plugin "manageiq-providers-kubernetes" end -group :lenovo do +group :lenovo, :manageiq_default do manageiq_plugin "manageiq-providers-lenovo" end -group :openshift do +group :openshift, :manageiq_default do manageiq_plugin "manageiq-providers-openshift" gem "htauth", "2.0.0", :require => false # used by container deployment end -group :openstack do +group :openstack, :manageiq_default do manageiq_plugin "manageiq-providers-openstack" end -group :ovirt do +group :ovirt, :manageiq_default do manageiq_plugin "manageiq-providers-ovirt" gem "ovirt-engine-sdk", "~>4.1.4", :require => false # Required by the oVirt provider gem "ovirt_metrics", "~>1.4.1", :require => false end -group :scvmm do +group :scvmm, :manageiq_default do manageiq_plugin "manageiq-providers-scvmm" end -group :vmware do +group :vmware, :manageiq_default do manageiq_plugin "manageiq-providers-vmware" gem "vmware_web_service", "~>0.1.1", :require => false end ### shared dependencies -group :google, :openshift do +group :google, :openshift, :manageiq_default do gem "sshkey", "~>1.8.0", :require => false end ### end of provider bundler groups -group :replication do +group :replication, :manageiq_default do gem "pg-pglogical", "~>1.1.0", :require => false end -group :rest_api do +group :rest_api, :manageiq_default do gem "jbuilder", "~>2.5.0" # For the REST API end -group :ui_dependencies do # Added to Bundler.require in config/application.rb +group :ui_dependencies, :manageiq_default do # Added to Bundler.require in config/application.rb manageiq_plugin "manageiq-ui-classic" # Modified gems (forked on Github) gem "font-fabulous", :git => "https://github.com/ManageIQ/font-fabulous.git", :branch => "master" # FIXME: this is just a temporary solution and it'll go to the ui-classic later gem "jquery-rjs", "=0.1.1", :git => "https://github.com/ManageIQ/jquery-rjs.git", :tag => "v0.1.1-1" end -group :web_server do +group :web_server, :manageiq_default do gem "puma", "~>3.3.0" gem "responders", "~>2.0" gem "ruby-dbus" # For external auth @@ -162,7 +165,7 @@ group :web_server do gem "secure_headers", "~>3.0.0" end -group :web_socket do +group :web_socket, :manageiq_default do gem "websocket-driver", "~>0.6.3" end diff --git a/app/models/mixins/miq_web_server_worker_mixin.rb b/app/models/mixins/miq_web_server_worker_mixin.rb index 01e7a6b360d..21639e8f504 100644 --- a/app/models/mixins/miq_web_server_worker_mixin.rb +++ b/app/models/mixins/miq_web_server_worker_mixin.rb @@ -24,9 +24,6 @@ def preload_for_console end def preload_for_worker_role - # Make these constants globally available - ::UiConstants - configure_secret_token end diff --git a/config/application.rb b/config/application.rb index 0eaae5757ba..5066c25e2f0 100644 --- a/config/application.rb +++ b/config/application.rb @@ -8,7 +8,6 @@ require 'active_job/railtie' require 'sprockets/railtie' require 'action_cable/engine' -require_relative '../lib/workers/miq_worker_types' unless defined? MIQ_DEFAULT_BUNDLER_GROUPS # We use bundler groups to select which dependencies to require in our different processes. # * Anything not in a group are in bundler's 'default' group, and are required all the time @@ -19,7 +18,7 @@ # This variable should be a comma separated list of groups. # The default BUNDLER_GROUPS below includes all bundler groups not in the Rails.groups. # -ENV['BUNDLER_GROUPS'] ||= MIQ_DEFAULT_BUNDLER_GROUPS.join(",") +ENV['BUNDLER_GROUPS'] ||= "manageiq_default" if defined?(Bundler) groups = ENV['BUNDLER_GROUPS'].split(",").collect(&:to_sym) diff --git a/lib/workers/miq_worker_types.rb b/lib/workers/miq_worker_types.rb index 5bc046a215a..ccad5a05028 100644 --- a/lib/workers/miq_worker_types.rb +++ b/lib/workers/miq_worker_types.rb @@ -1,97 +1,76 @@ # TODO: Consider putting this in a module namespace instead of poluting the # global namespace -MIQ_DEFAULT_BUNDLER_GROUPS = %w( - amazon - ansible - azure - foreman - google - hawkular - kubernetes - lenovo - openshift - openstack - ovirt - scvmm - vmware - replication - rest_api - ui_dependencies - web_server - web_socket -) - MIQ_WORKER_TYPES = { - "ManageIQ::Providers::Azure::CloudManager::MetricsCollectorWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Amazon::CloudManager::MetricsCollectorWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Redhat::InfraManager::MetricsCollectorWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Kubernetes::ContainerManager::MetricsCollectorWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Openshift::ContainerManager::MetricsCollectorWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Google::CloudManager::MetricsCollectorWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Vmware::InfraManager::MetricsCollectorWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Openstack::CloudManager::MetricsCollectorWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Openstack::NetworkManager::MetricsCollectorWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Openstack::InfraManager::MetricsCollectorWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "MiqEmsMetricsProcessorWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "MiqEmsRefreshCoreWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Azure::CloudManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Azure::NetworkManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Amazon::CloudManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Amazon::NetworkManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Amazon::StorageManager::Ebs::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Amazon::StorageManager::S3::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Google::CloudManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Google::NetworkManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::AnsibleTower::AutomationManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::EmbeddedAnsible::AutomationManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Foreman::ConfigurationManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Foreman::ProvisioningManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Hawkular::MiddlewareManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Hawkular::DatawarehouseManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Kubernetes::ContainerManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Openshift::ContainerManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Microsoft::InfraManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Redhat::InfraManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Openstack::CloudManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Openstack::NetworkManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Openstack::InfraManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::StorageManager::CinderManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::StorageManager::SwiftManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Vmware::CloudManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Vmware::NetworkManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Vmware::InfraManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Nuage::NetworkManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Lenovo::PhysicalInfraManager::RefreshWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Amazon::CloudManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::AnsibleTower::AutomationManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::EmbeddedAnsible::AutomationManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Azure::CloudManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Hawkular::MiddlewareManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Hawkular::DatawarehouseManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Google::CloudManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Kubernetes::ContainerManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Openshift::ContainerManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Redhat::InfraManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Openstack::CloudManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Openstack::NetworkManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Openstack::InfraManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::StorageManager::CinderManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Vmware::InfraManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Vmware::CloudManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, - "ManageIQ::Providers::Lenovo::PhysicalInfraManager::EventCatcher" => MIQ_DEFAULT_BUNDLER_GROUPS, - "EmbeddedAnsibleWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "ManageIQ::Providers::Azure::CloudManager::MetricsCollectorWorker" => [:manageiq_default], + "ManageIQ::Providers::Amazon::CloudManager::MetricsCollectorWorker" => [:manageiq_default], + "ManageIQ::Providers::Redhat::InfraManager::MetricsCollectorWorker" => [:manageiq_default], + "ManageIQ::Providers::Kubernetes::ContainerManager::MetricsCollectorWorker" => [:manageiq_default], + "ManageIQ::Providers::Openshift::ContainerManager::MetricsCollectorWorker" => [:manageiq_default], + "ManageIQ::Providers::Google::CloudManager::MetricsCollectorWorker" => [:manageiq_default], + "ManageIQ::Providers::Vmware::InfraManager::MetricsCollectorWorker" => [:manageiq_default], + "ManageIQ::Providers::Openstack::CloudManager::MetricsCollectorWorker" => [:manageiq_default], + "ManageIQ::Providers::Openstack::NetworkManager::MetricsCollectorWorker" => [:manageiq_default], + "ManageIQ::Providers::Openstack::InfraManager::MetricsCollectorWorker" => [:manageiq_default], + "MiqEmsMetricsProcessorWorker" => [:manageiq_default], + "MiqEmsRefreshCoreWorker" => [:manageiq_default], + "ManageIQ::Providers::Azure::CloudManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Azure::NetworkManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Amazon::CloudManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Amazon::NetworkManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Amazon::StorageManager::Ebs::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Amazon::StorageManager::S3::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Google::CloudManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Google::NetworkManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::AnsibleTower::AutomationManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::EmbeddedAnsible::AutomationManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Foreman::ConfigurationManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Foreman::ProvisioningManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Hawkular::MiddlewareManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Hawkular::DatawarehouseManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Kubernetes::ContainerManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Openshift::ContainerManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Microsoft::InfraManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Redhat::InfraManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Openstack::CloudManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Openstack::NetworkManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Openstack::InfraManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::StorageManager::CinderManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::StorageManager::SwiftManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Vmware::CloudManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Vmware::NetworkManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Vmware::InfraManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Nuage::NetworkManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Lenovo::PhysicalInfraManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Amazon::CloudManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::AnsibleTower::AutomationManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::EmbeddedAnsible::AutomationManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Azure::CloudManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Hawkular::MiddlewareManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Hawkular::DatawarehouseManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Google::CloudManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Kubernetes::ContainerManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Openshift::ContainerManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Redhat::InfraManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Openstack::CloudManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Openstack::NetworkManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Openstack::InfraManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::StorageManager::CinderManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Vmware::InfraManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Vmware::CloudManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Lenovo::PhysicalInfraManager::EventCatcher" => [:manageiq_default], + "EmbeddedAnsibleWorker" => [:manageiq_default], "MiqEventHandler" => [], "MiqGenericWorker" => [], "MiqPriorityWorker" => [], "MiqReportingWorker" => [], "MiqScheduleWorker" => [], - "MiqSmartProxyWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "MiqSmartProxyWorker" => [:manageiq_default], "MiqWebsocketWorker" => %w(ui_dependencies web_server web_socket), "MiqUiWorker" => %w(web_server ui_dependencies), - "MiqVimBrokerWorker" => MIQ_DEFAULT_BUNDLER_GROUPS, + "MiqVimBrokerWorker" => [:manageiq_default], "MiqWebServiceWorker" => %w(web_server ui_dependencies), - "MiqCockpitWsWorker" => MIQ_DEFAULT_BUNDLER_GROUPS + "MiqCockpitWsWorker" => [:manageiq_default] }.freeze MIQ_WORKER_TYPES_IN_KILL_ORDER = %w( From a1e4a95ebc895502304f59c7a9d6c2cf3645211a Mon Sep 17 00:00:00 2001 From: Joe Rafaniello Date: Mon, 19 Jun 2017 16:55:32 -0400 Subject: [PATCH 05/12] Add rest_api, ssa, nuage, automate, and open4 --- Gemfile | 25 ++++++++++++++++++++----- lib/workers/miq_worker_types.rb | 6 +++--- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/Gemfile b/Gemfile index dbb9753dd08..78048827c17 100644 --- a/Gemfile +++ b/Gemfile @@ -17,10 +17,7 @@ def manageiq_plugin(plugin_name) end end -manageiq_plugin "manageiq-automation_engine" -manageiq_plugin "manageiq-content" manageiq_plugin "manageiq-providers-ansible_tower" # can't move this down yet, because we can't autoload ManageIQ::Providers::AnsibleTower::Shared -manageiq_plugin "manageiq-providers-nuage" manageiq_plugin "manageiq-schema" # Unmodified gems @@ -41,14 +38,12 @@ gem "hamlit", "~>2.7.0" gem "inifile", "~>3.0", :require => false gem "manageiq-api-client", "~>0.1.0", :require => false gem "manageiq-network_discovery", "~>0.1.1", :require => false -gem "manageiq-smartstate", "~>0.1.1", :require => false gem "mime-types", "~>2.6.1", :path => "mime-types-redirector" gem "more_core_extensions", "~>3.2" gem "nakayoshi_fork", "~>0.0.3" # provides a more CoW friendly fork (GC a few times before fork) gem "net-ldap", "~>0.14.0", :require => false gem "net-ping", "~>1.7.4", :require => false gem "net-ssh", "=3.2.0", :require => false -gem "open4", "~>1.3.0", :require => false gem "openscap", "~>0.4.3", :require => false gem "query_relation", "~>0.1.0", :require => false gem "rails", "~>5.0.2" @@ -111,6 +106,10 @@ group :lenovo, :manageiq_default do manageiq_plugin "manageiq-providers-lenovo" end +group :nuage, :manageiq_default do + manageiq_plugin "manageiq-providers-nuage" +end + group :openshift, :manageiq_default do manageiq_plugin "manageiq-providers-openshift" gem "htauth", "2.0.0", :require => false # used by container deployment @@ -140,8 +139,16 @@ group :google, :openshift, :manageiq_default do gem "sshkey", "~>1.8.0", :require => false end +group :automate, :cockpit, :manageiq_default do + gem "open4", "~>1.3.0", :require => false +end + ### end of provider bundler groups +group :automate, :manageiq_default do + manageiq_plugin "manageiq-automation_engine" +end + group :replication, :manageiq_default do gem "pg-pglogical", "~>1.1.0", :require => false end @@ -150,6 +157,14 @@ group :rest_api, :manageiq_default do gem "jbuilder", "~>2.5.0" # For the REST API end +group :seed, :manageiq_default do + manageiq_plugin "manageiq-content" +end + +group :smartstate, :manageiq_default do + gem "manageiq-smartstate", "~>0.1.1", :require => false +end + group :ui_dependencies, :manageiq_default do # Added to Bundler.require in config/application.rb manageiq_plugin "manageiq-ui-classic" # Modified gems (forked on Github) diff --git a/lib/workers/miq_worker_types.rb b/lib/workers/miq_worker_types.rb index ccad5a05028..b6ef6583aaf 100644 --- a/lib/workers/miq_worker_types.rb +++ b/lib/workers/miq_worker_types.rb @@ -65,11 +65,11 @@ "MiqPriorityWorker" => [], "MiqReportingWorker" => [], "MiqScheduleWorker" => [], - "MiqSmartProxyWorker" => [:manageiq_default], + "MiqSmartProxyWorker" => [:smartstate], "MiqWebsocketWorker" => %w(ui_dependencies web_server web_socket), - "MiqUiWorker" => %w(web_server ui_dependencies), + "MiqUiWorker" => %w(ui_dependencies web_server), "MiqVimBrokerWorker" => [:manageiq_default], - "MiqWebServiceWorker" => %w(web_server ui_dependencies), + "MiqWebServiceWorker" => %w(rest_api ui_dependencies web_server), "MiqCockpitWsWorker" => [:manageiq_default] }.freeze From 2ae3e30d475eb1fe85e982edae550ecdc1d29ca1 Mon Sep 17 00:00:00 2001 From: Joe Rafaniello Date: Tue, 20 Jun 2017 11:32:24 -0400 Subject: [PATCH 06/12] Keep Runner.new interface as a hash for now --- lib/workers/bin/run_single_worker.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/workers/bin/run_single_worker.rb b/lib/workers/bin/run_single_worker.rb index adc831c7729..16848c6ba94 100644 --- a/lib/workers/bin/run_single_worker.rb +++ b/lib/workers/bin/run_single_worker.rb @@ -64,7 +64,7 @@ end begin - worker.class::Runner.start_worker(worker.guid) + worker.class::Runner.start_worker(:guid => worker.guid) ensure worker.delete end From 8907d78ae659ed442ce1a39c929505fbc5144688 Mon Sep 17 00:00:00 2001 From: Joe Rafaniello Date: Wed, 21 Jun 2017 15:54:43 -0400 Subject: [PATCH 07/12] Align all the things for readability. --- lib/workers/miq_worker_types.rb | 136 ++++++++++++++++---------------- 1 file changed, 68 insertions(+), 68 deletions(-) diff --git a/lib/workers/miq_worker_types.rb b/lib/workers/miq_worker_types.rb index b6ef6583aaf..e75d148486c 100644 --- a/lib/workers/miq_worker_types.rb +++ b/lib/workers/miq_worker_types.rb @@ -2,75 +2,75 @@ # global namespace MIQ_WORKER_TYPES = { - "ManageIQ::Providers::Azure::CloudManager::MetricsCollectorWorker" => [:manageiq_default], - "ManageIQ::Providers::Amazon::CloudManager::MetricsCollectorWorker" => [:manageiq_default], - "ManageIQ::Providers::Redhat::InfraManager::MetricsCollectorWorker" => [:manageiq_default], + "ManageIQ::Providers::Azure::CloudManager::MetricsCollectorWorker" => [:manageiq_default], + "ManageIQ::Providers::Amazon::CloudManager::MetricsCollectorWorker" => [:manageiq_default], + "ManageIQ::Providers::Redhat::InfraManager::MetricsCollectorWorker" => [:manageiq_default], "ManageIQ::Providers::Kubernetes::ContainerManager::MetricsCollectorWorker" => [:manageiq_default], - "ManageIQ::Providers::Openshift::ContainerManager::MetricsCollectorWorker" => [:manageiq_default], - "ManageIQ::Providers::Google::CloudManager::MetricsCollectorWorker" => [:manageiq_default], - "ManageIQ::Providers::Vmware::InfraManager::MetricsCollectorWorker" => [:manageiq_default], - "ManageIQ::Providers::Openstack::CloudManager::MetricsCollectorWorker" => [:manageiq_default], - "ManageIQ::Providers::Openstack::NetworkManager::MetricsCollectorWorker" => [:manageiq_default], - "ManageIQ::Providers::Openstack::InfraManager::MetricsCollectorWorker" => [:manageiq_default], - "MiqEmsMetricsProcessorWorker" => [:manageiq_default], - "MiqEmsRefreshCoreWorker" => [:manageiq_default], - "ManageIQ::Providers::Azure::CloudManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Azure::NetworkManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Amazon::CloudManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Amazon::NetworkManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Amazon::StorageManager::Ebs::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Amazon::StorageManager::S3::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Google::CloudManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Google::NetworkManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::AnsibleTower::AutomationManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::EmbeddedAnsible::AutomationManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Foreman::ConfigurationManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Foreman::ProvisioningManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Hawkular::MiddlewareManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Hawkular::DatawarehouseManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Kubernetes::ContainerManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Openshift::ContainerManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Microsoft::InfraManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Redhat::InfraManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Openstack::CloudManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Openstack::NetworkManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Openstack::InfraManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::StorageManager::CinderManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::StorageManager::SwiftManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Vmware::CloudManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Vmware::NetworkManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Vmware::InfraManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Nuage::NetworkManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Lenovo::PhysicalInfraManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Amazon::CloudManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::AnsibleTower::AutomationManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::EmbeddedAnsible::AutomationManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Azure::CloudManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Hawkular::MiddlewareManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Hawkular::DatawarehouseManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Google::CloudManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Kubernetes::ContainerManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Openshift::ContainerManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Redhat::InfraManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Openstack::CloudManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Openstack::NetworkManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Openstack::InfraManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::StorageManager::CinderManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Vmware::InfraManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Vmware::CloudManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Lenovo::PhysicalInfraManager::EventCatcher" => [:manageiq_default], - "EmbeddedAnsibleWorker" => [:manageiq_default], - "MiqEventHandler" => [], - "MiqGenericWorker" => [], - "MiqPriorityWorker" => [], - "MiqReportingWorker" => [], - "MiqScheduleWorker" => [], - "MiqSmartProxyWorker" => [:smartstate], - "MiqWebsocketWorker" => %w(ui_dependencies web_server web_socket), - "MiqUiWorker" => %w(ui_dependencies web_server), - "MiqVimBrokerWorker" => [:manageiq_default], - "MiqWebServiceWorker" => %w(rest_api ui_dependencies web_server), - "MiqCockpitWsWorker" => [:manageiq_default] + "ManageIQ::Providers::Openshift::ContainerManager::MetricsCollectorWorker" => [:manageiq_default], + "ManageIQ::Providers::Google::CloudManager::MetricsCollectorWorker" => [:manageiq_default], + "ManageIQ::Providers::Vmware::InfraManager::MetricsCollectorWorker" => [:manageiq_default], + "ManageIQ::Providers::Openstack::CloudManager::MetricsCollectorWorker" => [:manageiq_default], + "ManageIQ::Providers::Openstack::NetworkManager::MetricsCollectorWorker" => [:manageiq_default], + "ManageIQ::Providers::Openstack::InfraManager::MetricsCollectorWorker" => [:manageiq_default], + "MiqEmsMetricsProcessorWorker" => [:manageiq_default], + "MiqEmsRefreshCoreWorker" => [:manageiq_default], + "ManageIQ::Providers::Azure::CloudManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Azure::NetworkManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Amazon::CloudManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Amazon::NetworkManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Amazon::StorageManager::Ebs::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Amazon::StorageManager::S3::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Google::CloudManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Google::NetworkManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::AnsibleTower::AutomationManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::EmbeddedAnsible::AutomationManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Foreman::ConfigurationManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Foreman::ProvisioningManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Hawkular::MiddlewareManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Hawkular::DatawarehouseManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Kubernetes::ContainerManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Openshift::ContainerManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Microsoft::InfraManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Redhat::InfraManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Openstack::CloudManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Openstack::NetworkManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Openstack::InfraManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::StorageManager::CinderManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::StorageManager::SwiftManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Vmware::CloudManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Vmware::NetworkManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Vmware::InfraManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Nuage::NetworkManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Lenovo::PhysicalInfraManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Amazon::CloudManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::AnsibleTower::AutomationManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::EmbeddedAnsible::AutomationManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Azure::CloudManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Hawkular::MiddlewareManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Hawkular::DatawarehouseManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Google::CloudManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Kubernetes::ContainerManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Openshift::ContainerManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Redhat::InfraManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Openstack::CloudManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Openstack::NetworkManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Openstack::InfraManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::StorageManager::CinderManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Vmware::InfraManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Vmware::CloudManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Lenovo::PhysicalInfraManager::EventCatcher" => [:manageiq_default], + "EmbeddedAnsibleWorker" => [:manageiq_default], + "MiqEventHandler" => [], + "MiqGenericWorker" => [], + "MiqPriorityWorker" => [], + "MiqReportingWorker" => [], + "MiqScheduleWorker" => [], + "MiqSmartProxyWorker" => [:smartstate], + "MiqWebsocketWorker" => %w(ui_dependencies web_server web_socket), + "MiqUiWorker" => %w(ui_dependencies web_server), + "MiqVimBrokerWorker" => [:manageiq_default], + "MiqWebServiceWorker" => %w(rest_api ui_dependencies web_server), + "MiqCockpitWsWorker" => [:manageiq_default] }.freeze MIQ_WORKER_TYPES_IN_KILL_ORDER = %w( From 59b2b3aa3d23b18ed70f9ef71510dff3ea1a1ab5 Mon Sep 17 00:00:00 2001 From: Joe Rafaniello Date: Wed, 21 Jun 2017 15:57:15 -0400 Subject: [PATCH 08/12] Sort by the worker class keys so similar providers stick together. --- lib/workers/miq_worker_types.rb | 82 ++++++++++++++++----------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/lib/workers/miq_worker_types.rb b/lib/workers/miq_worker_types.rb index e75d148486c..cdc17ea8c3e 100644 --- a/lib/workers/miq_worker_types.rb +++ b/lib/workers/miq_worker_types.rb @@ -2,75 +2,75 @@ # global namespace MIQ_WORKER_TYPES = { - "ManageIQ::Providers::Azure::CloudManager::MetricsCollectorWorker" => [:manageiq_default], + "ManageIQ::Providers::Amazon::CloudManager::EventCatcher" => [:manageiq_default], "ManageIQ::Providers::Amazon::CloudManager::MetricsCollectorWorker" => [:manageiq_default], - "ManageIQ::Providers::Redhat::InfraManager::MetricsCollectorWorker" => [:manageiq_default], - "ManageIQ::Providers::Kubernetes::ContainerManager::MetricsCollectorWorker" => [:manageiq_default], - "ManageIQ::Providers::Openshift::ContainerManager::MetricsCollectorWorker" => [:manageiq_default], - "ManageIQ::Providers::Google::CloudManager::MetricsCollectorWorker" => [:manageiq_default], - "ManageIQ::Providers::Vmware::InfraManager::MetricsCollectorWorker" => [:manageiq_default], - "ManageIQ::Providers::Openstack::CloudManager::MetricsCollectorWorker" => [:manageiq_default], - "ManageIQ::Providers::Openstack::NetworkManager::MetricsCollectorWorker" => [:manageiq_default], - "ManageIQ::Providers::Openstack::InfraManager::MetricsCollectorWorker" => [:manageiq_default], - "MiqEmsMetricsProcessorWorker" => [:manageiq_default], - "MiqEmsRefreshCoreWorker" => [:manageiq_default], - "ManageIQ::Providers::Azure::CloudManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Azure::NetworkManager::RefreshWorker" => [:manageiq_default], "ManageIQ::Providers::Amazon::CloudManager::RefreshWorker" => [:manageiq_default], "ManageIQ::Providers::Amazon::NetworkManager::RefreshWorker" => [:manageiq_default], "ManageIQ::Providers::Amazon::StorageManager::Ebs::RefreshWorker" => [:manageiq_default], "ManageIQ::Providers::Amazon::StorageManager::S3::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Google::CloudManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Google::NetworkManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::AnsibleTower::AutomationManager::EventCatcher" => [:manageiq_default], "ManageIQ::Providers::AnsibleTower::AutomationManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Azure::CloudManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Azure::CloudManager::MetricsCollectorWorker" => [:manageiq_default], + "ManageIQ::Providers::Azure::CloudManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Azure::NetworkManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::EmbeddedAnsible::AutomationManager::EventCatcher" => [:manageiq_default], "ManageIQ::Providers::EmbeddedAnsible::AutomationManager::RefreshWorker" => [:manageiq_default], "ManageIQ::Providers::Foreman::ConfigurationManager::RefreshWorker" => [:manageiq_default], "ManageIQ::Providers::Foreman::ProvisioningManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Hawkular::MiddlewareManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Google::CloudManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Google::CloudManager::MetricsCollectorWorker" => [:manageiq_default], + "ManageIQ::Providers::Google::CloudManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Google::NetworkManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Hawkular::DatawarehouseManager::EventCatcher" => [:manageiq_default], "ManageIQ::Providers::Hawkular::DatawarehouseManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Hawkular::MiddlewareManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Hawkular::MiddlewareManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Kubernetes::ContainerManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Kubernetes::ContainerManager::MetricsCollectorWorker" => [:manageiq_default], "ManageIQ::Providers::Kubernetes::ContainerManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Openshift::ContainerManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Lenovo::PhysicalInfraManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Lenovo::PhysicalInfraManager::RefreshWorker" => [:manageiq_default], "ManageIQ::Providers::Microsoft::InfraManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Redhat::InfraManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Openstack::CloudManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Openstack::NetworkManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Openstack::InfraManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::StorageManager::CinderManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::StorageManager::SwiftManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Vmware::CloudManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Vmware::NetworkManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Vmware::InfraManager::RefreshWorker" => [:manageiq_default], "ManageIQ::Providers::Nuage::NetworkManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Lenovo::PhysicalInfraManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Amazon::CloudManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::AnsibleTower::AutomationManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::EmbeddedAnsible::AutomationManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Azure::CloudManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Hawkular::MiddlewareManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Hawkular::DatawarehouseManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Google::CloudManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Kubernetes::ContainerManager::EventCatcher" => [:manageiq_default], "ManageIQ::Providers::Openshift::ContainerManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Redhat::InfraManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Openshift::ContainerManager::MetricsCollectorWorker" => [:manageiq_default], + "ManageIQ::Providers::Openshift::ContainerManager::RefreshWorker" => [:manageiq_default], "ManageIQ::Providers::Openstack::CloudManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Openstack::NetworkManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Openstack::CloudManager::MetricsCollectorWorker" => [:manageiq_default], + "ManageIQ::Providers::Openstack::CloudManager::RefreshWorker" => [:manageiq_default], "ManageIQ::Providers::Openstack::InfraManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Openstack::InfraManager::MetricsCollectorWorker" => [:manageiq_default], + "ManageIQ::Providers::Openstack::InfraManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Openstack::NetworkManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Openstack::NetworkManager::MetricsCollectorWorker" => [:manageiq_default], + "ManageIQ::Providers::Openstack::NetworkManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Redhat::InfraManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Redhat::InfraManager::MetricsCollectorWorker" => [:manageiq_default], + "ManageIQ::Providers::Redhat::InfraManager::RefreshWorker" => [:manageiq_default], "ManageIQ::Providers::StorageManager::CinderManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Vmware::InfraManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::StorageManager::CinderManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::StorageManager::SwiftManager::RefreshWorker" => [:manageiq_default], "ManageIQ::Providers::Vmware::CloudManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Lenovo::PhysicalInfraManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Vmware::CloudManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Vmware::InfraManager::EventCatcher" => [:manageiq_default], + "ManageIQ::Providers::Vmware::InfraManager::MetricsCollectorWorker" => [:manageiq_default], + "ManageIQ::Providers::Vmware::InfraManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Vmware::NetworkManager::RefreshWorker" => [:manageiq_default], "EmbeddedAnsibleWorker" => [:manageiq_default], + "MiqCockpitWsWorker" => [:manageiq_default], + "MiqEmsMetricsProcessorWorker" => [:manageiq_default], + "MiqEmsRefreshCoreWorker" => [:manageiq_default], "MiqEventHandler" => [], "MiqGenericWorker" => [], "MiqPriorityWorker" => [], "MiqReportingWorker" => [], "MiqScheduleWorker" => [], "MiqSmartProxyWorker" => [:smartstate], - "MiqWebsocketWorker" => %w(ui_dependencies web_server web_socket), "MiqUiWorker" => %w(ui_dependencies web_server), "MiqVimBrokerWorker" => [:manageiq_default], "MiqWebServiceWorker" => %w(rest_api ui_dependencies web_server), - "MiqCockpitWsWorker" => [:manageiq_default] + "MiqWebsocketWorker" => %w(ui_dependencies web_server web_socket) }.freeze MIQ_WORKER_TYPES_IN_KILL_ORDER = %w( From c59ca01c34001fca612e551139ceed8df9f704b0 Mon Sep 17 00:00:00 2001 From: Joe Rafaniello Date: Wed, 21 Jun 2017 16:11:25 -0400 Subject: [PATCH 09/12] Aggressively specify bundler groups for each worker. --- lib/workers/miq_worker_types.rb | 122 ++++++++++++++++---------------- 1 file changed, 61 insertions(+), 61 deletions(-) diff --git a/lib/workers/miq_worker_types.rb b/lib/workers/miq_worker_types.rb index cdc17ea8c3e..f55bd2632fe 100644 --- a/lib/workers/miq_worker_types.rb +++ b/lib/workers/miq_worker_types.rb @@ -2,75 +2,75 @@ # global namespace MIQ_WORKER_TYPES = { - "ManageIQ::Providers::Amazon::CloudManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Amazon::CloudManager::MetricsCollectorWorker" => [:manageiq_default], - "ManageIQ::Providers::Amazon::CloudManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Amazon::NetworkManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Amazon::StorageManager::Ebs::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Amazon::StorageManager::S3::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::AnsibleTower::AutomationManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::AnsibleTower::AutomationManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Azure::CloudManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Azure::CloudManager::MetricsCollectorWorker" => [:manageiq_default], - "ManageIQ::Providers::Azure::CloudManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Azure::NetworkManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::EmbeddedAnsible::AutomationManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::EmbeddedAnsible::AutomationManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Foreman::ConfigurationManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Foreman::ProvisioningManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Google::CloudManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Google::CloudManager::MetricsCollectorWorker" => [:manageiq_default], - "ManageIQ::Providers::Google::CloudManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Google::NetworkManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Hawkular::DatawarehouseManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Hawkular::DatawarehouseManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Hawkular::MiddlewareManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Hawkular::MiddlewareManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Kubernetes::ContainerManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Kubernetes::ContainerManager::MetricsCollectorWorker" => [:manageiq_default], - "ManageIQ::Providers::Kubernetes::ContainerManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Lenovo::PhysicalInfraManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Lenovo::PhysicalInfraManager::RefreshWorker" => [:manageiq_default], + "ManageIQ::Providers::Amazon::CloudManager::EventCatcher" => [:amazon], + "ManageIQ::Providers::Amazon::CloudManager::MetricsCollectorWorker" => [:amazon], + "ManageIQ::Providers::Amazon::CloudManager::RefreshWorker" => [:amazon], + "ManageIQ::Providers::Amazon::NetworkManager::RefreshWorker" => [:amazon], + "ManageIQ::Providers::Amazon::StorageManager::Ebs::RefreshWorker" => [:amazon], + "ManageIQ::Providers::Amazon::StorageManager::S3::RefreshWorker" => [:amazon], + "ManageIQ::Providers::AnsibleTower::AutomationManager::EventCatcher" => [:ansible], + "ManageIQ::Providers::AnsibleTower::AutomationManager::RefreshWorker" => [:ansible], + "ManageIQ::Providers::Azure::CloudManager::EventCatcher" => [:azure], + "ManageIQ::Providers::Azure::CloudManager::MetricsCollectorWorker" => [:azure], + "ManageIQ::Providers::Azure::CloudManager::RefreshWorker" => [:azure], + "ManageIQ::Providers::Azure::NetworkManager::RefreshWorker" => [:azure], + "ManageIQ::Providers::EmbeddedAnsible::AutomationManager::EventCatcher" => [:ansible], + "ManageIQ::Providers::EmbeddedAnsible::AutomationManager::RefreshWorker" => [:ansible], + "ManageIQ::Providers::Foreman::ConfigurationManager::RefreshWorker" => [:foreman], + "ManageIQ::Providers::Foreman::ProvisioningManager::RefreshWorker" => [:foreman], + "ManageIQ::Providers::Google::CloudManager::EventCatcher" => [:google], + "ManageIQ::Providers::Google::CloudManager::MetricsCollectorWorker" => [:google], + "ManageIQ::Providers::Google::CloudManager::RefreshWorker" => [:google], + "ManageIQ::Providers::Google::NetworkManager::RefreshWorker" => [:google], + "ManageIQ::Providers::Hawkular::DatawarehouseManager::EventCatcher" => [:hawkular], + "ManageIQ::Providers::Hawkular::DatawarehouseManager::RefreshWorker" => [:hawkular], + "ManageIQ::Providers::Hawkular::MiddlewareManager::EventCatcher" => [:hawkular], + "ManageIQ::Providers::Hawkular::MiddlewareManager::RefreshWorker" => [:hawkular], + "ManageIQ::Providers::Kubernetes::ContainerManager::EventCatcher" => %i(kubernetes openshift), + "ManageIQ::Providers::Kubernetes::ContainerManager::MetricsCollectorWorker" => %i(kubernetes openshift), + "ManageIQ::Providers::Kubernetes::ContainerManager::RefreshWorker" => %i(kubernetes openshift), + "ManageIQ::Providers::Lenovo::PhysicalInfraManager::EventCatcher" => [:lenovo], + "ManageIQ::Providers::Lenovo::PhysicalInfraManager::RefreshWorker" => [:lenovo], "ManageIQ::Providers::Microsoft::InfraManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Nuage::NetworkManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Openshift::ContainerManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Openshift::ContainerManager::MetricsCollectorWorker" => [:manageiq_default], - "ManageIQ::Providers::Openshift::ContainerManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Openstack::CloudManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Openstack::CloudManager::MetricsCollectorWorker" => [:manageiq_default], - "ManageIQ::Providers::Openstack::CloudManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Openstack::InfraManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Openstack::InfraManager::MetricsCollectorWorker" => [:manageiq_default], - "ManageIQ::Providers::Openstack::InfraManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Openstack::NetworkManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Openstack::NetworkManager::MetricsCollectorWorker" => [:manageiq_default], - "ManageIQ::Providers::Openstack::NetworkManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Redhat::InfraManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Redhat::InfraManager::MetricsCollectorWorker" => [:manageiq_default], - "ManageIQ::Providers::Redhat::InfraManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::StorageManager::CinderManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::StorageManager::CinderManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::StorageManager::SwiftManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Vmware::CloudManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Vmware::CloudManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Vmware::InfraManager::EventCatcher" => [:manageiq_default], - "ManageIQ::Providers::Vmware::InfraManager::MetricsCollectorWorker" => [:manageiq_default], - "ManageIQ::Providers::Vmware::InfraManager::RefreshWorker" => [:manageiq_default], - "ManageIQ::Providers::Vmware::NetworkManager::RefreshWorker" => [:manageiq_default], - "EmbeddedAnsibleWorker" => [:manageiq_default], - "MiqCockpitWsWorker" => [:manageiq_default], - "MiqEmsMetricsProcessorWorker" => [:manageiq_default], - "MiqEmsRefreshCoreWorker" => [:manageiq_default], + "ManageIQ::Providers::Nuage::NetworkManager::RefreshWorker" => [:nuage], + "ManageIQ::Providers::Openshift::ContainerManager::EventCatcher" => %i(kubernetes openshift), + "ManageIQ::Providers::Openshift::ContainerManager::MetricsCollectorWorker" => %i(kubernetes openshift), + "ManageIQ::Providers::Openshift::ContainerManager::RefreshWorker" => %i(kubernetes openshift), + "ManageIQ::Providers::Openstack::CloudManager::EventCatcher" => [:openstack], + "ManageIQ::Providers::Openstack::CloudManager::MetricsCollectorWorker" => [:openstack], + "ManageIQ::Providers::Openstack::CloudManager::RefreshWorker" => [:openstack], + "ManageIQ::Providers::Openstack::InfraManager::EventCatcher" => [:openstack], + "ManageIQ::Providers::Openstack::InfraManager::MetricsCollectorWorker" => [:openstack], + "ManageIQ::Providers::Openstack::InfraManager::RefreshWorker" => [:openstack], + "ManageIQ::Providers::Openstack::NetworkManager::EventCatcher" => [:openstack], + "ManageIQ::Providers::Openstack::NetworkManager::MetricsCollectorWorker" => [:openstack], + "ManageIQ::Providers::Openstack::NetworkManager::RefreshWorker" => [:openstack], + "ManageIQ::Providers::Redhat::InfraManager::EventCatcher" => [:ovirt], + "ManageIQ::Providers::Redhat::InfraManager::MetricsCollectorWorker" => [:ovirt], + "ManageIQ::Providers::Redhat::InfraManager::RefreshWorker" => [:ovirt], + "ManageIQ::Providers::StorageManager::CinderManager::EventCatcher" => [:openstack], + "ManageIQ::Providers::StorageManager::CinderManager::RefreshWorker" => [:openstack], + "ManageIQ::Providers::StorageManager::SwiftManager::RefreshWorker" => [:openstack], + "ManageIQ::Providers::Vmware::CloudManager::EventCatcher" => [:vmware], + "ManageIQ::Providers::Vmware::CloudManager::RefreshWorker" => [:vmware], + "ManageIQ::Providers::Vmware::InfraManager::EventCatcher" => [:vmware], + "ManageIQ::Providers::Vmware::InfraManager::MetricsCollectorWorker" => [:vmware], + "ManageIQ::Providers::Vmware::InfraManager::RefreshWorker" => [:vmware], + "ManageIQ::Providers::Vmware::NetworkManager::RefreshWorker" => [:vmware], + "EmbeddedAnsibleWorker" => [], + "MiqCockpitWsWorker" => [:cockpit], + "MiqEmsMetricsProcessorWorker" => [], + "MiqEmsRefreshCoreWorker" => [], "MiqEventHandler" => [], "MiqGenericWorker" => [], "MiqPriorityWorker" => [], "MiqReportingWorker" => [], "MiqScheduleWorker" => [], "MiqSmartProxyWorker" => [:smartstate], - "MiqUiWorker" => %w(ui_dependencies web_server), + "MiqUiWorker" => %i(ui_dependencies web_server), "MiqVimBrokerWorker" => [:manageiq_default], - "MiqWebServiceWorker" => %w(rest_api ui_dependencies web_server), - "MiqWebsocketWorker" => %w(ui_dependencies web_server web_socket) + "MiqWebServiceWorker" => %i(rest_api ui_dependencies web_server), + "MiqWebsocketWorker" => %i(ui_dependencies web_server web_socket) }.freeze MIQ_WORKER_TYPES_IN_KILL_ORDER = %w( From 6d5270d60c93bad96192d6ccd72cf6ec1966d725 Mon Sep 17 00:00:00 2001 From: Joe Rafaniello Date: Thu, 22 Jun 2017 15:58:04 -0400 Subject: [PATCH 10/12] Add scheduler bundler group, do automate in seeding. --- Gemfile | 7 +++++-- lib/workers/miq_worker_types.rb | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 78048827c17..781cc08e7fb 100644 --- a/Gemfile +++ b/Gemfile @@ -52,7 +52,6 @@ gem "rest-client", "~>2.0.0", :require => false gem "ripper_ruby_parser", :require => false gem "ruby-progressbar", "~>1.7.0", :require => false gem "rubyzip", "~>1.2.1", :require => false -gem "rufus-scheduler", "~>3.1.3", :require => false gem "rugged", "~>0.25.0", :require => false gem "simple-rss", "~>1.3.1", :require => false gem "snmp", "~>1.2.0", :require => false @@ -145,7 +144,7 @@ end ### end of provider bundler groups -group :automate, :manageiq_default do +group :automate, :seed, :manageiq_default do manageiq_plugin "manageiq-automation_engine" end @@ -157,6 +156,10 @@ group :rest_api, :manageiq_default do gem "jbuilder", "~>2.5.0" # For the REST API end +group :scheduler, :manageiq_default do + gem "rufus-scheduler", "~>3.1.3", :require => false +end + group :seed, :manageiq_default do manageiq_plugin "manageiq-content" end diff --git a/lib/workers/miq_worker_types.rb b/lib/workers/miq_worker_types.rb index f55bd2632fe..ca9f3d4b00b 100644 --- a/lib/workers/miq_worker_types.rb +++ b/lib/workers/miq_worker_types.rb @@ -65,7 +65,7 @@ "MiqGenericWorker" => [], "MiqPriorityWorker" => [], "MiqReportingWorker" => [], - "MiqScheduleWorker" => [], + "MiqScheduleWorker" => [:scheduler], "MiqSmartProxyWorker" => [:smartstate], "MiqUiWorker" => %i(ui_dependencies web_server), "MiqVimBrokerWorker" => [:manageiq_default], From fa71aa58171de5f90bfaf821f3405a2e341a9230 Mon Sep 17 00:00:00 2001 From: Joe Rafaniello Date: Wed, 28 Jun 2017 11:52:44 -0400 Subject: [PATCH 11/12] Remove thin web server since it doesn't support our websocket notifications. --- Gemfile | 1 - app/models/mixins/miq_web_server_runner_mixin.rb | 2 +- config/puma.rb | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 781cc08e7fb..b00a3ed6f08 100644 --- a/Gemfile +++ b/Gemfile @@ -179,7 +179,6 @@ group :web_server, :manageiq_default do gem "puma", "~>3.3.0" gem "responders", "~>2.0" gem "ruby-dbus" # For external auth - gem "thin", "~>1.7.0", :require => false gem "secure_headers", "~>3.0.0" end diff --git a/app/models/mixins/miq_web_server_runner_mixin.rb b/app/models/mixins/miq_web_server_runner_mixin.rb index f901db30b63..d7a3c4c7fde 100644 --- a/app/models/mixins/miq_web_server_runner_mixin.rb +++ b/app/models/mixins/miq_web_server_runner_mixin.rb @@ -11,7 +11,7 @@ def do_work def do_before_work_loop @worker.release_db_connection - # Since puma/thin traps interrupts, log that we're going away and update our worker row + # Since puma traps interrupts, log that we're going away and update our worker row at_exit { do_exit("Exit request received.") } end diff --git a/config/puma.rb b/config/puma.rb index b06d9b09f54..0fb12f3f6e6 100644 --- a/config/puma.rb +++ b/config/puma.rb @@ -1,7 +1,7 @@ # We run puma through rails server with options here: # https://github.com/ManageIQ/manageiq/blob/2920f76fe609147a6e7c68245a3717d55a7ece7e/app/models/mixins/miq_web_server_worker_mixin.rb#L162-L175 # -# Note, Rails::Server and Rack::Server don't expose all puma/thin web server options. +# Note, Rails::Server and Rack::Server don't expose all puma web server options. # # As of puma 3.0.0+, puma specific options can be put in config/puma.rb, see: # https://github.com/puma/puma/tree/a3136985887d44c79e623b1408a41779b71d8b23#configuration From dc40ab29f6c462975d9f3c83b54c54dfd0473187 Mon Sep 17 00:00:00 2001 From: Joe Rafaniello Date: Thu, 29 Jun 2017 16:17:49 -0400 Subject: [PATCH 12/12] Look if the Engine is loaded since that sets up autoload path --- app/models/application_record.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/application_record.rb b/app/models/application_record.rb index 6d99cdc1960..020bfca4615 100644 --- a/app/models/application_record.rb +++ b/app/models/application_record.rb @@ -15,7 +15,7 @@ class ApplicationRecord < ActiveRecord::Base extend ArTableLock # FIXME: UI code - decorator support - if defined?(ManageIQ::UI::Classic) + if defined?(ManageIQ::UI::Classic::Engine) extend MiqDecorator::Klass include MiqDecorator::Instance end