umbreo_cli 1.0.141

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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