umbreo_cli 1.0.141

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +7 -0
  2. data/.env +2 -0
  3. data/Gemfile +23 -0
  4. data/Gemfile.lock +106 -0
  5. data/README.md +1625 -0
  6. data/Rakefile +44 -0
  7. data/bin/manifests/init.pp +20 -0
  8. data/bin/umbreo +1684 -0
  9. data/bin/umbreo.json +34 -0
  10. data/lib/umbreo.rb +49 -0
  11. data/lib/umbreo/helpers/alert_message.rb +58 -0
  12. data/lib/umbreo/helpers/error_exception.rb +15 -0
  13. data/lib/umbreo/helpers/file_generator.rb +13 -0
  14. data/lib/umbreo/helpers/json_base_convert.rb +30 -0
  15. data/lib/umbreo/helpers/table.rb +45 -0
  16. data/lib/umbreo/models/amazon_web_service_provider.rb +260 -0
  17. data/lib/umbreo/models/authentication.rb +99 -0
  18. data/lib/umbreo/models/blueprint.rb +241 -0
  19. data/lib/umbreo/models/cloud_provider.rb +143 -0
  20. data/lib/umbreo/models/configuration.rb +98 -0
  21. data/lib/umbreo/models/digital_ocean_provider.rb +204 -0
  22. data/lib/umbreo/models/google_compute_engine_provider.rb +232 -0
  23. data/lib/umbreo/models/instance.rb +170 -0
  24. data/lib/umbreo/models/module.rb +61 -0
  25. data/lib/umbreo/models/openstack_provider.rb +260 -0
  26. data/lib/umbreo/models/profile.rb +61 -0
  27. data/lib/umbreo/models/provider.rb +164 -0
  28. data/lib/umbreo/models/service.rb +244 -0
  29. data/lib/umbreo/models/service_provider.rb +185 -0
  30. data/lib/umbreo/models/stack.rb +181 -0
  31. data/lib/umbreo/models/system.rb +43 -0
  32. data/lib/umbreo/models/umbreo_stack_template.rb +163 -0
  33. data/lib/umbreo/models/xenserver_provider.rb +200 -0
  34. data/lib/umbreo/version.rb +3 -0
  35. data/manifests/init.pp +20 -0
  36. data/manifests1/init.pp +9 -0
  37. data/umbreo.gemspec +28 -0
  38. metadata +241 -0
