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,170 @@
1
+ module Umbreo
2
+ module Models
3
+ class Instance
4
+
5
+ #
6
+ # list deployment type of instance
7
+ #
8
+ DEPLOYMENT_TYPE = ["test", "manual", "provider"]
9
+
10
+ def initialize(credentials = {}, name_or_id = nil)
11
+ if credentials.present?
12
+ @email = credentials[:email]
13
+ @api_key = credentials[:api_key]
14
+ @endpoint = credentials[:end_point] || SERVER_END_POINT
15
+ end
16
+
17
+ @name_or_id = name_or_id
18
+ @errors = []
19
+ end
20
+
21
+ #
22
+ # retrieve data instance
23
+ #
24
+ def retrieve_data(filter = {})
25
+ Helpers::ErrorException.rescue do
26
+ data = Typhoeus.get(
27
+ "#{@endpoint}/api/v1/instances",
28
+ body: {
29
+ authenticate_token: @api_key,
30
+ email: @email,
31
+ filter: filter
32
+ }
33
+ )
34
+
35
+ @data = JSON.parse data.response_body
36
+ end
37
+ end
38
+
39
+ #
40
+ # callback for retrieve data
41
+ #
42
+ def all(filter = {})
43
+ @errors << "Please choose correct one of regiter type |all, registered, unregistered|" if ["registered", "unregistered"].exclude?(filter[:register_type]) && filter[:register_type].present?
44
+ @errors << "Please choose correct one of type deployment |all, #{DEPLOYMENT_TYPE.join(", ")}|" if DEPLOYMENT_TYPE.exclude?(filter[:type]) && filter[:type].present?
45
+ @errors << "Please choose correct one of cloud provider |all, #{CloudProvider::CLOUDS.join(", ")}|" if CloudProvider::CLOUDS.exclude?(filter[:provider]) && filter[:provider].present?
46
+ @errors << "Search keyword is required." if filter[:keyword].blank? && filter[:search]
47
+
48
+ if valid?
49
+ retrieve_data(filter)
50
+
51
+ if @data['user_nodes'].present?
52
+ Helpers::Table.show_table(@data['user_nodes'], "List My Instance#{ (' | Page: ' + filter[:page].to_s) if @data['total_page'] > 1 }", ['ID', 'Name', 'Hostname', 'Description'])
53
+ else
54
+ Helpers::AlertMessage.show_error_message(@data["message"])
55
+ end
56
+ else
57
+ Helpers::AlertMessage.show_error_message(error)
58
+ end
59
+ end
60
+
61
+ #
62
+ # get instance data
63
+ #
64
+ def show
65
+ @errors << "ID or Name is required." if @name_or_id.blank?
66
+
67
+ if valid?
68
+ Helpers::ErrorException.rescue do
69
+ data = Typhoeus.get(
70
+ "#{@endpoint}/api/v1/instances/show",
71
+ body: {
72
+ authenticate_token: @api_key,
73
+ email: @email,
74
+ name_or_id: @name_or_id
75
+ }
76
+ )
77
+
78
+ @data = JSON.parse data.response_body
79
+
80
+ if @data['success']
81
+ type = @data['type_deployment'] == 'barebone' ? 'manual' : @data['type_deployment']
82
+ Helpers::AlertMessage.show_content_information_message(@data['id']) { "ID: #message" }
83
+ Helpers::AlertMessage.show_content_information_message(@data['name']) { "Name: #message" }
84
+ Helpers::AlertMessage.show_content_information_message(@data['description']) { "Description: #message" }
85
+ Helpers::AlertMessage.show_content_information_message(@data['role']) { "Blueprint: #message" }
86
+ Helpers::AlertMessage.show_content_information_message(type) { "Deployment type: #message" }
87
+ Helpers::AlertMessage.show_content_information_message(@data['hostname']) { "Hostname: #message" }
88
+ Helpers::AlertMessage.show_content_information_message(Date.parse(@data['created_at']).to_s) { "Created At: #message" }
89
+ else
90
+ Helpers::AlertMessage.show_error_message(@data['message'])
91
+ end
92
+ end
93
+ else
94
+ Helpers::AlertMessage.show_error_message(error)
95
+ end
96
+ end
97
+
98
+ #
99
+ # deploy blueprint
100
+ #
101
+ def deploy(parameters = {})
102
+
103
+ @error << "Name is required" if parameters[:name].blank?
104
+ @error << "Blueprint Json file is required" if parameters[:blueprint].blank?
105
+ @error << "Deployment type is required" if parameters[:type].blank?
106
+ @error << "Compute Provider Json file is required" if parameters[:provider].blank? && parameters[:type] == "provider"
107
+
108
+ file_parameter = {}
109
+
110
+ [:blueprint, :service_logging, :service_monitoring, :service_backup, :provider].each do |file_name|
111
+ file_path = parameters[file_name]
112
+
113
+ if file_path.present?
114
+ begin
115
+ file = File.open(file_path, "r")
116
+ content = file.read
117
+ json = JSON.parse(content)
118
+ file_parameter[file_name] = Helpers::JsonBaseConvert.encode(json)
119
+ rescue
120
+ @errors << "Error on #{ file_path } file. Please check again."
121
+ end
122
+ end
123
+ end
124
+
125
+ if valid?
126
+ Helpers::ErrorException.rescue do
127
+
128
+ response = Typhoeus.post(
129
+ "#{@endpoint}/api/v1/instances/deploy",
130
+ body: {
131
+ authenticate_token: @api_key,
132
+ email: @email,
133
+ name: parameters[:name],
134
+ description: parameters[:desc],
135
+ type: parameters[:type],
136
+ custom: parameters[:custom],
137
+ file_parameter: file_parameter
138
+ }
139
+ )
140
+
141
+ @response = JSON.parse response.response_body
142
+
143
+ if @response["success"]
144
+ Helpers::AlertMessage.show_success_message(@response["message"])
145
+ else
146
+ Helpers::AlertMessage.show_error_message(@response["message"])
147
+ end
148
+ end
149
+ else
150
+ Helpers::AlertMessage.show_error_message(error)
151
+ end
152
+ end
153
+
154
+ #
155
+ # Check no error from validation
156
+ #
157
+ def valid?
158
+ @errors.blank?
159
+ end
160
+
161
+ #
162
+ # Get first error
163
+ #
164
+ def error
165
+ @errors.first
166
+ end
167
+
168
+ end
169
+ end
170
+ end
@@ -0,0 +1,61 @@
1
+ module Umbreo
2
+ module Models
3
+ class Module
4
+
5
+ def initialize(credentials = {})
6
+ if credentials.present?
7
+ @email = credentials[:email]
8
+ @api_key = credentials[:api_key]
9
+ @endpoint = credentials[:end_point] || SERVER_END_POINT
10
+ end
11
+ end
12
+
13
+ def retrieve_data(filter = {})
14
+ Helpers::ErrorException.rescue do
15
+ data = Typhoeus.get(
16
+ "#{@endpoint}/api/v1/modules",
17
+ body: {
18
+ authenticate_token: @api_key,
19
+ email: @email,
20
+ filter: filter
21
+ }
22
+ )
23
+
24
+ @data = JSON.parse data.response_body
25
+ end
26
+ end
27
+
28
+ def all(filter = {})
29
+ @errors << "Search keyword is required." if filter[:keyword].blank? && filter[:search]
30
+
31
+ if valid?
32
+ retrieve_data(filter)
33
+
34
+ if @data['umbreo_modules'].present?
35
+ page = " | Page: #{filter[:page]} of #{@data['total_page']} pages"
36
+ Helpers::Table.show_table(@data['umbreo_modules'], "List Module#{ page if @data['total_page'] > 1 }", ['ID', 'Name', 'Description'])
37
+ else
38
+ Helpers::AlertMessage.show_error_message(@data["message"])
39
+ end
40
+ else
41
+ Helpers::AlertMessage.show_error_message(error)
42
+ end
43
+ end
44
+
45
+ #
46
+ # Check no error from validation
47
+ #
48
+ def valid?
49
+ @errors.blank?
50
+ end
51
+
52
+ #
53
+ # Get first error
54
+ #
55
+ def error
56
+ @errors.first
57
+ end
58
+
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,260 @@
1
+ module Umbreo
2
+ module Models
3
+ class OpenstackProvider
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 size of openstack
21
+ #
22
+ def zone_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/openstack_services/zone_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.table_callback_retrieve_data(data['zones'], "List Openstack Zone")
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 flavor of openstack
51
+ #
52
+ def flavor_list
53
+ @errors << "ID or Name provider is required." if @name_or_id.blank?
54
+
55
+ if valid?
56
+ Helpers::ErrorException.rescue do
57
+ data = Typhoeus.get(
58
+ "#{@endpoint}/api/v1/openstack_services/flavor_list",
59
+ body: {
60
+ authenticate_token: @api_key,
61
+ email: @email,
62
+ id: @name_or_id
63
+ }
64
+ )
65
+
66
+ data = JSON.parse data.response_body
67
+
68
+ if data['success']
69
+ Helpers::Table.show_table(data['flavors'], "List Openstack Flavor", ['Flavor Name', 'Flavor ID'])
70
+ else
71
+ Helpers::AlertMessage.show_error_message(data['message'])
72
+ end
73
+ end
74
+ else
75
+ Helpers::AlertMessage.show_error_message(error)
76
+ end
77
+ end
78
+
79
+ #
80
+ # get list image of openstack
81
+ #
82
+ def image_list
83
+ @errors << "ID or Name provider is required." if @name_or_id.blank?
84
+
85
+ if valid?
86
+ Helpers::ErrorException.rescue do
87
+ data = Typhoeus.get(
88
+ "#{@endpoint}/api/v1/openstack_services/image_list",
89
+ body: {
90
+ authenticate_token: @api_key,
91
+ email: @email,
92
+ id: @name_or_id
93
+ }
94
+ )
95
+
96
+ data = JSON.parse data.response_body
97
+
98
+ if data['success']
99
+ Helpers::Table.show_table(data['images'], "List Openstack Image", ['Flavor Image', 'Flavor ID'])
100
+ else
101
+ Helpers::AlertMessage.show_error_message(data['message'])
102
+ end
103
+ end
104
+ else
105
+ Helpers::AlertMessage.show_error_message(error)
106
+ end
107
+ end
108
+
109
+ #
110
+ # get list group of openstack
111
+ #
112
+ def group_list
113
+ @errors << "ID or Name provider is required." if @name_or_id.blank?
114
+
115
+ if valid?
116
+ Helpers::ErrorException.rescue do
117
+ data = Typhoeus.get(
118
+ "#{@endpoint}/api/v1/openstack_services/group_list",
119
+ body: {
120
+ authenticate_token: @api_key,
121
+ email: @email,
122
+ id: @name_or_id
123
+ }
124
+ )
125
+
126
+ data = JSON.parse data.response_body
127
+
128
+ if data['success']
129
+ Helpers::Table.table_callback_retrieve_data(data['groups'], "List Openstack Group")
130
+ else
131
+ Helpers::AlertMessage.show_error_message(data['message'])
132
+ end
133
+ end
134
+ else
135
+ Helpers::AlertMessage.show_error_message(error)
136
+ end
137
+ end
138
+
139
+ #
140
+ # get list keypair of openstack
141
+ #
142
+ def keypair_list
143
+ @errors << "ID or Name provider is required." if @name_or_id.blank?
144
+
145
+ if valid?
146
+ Helpers::ErrorException.rescue do
147
+ data = Typhoeus.get(
148
+ "#{@endpoint}/api/v1/openstack_services/keypair_list",
149
+ body: {
150
+ authenticate_token: @api_key,
151
+ email: @email,
152
+ id: @name_or_id
153
+ }
154
+ )
155
+
156
+ data = JSON.parse data.response_body
157
+
158
+ if data['success']
159
+ Helpers::Table.table_callback_retrieve_data(data['keypairs'], "List Openstack Keypair")
160
+ else
161
+ Helpers::AlertMessage.show_error_message(data['message'])
162
+ end
163
+ end
164
+ else
165
+ Helpers::AlertMessage.show_error_message(error)
166
+ end
167
+ end
168
+
169
+ #
170
+ # get json credential file
171
+ #
172
+ def export
173
+ @errors << "ID or Slug is required." if @name_or_id.blank?
174
+
175
+ if valid?
176
+ Helpers::ErrorException.rescue do
177
+ data = Typhoeus.get(
178
+ "#{@endpoint}/api/v1/openstack_services/export",
179
+ body: {
180
+ authenticate_token: @api_key,
181
+ email: @email,
182
+ id: @name_or_id
183
+ }
184
+ )
185
+
186
+ data = JSON.parse data.response_body rescue nil
187
+ user_provider = data["user_provider"]
188
+
189
+ if user_provider.present?
190
+ name_file = "openstack_provider"
191
+ Helpers::FileGenerator.create(name_file, user_provider)
192
+ Helpers::AlertMessage.show_success_message("Success export openstack provider. Your file is saved on json file with name #{name_file}.json")
193
+ else
194
+ Helpers::AlertMessage.show_error_message(data["message"])
195
+ end
196
+ end
197
+ else
198
+ Helpers::AlertMessage.show_error_message(error)
199
+ end
200
+ end
201
+
202
+ #
203
+ # check valid json params
204
+ #
205
+ def validate(file_path)
206
+ @errors << "File directory is required." if file_path.blank?
207
+
208
+ begin
209
+ file = File.open(file_path, "r")
210
+ content = file.read
211
+ json = JSON.parse(content)
212
+ encode = Helpers::JsonBaseConvert.encode(json)
213
+ rescue
214
+ @errors << "Error on file. Please check again."
215
+ end
216
+
217
+ @errors << "Content of file is required." if content.blank?
218
+
219
+ if valid?
220
+ Helpers::ErrorException.rescue do
221
+
222
+ response = Typhoeus.get(
223
+ "#{@endpoint}/api/v1/openstack_services/validate",
224
+ body: {
225
+ authenticate_token: @api_key,
226
+ email: @email,
227
+ content: encode
228
+ }
229
+ )
230
+
231
+ @response = JSON.parse response.response_body
232
+
233
+ if @response["success"]
234
+ Helpers::AlertMessage.show_success_message(@response["message"])
235
+ else
236
+ Helpers::AlertMessage.show_error_message(@response["message"])
237
+ end
238
+ end
239
+ else
240
+ Helpers::AlertMessage.show_error_message(error)
241
+ end
242
+ end
243
+
244
+ #
245
+ # check no errors
246
+ #
247
+ def valid?
248
+ @errors.blank?
249
+ end
250
+
251
+ #
252
+ # call errors
253
+ #
254
+ def error
255
+ @errors.first
256
+ end
257
+
258
+ end
259
+ end
260
+ end