cloudmunch_sdk_v3 3.0.0
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/lib/cloudmunch_Ruby_sdk_v2/AppAbstract.rb +146 -0
- data/lib/cloudmunch_Ruby_sdk_v2/AppContext.rb +59 -0
- data/lib/cloudmunch_Ruby_sdk_v2/AssetHelper.rb +127 -0
- data/lib/cloudmunch_Ruby_sdk_v2/CloudmunchConstants.rb +24 -0
- data/lib/cloudmunch_Ruby_sdk_v2/CloudmunchService.rb +249 -0
- data/lib/cloudmunch_Ruby_sdk_v2/ElasticBeanStalkServer.rb +52 -0
- data/lib/cloudmunch_Ruby_sdk_v2/EnvironmentHelper.rb +292 -0
- data/lib/cloudmunch_Ruby_sdk_v2/InsightHelper.rb +770 -0
- data/lib/cloudmunch_Ruby_sdk_v2/IntegrationHelper.rb +69 -0
- data/lib/cloudmunch_Ruby_sdk_v2/PluginLoaderAbstract.rb +140 -0
- data/lib/cloudmunch_Ruby_sdk_v2/PluginReporterAbstract.rb +141 -0
- data/lib/cloudmunch_Ruby_sdk_v2/RoleHelper.rb +170 -0
- data/lib/cloudmunch_Ruby_sdk_v2/Server.rb +77 -0
- data/lib/cloudmunch_Ruby_sdk_v2/ServerHelper.rb +284 -0
- data/lib/cloudmunch_Ruby_sdk_v2/ServiceProvider.rb +25 -0
- data/lib/cloudmunch_Ruby_sdk_v2/Util.rb +119 -0
- data/lib/cloudmunch_Ruby_sdk_v2/doc/AppAbstract.html +1062 -0
- data/lib/cloudmunch_Ruby_sdk_v2/doc/AppContext.html +1402 -0
- data/lib/cloudmunch_Ruby_sdk_v2/doc/AssetHelper.html +694 -0
- data/lib/cloudmunch_Ruby_sdk_v2/doc/Cloudmunch.html +117 -0
- data/lib/cloudmunch_Ruby_sdk_v2/doc/CloudmunchConstants.html +184 -0
- data/lib/cloudmunch_Ruby_sdk_v2/doc/CloudmunchService.html +1195 -0
- data/lib/cloudmunch_Ruby_sdk_v2/doc/ElasticBeanStalkServer.html +1375 -0
- data/lib/cloudmunch_Ruby_sdk_v2/doc/InsightHelper.html +2889 -0
- data/lib/cloudmunch_Ruby_sdk_v2/doc/IntegrationHelper.html +400 -0
- data/lib/cloudmunch_Ruby_sdk_v2/doc/RoleHelper.html +809 -0
- data/lib/cloudmunch_Ruby_sdk_v2/doc/Server.html +2302 -0
- data/lib/cloudmunch_Ruby_sdk_v2/doc/ServerHelper.html +1181 -0
- data/lib/cloudmunch_Ruby_sdk_v2/doc/ServiceProvider.html +328 -0
- data/lib/cloudmunch_Ruby_sdk_v2/doc/Util.html +540 -0
- data/lib/cloudmunch_Ruby_sdk_v2/doc/_index.html +214 -0
- data/lib/cloudmunch_Ruby_sdk_v2/doc/class_list.html +58 -0
- data/lib/cloudmunch_Ruby_sdk_v2/doc/css/common.css +1 -0
- data/lib/cloudmunch_Ruby_sdk_v2/doc/css/full_list.css +57 -0
- data/lib/cloudmunch_Ruby_sdk_v2/doc/css/style.css +339 -0
- data/lib/cloudmunch_Ruby_sdk_v2/doc/file_list.html +57 -0
- data/lib/cloudmunch_Ruby_sdk_v2/doc/frames.html +26 -0
- data/lib/cloudmunch_Ruby_sdk_v2/doc/index.html +214 -0
- data/lib/cloudmunch_Ruby_sdk_v2/doc/js/app.js +219 -0
- data/lib/cloudmunch_Ruby_sdk_v2/doc/js/full_list.js +181 -0
- data/lib/cloudmunch_Ruby_sdk_v2/doc/js/jquery.js +4 -0
- data/lib/cloudmunch_Ruby_sdk_v2/doc/method_list.html +993 -0
- data/lib/cloudmunch_Ruby_sdk_v2/doc/top-level-namespace.html +114 -0
- data/lib/cloudmunch_Ruby_sdk_v2/version.rb +3 -0
- data/lib/cloudmunch_Ruby_sdk_v3/AppAbstract.rb +146 -0
- data/lib/cloudmunch_Ruby_sdk_v3/AppContext.rb +59 -0
- data/lib/cloudmunch_Ruby_sdk_v3/AssetHelper.rb +127 -0
- data/lib/cloudmunch_Ruby_sdk_v3/CloudmunchConstants.rb +24 -0
- data/lib/cloudmunch_Ruby_sdk_v3/CloudmunchService.rb +300 -0
- data/lib/cloudmunch_Ruby_sdk_v3/ElasticBeanStalkServer.rb +52 -0
- data/lib/cloudmunch_Ruby_sdk_v3/EnvironmentHelper.rb +292 -0
- data/lib/cloudmunch_Ruby_sdk_v3/InsightHelper.rb +770 -0
- data/lib/cloudmunch_Ruby_sdk_v3/IntegrationHelper.rb +69 -0
- data/lib/cloudmunch_Ruby_sdk_v3/PluginLoaderAbstract.rb +140 -0
- data/lib/cloudmunch_Ruby_sdk_v3/PluginReporterAbstract.rb +141 -0
- data/lib/cloudmunch_Ruby_sdk_v3/RoleHelper.rb +170 -0
- data/lib/cloudmunch_Ruby_sdk_v3/Server.rb +77 -0
- data/lib/cloudmunch_Ruby_sdk_v3/ServerHelper.rb +284 -0
- data/lib/cloudmunch_Ruby_sdk_v3/ServiceProvider.rb +25 -0
- data/lib/cloudmunch_Ruby_sdk_v3/Util.rb +119 -0
- data/lib/cloudmunch_Ruby_sdk_v3/doc/AppAbstract.html +1062 -0
- data/lib/cloudmunch_Ruby_sdk_v3/doc/AppContext.html +1402 -0
- data/lib/cloudmunch_Ruby_sdk_v3/doc/AssetHelper.html +694 -0
- data/lib/cloudmunch_Ruby_sdk_v3/doc/Cloudmunch.html +117 -0
- data/lib/cloudmunch_Ruby_sdk_v3/doc/CloudmunchConstants.html +184 -0
- data/lib/cloudmunch_Ruby_sdk_v3/doc/CloudmunchService.html +1195 -0
- data/lib/cloudmunch_Ruby_sdk_v3/doc/ElasticBeanStalkServer.html +1375 -0
- data/lib/cloudmunch_Ruby_sdk_v3/doc/InsightHelper.html +2889 -0
- data/lib/cloudmunch_Ruby_sdk_v3/doc/IntegrationHelper.html +400 -0
- data/lib/cloudmunch_Ruby_sdk_v3/doc/RoleHelper.html +809 -0
- data/lib/cloudmunch_Ruby_sdk_v3/doc/Server.html +2302 -0
- data/lib/cloudmunch_Ruby_sdk_v3/doc/ServerHelper.html +1181 -0
- data/lib/cloudmunch_Ruby_sdk_v3/doc/ServiceProvider.html +328 -0
- data/lib/cloudmunch_Ruby_sdk_v3/doc/Util.html +540 -0
- data/lib/cloudmunch_Ruby_sdk_v3/doc/_index.html +214 -0
- data/lib/cloudmunch_Ruby_sdk_v3/doc/class_list.html +58 -0
- data/lib/cloudmunch_Ruby_sdk_v3/doc/css/common.css +1 -0
- data/lib/cloudmunch_Ruby_sdk_v3/doc/css/full_list.css +57 -0
- data/lib/cloudmunch_Ruby_sdk_v3/doc/css/style.css +339 -0
- data/lib/cloudmunch_Ruby_sdk_v3/doc/file_list.html +57 -0
- data/lib/cloudmunch_Ruby_sdk_v3/doc/frames.html +26 -0
- data/lib/cloudmunch_Ruby_sdk_v3/doc/index.html +214 -0
- data/lib/cloudmunch_Ruby_sdk_v3/doc/js/app.js +219 -0
- data/lib/cloudmunch_Ruby_sdk_v3/doc/js/full_list.js +181 -0
- data/lib/cloudmunch_Ruby_sdk_v3/doc/js/jquery.js +4 -0
- data/lib/cloudmunch_Ruby_sdk_v3/doc/method_list.html +993 -0
- data/lib/cloudmunch_Ruby_sdk_v3/doc/top-level-namespace.html +114 -0
- data/lib/cloudmunch_Ruby_sdk_v3/version.rb +3 -0
- data/lib/cloudmunch_sdk.rb +5 -0
- data/lib/cloudmunch_sdk_v3.rb +5 -0
- metadata +194 -0
@@ -0,0 +1,24 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
###
|
3
|
+
### (c) CloudMunch Inc.
|
4
|
+
### All Rights Reserved
|
5
|
+
### Un-authorized copying of this file, via any medium is strictly prohibited
|
6
|
+
### Proprietary and confidential
|
7
|
+
###
|
8
|
+
### ganesan@cloudmunch.com
|
9
|
+
###
|
10
|
+
|
11
|
+
$LOAD_PATH << '.'
|
12
|
+
|
13
|
+
class CloudmunchConstants
|
14
|
+
#Assets
|
15
|
+
STATUS_RUNNING = 'running'
|
16
|
+
STATUS_STOPPED = 'stopped'
|
17
|
+
STATUS_NIL = 'NIL'
|
18
|
+
|
19
|
+
#Environments
|
20
|
+
STATUS_RUNNING_WITH_WARNING = 'running_with_warning'
|
21
|
+
STATUS_STOPPED_WITH_ERRORS = 'stopped_with_errors'
|
22
|
+
STATUS_ACTION_IN_PROGRESS = 'action_in_progress'
|
23
|
+
STATUS_CREATION_IN_PROGRESS = 'creation_in_progress'
|
24
|
+
end
|
@@ -0,0 +1,300 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
require 'net/http'
|
4
|
+
require 'cgi'
|
5
|
+
require 'json'
|
6
|
+
|
7
|
+
require_relative "Util"
|
8
|
+
|
9
|
+
module CloudmunchService
|
10
|
+
include Util
|
11
|
+
|
12
|
+
##################################################################################
|
13
|
+
###
|
14
|
+
### downloadKeys(filekey, context, contextid)
|
15
|
+
### getResource(type)
|
16
|
+
### deleteKeys()
|
17
|
+
### getCloudmunchData(paramHash)
|
18
|
+
### updateCloudmunchData(paramHash, method = "POST")
|
19
|
+
### deleteCloudmunchData(paramHash)
|
20
|
+
### parseResponse(responseJson)
|
21
|
+
### generateServerURL(paramHash, appendQueryParams = nil)
|
22
|
+
###
|
23
|
+
###
|
24
|
+
##################################################################################
|
25
|
+
|
26
|
+
###################################################################################
|
27
|
+
#### getResource(type)
|
28
|
+
#### Return resources available for a given type
|
29
|
+
###################################################################################
|
30
|
+
def getResource(type)
|
31
|
+
if !type.nil?
|
32
|
+
paramHash = Hash.new
|
33
|
+
paramHash["context"] = "resources"
|
34
|
+
paramHash["filter"] = {"type" => type}
|
35
|
+
paramHash["fields"] = "id,integration_id,key_fields"
|
36
|
+
|
37
|
+
resource = getCloudmunchData(paramHash)
|
38
|
+
|
39
|
+
if resource.nil?
|
40
|
+
log("DEBUG", "Unable to retrieve resource for this type")
|
41
|
+
return nil
|
42
|
+
else
|
43
|
+
return resource
|
44
|
+
end
|
45
|
+
else
|
46
|
+
log("DEBUG", "Type needs to be provided to retrieve resource!")
|
47
|
+
return nil
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def getIntegrationWithID(integrationID)
|
52
|
+
if !integrationID.nil?
|
53
|
+
paramHash = Hash.new
|
54
|
+
paramHash["context"] = "integrations"
|
55
|
+
paramHash["contextID"] = integrationID
|
56
|
+
|
57
|
+
integration = getCloudmunchData(paramHash)
|
58
|
+
|
59
|
+
log("DEBUG",integration)
|
60
|
+
if integration.nil?
|
61
|
+
return nil
|
62
|
+
else
|
63
|
+
if integration["configuration"]
|
64
|
+
return integration["configuration"]
|
65
|
+
else
|
66
|
+
return nil
|
67
|
+
end
|
68
|
+
end
|
69
|
+
else
|
70
|
+
return nil
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
|
75
|
+
def downloadKeys(filekey, context, contextid)
|
76
|
+
|
77
|
+
paramHash = Hash.new
|
78
|
+
paramHash["context"] = context
|
79
|
+
paramHash["contextID"] = contextid
|
80
|
+
paramHash["file"] = filekey
|
81
|
+
|
82
|
+
keyString = getCloudmunchData(paramHash)
|
83
|
+
|
84
|
+
if !keyString.to_s == ""
|
85
|
+
log("ERROR", "downloaded key content is empty, please re-upload key and try")
|
86
|
+
return nil
|
87
|
+
end
|
88
|
+
|
89
|
+
filename = "keyfile_" + Time.now.strftime('%Y%m%d%H%M%S%L')
|
90
|
+
file = @appContext.get_data("{workspace}")+"/"+filename
|
91
|
+
|
92
|
+
File.open(file, 'w') { |file| file.write(keyString) }
|
93
|
+
system('chmod 400 '+file)
|
94
|
+
|
95
|
+
if @keyArray.nil?
|
96
|
+
@keyArray = []
|
97
|
+
end
|
98
|
+
|
99
|
+
@keyArray.push(file)
|
100
|
+
return file;
|
101
|
+
end
|
102
|
+
|
103
|
+
def deleteKeys()
|
104
|
+
fileName = @appContext.get_data("{workspace}")+"/keyfile_*"
|
105
|
+
File.delete(fileName)
|
106
|
+
end
|
107
|
+
|
108
|
+
def getCloudmunchData(paramHash)
|
109
|
+
serverurl = nil
|
110
|
+
serverurl = generateServerURL(paramHash,true)
|
111
|
+
|
112
|
+
if serverurl.nil?
|
113
|
+
log("DEBUG", "Unable to generate server url")
|
114
|
+
log("ERROR", "Unable to get data from cloudmunch")
|
115
|
+
return nil
|
116
|
+
end
|
117
|
+
|
118
|
+
uri = URI.parse(serverurl)
|
119
|
+
|
120
|
+
log("DEBUG", "URI for get : ")
|
121
|
+
log("DEBUG", uri)
|
122
|
+
|
123
|
+
responseJson = Net::HTTP.get(uri)
|
124
|
+
|
125
|
+
parseResponse(responseJson)
|
126
|
+
end
|
127
|
+
|
128
|
+
def updateCloudmunchData(paramHash, method = "POST")
|
129
|
+
paramData = Hash.new
|
130
|
+
paramData["data"] = paramHash["data"]
|
131
|
+
|
132
|
+
serverurl = nil
|
133
|
+
serverurl = generateServerURL(paramHash)
|
134
|
+
|
135
|
+
if serverurl.nil?
|
136
|
+
log("DEBUG", "Unable to generate server url")
|
137
|
+
log("ERROR", "Unable to "+method+" data on cloudmunch")
|
138
|
+
return nil
|
139
|
+
end
|
140
|
+
|
141
|
+
uri = URI.parse(serverurl)
|
142
|
+
|
143
|
+
log("DEBUG", "URI for "+method+" : ")
|
144
|
+
log("DEBUG", uri)
|
145
|
+
|
146
|
+
if method.casecmp("post") == 0
|
147
|
+
responseJson = Net::HTTP.post_form(uri,"data" => paramData.to_json)
|
148
|
+
elsif method.casecmp("patch") == 0
|
149
|
+
paramData["method"] = "patch"
|
150
|
+
responseJson = Net::HTTP.post_form(uri,"data" => paramData.to_json)
|
151
|
+
elsif method.casecmp("put") == 0
|
152
|
+
#code for put
|
153
|
+
end
|
154
|
+
return parseResponse(responseJson.body)
|
155
|
+
end
|
156
|
+
|
157
|
+
def deleteCloudmunchData(paramHash)
|
158
|
+
paramContext = paramHash["context"]
|
159
|
+
paramContextID = paramHash["contextID"]
|
160
|
+
|
161
|
+
if !paramContext.nil? && !paramContext.empty? && !paramContextID.nil? && !paramContextID.empty?
|
162
|
+
serverurl=@appContext.get_data("{master_url}")+"/applications/"+@appContext.get_data("{application}")+"/"+context+"/"+contextID;
|
163
|
+
serverurl=serverurl+"?apikey="+@appContext.get_data("{api_key}")
|
164
|
+
uri = URI.parse(serverurl)
|
165
|
+
Net::HTTP::Delete(uri)
|
166
|
+
return 1
|
167
|
+
else
|
168
|
+
return nil
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
def parseResponse(responseJson)
|
173
|
+
begin
|
174
|
+
JSON.parse(responseJson)
|
175
|
+
rescue
|
176
|
+
return responseJson
|
177
|
+
end
|
178
|
+
|
179
|
+
requestDetails = (JSON.load(responseJson))['request']
|
180
|
+
responseData = (JSON.load(responseJson))['data']
|
181
|
+
|
182
|
+
log("DEBUG", "Response : ")
|
183
|
+
log("DEBUG", responseJson)
|
184
|
+
|
185
|
+
if !requestDetails['status'].nil? && requestDetails['status'].casecmp('success') == 0
|
186
|
+
return responseData
|
187
|
+
else
|
188
|
+
if !requestDetails['message'].nil?
|
189
|
+
log("ERROR", requestDetails['message'])
|
190
|
+
end
|
191
|
+
return nil
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
|
196
|
+
|
197
|
+
def generateServerURL(paramHash, appendQueryParams = nil)
|
198
|
+
|
199
|
+
serverurl = ""
|
200
|
+
|
201
|
+
if !paramHash["url"].nil?
|
202
|
+
serverurl = @appContext.get_data("{master_url}")+"/"+paramHash["url"]
|
203
|
+
elsif !paramHash["context"].nil?
|
204
|
+
paramContext = paramHash["context"].nil? ? nil : paramHash["context"]
|
205
|
+
paramContextID = paramHash["contextID"].nil? ? nil : paramHash["contextID"]
|
206
|
+
paramSubContext = paramHash["subContext"].nil? ? nil : paramHash["subContext"]
|
207
|
+
paramSubContextID = paramHash["subContextID"].nil? ? nil : paramHash["subContextID"]
|
208
|
+
paramLeafContext = paramHash["leafContext"].nil? ? nil : paramHash["leafContext"]
|
209
|
+
paramLeafContextID = paramHash["leafContextID"].nil? ? nil : paramHash["leafContextID"]
|
210
|
+
|
211
|
+
serverurl=@appContext.get_data("{master_url}")+"/applications/"+@appContext.get_data("{application}")+"/"+paramContext
|
212
|
+
|
213
|
+
if !paramContextID.nil? && !paramContextID.empty?
|
214
|
+
serverurl=serverurl+"/"+paramContextID;
|
215
|
+
if !paramSubContext.nil? && !paramSubContext.empty?
|
216
|
+
serverurl=serverurl+"/"+paramSubContext;
|
217
|
+
if !paramSubContextID.nil? && !paramSubContextID.empty?
|
218
|
+
serverurl=serverurl+"/"+paramSubContextID;
|
219
|
+
if !paramLeafContext.nil? && !paramLeafContext.empty?
|
220
|
+
serverurl=serverurl+"/"+paramLeafContext;
|
221
|
+
if !paramLeafContextID.nil? && !paramLeafContextID.empty?
|
222
|
+
serverurl=serverurl+"/"+paramLeafContextID;
|
223
|
+
end
|
224
|
+
end
|
225
|
+
end
|
226
|
+
end
|
227
|
+
end
|
228
|
+
else
|
229
|
+
log("DEBUG", "No context provided for get api call");
|
230
|
+
return nil
|
231
|
+
end
|
232
|
+
|
233
|
+
queryString = ""
|
234
|
+
|
235
|
+
if !appendQueryParams.nil?
|
236
|
+
queryString = queryString + "filter=" + paramHash["filter"].to_json + "&" if !paramHash["filter"].nil?
|
237
|
+
queryString = queryString + "file=" + paramHash["file"].to_s + "&" if !paramHash["file"].nil?
|
238
|
+
queryString = queryString + "fields=" + paramHash["fields"].to_s + "&" if !paramHash["fields"].nil?
|
239
|
+
queryString = queryString + "count=" + paramHash["count"].to_s + "&" if !paramHash["count"].nil?
|
240
|
+
queryString = queryString + "offset=" + paramHash["offset"].to_s + "&" if !paramHash["offset"].nil?
|
241
|
+
queryString = queryString + "request_category=" + paramHash["requestCategory"].to_s + "&" if !paramHash["requestCategory"].nil?
|
242
|
+
queryString = queryString + "order_by=" + paramHash["orderBy"].to_s + "&" if !paramHash["orderBy"].nil?
|
243
|
+
queryString = queryString + "group_by=" + paramHash["groupBy"].to_s + "&" if !paramHash["groupBy"].nil?
|
244
|
+
end
|
245
|
+
serverurl = serverurl+"?"+queryString+"apikey="+@appContext.get_data("{api_key}")
|
246
|
+
return serverurl
|
247
|
+
end
|
248
|
+
|
249
|
+
def self.putCustomDataContext(server, endpoint, param)
|
250
|
+
result = self.http_post(server, endpoint, param)
|
251
|
+
|
252
|
+
if result.code.to_s == "200"
|
253
|
+
return true
|
254
|
+
else
|
255
|
+
return false
|
256
|
+
end
|
257
|
+
end
|
258
|
+
|
259
|
+
def self.getCustomDataContext(server, endpoint, param)
|
260
|
+
return self.http_get(server, endpoint, param)
|
261
|
+
end
|
262
|
+
|
263
|
+
def self.http_get(server,path,params)
|
264
|
+
if params.nil?
|
265
|
+
return Net::HTTP.get(server, path)
|
266
|
+
else
|
267
|
+
queryStr = "#{path}?".concat(params.collect { |k,v| "#{k}=#{CGI::escape(v.to_s)}" }.join('&'))
|
268
|
+
puts ("SDKDEBUG: Calling URL " + server+queryStr)
|
269
|
+
uri = URI(server + "/" + queryStr)
|
270
|
+
return Net::HTTP.get(uri)
|
271
|
+
end
|
272
|
+
end
|
273
|
+
|
274
|
+
def self.http_post(server,path,params)
|
275
|
+
queryStr = "#{path}?".concat(params.collect { |k,v| "#{k}=#{CGI::escape(v.to_s)}" }.join('&'))
|
276
|
+
puts ("SDKDEBUG: Calling URL " + server+queryStr)
|
277
|
+
if params.nil?
|
278
|
+
return Net::HTTP.post(server, path)
|
279
|
+
else
|
280
|
+
uri = URI(server + path)
|
281
|
+
return Net::HTTP.post_form(uri, params)
|
282
|
+
end
|
283
|
+
end
|
284
|
+
|
285
|
+
# def self.getDataContext(server, endpoint, param)
|
286
|
+
# getCustomDataContext(server, endpoint, param)
|
287
|
+
# end
|
288
|
+
|
289
|
+
# def self.updateDataContext(server, endpoint, param)
|
290
|
+
# putCustomDataContext(server, endpoint, param)
|
291
|
+
# end
|
292
|
+
|
293
|
+
def getDataForContext(server, endpoint, param)
|
294
|
+
getCustomDataContext(server, endpoint, param)
|
295
|
+
end
|
296
|
+
|
297
|
+
def updateDataForContext(server, endpoint, param)
|
298
|
+
putCustomDataContext(server, endpoint, param)
|
299
|
+
end
|
300
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
###
|
3
|
+
### (c) CloudMunch Inc.
|
4
|
+
### All Rights Reserved
|
5
|
+
### Un-authorized copying of this file, via any medium is strictly prohibited
|
6
|
+
### Proprietary and confidential
|
7
|
+
###
|
8
|
+
### ganesan@cloudmunch.com
|
9
|
+
###
|
10
|
+
|
11
|
+
$LOAD_PATH << '.'
|
12
|
+
|
13
|
+
class ElasticBeanStalkServer < Server
|
14
|
+
attr_accessor :servername
|
15
|
+
attr_accessor :envname
|
16
|
+
attr_accessor :bucketname
|
17
|
+
attr_accessor :applicationName
|
18
|
+
attr_accessor :templateName
|
19
|
+
attr_accessor :description
|
20
|
+
attr_accessor :dns
|
21
|
+
attr_accessor :appName
|
22
|
+
attr_accessor :deployTempLoc
|
23
|
+
attr_accessor :assettype
|
24
|
+
attr_accessor :status
|
25
|
+
attr_accessor :starttime
|
26
|
+
attr_accessor :provider
|
27
|
+
attr_accessor :provider
|
28
|
+
attr_accessor :region
|
29
|
+
attr_accessor :cmserver
|
30
|
+
attr_accessor :assetname
|
31
|
+
|
32
|
+
def initialize(appContext)
|
33
|
+
@servername = ""
|
34
|
+
@envname = ""
|
35
|
+
@bucketname = ""
|
36
|
+
@applicationName = ""
|
37
|
+
@templateName = ""
|
38
|
+
@description = ""
|
39
|
+
@dns = ""
|
40
|
+
@appName = ""
|
41
|
+
@deployTempLoc = ""
|
42
|
+
@assettype = ""
|
43
|
+
@status = ""
|
44
|
+
@starttime = ""
|
45
|
+
@provider = ""
|
46
|
+
@region = ""
|
47
|
+
@cmserver = ""
|
48
|
+
@assetname = ""
|
49
|
+
end
|
50
|
+
|
51
|
+
|
52
|
+
end
|
@@ -0,0 +1,292 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
###
|
3
|
+
### (c) CloudMunch Inc.
|
4
|
+
### All Rights Reserved
|
5
|
+
### Un-authorized copying of this file, via any medium is strictly prohibited
|
6
|
+
### Proprietary and confidential
|
7
|
+
###
|
8
|
+
### ganesan@cloudmunch.com
|
9
|
+
###
|
10
|
+
|
11
|
+
$LOAD_PATH << '.'
|
12
|
+
require 'json'
|
13
|
+
require_relative "CloudmunchConstants"
|
14
|
+
|
15
|
+
class AssetHelper
|
16
|
+
include CloudmunchService
|
17
|
+
include Util
|
18
|
+
|
19
|
+
@appContext = nil
|
20
|
+
@cmDataManager = nil
|
21
|
+
@logHelper = nil
|
22
|
+
@defaultRole = "Area_51"
|
23
|
+
|
24
|
+
def initialize(appContext)
|
25
|
+
@appContext = appContext
|
26
|
+
@cloudmunchDataService = CloudmunchService.new
|
27
|
+
@roleHelper = RoleHelper.new
|
28
|
+
end
|
29
|
+
|
30
|
+
# ##
|
31
|
+
# ##
|
32
|
+
# ## @param Json Object filterData In the format {"filterfield":"=value"}
|
33
|
+
# ## @return json object environmentdetails
|
34
|
+
# ##
|
35
|
+
# ##
|
36
|
+
def getExistingEnvironments(filterData)
|
37
|
+
paramHash = {}
|
38
|
+
if !filterData.nil?
|
39
|
+
paramHash["filter"] = filterData.to_json
|
40
|
+
end
|
41
|
+
|
42
|
+
serverUrl = @appContext.getMasterURL() + "/applications/" + @appContext.getProject() + "/environments"
|
43
|
+
envResult = @cloudmunchDataService.getDataForContext(serverUrl, @appContext.getAPIJey(), paramHash)
|
44
|
+
|
45
|
+
if envResult == nil then
|
46
|
+
log("ERROR", "Unable to get data from cloudmunch")
|
47
|
+
return nil
|
48
|
+
else
|
49
|
+
envResult = JSON.parse(envResult)
|
50
|
+
envData = envResult["data"]
|
51
|
+
if envData.nil? then
|
52
|
+
log("ERROR", "environments do not exist")
|
53
|
+
return nil
|
54
|
+
else
|
55
|
+
return envData
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
# ###
|
61
|
+
# ###
|
62
|
+
# ### @param String environmentID
|
63
|
+
# ### @param Json Object filterData In the format {"filterfield":"=value"}
|
64
|
+
# ### @return json object environmentdetails
|
65
|
+
# ###
|
66
|
+
# ###
|
67
|
+
def getEnvironment(environmentID, filterData)
|
68
|
+
paramHash = {}
|
69
|
+
if !filterData.nil?
|
70
|
+
paramHash["filter"] = filterData.to_json
|
71
|
+
end
|
72
|
+
serverUrl = @appContext.getMasterURL() + "/applications/" + @appContext.getProject() + "/environments/" + environmentID
|
73
|
+
envResult = @cloudmunchDataService.getDataForContext(serverUrl, @appContext.getAPIJey(), paramHash)
|
74
|
+
|
75
|
+
if envResult == nil then
|
76
|
+
log("ERROR", "Unable to get data from cloudmunch")
|
77
|
+
return nil
|
78
|
+
else
|
79
|
+
envResult = JSON.parse(envResult)
|
80
|
+
envData = envResult["data"]
|
81
|
+
if envData.nil? then
|
82
|
+
log("DEBUG", "Environment does not exist")
|
83
|
+
return nil
|
84
|
+
else
|
85
|
+
return envData
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
# ###
|
91
|
+
# ###
|
92
|
+
# ### @param string environmentName Name of the environment
|
93
|
+
# ### @param string environmentStatus Environment status ,valid values are success,failed,in-progress
|
94
|
+
# ### @param array environmentData Array of environment properties
|
95
|
+
# ###
|
96
|
+
def addEnvironment(environmentName, environmentStatus, environmentData)
|
97
|
+
if environmentName.empty? || environmentStatus.empty? then
|
98
|
+
log("ERROR", "Environment name ,status and type need to be provided")
|
99
|
+
return false
|
100
|
+
end
|
101
|
+
|
102
|
+
statusArray = [STATUS_CREATION_IN_PROGRESS, STATUS_RUNNING, STATUS_STOPPED, STATUS_STOPPED_WITH_ERRORS, STATUS_RUNNING_WITH_WARNINGS, STATUS_ACTION_IN_PROGRESS]
|
103
|
+
if !statusArray.include?(assetStatus) then
|
104
|
+
log("ERROR", "Invalid status sent. Allowed values " + STATUS_CREATION_IN_PROGRESS + "," + STATUS_RUNNING + "," + STATUS_STOPPED + "," + STATUS_STOPPED_WITH_ERRORS + "," STATUS_RUNNING_WITH_WARNINGS + "," + STATUS_ACTION_IN_PROGRESS)
|
105
|
+
return false
|
106
|
+
end
|
107
|
+
|
108
|
+
environmentData["name"] = environmentName
|
109
|
+
environmentData["status"] = environmentStatus
|
110
|
+
|
111
|
+
serverUrl = @appContext.getMasterURL() + "/applications/" + @appContext.getProject() + "/environments/"
|
112
|
+
retResult = @cloudmunchDataService.updateDataForContext(serverUrl, @appContext.getAPIKey(), environmentData)
|
113
|
+
|
114
|
+
if retResult == nil then
|
115
|
+
return nil
|
116
|
+
else
|
117
|
+
retResult = JSON.parse(retResult)
|
118
|
+
retData = retResult["data"]
|
119
|
+
if retData.nil? then
|
120
|
+
return nil
|
121
|
+
else
|
122
|
+
return retData
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
# ###
|
128
|
+
# ###
|
129
|
+
# ### @param String Environment ID
|
130
|
+
# ### @param JsonObject Environment Data
|
131
|
+
# ###
|
132
|
+
def updateEnvironment(environmentID, environmentData, comment)
|
133
|
+
serverUrl = @appContext.getMasterURL() + "/applications/" + @appContext.getProject() + "/environments/" + environmentID
|
134
|
+
retResult = @cloudmunchDataService.updateDataForContext(serverUrl, @appContext.getAPIKey(), environmentData)
|
135
|
+
end
|
136
|
+
|
137
|
+
# ###
|
138
|
+
# ###
|
139
|
+
# ### @param String Environment ID
|
140
|
+
# ### @param URL Environment Data
|
141
|
+
# ###
|
142
|
+
def updateEnvironmentURL(environmentID, environmentURL)
|
143
|
+
if environmentURL.nil? || environmentURL.empty then
|
144
|
+
log("ERROR", "Environment URL is not provided to update environment details")
|
145
|
+
return false
|
146
|
+
else
|
147
|
+
comment = "Setting application URL";
|
148
|
+
paramHash = {}
|
149
|
+
paramHash["application_url"] = environmentURL
|
150
|
+
updateEnvironment(environmentID, paramHash, comment);
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
# ###
|
155
|
+
# ###
|
156
|
+
# ### @param String Environment ID
|
157
|
+
# ### @param URL Environment Data
|
158
|
+
# ###
|
159
|
+
def updateEnvironmentBuildVersion(environmentID, buildNumber)
|
160
|
+
if buildNumber.nil? || buildNumber.empty then
|
161
|
+
log("ERROR", "Build Number is not provided to update environment details")
|
162
|
+
return false
|
163
|
+
else
|
164
|
+
comment = "Setting application build version";
|
165
|
+
paramHash = {}
|
166
|
+
paramInnerHash = {}
|
167
|
+
paramInnerHash["version"] = ""
|
168
|
+
paramInnerHash["build"] = buildNumber
|
169
|
+
paramHash["application"] = paramInnerHash
|
170
|
+
updateEnvironment(environmentID, paramHash, comment);
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
# ###
|
175
|
+
# ###
|
176
|
+
# ### @param String Environment ID
|
177
|
+
# ### @param Array AssetArray
|
178
|
+
# ### @param String Role Id
|
179
|
+
# ###
|
180
|
+
def updateAsset(environmentID, assetHash, roleID)
|
181
|
+
if assetHash.nil? || assetHash.empty? then
|
182
|
+
log("DEBUG","An array of asset ids are excpected for updating asset details to an environment")
|
183
|
+
return false
|
184
|
+
end
|
185
|
+
|
186
|
+
if !assetHash.is_h? then
|
187
|
+
log("INFO", "Role is not provided, creating a default role with name " + @defaultRole )
|
188
|
+
return false
|
189
|
+
end
|
190
|
+
|
191
|
+
if roleID.nil? || roleID.empty? then
|
192
|
+
filter = '{"name":"' + @defaultRole + '"}'
|
193
|
+
defaultRoleDetails = @roleHelper.getExistingRoles(filter)
|
194
|
+
|
195
|
+
if defaultRoleDetails.empty? then
|
196
|
+
log("INFO", "Role is not provided, creating a default role with name " + @defaultRole )
|
197
|
+
newRoleDetails = @roleHelper.addRole(@defaultRole)
|
198
|
+
roleID = newRoleDetails.id
|
199
|
+
paramHash = {}
|
200
|
+
paramInnerHash = {}
|
201
|
+
paramDataHash = {}
|
202
|
+
paramDataHash["id"] = roleID
|
203
|
+
paramDataHash["name"] = @defaultRole
|
204
|
+
paramDataHash["assets"] = assetHash
|
205
|
+
paramInnerHash[roleID] = paramDataHash
|
206
|
+
paramHash["tiers"] = paramInnerHash
|
207
|
+
else
|
208
|
+
log("INFO", "Role is not provided, linking with default role : " + @defaultRole)
|
209
|
+
roleID = defaultRoleDetails[0]["id"]
|
210
|
+
paramHash = {}
|
211
|
+
paramInnerHash = {}
|
212
|
+
paramDataHash = {}
|
213
|
+
paramDataHash["id"] = roleID
|
214
|
+
paramDataHash["name"] = '{$tiers/' + roleID + '.name}'
|
215
|
+
paramDataHash["assets"] = assetHash
|
216
|
+
paramInnerHash[roleID] = paramDataHash
|
217
|
+
paramHash["tiers"] = paramInnerHash
|
218
|
+
end
|
219
|
+
else
|
220
|
+
paramHash = {}
|
221
|
+
paramInnerHash = {}
|
222
|
+
paramDataHash = {}
|
223
|
+
paramDataHash["id"] = roleID
|
224
|
+
paramDataHash["name"] = @defaultRole
|
225
|
+
paramDataHash["assets"] = assetHash
|
226
|
+
paramInnerHash[roleID] = paramDataHash
|
227
|
+
paramHash["tiers"] = paramInnerHash
|
228
|
+
end
|
229
|
+
|
230
|
+
comment = "Updating role asset mapping"
|
231
|
+
updateEnvironment(environmentID, paramHash, comment)
|
232
|
+
end
|
233
|
+
|
234
|
+
# ###
|
235
|
+
# ###
|
236
|
+
# ### @param String environmentID
|
237
|
+
# ### @param array key value pairs to be updated to environment details
|
238
|
+
# ###
|
239
|
+
def updateVariables(environmentID, envVariables)
|
240
|
+
if environmentID.nil? then
|
241
|
+
log("DEBUG", "Environment id value is needed for variables update on an environment")
|
242
|
+
else
|
243
|
+
variablesHash = {}
|
244
|
+
variablesHash["variables"] = envVariables
|
245
|
+
comment = "Updating variables"
|
246
|
+
updateEnvironment(environmentID, variablesHash, comment)
|
247
|
+
end
|
248
|
+
end
|
249
|
+
|
250
|
+
# ###
|
251
|
+
# ###
|
252
|
+
# ### @param String Environment ID
|
253
|
+
# ### @param String Environment status
|
254
|
+
# ###
|
255
|
+
def updateStatus(environmentID, status)
|
256
|
+
statusArray = [::STATUS_CREATION_IN_PROGRESS, ::STATUS_RUNNING, ::STATUS_STOPPED, ::STATUS_STOPPED_WITH_ERRORS, ::STATUS_RUNNING_WITH_WARNINGS, ::STATUS_ACTION_IN_PROGRESS]
|
257
|
+
if !statusArray.include?(status) then
|
258
|
+
log("ERROR", "Invalid status, valid values are " + ::STATUS_CREATION_IN_PROGRESS + "," + ::STATUS_RUNNING + "," + ::STATUS_STOPPED + "," + ::STATUS_STOPPED_WITH_ERRORS + "," + ::STATUS_RUNNING_WITH_WARNINGS + "," + ::STATUS_ACTION_IN_PROGRESS)
|
259
|
+
return false
|
260
|
+
end
|
261
|
+
|
262
|
+
statusHash = {}
|
263
|
+
statusHash["status"] = status
|
264
|
+
updateEnvironment(environmentID, statusHash)
|
265
|
+
end
|
266
|
+
|
267
|
+
# ###
|
268
|
+
# ### Checks if Environment exists in cloudmunch.
|
269
|
+
# ### @param string $environmentID
|
270
|
+
# ### @return boolean
|
271
|
+
# ###
|
272
|
+
def checkIfEnvironmentExists(environmentID)
|
273
|
+
serverUrl = @appContext.getMasterURL() + "/applications/" + @appContext.getProject() + "/environments/" + environmentID
|
274
|
+
|
275
|
+
envResult = @cloudmunchDataService.getDataForContext(serverUrl, @appContext.getAPIKey(), "")
|
276
|
+
if envResult == nil then
|
277
|
+
log("DEBUG", "Could not retreive data from cloudmunch")
|
278
|
+
return nil
|
279
|
+
else
|
280
|
+
envResult = JSON.parse(envResult)
|
281
|
+
envData = envResult["data"]
|
282
|
+
if envData.nil? then
|
283
|
+
log("ERROR", "Environment does not exist")
|
284
|
+
return false
|
285
|
+
else
|
286
|
+
return true
|
287
|
+
end
|
288
|
+
end
|
289
|
+
end
|
290
|
+
|
291
|
+
|
292
|
+
end
|