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.
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