Class: Muck::Server

Inherits:
Object
  • Object
show all
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

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_sessionObject



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

#databasesObject



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_pathObject



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

#frequencyObject



20
21
22
# File 'lib/muck/server.rb', line 20

def frequency
  @server_hash[:frequency] || @config.defaults[:frequency] || 60
end

#hostnameObject



16
17
18
# File 'lib/muck/server.rb', line 16

def hostname
  @server_hash[:hostname]
end

#masters_to_keepObject



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

#retentionObject



48
49
50
# File 'lib/muck/server.rb', line 48

def retention
  DEFAULT_RENTENTION.merge(@config.defaults[:retention] || {}).merge(@server_hash[:retention] || {})
end

#ssh_portObject



36
37
38
# File 'lib/muck/server.rb', line 36

def ssh_port
  ssh_properties[:port]
end

#ssh_propertiesObject



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_usernameObject



40
41
42
# File 'lib/muck/server.rb', line 40

def ssh_username
  ssh_properties[:username]
end