Class: Odania::Plugin
- Inherits:
-
Object
- Object
- Odania::Plugin
- Defined in:
- lib/odania/plugin.rb
Constant Summary collapse
- INSTANCE_FILES_PATH =
'/tmp/plugin_instance_name_'
Instance Method Summary collapse
- #config_for(plugin_name) ⇒ Object
- #deregister(plugin_instance_name) ⇒ Object
- #get_all ⇒ Object
- #get_domain_config_for(domain, global_config = nil) ⇒ Object
- #get_global_config ⇒ Object
-
#get_plugin_instance_name(plugin_name) ⇒ Object
Generate a unique number for this instance of the plugin.
- #get_subdomain_config(full_domain) ⇒ Object
- #get_valid_domain_config ⇒ Object
- #health ⇒ Object
-
#initialize(consul) ⇒ Plugin
constructor
A new instance of Plugin.
- #plugin_config ⇒ Object
- #register(plugin_instance_name, plugin_config) ⇒ Object
- #set_global_config(config) ⇒ Object
- #set_subdomain_config(full_domain, config) ⇒ Object
- #set_valid_domain_config(config) ⇒ Object
Constructor Details
#initialize(consul) ⇒ Plugin
Returns a new instance of Plugin.
5 6 7 8 |
# File 'lib/odania/plugin.rb', line 5 def initialize(consul) @consul = consul @plugin_config = Config::GlobalConfig.new end |
Instance Method Details
#config_for(plugin_name) ⇒ Object
33 34 35 |
# File 'lib/odania/plugin.rb', line 33 def config_for(plugin_name) @consul.config.get get_plugin_config_path_for(plugin_name) end |
#deregister(plugin_instance_name) ⇒ Object
25 26 27 |
# File 'lib/odania/plugin.rb', line 25 def deregister(plugin_instance_name) @consul.service.deregister(plugin_instance_name) end |
#get_all ⇒ Object
29 30 31 |
# File 'lib/odania/plugin.rb', line 29 def get_all @consul.service.get_all end |
#get_domain_config_for(domain, global_config = nil) ⇒ Object
70 71 72 73 74 75 |
# File 'lib/odania/plugin.rb', line 70 def get_domain_config_for(domain, global_config=nil) global_config = get_global_config if global_config.nil? return global_config['domains'][domain], domain unless global_config['domains'][domain].nil? return false, nil end |
#get_global_config ⇒ Object
50 51 52 |
# File 'lib/odania/plugin.rb', line 50 def get_global_config @consul.config.get get_global_plugin_config_path end |
#get_plugin_instance_name(plugin_name) ⇒ Object
Generate a unique number for this instance of the plugin
38 39 40 |
# File 'lib/odania/plugin.rb', line 38 def get_plugin_instance_name(plugin_name) "#{plugin_name}_#{Socket.gethostname.gsub(/[^0-9a-zA-Z_]/, '_')}" end |
#get_subdomain_config(full_domain) ⇒ Object
58 59 60 |
# File 'lib/odania/plugin.rb', line 58 def get_subdomain_config(full_domain) @consul.config.get get_subdomain_config_path(full_domain) end |
#get_valid_domain_config ⇒ Object
66 67 68 |
# File 'lib/odania/plugin.rb', line 66 def get_valid_domain_config @consul.config.get get_valid_domain_config_path end |
#health ⇒ Object
77 78 79 |
# File 'lib/odania/plugin.rb', line 77 def health @consul.health end |
#plugin_config ⇒ Object
42 43 44 |
# File 'lib/odania/plugin.rb', line 42 def plugin_config @plugin_config end |
#register(plugin_instance_name, plugin_config) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/odania/plugin.rb', line 10 def register(plugin_instance_name, plugin_config) plugin_name = plugin_config['plugin-config']['name'] # Write configuration of the plugin @consul.config.set(get_plugin_config_path_for(plugin_name), plugin_config) # Register service consul_config = @consul.service.build_config(plugin_name, plugin_instance_name, plugin_config['plugin-config']['ip'], plugin_config['plugin-config']['tags'], plugin_config['plugin-config']['port']) @consul.service.register(consul_config) # Fire event @consul.event.fire 'service-registered', "#{plugin_name}|#{plugin_instance_name}" "#{plugin_name}|#{plugin_instance_name}" end |
#set_global_config(config) ⇒ Object
46 47 48 |
# File 'lib/odania/plugin.rb', line 46 def set_global_config(config) @consul.config.set get_global_plugin_config_path, config end |
#set_subdomain_config(full_domain, config) ⇒ Object
54 55 56 |
# File 'lib/odania/plugin.rb', line 54 def set_subdomain_config(full_domain, config) @consul.config.set get_subdomain_config_path(full_domain), config end |
#set_valid_domain_config(config) ⇒ Object
62 63 64 |
# File 'lib/odania/plugin.rb', line 62 def set_valid_domain_config(config) @consul.config.set get_valid_domain_config_path, config end |