Class: Muck::Server
- Inherits:
-
Object
- Object
- Muck::Server
- Defined in:
- lib/muck/server.rb
Constant Summary collapse
- DEFAULT_RENTENTION =
{:hourly => 24, :daily => 7, :monthly => 12, :yearly => 8}
- DEFAULT_SSH_PROPERTIES =
{:username => "root", :port => 22, :key => "/opt/muck/ssh-key"}
- DEFAULT_DATABASE_PROPERTIES =
{:hostname => '127.0.0.1', :username => 'root', :name => 'example', :password => nil}
Instance Method Summary collapse
- #create_ssh_session ⇒ Object
- #databases ⇒ Object
- #export_path ⇒ Object
- #frequency ⇒ Object
- #hostname ⇒ Object
-
#initialize(config, server_hash = {}) ⇒ Server
constructor
A new instance of Server.
- #masters_to_keep ⇒ Object
- #retention ⇒ Object
- #ssh_port ⇒ Object
- #ssh_properties ⇒ Object
- #ssh_username ⇒ Object
Constructor Details
#initialize(config, server_hash = {}) ⇒ Server
Returns a new instance of Server.
11 12 13 14 |
# File 'lib/muck/server.rb', line 11 def initialize(config, server_hash = {}) @config = config @server_hash = server_hash end |
Instance Method Details
#create_ssh_session ⇒ Object
63 64 65 |
# File 'lib/muck/server.rb', line 63 def create_ssh_session Net::SSH.start(self.hostname, self.ssh_username, :port => self.ssh_port, :keys => ssh_properties[:key] ? [ssh_properties[:key]] : nil) end |
#databases ⇒ Object
52 53 54 55 56 57 58 59 60 61 |
# File 'lib/muck/server.rb', line 52 def databases defaults = DEFAULT_DATABASE_PROPERTIES.merge(@config.defaults[:databases]&.first || {}) if @server_hash[:databases].is_a?(Array) @server_hash[:databases].map do |database| Database.new(self, defaults.merge(database)) end else [] end end |
#export_path ⇒ Object
24 25 26 27 28 29 30 |
# File 'lib/muck/server.rb', line 24 def export_path if path = (@server_hash.dig(:storage, :path) || @config.defaults.dig(:storage, :path)) path.gsub(":hostname", self.hostname) else "/opt/muck/data/#{self.hostname}/:database" end end |
#frequency ⇒ Object
20 21 22 |
# File 'lib/muck/server.rb', line 20 def frequency @server_hash[:frequency] || @config.defaults[:frequency] || 60 end |
#hostname ⇒ Object
16 17 18 |
# File 'lib/muck/server.rb', line 16 def hostname @server_hash[:hostname] end |
#masters_to_keep ⇒ Object
32 33 34 |
# File 'lib/muck/server.rb', line 32 def masters_to_keep @server_hash.dig(:storage, :keep) || @config.defaults.dig(:storage, :keep) || 50 end |
#retention ⇒ Object
48 49 50 |
# File 'lib/muck/server.rb', line 48 def retention DEFAULT_RENTENTION.merge(@config.defaults[:retention] || {}).merge(@server_hash[:retention] || {}) end |
#ssh_port ⇒ Object
36 37 38 |
# File 'lib/muck/server.rb', line 36 def ssh_port ssh_properties[:port] end |
#ssh_properties ⇒ Object
44 45 46 |
# File 'lib/muck/server.rb', line 44 def ssh_properties DEFAULT_SSH_PROPERTIES.merge(@config.defaults[:ssh] || {}).merge(@server_hash[:ssh] || {}) end |
#ssh_username ⇒ Object
40 41 42 |
# File 'lib/muck/server.rb', line 40 def ssh_username ssh_properties[:username] end |