Class: Management::Server::Create

Inherits:
Command
  • Object
show all
Includes:
Helper
Defined in:
lib/management/commands/server/create.rb

Instance Method Summary collapse

Methods included from Helper

#cloud, #config, #get_address, #get_env, #get_script, #get_server, #get_type, #live_servers, #system_verbose

Methods inherited from Command

all, #arg_list, #call_with, #command_name, #fn, #help_string, inherited, maxlen, #true_arity

Instance Method Details

#current_userObject



31
32
33
34
35
# File 'lib/management/commands/server/create.rb', line 31

def current_user
  `git config user.name`.strip
rescue
  "unknown"
end

#make_unique_server_name(env_name, type_name, servers) ⇒ Object



37
38
39
40
41
42
43
44
45
46
# File 'lib/management/commands/server/create.rb', line 37

def make_unique_server_name(env_name, type_name, servers)
  (1..Float::INFINITY).each do |i|
    name = "#{env_name}-#{type_name}-#{i}"
    if servers.find{|s|s.name == name}
      i += 1
    else
      return name
    end
  end
end

#run(env_name, type_name) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/management/commands/server/create.rb', line 11

def run(env_name, type_name)
  env = get_env(env_name)
  type = get_type(type_name)

  servers = live_servers
  name = make_unique_server_name(env_name, type_name, servers)

  puts "Creating \"#{name}\"..."

  cloud.servers.create(type.merge({tags: {
                                      "Creator" => current_user,
                                      "CreatedAt" => Time.new.strftime("%Y%m%d%H%M%S"),
                                      "Name" => name,
                                      "Env" => env_name,
                                      "Meal" => type_name,
                                    }}))

  puts "Done."
end