Class: Management::CreateServer

Inherits:
Command
  • Object
show all
Defined in:
lib/management/commands/create_server.rb

Instance Method Summary collapse

Methods inherited from Command

all, #cloud, command_name, #config, #get_env, #get_script, #get_server, #get_type, help_string, inherited

Instance Method Details

#call(env_name, type_name) ⇒ Object



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

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

  servers = cloud.servers
  name = make_unique_server_name(env_name, type_name, servers)

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

  cloud.servers.create(image_id: type[:image_id],
                       flavor_id: type[:flavor_id],
                       groups: type[:groups],
                       key_name: type[:key_name],
                       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

#current_userObject



31
32
33
34
35
# File 'lib/management/commands/create_server.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/create_server.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