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