From 059b777d340135226135ba11db9fe29f345acfe1 Mon Sep 17 00:00:00 2001 From: Nick Carboni Date: Tue, 19 Nov 2019 15:35:49 -0500 Subject: [PATCH] Replace MIQ_WORKER_TYPES constant by using MiqWorkerType model --- .../worker_management/monitor/class_names.rb | 11 +- .../manageiq/provider/provider_generator.rb | 6 - lib/workers/bin/run_single_worker.rb | 12 +- lib/workers/miq_worker_types.rb | 146 ------------------ spec/lib/workers/miq_worker_types_spec.rb | 14 -- spec/models/miq_server/worker_monitor_spec.rb | 1 + .../miq_worker/container_common_spec.rb | 3 +- 7 files changed, 11 insertions(+), 182 deletions(-) delete mode 100644 lib/workers/miq_worker_types.rb delete mode 100644 spec/lib/workers/miq_worker_types_spec.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 973d8efc67c4..4de09fa0de75 100644 --- a/app/models/miq_server/worker_management/monitor/class_names.rb +++ b/app/models/miq_server/worker_management/monitor/class_names.rb @@ -1,20 +1,13 @@ -require "workers/miq_worker_types" - module MiqServer::WorkerManagement::Monitor::ClassNames extend ActiveSupport::Concern - # 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.keys - MONITOR_CLASS_NAMES_IN_KILL_ORDER = MIQ_WORKER_TYPES_IN_KILL_ORDER - module ClassMethods def monitor_class_names - MONITOR_CLASS_NAMES + MiqWorkerType.pluck(:worker_type) end def monitor_class_names_in_kill_order - MONITOR_CLASS_NAMES_IN_KILL_ORDER + MiqWorkerType.in_kill_order.pluck(:worker_type) end end end diff --git a/lib/generators/manageiq/provider/provider_generator.rb b/lib/generators/manageiq/provider/provider_generator.rb index 69bd7d427ecb..c787d76f5784 100644 --- a/lib/generators/manageiq/provider/provider_generator.rb +++ b/lib/generators/manageiq/provider/provider_generator.rb @@ -42,12 +42,6 @@ def create_dummy template "app/models/%plugin_path%/inventory/persister/cloud_manager.rb" template "app/models/%plugin_path%/inventory/persister.rb" template "app/models/%plugin_path%/cloud_manager.rb" - - inject_into_file Rails.root.join('lib/workers/miq_worker_types.rb'), <<~RB.indent(2), :after => "MIQ_WORKER_TYPES = {\n" - "#{class_name}::CloudManager::EventCatcher" => %i(manageiq_default), - "#{class_name}::CloudManager::MetricsCollectorWorker" => %i(manageiq_default), - "#{class_name}::CloudManager::RefreshWorker" => %i(manageiq_default), - RB end def create_vcr diff --git a/lib/workers/bin/run_single_worker.rb b/lib/workers/bin/run_single_worker.rb index 47d55f3bd6de..e5c54a61c388 100755 --- a/lib/workers/bin/run_single_worker.rb +++ b/lib/workers/bin/run_single_worker.rb @@ -60,27 +60,27 @@ def all_role_names opt_parser.parse! worker_class = ARGV[0] -require File.expand_path("../miq_worker_types", __dir__) +require File.expand_path("../../../config/environment", __dir__) if options[:list] - puts ::MIQ_WORKER_TYPES.keys + puts MiqWorkerType.pluck(:worker_type) exit end opt_parser.abort(opt_parser.help) unless worker_class -unless ::MIQ_WORKER_TYPES.keys.include?(worker_class) +worker_type = MiqWorkerType.find_by(:worker_type => worker_class) + +unless worker_type STDERR.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(',') +ENV["BUNDLER_GROUPS"] = worker_type.bundler_groups.join(',') options[:ems_id] ||= ENV["EMS_ID"] -require File.expand_path("../../../config/environment", __dir__) - if options[:roles].present? MiqServer.my_server.server_role_names += options[:roles] MiqServer.my_server.activate_roles(MiqServer.my_server.server_role_names) diff --git a/lib/workers/miq_worker_types.rb b/lib/workers/miq_worker_types.rb deleted file mode 100644 index 3c41149b5480..000000000000 --- a/lib/workers/miq_worker_types.rb +++ /dev/null @@ -1,146 +0,0 @@ -# TODO: Consider putting this in a module namespace instead of poluting the -# global namespace - -MIQ_WORKER_TYPES = { - "ManageIQ::Providers::Amazon::AgentCoordinatorWorker" => %i(manageiq_default), - "ManageIQ::Providers::Amazon::CloudManager::EventCatcher" => %i(manageiq_default), - "ManageIQ::Providers::Amazon::CloudManager::MetricsCollectorWorker" => %i(manageiq_default), - "ManageIQ::Providers::Amazon::CloudManager::RefreshWorker" => %i(manageiq_default), - "ManageIQ::Providers::Amazon::StorageManager::S3::RefreshWorker" => %i(manageiq_default), - "ManageIQ::Providers::AnsibleTower::AutomationManager::EventCatcher" => %i(manageiq_default), - "ManageIQ::Providers::AnsibleTower::AutomationManager::RefreshWorker" => %i(manageiq_default), - "ManageIQ::Providers::Azure::CloudManager::EventCatcher" => %i(manageiq_default), - "ManageIQ::Providers::Azure::CloudManager::MetricsCollectorWorker" => %i(manageiq_default), - "ManageIQ::Providers::Azure::CloudManager::RefreshWorker" => %i(manageiq_default), - "ManageIQ::Providers::AzureStack::CloudManager::EventCatcher" => %i[manageiq_default], - "ManageIQ::Providers::AzureStack::CloudManager::RefreshWorker" => %i[manageiq_default], - "ManageIQ::Providers::AzureStack::NetworkManager::RefreshWorker" => %i[manageiq_default], - "ManageIQ::Providers::Foreman::ConfigurationManager::RefreshWorker" => %i(manageiq_default), - "ManageIQ::Providers::Foreman::ProvisioningManager::RefreshWorker" => %i(manageiq_default), - "ManageIQ::Providers::Google::CloudManager::EventCatcher" => %i(manageiq_default), - "ManageIQ::Providers::Google::CloudManager::MetricsCollectorWorker" => %i(manageiq_default), - "ManageIQ::Providers::Google::CloudManager::RefreshWorker" => %i(manageiq_default), - "ManageIQ::Providers::Google::NetworkManager::RefreshWorker" => %i(manageiq_default), - "ManageIQ::Providers::Kubernetes::ContainerManager::EventCatcher" => %i(manageiq_default), - "ManageIQ::Providers::Kubernetes::ContainerManager::MetricsCollectorWorker" => %i(manageiq_default), - "ManageIQ::Providers::Kubernetes::ContainerManager::RefreshWorker" => %i(manageiq_default), - "ManageIQ::Providers::Kubernetes::MonitoringManager::EventCatcher" => %i(manageiq_default), - "ManageIQ::Providers::Kubevirt::InfraManager::RefreshWorker" => %i(manageiq_default), - "ManageIQ::Providers::Lenovo::PhysicalInfraManager::EventCatcher" => %i(manageiq_default), - "ManageIQ::Providers::Lenovo::PhysicalInfraManager::RefreshWorker" => %i(manageiq_default), - "ManageIQ::Providers::Microsoft::InfraManager::RefreshWorker" => %i(manageiq_default), - "ManageIQ::Providers::Nuage::NetworkManager::RefreshWorker" => %i(manageiq_default), - "ManageIQ::Providers::Nuage::NetworkManager::EventCatcher" => %i(manageiq_default), - "ManageIQ::Providers::Openshift::ContainerManager::EventCatcher" => %i(manageiq_default), - "ManageIQ::Providers::Openshift::ContainerManager::MetricsCollectorWorker" => %i(manageiq_default), - "ManageIQ::Providers::Openshift::ContainerManager::RefreshWorker" => %i(manageiq_default), - "ManageIQ::Providers::Openshift::MonitoringManager::EventCatcher" => %i(manageiq_default), - "ManageIQ::Providers::Openstack::CloudManager::EventCatcher" => %i(manageiq_default), - "ManageIQ::Providers::Openstack::CloudManager::MetricsCollectorWorker" => %i(manageiq_default), - "ManageIQ::Providers::Openstack::CloudManager::RefreshWorker" => %i(manageiq_default), - "ManageIQ::Providers::Openstack::InfraManager::EventCatcher" => %i(manageiq_default), - "ManageIQ::Providers::Openstack::InfraManager::MetricsCollectorWorker" => %i(manageiq_default), - "ManageIQ::Providers::Openstack::InfraManager::RefreshWorker" => %i(manageiq_default), - "ManageIQ::Providers::Openstack::NetworkManager::EventCatcher" => %i(manageiq_default), - "ManageIQ::Providers::Openstack::NetworkManager::MetricsCollectorWorker" => %i(manageiq_default), - "ManageIQ::Providers::Openstack::StorageManager::CinderManager::EventCatcher" => %i(manageiq_default), - "ManageIQ::Providers::Redfish::PhysicalInfraManager::EventCatcher" => %i(manageiq_default), - "ManageIQ::Providers::Redfish::PhysicalInfraManager::RefreshWorker" => %i(manageiq_default), - "ManageIQ::Providers::Redhat::InfraManager::EventCatcher" => %i(manageiq_default), - "ManageIQ::Providers::Redhat::InfraManager::MetricsCollectorWorker" => %i(manageiq_default), - "ManageIQ::Providers::Redhat::InfraManager::RefreshWorker" => %i(manageiq_default), - "ManageIQ::Providers::Redhat::NetworkManager::EventCatcher" => %i(manageiq_default), - "ManageIQ::Providers::Redhat::NetworkManager::MetricsCollectorWorker" => %i(manageiq_default), - "ManageIQ::Providers::Redhat::NetworkManager::RefreshWorker" => %i(manageiq_default), - "ManageIQ::Providers::Vmware::CloudManager::EventCatcher" => %i(manageiq_default), - "ManageIQ::Providers::Vmware::CloudManager::RefreshWorker" => %i(manageiq_default), - "ManageIQ::Providers::Vmware::InfraManager::EventCatcher" => %i(manageiq_default), - "ManageIQ::Providers::Vmware::InfraManager::MetricsCollectorWorker" => %i(manageiq_default), - "ManageIQ::Providers::Vmware::InfraManager::RefreshWorker" => %i(manageiq_default), - "ManageIQ::Providers::Vmware::NetworkManager::RefreshWorker" => %i(manageiq_default), - "MiqCockpitWsWorker" => %i(manageiq_default), - "MiqEmsMetricsProcessorWorker" => %i(manageiq_default), - "MiqEmsRefreshCoreWorker" => %i(manageiq_default), - "MiqEventHandler" => %i(manageiq_default), - "MiqGenericWorker" => %i(manageiq_default), - "MiqPriorityWorker" => %i(manageiq_default), - "MiqReportingWorker" => %i(manageiq_default), - "MiqScheduleWorker" => %i(manageiq_default), - "MiqSmartProxyWorker" => %i(manageiq_default), - "MiqUiWorker" => %i(manageiq_default ui_dependencies graphql_api), - "MiqVimBrokerWorker" => %i(manageiq_default), - "MiqWebServiceWorker" => %i(manageiq_default graphql_api), - "MiqRemoteConsoleWorker" => %i(manageiq_default), -}.freeze - -MIQ_WORKER_TYPES_IN_KILL_ORDER = %w( - MiqEmsMetricsProcessorWorker - 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::Redhat::NetworkManager::MetricsCollectorWorker - ManageIQ::Providers::Openstack::InfraManager::MetricsCollectorWorker - MiqReportingWorker - MiqSmartProxyWorker - MiqGenericWorker - MiqEventHandler - ManageIQ::Providers::Azure::CloudManager::RefreshWorker - ManageIQ::Providers::AzureStack::CloudManager::RefreshWorker - ManageIQ::Providers::AzureStack::NetworkManager::RefreshWorker - ManageIQ::Providers::Amazon::CloudManager::RefreshWorker - ManageIQ::Providers::Amazon::StorageManager::S3::RefreshWorker - ManageIQ::Providers::Amazon::AgentCoordinatorWorker - ManageIQ::Providers::Google::CloudManager::RefreshWorker - ManageIQ::Providers::Google::NetworkManager::RefreshWorker - ManageIQ::Providers::AnsibleTower::AutomationManager::RefreshWorker - ManageIQ::Providers::Foreman::ConfigurationManager::RefreshWorker - ManageIQ::Providers::Foreman::ProvisioningManager::RefreshWorker - ManageIQ::Providers::Kubernetes::ContainerManager::RefreshWorker - ManageIQ::Providers::Lenovo::PhysicalInfraManager::RefreshWorker - ManageIQ::Providers::Openshift::ContainerManager::RefreshWorker - ManageIQ::Providers::Microsoft::InfraManager::RefreshWorker - ManageIQ::Providers::Redfish::PhysicalInfraManager::RefreshWorker - ManageIQ::Providers::Redhat::InfraManager::RefreshWorker - ManageIQ::Providers::Openstack::CloudManager::RefreshWorker - ManageIQ::Providers::Redhat::NetworkManager::RefreshWorker - ManageIQ::Providers::Openstack::InfraManager::RefreshWorker - ManageIQ::Providers::Vmware::CloudManager::RefreshWorker - ManageIQ::Providers::Vmware::NetworkManager::RefreshWorker - ManageIQ::Providers::Vmware::InfraManager::RefreshWorker - ManageIQ::Providers::Nuage::NetworkManager::RefreshWorker - ManageIQ::Providers::Nuage::NetworkManager::EventCatcher - MiqScheduleWorker - MiqPriorityWorker - MiqWebServiceWorker - MiqEmsRefreshCoreWorker - MiqVimBrokerWorker - ManageIQ::Providers::Vmware::CloudManager::EventCatcher - ManageIQ::Providers::Vmware::InfraManager::EventCatcher - ManageIQ::Providers::Redhat::InfraManager::EventCatcher - ManageIQ::Providers::Openstack::CloudManager::EventCatcher - ManageIQ::Providers::Openstack::NetworkManager::EventCatcher - ManageIQ::Providers::Openstack::StorageManager::CinderManager::EventCatcher - ManageIQ::Providers::Redfish::PhysicalInfraManager::EventCatcher - ManageIQ::Providers::Redhat::NetworkManager::EventCatcher - ManageIQ::Providers::Openstack::InfraManager::EventCatcher - ManageIQ::Providers::Amazon::CloudManager::EventCatcher - ManageIQ::Providers::Azure::CloudManager::EventCatcher - ManageIQ::Providers::AzureStack::CloudManager::EventCatcher - ManageIQ::Providers::AnsibleTower::AutomationManager::EventCatcher - ManageIQ::Providers::Google::CloudManager::EventCatcher - ManageIQ::Providers::Kubernetes::ContainerManager::EventCatcher - ManageIQ::Providers::Kubernetes::MonitoringManager::EventCatcher - ManageIQ::Providers::Kubevirt::InfraManager::RefreshWorker - ManageIQ::Providers::Openshift::ContainerManager::EventCatcher - ManageIQ::Providers::Openshift::MonitoringManager::EventCatcher - ManageIQ::Providers::Lenovo::PhysicalInfraManager::EventCatcher - MiqUiWorker - MiqRemoteConsoleWorker - MiqCockpitWsWorker -).freeze diff --git a/spec/lib/workers/miq_worker_types_spec.rb b/spec/lib/workers/miq_worker_types_spec.rb deleted file mode 100644 index 30d5b9dba8be..000000000000 --- a/spec/lib/workers/miq_worker_types_spec.rb +++ /dev/null @@ -1,14 +0,0 @@ -describe "worker types lists" do - let(:all_defined_workers) do - exceptions = %w[ManageIQ::Providers::BaseManager::OperationsWorker] - MiqWorker.descendants.select { |w| w.subclasses.empty? }.map(&:name) - exceptions - end - - it "should include all the worker types" do - expect(MIQ_WORKER_TYPES.keys).to match_array(all_defined_workers) - end - - it "kill list should match type list" do - expect(MIQ_WORKER_TYPES_IN_KILL_ORDER).to match_array(all_defined_workers) - end -end diff --git a/spec/models/miq_server/worker_monitor_spec.rb b/spec/models/miq_server/worker_monitor_spec.rb index 8521559ed9ac..923f1021179d 100644 --- a/spec/models/miq_server/worker_monitor_spec.rb +++ b/spec/models/miq_server/worker_monitor_spec.rb @@ -5,6 +5,7 @@ allow_any_instance_of(MiqServer).to receive(:get_time_threshold).and_return(120) allow_any_instance_of(MiqServer).to receive(:get_memory_threshold).and_return(100.megabytes) + MiqWorkerType.seed @miq_server = EvmSpecHelper.local_miq_server end diff --git a/spec/models/miq_worker/container_common_spec.rb b/spec/models/miq_worker/container_common_spec.rb index c35dfae271da..a9f1721fbd2b 100644 --- a/spec/models/miq_worker/container_common_spec.rb +++ b/spec/models/miq_worker/container_common_spec.rb @@ -16,7 +16,8 @@ it "no worker deployment names are over 60 characters" do # OpenShift does not allow deployment names over 63 characters # We also want to leave some for the ems_id so we compare against 60 to be safe - MIQ_WORKER_TYPES_IN_KILL_ORDER.each do |klass| + MiqWorkerType.seed + MiqWorkerType.pluck(:worker_type).each do |klass| expect(klass.constantize.new.worker_deployment_name.length).to be <= 60 end end