class Asteroid::Server

Attributes

configure_steps[RW]
instance_options[RW]
name[RW]
scripts[RW]
ssh_key[RW]

Public Class Methods

all() click to toggle source
# File lib/asteroid/server.rb, line 14
def self.all
  Dir[Asteroid::Config.server_dir + '/**/*.yml'].delete_if do |g|
    File.basename(g) == "default.yml"
  end.map do |g|
    load g
  end
end
default_config() click to toggle source
# File lib/asteroid/server.rb, line 22
def self.default_config
  data = YAML.load_file File.join(Asteroid::Config.server_dir, '/default.yml') || {}
  ActiveSupport::HashWithIndifferentAccess.new data
end
load(filename) click to toggle source
# File lib/asteroid/server.rb, line 31
def self.load(filename)
  data = YAML.load_file filename
  new data
end
named(name) click to toggle source
# File lib/asteroid/server.rb, line 27
def self.named(name)
  load Asteroid::Config.server_dir + "/#{name}.yml"
end
new(options = {}) click to toggle source
# File lib/asteroid/server.rb, line 36
def initialize(options = {})
  data = self.class.default_config
  data.deep_merge! options

  # Merge environment data
  if env = data.delete(:environments)
    env = env[Asteroid.environment] || {}
    data.deep_merge! env
  end

  @name = data.delete(:name)

  @provider = if data[:provider]
    Provider.named data[:provider]
  else
    Config.providers.first
  end
  
  @instance_options = data.delete :instance_options || {}

  @commands = data.delete(:commands) || {}

  @ssh_key = KeyReference.new data.delete(:ssh_key)

  @config = data["config"] || {
    "admin_username" => "ubuntu",
    "ssh_port" => 1983
  }

  @default_config = data["default_instance_config"] || {
    "login.username" => "root", 
    "ssh.port" => "22"
  }

end

Public Instance Methods

[](k) click to toggle source
# File lib/asteroid/server.rb, line 80
def [](k)
  config[k.to_s]
end
commands() click to toggle source
# File lib/asteroid/server.rb, line 76
def commands
  @commands
end
config() click to toggle source
# File lib/asteroid/server.rb, line 84
def config
  @config
end
create_instance!() click to toggle source
# File lib/asteroid/server.rb, line 117
def create_instance!
  provider.create_instance(self)
end
first_instance() click to toggle source
# File lib/asteroid/server.rb, line 92
def first_instance
  Asteroid::Instance.all_with_type(self.type).first
end
generate_instance_name() click to toggle source
# File lib/asteroid/server.rb, line 112
def generate_instance_name
  namespace = Config.namespace ? "#{Config.namespace}:" : ""
  "#{namespace}#{self.name}-#{SecureRandom.hex(4)}"
end
instance_config() click to toggle source
# File lib/asteroid/server.rb, line 96
def instance_config
  @default_config
end
provider() click to toggle source
# File lib/asteroid/server.rb, line 108
def provider
  @provider
end
ssh_key_filename() click to toggle source
# File lib/asteroid/server.rb, line 100
def ssh_key_filename
  if @ssh_key
    File.join Asteroid::Config.secret_key_dir, @ssh_key
  else
    nil
  end
end
type() click to toggle source
# File lib/asteroid/server.rb, line 88
def type
  name.to_sym
end