cloudmunch_sdk_v3 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. checksums.yaml +7 -0
  2. data/lib/cloudmunch_Ruby_sdk_v2/AppAbstract.rb +146 -0
  3. data/lib/cloudmunch_Ruby_sdk_v2/AppContext.rb +59 -0
  4. data/lib/cloudmunch_Ruby_sdk_v2/AssetHelper.rb +127 -0
  5. data/lib/cloudmunch_Ruby_sdk_v2/CloudmunchConstants.rb +24 -0
  6. data/lib/cloudmunch_Ruby_sdk_v2/CloudmunchService.rb +249 -0
  7. data/lib/cloudmunch_Ruby_sdk_v2/ElasticBeanStalkServer.rb +52 -0
  8. data/lib/cloudmunch_Ruby_sdk_v2/EnvironmentHelper.rb +292 -0
  9. data/lib/cloudmunch_Ruby_sdk_v2/InsightHelper.rb +770 -0
  10. data/lib/cloudmunch_Ruby_sdk_v2/IntegrationHelper.rb +69 -0
  11. data/lib/cloudmunch_Ruby_sdk_v2/PluginLoaderAbstract.rb +140 -0
  12. data/lib/cloudmunch_Ruby_sdk_v2/PluginReporterAbstract.rb +141 -0
  13. data/lib/cloudmunch_Ruby_sdk_v2/RoleHelper.rb +170 -0
  14. data/lib/cloudmunch_Ruby_sdk_v2/Server.rb +77 -0
  15. data/lib/cloudmunch_Ruby_sdk_v2/ServerHelper.rb +284 -0
  16. data/lib/cloudmunch_Ruby_sdk_v2/ServiceProvider.rb +25 -0
  17. data/lib/cloudmunch_Ruby_sdk_v2/Util.rb +119 -0
  18. data/lib/cloudmunch_Ruby_sdk_v2/doc/AppAbstract.html +1062 -0
  19. data/lib/cloudmunch_Ruby_sdk_v2/doc/AppContext.html +1402 -0
  20. data/lib/cloudmunch_Ruby_sdk_v2/doc/AssetHelper.html +694 -0
  21. data/lib/cloudmunch_Ruby_sdk_v2/doc/Cloudmunch.html +117 -0
  22. data/lib/cloudmunch_Ruby_sdk_v2/doc/CloudmunchConstants.html +184 -0
  23. data/lib/cloudmunch_Ruby_sdk_v2/doc/CloudmunchService.html +1195 -0
  24. data/lib/cloudmunch_Ruby_sdk_v2/doc/ElasticBeanStalkServer.html +1375 -0
  25. data/lib/cloudmunch_Ruby_sdk_v2/doc/InsightHelper.html +2889 -0
  26. data/lib/cloudmunch_Ruby_sdk_v2/doc/IntegrationHelper.html +400 -0
  27. data/lib/cloudmunch_Ruby_sdk_v2/doc/RoleHelper.html +809 -0
  28. data/lib/cloudmunch_Ruby_sdk_v2/doc/Server.html +2302 -0
  29. data/lib/cloudmunch_Ruby_sdk_v2/doc/ServerHelper.html +1181 -0
  30. data/lib/cloudmunch_Ruby_sdk_v2/doc/ServiceProvider.html +328 -0
  31. data/lib/cloudmunch_Ruby_sdk_v2/doc/Util.html +540 -0
  32. data/lib/cloudmunch_Ruby_sdk_v2/doc/_index.html +214 -0
  33. data/lib/cloudmunch_Ruby_sdk_v2/doc/class_list.html +58 -0
  34. data/lib/cloudmunch_Ruby_sdk_v2/doc/css/common.css +1 -0
  35. data/lib/cloudmunch_Ruby_sdk_v2/doc/css/full_list.css +57 -0
  36. data/lib/cloudmunch_Ruby_sdk_v2/doc/css/style.css +339 -0
  37. data/lib/cloudmunch_Ruby_sdk_v2/doc/file_list.html +57 -0
  38. data/lib/cloudmunch_Ruby_sdk_v2/doc/frames.html +26 -0
  39. data/lib/cloudmunch_Ruby_sdk_v2/doc/index.html +214 -0
  40. data/lib/cloudmunch_Ruby_sdk_v2/doc/js/app.js +219 -0
  41. data/lib/cloudmunch_Ruby_sdk_v2/doc/js/full_list.js +181 -0
  42. data/lib/cloudmunch_Ruby_sdk_v2/doc/js/jquery.js +4 -0
  43. data/lib/cloudmunch_Ruby_sdk_v2/doc/method_list.html +993 -0
  44. data/lib/cloudmunch_Ruby_sdk_v2/doc/top-level-namespace.html +114 -0
  45. data/lib/cloudmunch_Ruby_sdk_v2/version.rb +3 -0
  46. data/lib/cloudmunch_Ruby_sdk_v3/AppAbstract.rb +146 -0
  47. data/lib/cloudmunch_Ruby_sdk_v3/AppContext.rb +59 -0
  48. data/lib/cloudmunch_Ruby_sdk_v3/AssetHelper.rb +127 -0
  49. data/lib/cloudmunch_Ruby_sdk_v3/CloudmunchConstants.rb +24 -0
  50. data/lib/cloudmunch_Ruby_sdk_v3/CloudmunchService.rb +300 -0
  51. data/lib/cloudmunch_Ruby_sdk_v3/ElasticBeanStalkServer.rb +52 -0
  52. data/lib/cloudmunch_Ruby_sdk_v3/EnvironmentHelper.rb +292 -0
  53. data/lib/cloudmunch_Ruby_sdk_v3/InsightHelper.rb +770 -0
  54. data/lib/cloudmunch_Ruby_sdk_v3/IntegrationHelper.rb +69 -0
  55. data/lib/cloudmunch_Ruby_sdk_v3/PluginLoaderAbstract.rb +140 -0
  56. data/lib/cloudmunch_Ruby_sdk_v3/PluginReporterAbstract.rb +141 -0
  57. data/lib/cloudmunch_Ruby_sdk_v3/RoleHelper.rb +170 -0
  58. data/lib/cloudmunch_Ruby_sdk_v3/Server.rb +77 -0
  59. data/lib/cloudmunch_Ruby_sdk_v3/ServerHelper.rb +284 -0
  60. data/lib/cloudmunch_Ruby_sdk_v3/ServiceProvider.rb +25 -0
  61. data/lib/cloudmunch_Ruby_sdk_v3/Util.rb +119 -0
  62. data/lib/cloudmunch_Ruby_sdk_v3/doc/AppAbstract.html +1062 -0
  63. data/lib/cloudmunch_Ruby_sdk_v3/doc/AppContext.html +1402 -0
  64. data/lib/cloudmunch_Ruby_sdk_v3/doc/AssetHelper.html +694 -0
  65. data/lib/cloudmunch_Ruby_sdk_v3/doc/Cloudmunch.html +117 -0
  66. data/lib/cloudmunch_Ruby_sdk_v3/doc/CloudmunchConstants.html +184 -0
  67. data/lib/cloudmunch_Ruby_sdk_v3/doc/CloudmunchService.html +1195 -0
  68. data/lib/cloudmunch_Ruby_sdk_v3/doc/ElasticBeanStalkServer.html +1375 -0
  69. data/lib/cloudmunch_Ruby_sdk_v3/doc/InsightHelper.html +2889 -0
  70. data/lib/cloudmunch_Ruby_sdk_v3/doc/IntegrationHelper.html +400 -0
  71. data/lib/cloudmunch_Ruby_sdk_v3/doc/RoleHelper.html +809 -0
  72. data/lib/cloudmunch_Ruby_sdk_v3/doc/Server.html +2302 -0
  73. data/lib/cloudmunch_Ruby_sdk_v3/doc/ServerHelper.html +1181 -0
  74. data/lib/cloudmunch_Ruby_sdk_v3/doc/ServiceProvider.html +328 -0
  75. data/lib/cloudmunch_Ruby_sdk_v3/doc/Util.html +540 -0
  76. data/lib/cloudmunch_Ruby_sdk_v3/doc/_index.html +214 -0
  77. data/lib/cloudmunch_Ruby_sdk_v3/doc/class_list.html +58 -0
  78. data/lib/cloudmunch_Ruby_sdk_v3/doc/css/common.css +1 -0
  79. data/lib/cloudmunch_Ruby_sdk_v3/doc/css/full_list.css +57 -0
  80. data/lib/cloudmunch_Ruby_sdk_v3/doc/css/style.css +339 -0
  81. data/lib/cloudmunch_Ruby_sdk_v3/doc/file_list.html +57 -0
  82. data/lib/cloudmunch_Ruby_sdk_v3/doc/frames.html +26 -0
  83. data/lib/cloudmunch_Ruby_sdk_v3/doc/index.html +214 -0
  84. data/lib/cloudmunch_Ruby_sdk_v3/doc/js/app.js +219 -0
  85. data/lib/cloudmunch_Ruby_sdk_v3/doc/js/full_list.js +181 -0
  86. data/lib/cloudmunch_Ruby_sdk_v3/doc/js/jquery.js +4 -0
  87. data/lib/cloudmunch_Ruby_sdk_v3/doc/method_list.html +993 -0
  88. data/lib/cloudmunch_Ruby_sdk_v3/doc/top-level-namespace.html +114 -0
  89. data/lib/cloudmunch_Ruby_sdk_v3/version.rb +3 -0
  90. data/lib/cloudmunch_sdk.rb +5 -0
  91. data/lib/cloudmunch_sdk_v3.rb +5 -0
  92. 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