From edc86e2b26292d612e0f4ff22efeaccd1b27af4c Mon Sep 17 00:00:00 2001 From: Marcel Hild Date: Mon, 20 Feb 2017 12:33:11 +0100 Subject: [PATCH 1/2] Add registered_provider_plugins to Vmdb::Plugins this allows for querying which providers are registered via plugins it also provides a helper method to query for provider names of all registered providers --- lib/vmdb/plugins.rb | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/lib/vmdb/plugins.rb b/lib/vmdb/plugins.rb index 79658d3cd6e..71f335bd704 100644 --- a/lib/vmdb/plugins.rb +++ b/lib/vmdb/plugins.rb @@ -4,9 +4,11 @@ class Plugins attr_reader :vmdb_plugins attr_reader :registered_automate_domains + attr_reader :registered_provider_plugins def initialize @registered_automate_domains = [] + @registered_provider_plugins = [] @vmdb_plugins = [] end @@ -14,19 +16,35 @@ def register_vmdb_plugin(engine) @vmdb_plugins << engine register_automate_domains(engine) + register_provider_plugin(engine) # make sure STI models are recognized DescendantLoader.instance.descendants_paths << engine.root.join('app') end - def register_automate_domains(engine) - Dir.glob(engine.root.join("content", "automate", "*")).each do |domain_directory| - @registered_automate_domains << AutomateDomain.new(domain_directory) + def provider_plugin_names + @provider_plugins_names ||= registered_provider_plugins.collect do |plugin| + ManageIQ::Providers::Inflector.provider_name(plugin).downcase.to_sym end end def system_automate_domains registered_automate_domains.select(&:system?) end + + private + + def register_provider_plugin(engine) + if engine.class.name.start_with?("ManageIQ::Providers::") + @registered_provider_plugins << engine + @provider_plugins_names = nil + end + end + + def register_automate_domains(engine) + Dir.glob(engine.root.join("content", "automate", "*")).each do |domain_directory| + @registered_automate_domains << AutomateDomain.new(domain_directory) + end + end end end From 9e6d72fb74d94b3d6d8e832b7c2eb5786a5c3da2 Mon Sep 17 00:00:00 2001 From: Marcel Hild Date: Mon, 20 Feb 2017 17:39:56 +0100 Subject: [PATCH 2/2] change registered provider plugins to hash map --- lib/vmdb/plugins.rb | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/lib/vmdb/plugins.rb b/lib/vmdb/plugins.rb index 71f335bd704..f9a593929cc 100644 --- a/lib/vmdb/plugins.rb +++ b/lib/vmdb/plugins.rb @@ -4,11 +4,10 @@ class Plugins attr_reader :vmdb_plugins attr_reader :registered_automate_domains - attr_reader :registered_provider_plugins def initialize @registered_automate_domains = [] - @registered_provider_plugins = [] + @registered_provider_plugin_map = {} @vmdb_plugins = [] end @@ -22,10 +21,12 @@ def register_vmdb_plugin(engine) DescendantLoader.instance.descendants_paths << engine.root.join('app') end - def provider_plugin_names - @provider_plugins_names ||= registered_provider_plugins.collect do |plugin| - ManageIQ::Providers::Inflector.provider_name(plugin).downcase.to_sym - end + def registered_provider_plugin_names + @registered_provider_plugin_map.keys + end + + def registered_provider_plugins + @registered_provider_plugin_map.values end def system_automate_domains @@ -36,8 +37,8 @@ def system_automate_domains def register_provider_plugin(engine) if engine.class.name.start_with?("ManageIQ::Providers::") - @registered_provider_plugins << engine - @provider_plugins_names = nil + provider_name = ManageIQ::Providers::Inflector.provider_name(engine).underscore.to_sym + @registered_provider_plugin_map[provider_name] = engine end end