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.
- checksums.yaml +7 -0
- data/.env +2 -0
- data/Gemfile +23 -0
- data/Gemfile.lock +106 -0
- data/README.md +1625 -0
- data/Rakefile +44 -0
- data/bin/manifests/init.pp +20 -0
- data/bin/umbreo +1684 -0
- data/bin/umbreo.json +34 -0
- data/lib/umbreo.rb +49 -0
- data/lib/umbreo/helpers/alert_message.rb +58 -0
- data/lib/umbreo/helpers/error_exception.rb +15 -0
- data/lib/umbreo/helpers/file_generator.rb +13 -0
- data/lib/umbreo/helpers/json_base_convert.rb +30 -0
- data/lib/umbreo/helpers/table.rb +45 -0
- data/lib/umbreo/models/amazon_web_service_provider.rb +260 -0
- data/lib/umbreo/models/authentication.rb +99 -0
- data/lib/umbreo/models/blueprint.rb +241 -0
- data/lib/umbreo/models/cloud_provider.rb +143 -0
- data/lib/umbreo/models/configuration.rb +98 -0
- data/lib/umbreo/models/digital_ocean_provider.rb +204 -0
- data/lib/umbreo/models/google_compute_engine_provider.rb +232 -0
- data/lib/umbreo/models/instance.rb +170 -0
- data/lib/umbreo/models/module.rb +61 -0
- data/lib/umbreo/models/openstack_provider.rb +260 -0
- data/lib/umbreo/models/profile.rb +61 -0
- data/lib/umbreo/models/provider.rb +164 -0
- data/lib/umbreo/models/service.rb +244 -0
- data/lib/umbreo/models/service_provider.rb +185 -0
- data/lib/umbreo/models/stack.rb +181 -0
- data/lib/umbreo/models/system.rb +43 -0
- data/lib/umbreo/models/umbreo_stack_template.rb +163 -0
- data/lib/umbreo/models/xenserver_provider.rb +200 -0
- data/lib/umbreo/version.rb +3 -0
- data/manifests/init.pp +20 -0
- data/manifests1/init.pp +9 -0
- data/umbreo.gemspec +28 -0
- metadata +241 -0
@@ -0,0 +1,61 @@
|
|
1
|
+
module Umbreo
|
2
|
+
module Models
|
3
|
+
class Profile
|
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/profiles",
|
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_profiles'].present?
|
35
|
+
page = " | Page: #{filter[:page]} of #{@data['total_page']} pages"
|
36
|
+
Helpers::Table.show_table(@data['umbreo_profiles'], "List Profile#{ 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,164 @@
|
|
1
|
+
module Umbreo
|
2
|
+
module Models
|
3
|
+
class Provider
|
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 of my providers
|
21
|
+
#
|
22
|
+
def retrieve_data(filter = {})
|
23
|
+
Helpers::ErrorException.rescue do
|
24
|
+
data = Typhoeus.get(
|
25
|
+
"#{@endpoint}/api/v1/providers",
|
26
|
+
body: {
|
27
|
+
authenticate_token: @api_key,
|
28
|
+
email: @email,
|
29
|
+
filter: filter
|
30
|
+
}
|
31
|
+
)
|
32
|
+
|
33
|
+
@data = JSON.parse data.response_body
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
#
|
38
|
+
# callback for retrieve data
|
39
|
+
#
|
40
|
+
def all(filter = {})
|
41
|
+
@errors << "Please choose correct option cloud provider |all, aws, gcompute, docean, openstack, XenServer|" if CloudProvider::CLOUDS.exclude?(filter[:umbreo_cloud_provider_id].try(:to_sym)) && filter[:umbreo_cloud_provider_id].present?
|
42
|
+
|
43
|
+
if valid?
|
44
|
+
retrieve_data(filter)
|
45
|
+
|
46
|
+
if @data['user_providers'].present?
|
47
|
+
page = " | Page: #{filter[:page]} of #{@data['total_page']} pages"
|
48
|
+
Helpers::Table.show_table(@data['user_providers'], "List My Provider#{ page if @data['total_page'] > 1 }", ['ID', 'Name', 'Cloud Provider', 'Description'])
|
49
|
+
else
|
50
|
+
Helpers::AlertMessage.show_error_message(@data["message"])
|
51
|
+
end
|
52
|
+
else
|
53
|
+
Helpers::AlertMessage.show_error_message(error)
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
#
|
59
|
+
# get instance data
|
60
|
+
#
|
61
|
+
def show
|
62
|
+
@errors << "ID or Name is required." if @name_or_id.blank?
|
63
|
+
|
64
|
+
if valid?
|
65
|
+
Helpers::ErrorException.rescue do
|
66
|
+
data = Typhoeus.get(
|
67
|
+
"#{@endpoint}/api/v1/providers/show",
|
68
|
+
body: {
|
69
|
+
authenticate_token: @api_key,
|
70
|
+
email: @email,
|
71
|
+
name_or_id: @name_or_id
|
72
|
+
}
|
73
|
+
)
|
74
|
+
|
75
|
+
@data = JSON.parse data.response_body
|
76
|
+
|
77
|
+
if @data['success']
|
78
|
+
Helpers::AlertMessage.show_content_information_message(@data['id']) { "ID: #message" }
|
79
|
+
Helpers::AlertMessage.show_content_information_message(@data['name']) { "Name: #message" }
|
80
|
+
Helpers::AlertMessage.show_content_information_message(@data['description']) { "Description: #message" }
|
81
|
+
Helpers::AlertMessage.show_content_information_message(@data['umbreo_cloud_provider']) { "Cloud provider: #message" }
|
82
|
+
Helpers::AlertMessage.show_content_information_message(Date.parse(@data['created_at']).to_s) { "Created At: #message" }
|
83
|
+
else
|
84
|
+
Helpers::AlertMessage.show_error_message(@data['message'])
|
85
|
+
end
|
86
|
+
end
|
87
|
+
else
|
88
|
+
Helpers::AlertMessage.show_error_message(error)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
#
|
93
|
+
# validation params
|
94
|
+
#
|
95
|
+
def check_validation!
|
96
|
+
@errors << 'Invalid cloud provider' if CloudProvider::CLOUDS.exclude?(@cloud_provider.to_sym)
|
97
|
+
@errors << 'Invalid cloud provider credential' if @provider_credential.blank?
|
98
|
+
end
|
99
|
+
|
100
|
+
#
|
101
|
+
# check no errors
|
102
|
+
#
|
103
|
+
def valid?
|
104
|
+
@errors.blank?
|
105
|
+
end
|
106
|
+
|
107
|
+
#
|
108
|
+
# call errors
|
109
|
+
#
|
110
|
+
def error
|
111
|
+
@errors.first
|
112
|
+
end
|
113
|
+
|
114
|
+
#
|
115
|
+
# create provider
|
116
|
+
#
|
117
|
+
def create(cloud, name, description = nil, file_path)
|
118
|
+
@name = name
|
119
|
+
@desc = description
|
120
|
+
@cloud_provider = cloud
|
121
|
+
|
122
|
+
@errors << "File directory is required." if file_path.blank?
|
123
|
+
@errors << "Name is required." if name.blank?
|
124
|
+
begin
|
125
|
+
file = File.open(file_path, "r")
|
126
|
+
content = file.read
|
127
|
+
@json = JSON.parse(content)
|
128
|
+
@encode = Helpers::JsonBaseConvert.encode(@json)
|
129
|
+
rescue
|
130
|
+
@errors << "Error on file. Please check again."
|
131
|
+
end
|
132
|
+
@errors << "Content of file is required." if content.blank?
|
133
|
+
|
134
|
+
if valid?
|
135
|
+
url = "#{@endpoint}/api/v1/providers"
|
136
|
+
|
137
|
+
Helpers::ErrorException.rescue do
|
138
|
+
data = Typhoeus.post(
|
139
|
+
url,
|
140
|
+
body: {
|
141
|
+
authenticate_token: @api_key,
|
142
|
+
email: @email,
|
143
|
+
provider: @cloud_provider,
|
144
|
+
name_provider: @name,
|
145
|
+
description_provider: @desc,
|
146
|
+
provider_credential: @encode
|
147
|
+
}
|
148
|
+
)
|
149
|
+
data = JSON.parse data.response_body
|
150
|
+
|
151
|
+
if data['success']
|
152
|
+
Helpers::AlertMessage.show_success_message(data['message'])
|
153
|
+
else
|
154
|
+
Helpers::AlertMessage.show_error_message(data['message'])
|
155
|
+
end
|
156
|
+
end
|
157
|
+
else
|
158
|
+
Helpers::AlertMessage.show_error_message(error)
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
end
|
163
|
+
end
|
164
|
+
end
|
@@ -0,0 +1,244 @@
|
|
1
|
+
module Umbreo
|
2
|
+
module Models
|
3
|
+
class Service
|
4
|
+
|
5
|
+
def initialize(credentials = {}, name_or_id = nil)
|
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
|
+
|
12
|
+
@name_or_id = name_or_id
|
13
|
+
@errors = []
|
14
|
+
end
|
15
|
+
|
16
|
+
#
|
17
|
+
# retrieve data instance
|
18
|
+
#
|
19
|
+
def retrieve_data(filter = {})
|
20
|
+
Helpers::ErrorException.rescue do
|
21
|
+
data = Typhoeus.get(
|
22
|
+
"#{@endpoint}/api/v1/services",
|
23
|
+
body: {
|
24
|
+
authenticate_token: @api_key,
|
25
|
+
email: @email,
|
26
|
+
filter: filter
|
27
|
+
}
|
28
|
+
)
|
29
|
+
|
30
|
+
@data = JSON.parse data.response_body
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
#
|
35
|
+
# callback for retrieve data
|
36
|
+
#
|
37
|
+
def all(filter = {})
|
38
|
+
@errors << "Please choose correct state |all, active, unactive|" if ['active', 'unactive'].exclude?(filter[:state]) && filter[:state].present?
|
39
|
+
@errors << "Search keyword is required." if filter[:keyword].blank? && filter[:search]
|
40
|
+
|
41
|
+
if valid?
|
42
|
+
retrieve_data(filter)
|
43
|
+
|
44
|
+
if @data['user_services'].present?
|
45
|
+
page = " | Page: #{filter[:page]} of #{@data['total_page']} pages"
|
46
|
+
Helpers::Table.show_table(@data['user_services'], "List Service#{ page if @data['total_page'] > 1 }", ['ID', 'Name', 'Service Provider', 'Link Type', 'Active'])
|
47
|
+
else
|
48
|
+
Helpers::AlertMessage.show_error_message(@data["message"])
|
49
|
+
end
|
50
|
+
else
|
51
|
+
Helpers::AlertMessage.show_error_message(error)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
#
|
56
|
+
# get instance data
|
57
|
+
#
|
58
|
+
def show
|
59
|
+
@errors << "ID or Name is required." if @name_or_id.blank?
|
60
|
+
|
61
|
+
if valid?
|
62
|
+
Helpers::ErrorException.rescue do
|
63
|
+
data = Typhoeus.get(
|
64
|
+
"#{@endpoint}/api/v1/services/show",
|
65
|
+
body: {
|
66
|
+
authenticate_token: @api_key,
|
67
|
+
email: @email,
|
68
|
+
id: @name_or_id
|
69
|
+
}
|
70
|
+
)
|
71
|
+
|
72
|
+
@data = JSON.parse data.response_body
|
73
|
+
|
74
|
+
if @data['success']
|
75
|
+
Helpers::AlertMessage.show_content_information_message(@data['id']) { "ID: #message" }
|
76
|
+
Helpers::AlertMessage.show_content_information_message(@data['name']) { "Name: #message" }
|
77
|
+
Helpers::AlertMessage.show_content_information_message(@data['umbreo_service']) { "Service Provider: #message" }
|
78
|
+
Helpers::AlertMessage.show_content_information_message(@data['link_type']) { "Link type: #message" }
|
79
|
+
Helpers::AlertMessage.show_content_information_message(@data['is_active']) { "Active: #message" }
|
80
|
+
Helpers::AlertMessage.show_content_information_message(@data['description']) { "Description: #message" }
|
81
|
+
else
|
82
|
+
Helpers::AlertMessage.show_error_message(@data['message'])
|
83
|
+
end
|
84
|
+
end
|
85
|
+
else
|
86
|
+
Helpers::AlertMessage.show_error_message(error)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
#
|
91
|
+
# export umbreo stack template params
|
92
|
+
#
|
93
|
+
def export
|
94
|
+
Helpers::ErrorException.rescue do
|
95
|
+
response = Typhoeus.get(
|
96
|
+
"#{@endpoint}/api/v1/services/export",
|
97
|
+
body: {
|
98
|
+
authenticate_token: @api_key,
|
99
|
+
email: @email,
|
100
|
+
id: @name_or_id
|
101
|
+
}
|
102
|
+
)
|
103
|
+
|
104
|
+
@response = JSON.parse response.response_body rescue nil
|
105
|
+
|
106
|
+
if @response["user_service"].present?
|
107
|
+
name_file = @response["user_service"]["name"].downcase.titleize.delete(" ").underscore
|
108
|
+
Helpers::FileGenerator.create(name_file, @response["user_service"])
|
109
|
+
|
110
|
+
Helpers::AlertMessage.show_success_message("Success export service. your service is saved on json file with name #{name_file}.json")
|
111
|
+
else
|
112
|
+
Helpers::AlertMessage.show_error_message(@response["message"])
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
#
|
118
|
+
# check valid json params
|
119
|
+
#
|
120
|
+
def validate(file_path)
|
121
|
+
@errors << "File directory is required." if file_path.blank?
|
122
|
+
|
123
|
+
begin
|
124
|
+
file = File.open(file_path, "r")
|
125
|
+
content = file.read
|
126
|
+
json = JSON.parse(content)
|
127
|
+
encode = Helpers::JsonBaseConvert.encode(json)
|
128
|
+
rescue
|
129
|
+
@errors << "Error on file. Please check again."
|
130
|
+
end
|
131
|
+
@errors << "Content of file is required." if content.blank?
|
132
|
+
|
133
|
+
if valid?
|
134
|
+
Helpers::ErrorException.rescue do
|
135
|
+
|
136
|
+
response = Typhoeus.get(
|
137
|
+
"#{@endpoint}/api/v1/services/validate",
|
138
|
+
body: {
|
139
|
+
authenticate_token: @api_key,
|
140
|
+
email: @email,
|
141
|
+
content: encode
|
142
|
+
}
|
143
|
+
)
|
144
|
+
|
145
|
+
@response = JSON.parse response.response_body
|
146
|
+
|
147
|
+
if @response["success"]
|
148
|
+
Helpers::AlertMessage.show_success_message(@response["message"])
|
149
|
+
else
|
150
|
+
Helpers::AlertMessage.show_error_message(@response["message"])
|
151
|
+
end
|
152
|
+
end
|
153
|
+
else
|
154
|
+
Helpers::AlertMessage.show_error_message(error)
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
#
|
159
|
+
# create user provider
|
160
|
+
#
|
161
|
+
def create(parameters)
|
162
|
+
|
163
|
+
@errors << "Name is required" if parameters[:name].blank?
|
164
|
+
|
165
|
+
file_path = parameters[:params]
|
166
|
+
if file_path.present?
|
167
|
+
begin
|
168
|
+
file = File.open(file_path, "r")
|
169
|
+
content = file.read
|
170
|
+
json = JSON.parse(content)
|
171
|
+
parameters[:params] = Helpers::JsonBaseConvert.encode(json)
|
172
|
+
rescue
|
173
|
+
@errors << "Error on #{ file_path } file. Please check again."
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
if parameters[:user_node_attributes].present?
|
178
|
+
main_param = parameters[:user_node_attributes]
|
179
|
+
|
180
|
+
@errors << "#{main_param[:name]} ##{index} Blueprint Json file is required" if main_param[:name].blank?
|
181
|
+
@errors << "#{main_param[:name]} ##{index} Deployment type is required" if main_param[:type].blank?
|
182
|
+
@errors << "#{main_param[:name]} ##{index} Compute Provider Json file is required" if main_param[:provider].blank? && main_param[:type] == "provider"
|
183
|
+
|
184
|
+
main_param[:file_parameter] = {}
|
185
|
+
|
186
|
+
[:blueprint, :service_logging, :service_monitoring, :service_backup, :provider].each do |file_name|
|
187
|
+
file_path = main_param[file_name] rescue nil
|
188
|
+
|
189
|
+
if file_path.present?
|
190
|
+
begin
|
191
|
+
file = File.open(file_path, "r")
|
192
|
+
content = file.read
|
193
|
+
json = JSON.parse(content)
|
194
|
+
main_param[file_name] = Helpers::JsonBaseConvert.encode(json)
|
195
|
+
rescue
|
196
|
+
@errors << "Error on #{ file_path } file. Please check again."
|
197
|
+
end
|
198
|
+
end
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
if valid?
|
203
|
+
Helpers::ErrorException.rescue do
|
204
|
+
|
205
|
+
response = Typhoeus.post(
|
206
|
+
"#{@endpoint}/api/v1/services",
|
207
|
+
body: {
|
208
|
+
authenticate_token: @api_key,
|
209
|
+
email: @email,
|
210
|
+
user_service: parameters
|
211
|
+
}
|
212
|
+
)
|
213
|
+
|
214
|
+
@response = JSON.parse response.response_body
|
215
|
+
|
216
|
+
if @response["success"]
|
217
|
+
Helpers::AlertMessage.show_success_message("Service successfully created.")
|
218
|
+
else
|
219
|
+
Helpers::AlertMessage.show_error_message(@response["message"])
|
220
|
+
end
|
221
|
+
end
|
222
|
+
else
|
223
|
+
Helpers::AlertMessage.show_error_message(error)
|
224
|
+
end
|
225
|
+
|
226
|
+
end
|
227
|
+
|
228
|
+
#
|
229
|
+
# Check no error from validation
|
230
|
+
#
|
231
|
+
def valid?
|
232
|
+
@errors.blank?
|
233
|
+
end
|
234
|
+
|
235
|
+
#
|
236
|
+
# Get first error
|
237
|
+
#
|
238
|
+
def error
|
239
|
+
@errors.first
|
240
|
+
end
|
241
|
+
|
242
|
+
end
|
243
|
+
end
|
244
|
+
end
|