Class: Odania::Plugin

Inherits:
Object
  • Object
show all
Defined in:
lib/odania/plugin.rb

Constant Summary collapse

INSTANCE_FILES_PATH =
'/tmp/plugin_instance_name_'

Instance Method Summary collapse

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_allObject



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_configObject



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_configObject



66
67
68
# File 'lib/odania/plugin.rb', line 66

def get_valid_domain_config
	@consul.config.get get_valid_domain_config_path
end

#healthObject



77
78
79
# File 'lib/odania/plugin.rb', line 77

def health
	@consul.health
end

#plugin_configObject



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