Class: Cmd::NewDroplets

Inherits:
Object
  • Object
show all
Defined in:
lib/cmd/create_new_droplets.rb

Class Method Summary collapse

Class Method Details

.create_new_droplets(options) ⇒ Object



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

.create_new_droplets_from_file(value) ⇒ Object



102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
# File 'lib/cmd/create_new_droplets.rb', line 102

def self.create_new_droplets_from_file value
	@client = Cmd::Authen.client
	table = []
	value.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: value['specs']['region'],
				size: value['specs']['size'],
				image: value['specs']['image'],
				ipv6: value['specs']['ipv6'],
				tags: value['specs']['tags'],
				backups: value['specs']['backups'],
				ssh_keys: value['specs']['ssh_keys'],
				private_networking: value['specs']['private_networking'],
				user_data: user_data,
				volumes: value['specs']['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: value['specs']['region'],
				size: value['specs']['size'],
				image: value['specs']['image'],
				ipv6: value['specs']['ipv6'],
				tags: value['specs']['tags'],
				backups: value['specs']['backups'],
				ssh_keys: value['specs']['ssh_keys'],
				private_networking: value['specs']['private_networking'],
				user_data: user_data,
				volumes: value['specs']['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
	puts "Droplets create successfully".red if !table[0][:id].nil?
	tp table
end