6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
# File 'lib/cmd/create_new_droplets.rb', line 6
def self.create_new_droplets options
@client = Cmd::Authen.client
table = []
if options[:file_config] != nil
if options[:name] != nil
puts "Please specify the name of droplets into YAML config files, do not use both."
exit
end
context = YAML.load(File.open(options[:file_config]))
resource_first_key = context.keys[0]
context[resource_first_key].reject!{ |k| k == "resource_type"}.each do |key, value|
if value['specs']['user_data'].nil? || value['specs']['user_data']['files'].nil? && value['specs']['user_data']['scripts'].nil?
user_data = nil
else
user_data = value['specs']['user_data']['files'].nil? ? value['specs']['user_data']['scripts'] : File.read(value['specs']['user_data']['files'])
end
if value['specs']['name'].length > 1
new_droplet = DropletKit::Droplet.new(
names: value['specs']['name'],
region: options[:region].nil? ? value['specs']['region'] : options[:region],
size: options[:size].nil? ? value['specs']['size'] : options[:size],
image: options[:image].nil? ? value['specs']['image'] : options[:image],
ipv6: options[:ipv6].nil? ? value['specs']['ipv6'] : options[:ipv6],
tags: options[:tags].nil? ? value['specs']['tags'] : options[:tags],
backups: options[:backups].nil? ? value['specs']['backups'] : options[:backups],
ssh_keys: options[:ssh_keys].nil? ? value['specs']['ssh_keys'] : options[:ssh_keys],
private_networking: options[:private_networking].nil? ? value['specs']['private_networking'] : options[:private_networking],
user_data: options[:user_data].nil? ? user_data : options[:user_data],
volumes: options[:volumes].nil? ? value['specs']['volumes'] : options[:volumes]
)
create_new_droplet = @client.droplets.create_multiple(new_droplet)
create_new_droplet.each do |droplet|
table << {
:id => droplet.id,
:name => droplet.name,
:region => droplet.region.name,
:size => droplet.size,
:status => droplet.status
}
end
else
new_droplet = DropletKit::Droplet.new(
name: value['specs']['name'][0],
region: options[:region].nil? ? value['specs']['region'] : options[:region],
size: options[:size].nil? ? value['specs']['size'] : options[:size],
image: options[:image].nil? ? value['specs']['image'] : options[:image],
ipv6: options[:ipv6].nil? ? value['specs']['ipv6'] : options[:ipv6],
tags: options[:tags].nil? ? value['specs']['tags'] : options[:tags],
backups: options[:backups].nil? ? value['specs']['backups'] : options[:backups],
ssh_keys: options[:ssh_keys].nil? ? value['specs']['ssh_keys'] : options[:ssh_keys],
private_networking: options[:private_networking].nil? ? value['specs']['private_networking'] : options[:private_networking],
user_data: options[:user_data].nil? ? user_data : options[:user_data],
volumes: options[:volumes].nil? ? value['specs']['volumes'] : options[:volumes]
)
create_new_droplet = @client.droplets.create(new_droplet)
table << {
:id => create_new_droplet.id,
:name => create_new_droplet.name,
:region => create_new_droplet.region.name,
:size => create_new_droplet.size,
:status => create_new_droplet.status
}
end
end
else
new_droplet = DropletKit::Droplet.new(
name: options[:name],
region: options[:region].nil? ? "nyc1" : options[:region],
size: options[:size].nil? ? "512mb" : options[:size],
image: options[:image].nil? ? "21669205" : options[:image],
ipv6: options[:ipv6].nil? ? true : options[:ipv6],
tags: options[:tags],
backups: options[:backups].nil? ? true : options[:backups],
ssh_keys: options[:ssh_keys],
private_networking: options[:private_networking].nil? ? false : options[:private_networking],
user_data: options[:user_data],
volumes: options[:volumes]
)
create_new_droplet = @client.droplets.create(new_droplet)
table << {
:id => create_new_droplet.id,
:name => create_new_droplet.name,
:region => create_new_droplet.region.name,
:size => create_new_droplet.size,
:status => create_new_droplet.status
}
end
puts "Droplets create successfully".red if !table[0][:id].nil?
tp table
end
|