@@ -0,0 +1,98 @@
1
+ module Umbreo
2
+ module Models
3
+ class Configuration
4
+
5
+ def initialize
6
+ create_configuration
7
+ end
8
+
9
+ #
10
+ # Create file configuration
11
+ #
12
+ def create_configuration
13
+ File.open(FILE_CONFIG, "w+") if !File.exists?(FILE_CONFIG)
14
+ end
15
+
16
+ #
17
+ # Write authentication to File Configuration
18
+ #
19
+ def write_file_authentication(data, endpoint_url = nil)
20
+ name = data['name'] || data[:name]
21
+ email = data['email'] || data[:email]
22
+ token = data['authentication_token'] || data[:authentication_token]
23
+
24
+ File.open("#{FILE_CONFIG}", 'w+') do |file|
25
+ file.puts("# Umbreo's user configuration file.")
26
+ file.puts("")
27
+ file.puts("[user]")
28
+ file.puts("Name=#{name}")
29
+ file.puts("Email=#{email}")
30
+ file.puts("APIKey=#{token}")
31
+
32
+ if endpoint_url.present?
33
+ file.puts("Endpoint=#{endpoint_url}")
34
+ else
35
+ file.puts("Endpoint=#{SERVER_END_POINT}")
36
+ end
37
+ end
38
+
39
+ Umbreo::Helpers::AlertMessage.show_success_message(read_file_authentication)
40
+ end
41
+
42
+ #
43
+ # Read file configuration
44
+ #
45
+ def read_file_authentication
46
+ @parse_file = ParseConfig.new(FILE_CONFIG) rescue nil
47
+ if @parse_file.present?
48
+ email = @parse_file.params["user"]["Email"] rescue nil
49
+ apikey = @parse_file.params['user']['APIKey'] rescue nil
50
+ name = @parse_file.params['user']['Name'] rescue nil
51
+ endpoint = @parse_file.params["user"]["Endpoint"] rescue nil
52
+
53
+ return { email: email, api_key: apikey, name: name, end_point: endpoint }
54
+ else
55
+ return ""
56
+ end
57
+ end
58
+
59
+ #
60
+ # remove file configuration
61
+ #
62
+ def delete
63
+ File.delete(FILE_CONFIG) if File.exists? FILE_CONFIG
64
+
65
+ return true
66
+ end
67
+
68
+ #
69
+ # check valid user
70
+ #
71
+ def is_valid_user?
72
+ @parse_file = ParseConfig.new(FILE_CONFIG) rescue nil
73
+ @user_auth = @parse_file.params["user"] rescue nil
74
+
75
+ if @user_auth.present?
76
+ email = @user_auth["Email"]
77
+ apikey = @user_auth["APIKey"]
78
+ name = @user_auth["Name"]
79
+ endpoint = @user_auth["Endpoint"]
80
+
81
+ request = Typhoeus.get(
82
+ "#{endpoint}/api/v1/users/is_valid_user",
83
+ body: {
84
+ email: email,
85
+ apikey: apikey,
86
+ }
87
+ )
88
+ data = JSON.parse request.response_body
89
+
90
+ return data['success']
91
+ else
92
+ return false
93
+ end
94
+ end
95
+
96
+ end
97
+ end
98
+ end
@@ -0,0 +1,204 @@
1
+ module Umbreo
2
+ module Models
3
+ class DigitalOceanProvider
4
+
5
+ #
6
+ # init params which required for create cloud provider
7
+ #
8
+ def initialize(credentials = {}, name_or_id = nil)
9
+ if credentials.present?
10
+ @email = credentials[:email]
11
+ @api_key = credentials[:api_key]
12
+ @endpoint = credentials[:end_point] || SERVER_END_POINT
13
+ end
14
+
15
+ @errors = []
16
+ @name_or_id = name_or_id
17
+ end
18
+
19
+ #
20
+ # get list image of digital ocean
21
+ #
22
+ def digital_ocean_image_list
23
+ @errors << "ID or Name provider is required." if @name_or_id.blank?
24
+
25
+ if valid?
26
+ Helpers::ErrorException.rescue do
27
+ data = Typhoeus.get(
28
+ "#{@endpoint}/api/v1/digital_ocean_services/image_list",
29
+ body: {
30
+ authenticate_token: @api_key,
31
+ email: @email,
32
+ id: @name_or_id
33
+ }
34
+ )
35
+
36
+ data = JSON.parse data.response_body
37
+
38
+ if data['success']
39
+ Helpers::Table.show_table(data['images'], "List Digital Ocean Image", ['Image Name', 'Image ID'])
40
+ else
41
+ Helpers::AlertMessage.show_error_message(data['message'])
42
+ end
43
+ end
44
+ else
45
+ Helpers::AlertMessage.show_error_message(error)
46
+ end
47
+ end
48
+
49
+ #
50
+ # get list flavors of digital ocean
51
+ #
52
+ def digital_ocean_flavor_list(image)
53
+ @errors << "ID or Name provider is required." if @name_or_id.blank?
54
+ @errors << "Image digital ocean provider is required." if image.blank?
55
+
56
+ if valid?
57
+ Helpers::ErrorException.rescue do
58
+ data = Typhoeus.get(
59
+ "#{@endpoint}/api/v1/digital_ocean_services/flavor_list",
60
+ body: {
61
+ authenticate_token: @api_key,
62
+ email: @email,
63
+ id: @name_or_id,
64
+ image_id: image
65
+ }
66
+ )
67
+
68
+ data = JSON.parse data.response_body
69
+
70
+ if data['success']
71
+ Helpers::Table.show_table(data['flavors'], "List Digital Ocean Flavor", ['Flavor Detail', 'Slug'])
72
+ else
73
+ Helpers::AlertMessage.show_error_message(data['message'])
74
+ end
75
+ end
76
+ else
77
+ Helpers::AlertMessage.show_error_message(error)
78
+ end
79
+ end
80
+
81
+ #
82
+ # get list flavors of digital ocean
83
+ #
84
+ def digital_ocean_region_list(image)
85
+ @errors << "ID or Name provider is required." if @name_or_id.blank?
86
+ @errors << "Image digital ocean provider is required." if image.blank?
87
+
88
+ if valid?
89
+ Helpers::ErrorException.rescue do
90
+ data = Typhoeus.get(
91
+ "#{@endpoint}/api/v1/digital_ocean_services/region_list",
92
+ body: {
93
+ authenticate_token: @api_key,
94
+ email: @email,
95
+ id: @name_or_id,
96
+ image_id: image
97
+ }
98
+ )
99
+
100
+ data = JSON.parse data.response_body
101
+
102
+ if data['success']
103
+ Helpers::Table.show_table(data['regions'], "List Digital Ocean Region", ['Region Name', 'Slug'])
104
+ else
105
+ Helpers::AlertMessage.show_error_message(data['message'])
106
+ end
107
+ end
108
+ else
109
+ Helpers::AlertMessage.show_error_message(error)
110
+ end
111
+ end
112
+
113
+ #
114
+ # get json credential file
115
+ #
116
+ def export
117
+ @errors << "ID or Slug is required." if @name_or_id.blank?
118
+
119
+ if valid?
120
+ Helpers::ErrorException.rescue do
121
+ data = Typhoeus.get(
122
+ "#{@endpoint}/api/v1/digital_ocean_services/export",
123
+ body: {
124
+ authenticate_token: @api_key,
125
+ email: @email,
126
+ id: @name_or_id
127
+ }
128
+ )
129
+
130
+ data = JSON.parse data.response_body rescue nil
131
+ user_provider = data["user_provider"]
132
+
133
+ if user_provider.present?
134
+ name_file = "digital_ocean_provider"
135
+ Helpers::FileGenerator.create(name_file, user_provider)
136
+ Helpers::AlertMessage.show_success_message("Success export digital ocean provider. Your file is saved on json file with name #{name_file}.json")
137
+ else
138
+ Helpers::AlertMessage.show_error_message(data["message"])
139
+ end
140
+ end
141
+ else
142
+ Helpers::AlertMessage.show_error_message(error)
143
+ end
144
+ end
145
+
146
+ #
147
+ # check valid json params
148
+ #
149
+ def validate(file_path)
150
+ @errors << "File directory is required." if file_path.blank?
151
+
152
+ begin
153
+ file = File.open(file_path, "r")
154
+ content = file.read
155
+ json = JSON.parse(content)
156
+ encode = Helpers::JsonBaseConvert.encode(json)
157
+ rescue
158
+ @errors << "Error on file. Please check again."
159
+ end
160
+
161
+ @errors << "Content of file is required." if content.blank?
162
+
163
+ if valid?
164
+ Helpers::ErrorException.rescue do
165
+
166
+ response = Typhoeus.get(
167
+ "#{@endpoint}/api/v1/digital_ocean_services/validate",
168
+ body: {
169
+ authenticate_token: @api_key,
170
+ email: @email,
171
+ content: encode
172
+ }
173
+ )
174
+
175
+ @response = JSON.parse response.response_body
176
+
177
+ if @response["success"]
178
+ Helpers::AlertMessage.show_success_message(@response["message"])
179
+ else
180
+ Helpers::AlertMessage.show_error_message(@response["message"])
181
+ end
182
+ end
183
+ else
184
+ Helpers::AlertMessage.show_error_message(error)
185
+ end
186
+ end
187
+
188
+ #
189
+ # check no errors
190
+ #
191
+ def valid?
192
+ @errors.blank?
193
+ end
194
+
195
+ #
196
+ # call errors
197
+ #
198
+ def error
199
+ @errors.first
200
+ end
201
+
202
+ end
203
+ end
204
+ end
@@ -0,0 +1,232 @@
1
+ module Umbreo
2
+ module Models
3
+ class GoogleComputeEngineProvider
4
+
5
+ #
6
+ # init params which required for create cloud provider
7
+ #
8
+ def initialize(credentials = {}, name_or_id = nil)
9
+ if credentials.present?
10
+ @email = credentials[:email]
11
+ @api_key = credentials[:api_key]
12
+ @endpoint = credentials[:end_point] || SERVER_END_POINT
13
+ end
14
+
15
+ @errors = []
16
+ @name_or_id = name_or_id
17
+ end
18
+
19
+
20
+ #
21
+ # get list size of amazon web service
22
+ #
23
+ def region_list
24
+ @errors << "ID or Name provider is required." if @name_or_id.blank?
25
+
26
+ if valid?
27
+ Helpers::ErrorException.rescue do
28
+ data = Typhoeus.get(
29
+ "#{@endpoint}/api/v1/google_compute_engine_services/region_list",
30
+ body: {
31
+ authenticate_token: @api_key,
32
+ email: @email,
33
+ id: @name_or_id
34
+ }
35
+ )
36
+
37
+ data = JSON.parse data.response_body
38
+
39
+ if data['success']
40
+ Helpers::Table.table_callback_retrieve_data(data['regions'], "List GCE Region")
41
+ else
42
+ Helpers::AlertMessage.show_error_message(data['message'])
43
+ end
44
+ end
45
+ else
46
+ Helpers::AlertMessage.show_error_message(error)
47
+ end
48
+ end
49
+
50
+
51
+ #
52
+ # get list machine of google
53
+ #
54
+ def machine_list
55
+ @errors << "ID or Name provider is required." if @name_or_id.blank?
56
+
57
+ if valid?
58
+ Helpers::ErrorException.rescue do
59
+ data = Typhoeus.get(
60
+ "#{@endpoint}/api/v1/google_compute_engine_services/machine_list",
61
+ body: {
62
+ authenticate_token: @api_key,
63
+ email: @email,
64
+ id: @name_or_id
65
+ }
66
+ )
67
+
68
+ data = JSON.parse data.response_body
69
+
70
+ if data['success']
71
+ Helpers::Table.show_table(data['machines'], "List GCE Machine", ['Machine Description', 'Machine Name'])
72
+ else
73
+ Helpers::AlertMessage.show_error_message(data['message'])
74
+ end
75
+ end
76
+ else
77
+ Helpers::AlertMessage.show_error_message(error)
78
+ end
79
+ end
80
+
81
+ #
82
+ # get list machine of google
83
+ #
84
+ def image_list
85
+ @errors << "ID or Name provider is required." if @name_or_id.blank?
86
+
87
+ if valid?
88
+ Helpers::ErrorException.rescue do
89
+ data = Typhoeus.get(
90
+ "#{@endpoint}/api/v1/google_compute_engine_services/image_list",
91
+ body: {
92
+ authenticate_token: @api_key,
93
+ email: @email,
94
+ id: @name_or_id
95
+ }
96
+ )
97
+
98
+ data = JSON.parse data.response_body
99
+
100
+ if data['success']
101
+ Helpers::Table.show_table(data['images'], "List GCE Image", ['Image ID', 'Image Name'])
102
+ else
103
+ Helpers::AlertMessage.show_error_message(data['message'])
104
+ end
105
+ end
106
+ else
107
+ Helpers::AlertMessage.show_error_message(error)
108
+ end
109
+ end
110
+
111
+ #
112
+ # get list network of google
113
+ #
114
+ def network_list
115
+ @errors << "ID or Name provider is required." if @name_or_id.blank?
116
+
117
+ if valid?
118
+ Helpers::ErrorException.rescue do
119
+ data = Typhoeus.get(
120
+ "#{@endpoint}/api/v1/google_compute_engine_services/network_list",
121
+ body: {
122
+ authenticate_token: @api_key,
123
+ email: @email,
124
+ id: @name_or_id
125
+ }
126
+ )
127
+
128
+ data = JSON.parse data.response_body
129
+
130
+ if data['success']
131
+ Helpers::Table.table_callback_retrieve_data(data['networks'], "List GCE Network")
132
+ else
133
+ Helpers::AlertMessage.show_error_message(data['message'])
134
+ end
135
+ end
136
+ else
137
+ Helpers::AlertMessage.show_error_message(error)
138
+ end
139
+ end
140
+
141
+ #
142
+ # get json credential file
143
+ #
144
+ def export
145
+ @errors << "ID or Slug is required." if @name_or_id.blank?
146
+
147
+ if valid?
148
+ Helpers::ErrorException.rescue do
149
+ data = Typhoeus.get(
150
+ "#{@endpoint}/api/v1/google_compute_engine_services/export",
151
+ body: {
152
+ authenticate_token: @api_key,
153
+ email: @email,
154
+ id: @name_or_id
155
+ }
156
+ )
157
+
158
+ data = JSON.parse data.response_body rescue nil
159
+ user_provider = data["user_provider"]
160
+
161
+ if user_provider.present?
162
+ name_file = "google_compute_engine_service_provider"
163
+ Helpers::FileGenerator.create(name_file, user_provider)
164
+ Helpers::AlertMessage.show_success_message("Success export google compute engine provider. Your file is saved on json file with name #{name_file}.json")
165
+ else
166
+ Helpers::AlertMessage.show_error_message(data["message"])
167
+ end
168
+ end
169
+ else
170
+ Helpers::AlertMessage.show_error_message(error)
171
+ end
172
+ end
173
+
174
+ #
175
+ # check valid json params
176
+ #
177
+ def validate(file_path)
178
+ @errors << "File directory is required." if file_path.blank?
179
+
180
+ begin
181
+ file = File.open(file_path, "r")
182
+ content = file.read
183
+ json = JSON.parse(content)
184
+ encode = Helpers::JsonBaseConvert.encode(json)
185
+ rescue
186
+ @errors << "Error on file. Please check again."
187
+ end
188
+
189
+ @errors << "Content of file is required." if content.blank?
190
+
191
+ if valid?
192
+ Helpers::ErrorException.rescue do
193
+
194
+ response = Typhoeus.get(
195
+ "#{@endpoint}/api/v1/google_compute_engine_services/validate",
196
+ body: {
197
+ authenticate_token: @api_key,
198
+ email: @email,
199
+ content: encode
200
+ }
201
+ )
202
+
203
+ @response = JSON.parse response.response_body
204
+
205
+ if @response["success"]
206
+ Helpers::AlertMessage.show_success_message(@response["message"])
207
+ else
208
+ Helpers::AlertMessage.show_error_message(@response["message"])
209
+ end
210
+ end
211
+ else
212
+ Helpers::AlertMessage.show_error_message(error)
213
+ end
214
+ end
215
+
216
+ #
217
+ # check no errors
218
+ #
219
+ def valid?
220
+ @errors.blank?
221
+ end
222
+
223
+ #
224
+ # call errors
225
+ #
226
+ def error
227
+ @errors.first
228
+ end
229
+
230
+ end
231
+ end
232
+ end