cloudmunch_sdk 0.3.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 31766e1ced5c1eba596f0f7d77c6c3444b25b52c
4
+ data.tar.gz: 58e3449264145fb950a2b8d0c9c99a728b2a3f48
5
+ SHA512:
6
+ metadata.gz: a7689c9206f0283a42f5d8506d563f08d5451d17e098ff5f2f38a118319f65ba6c53f8c2b98fcd757e724eb92053196ad4d3beca660de50d728eb4daaab3ca3e
7
+ data.tar.gz: 7de4cbf451cf9b3f9f8df89e773eea527b35da5b6c599063b6f491d71db8ba555e0c9e4295bf18864409bf809a20215b249c1943e916b8d6533018636032e6fc
@@ -0,0 +1,151 @@
1
+ #!/usr/bin/ruby
2
+ $LOAD_PATH << '.'
3
+
4
+ require_relative "CloudmunchService"
5
+ require_relative "Util"
6
+ require_relative "ServiceProvider"
7
+ require_relative "AppContext"
8
+
9
+ class AppAbstract
10
+ include CloudmunchService
11
+ include Util
12
+
13
+ @@config_path = ENV["SDK_CONFIG_PATH"]+"/sdk_config.json"
14
+ @@config = nil
15
+
16
+ def initialize(param = nil)
17
+ @domain, @project, @logfile = "", "", ""
18
+ end
19
+
20
+
21
+ def logInit(log_level = "DEBUG")
22
+ @logger = @logger ? @logger : Util.logInit()
23
+ @log_level = log_level
24
+ end
25
+
26
+ def log(level,logString)
27
+ if !@logger.nil?
28
+ logInit("DEBUG")
29
+ end
30
+ Util.logIt(@logger, @log_level, level, logString)
31
+ end
32
+
33
+
34
+ def logClose()
35
+ Util.logClose(@logger)
36
+ end
37
+
38
+ def getJSONArgs()
39
+ @json_input = Util.getJSONArgs()
40
+ end
41
+
42
+ def openJSONFile(fileNameWithPath)
43
+ Util.openJSONFile(fileNameWithPath)
44
+ end
45
+
46
+ def generateReport(reportFilename, reportString)
47
+ Util.generateReport(reportFilename, reportString)
48
+ end
49
+
50
+ def getServiceProvider(param = nil)
51
+ @json_input = @json_input ? @json_input : getJSONArgs()
52
+ serviceProvider = ServiceProvider.new(@json_input["providername"])
53
+ serviceProvider.load_data(@json_input)
54
+ return serviceProvider
55
+ end
56
+
57
+ def getAppContext(param = nil)
58
+ @json_input = @json_input ? @json_input : getJSONArgs()
59
+ appContext = AppContext.new(@json_input)
60
+ return appContext
61
+ end
62
+
63
+ def getDataContextFromCMDB(param)
64
+ appContext = getAppContext()
65
+ params = {
66
+ "username" => @@config['username'],
67
+ "customcontext" => param["job"] + "_" + param["context"],
68
+ "action" => "listcustomcontext"
69
+ }
70
+ param.delete("context")
71
+ params = param.merge(params)
72
+
73
+ return CloudmunchService.getDataContext(appContext.get_data('masterurl'), @@config["endpoint"], params)
74
+ end
75
+
76
+ def updateDataContextToCMDB(param)
77
+ appContext = getAppContext()
78
+ params = {
79
+ "username" => @@config['username'],
80
+ "customcontext" => param["job"] + "_" + param["context"],
81
+ "action" => "updatecustomcontext"
82
+ }
83
+ param.delete("context")
84
+ params = param.merge(params)
85
+ return CloudmunchService.updateDataContext(appContext.get_data('masterurl'), @@config['endpoint'], params)
86
+ end
87
+
88
+
89
+ # def getActiveSprint(param)
90
+ # params = {
91
+ # "username" => @@config['username']
92
+ # }
93
+
94
+ # params = param.merge(params)
95
+ # Util.getActiveSprint(@@config['master_url'], @@config['endpoint'], params)
96
+ # end
97
+ #
98
+ # def getSortedSprints(param)
99
+ # params = {
100
+ # "username" => @@config['username']
101
+ # }
102
+ #
103
+ # params = param.merge(params)
104
+ #
105
+ # Util.getSortedSprints(@@config['master_url'], @@config['endpoint'], params)
106
+ # end
107
+ #
108
+ # def getUrlForViewCards(param)
109
+ # params = {
110
+ # "username" => @@config['username']
111
+ # }
112
+ #
113
+ # params = param.merge(params)
114
+ #
115
+ # Util.getUrlForViewCards(@@config['master_url'], @@config['endpoint'], params)
116
+ # end
117
+
118
+ def getCMContext(context)
119
+ begin
120
+ return @@config[context+"_context"]
121
+ rescue
122
+ return false
123
+ end
124
+ end
125
+
126
+ def load_config()
127
+ @@config = openJSONFile(@@config_path)
128
+ end
129
+
130
+ def initializeApp()
131
+ puts "initializeApp from AppAbstract"
132
+ end
133
+
134
+ def process()
135
+ puts "process func from AppAbstract"
136
+ end
137
+
138
+ def cleanupApp()
139
+ puts "cleanupApp from AppAbstract"
140
+ end
141
+
142
+ def start()
143
+ load_config()
144
+ initializeApp()
145
+ process()
146
+ cleanupApp()
147
+ end
148
+
149
+ private :load_config
150
+
151
+ end
@@ -0,0 +1,17 @@
1
+
2
+
3
+ class AppContext
4
+
5
+ def initialize(param)
6
+ load_data(param)
7
+ end
8
+
9
+ def load_data(param)
10
+ @AppContextParams = param
11
+ end
12
+
13
+ def get_data(keyname)
14
+ @AppContextParams[keyname]
15
+ end
16
+
17
+ end
@@ -0,0 +1,57 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require 'net/http'
4
+ require 'cgi'
5
+
6
+ require_relative "Util"
7
+
8
+ module CloudmunchService
9
+ include Util
10
+
11
+
12
+ def self.putCustomDataContext(server, endpoint, param)
13
+ result = self.http_post(server, endpoint, param)
14
+ p result.code.to_s
15
+ if result.code.to_s == "200"
16
+ return true
17
+ else
18
+ return false
19
+ end
20
+ end
21
+
22
+
23
+ def self.getCustomDataContext(server, endpoint, param)
24
+ return self.http_get(server, endpoint, param)
25
+ end
26
+
27
+ def self.http_get(server,path,params)
28
+ if params.nil?
29
+ return Net::HTTP.get(server, path)
30
+ else
31
+ queryStr = "#{path}?".concat(params.collect { |k,v| "#{k}=#{CGI::escape(v.to_s)}" }.join('&'))
32
+ puts ("SDKDEBUG: Calling URL " + server+queryStr)
33
+ uri = URI(server + "/" + queryStr)
34
+ return Net::HTTP.get(uri)
35
+ end
36
+ end
37
+
38
+ def self.http_post(server,path,params)
39
+ queryStr = "#{path}?".concat(params.collect { |k,v| "#{k}=#{CGI::escape(v.to_s)}" }.join('&'))
40
+ log("SDKDEBUG: Calling URL " + server+queryStr)
41
+ if params.nil?
42
+ return Net::HTTP.post(server, path)
43
+ else
44
+ uri = URI(server + path)
45
+ return Net::HTTP.post_form(uri, params)
46
+ end
47
+ end
48
+
49
+ def self.getDataContext(server, endpoint, param)
50
+ getCustomDataContext(server, endpoint, param)
51
+ end
52
+
53
+
54
+ def self.updateDataContext(server, endpoint, param)
55
+ putCustomDataContext(server, endpoint, param)
56
+ end
57
+ end
@@ -0,0 +1,2 @@
1
+ # cloudmunch-Ruby-SDK
2
+ Repository for cloudmunch Ruby SDK
@@ -0,0 +1,17 @@
1
+
2
+
3
+ class ServiceProvider
4
+
5
+ def initialize(providername)
6
+ @providername = providername
7
+ end
8
+
9
+ def load_data(param)
10
+ @SP_data = JSON.parse(param["cloudproviders"])[@providername]
11
+ end
12
+
13
+ def get_data(keyname)
14
+ @SP_data[keyname]
15
+ end
16
+
17
+ end
@@ -0,0 +1,162 @@
1
+ #!/usr/bin/ruby
2
+ require 'logger'
3
+ require 'json'
4
+
5
+
6
+
7
+ module Util
8
+ def Util.logInit()
9
+ logger = Logger.new(STDOUT)
10
+ return logger
11
+ end
12
+
13
+ def Util.log(logger, level, logString)
14
+ case level
15
+ when "fatal"
16
+ logger.fatal(logString)
17
+ when "errror"
18
+ logger.error(logString)
19
+ when "warn"
20
+ logger.warn(logString)
21
+ when "info"
22
+ logger.info(logString)
23
+ when "debug"
24
+ logger.debug(logString)
25
+ else
26
+ logger.unknown(logString)
27
+ end
28
+ end
29
+
30
+ def Util.logIt(logger, log_level, log_level_string, messageString)
31
+ case log_level
32
+ when "debug"
33
+ if "warning".eql? log_level_string or "info".eql? log_level_string or "error".eql? log_level_string or "debug".eql? log_level_string
34
+ log(logger, "debug", messageString)
35
+ end
36
+ when "error"
37
+ if "warning".eql? log_level_string or "info".eql? log_level_string or "error".eql? log_level_string
38
+ log(logger, "error", messageString)
39
+ end
40
+ when "info"
41
+ if "warning".eql? log_level_string or "info".eql? log_level_string
42
+ log(logger, "info", messageString)
43
+ end
44
+ when "warn"
45
+ if "warn".eql? log_level_string
46
+ log(logger, "warn", messageString)
47
+ end
48
+ else
49
+ log(logger, "unknown", messageString)
50
+ end
51
+ end
52
+
53
+ def Util.logClose(logger)
54
+ logger.close
55
+ end
56
+
57
+
58
+ def Util.getJSONArgsTEMP(jsonString)
59
+ JSON.parse(jsonString)
60
+ end
61
+
62
+ def Util.getJSONArgs()
63
+ jsonin = nil
64
+ loop { case ARGV[0]
65
+ when '-jsoninput' then ARGV.shift; jsonin = ARGV.shift
66
+ when /^-/ then usage("Unknown option: #{ARGV[0].inspect}")
67
+ else break
68
+ end; }
69
+ return JSON.load(jsonin);
70
+ end
71
+
72
+ def Util.openJSONFile(fileNameWithPath)
73
+ begin
74
+ config = JSON.load(File.open(fileNameWithPath))
75
+ return config
76
+ rescue
77
+ return false
78
+ end
79
+ end
80
+
81
+ def Util.generateReport(reportFileName, reportContent)
82
+ begin
83
+ fp=File.new(reportFileName, 'w')
84
+ fp.write(reportContent)
85
+ fp.close
86
+ return true
87
+ rescue
88
+ log("DEBUG", "Could not open output file #{input_json['reporthtml']} Check that the files exists and you have permissions to open the file!")
89
+ # exit 1
90
+ return false
91
+ end
92
+ end
93
+
94
+ # def Util.getSortedSprints(server, endpoint, params)
95
+ # sprints = []
96
+ # sname_by_sequence = {}
97
+ # tseq = []
98
+
99
+ # newParam = {
100
+ # :action => 'listcustomcontext',
101
+ # :fields => 'sequence, sprint_id',
102
+ # :group_by => 'sequence',
103
+ # :count => '*'
104
+ # }
105
+
106
+ # newParam = params.merge(newParam)
107
+ # cqlQuery = CloudmunchService.getDataContext(server, endpoint, newParam)
108
+ # cqlQuery = JSON.parse(cqlQuery)
109
+ # cqlQuery.each do |v|
110
+ # # puts v[1]
111
+ # tseq << v[1]['sequence'].to_i
112
+ # sname_by_sequence[v[1]['sequence'].to_i] = v[1]['sprint_id']
113
+ # end
114
+
115
+ # tseq.sort!.each do |y|
116
+ # sprints << sname_by_sequence[y]
117
+ # end
118
+
119
+ # return sprints
120
+ # end
121
+
122
+ # def Util.getActiveSprint(server, endpoint, params)
123
+ # sprints = []
124
+
125
+ # newParam = {
126
+ # :action => "listcustomcontext",
127
+ # :fields => "sprint_id,sprint_status",
128
+ # :sort_by => "sprint_status",
129
+ # :count => "*",
130
+ # }
131
+
132
+ # newParam = params.merge(newParam)
133
+ # cqlQuery = CloudmunchService.getDataContext(server, endpoint, newParam)
134
+ # cqlQuery = JSON.parse(cqlQuery)
135
+ # sprint = nil
136
+ # cqlQuery.each do |x|
137
+ # if(x['sprint_status'] == 'ACTIVE')
138
+ # sprint = x['sprint_id']
139
+ # end
140
+ # end
141
+ # return sprint
142
+ # end
143
+ def Util.getUrlForViewCards(server, endpoint, params)
144
+ newParam = {
145
+ :action => "listcustomcontext",
146
+ :fields => "*",
147
+ }
148
+
149
+ newParam = params.merge(newParam)
150
+ cqlQuery = CloudmunchService.getDataContext(server, endpoint, newParam)
151
+ cqlQuery = JSON.parse(cqlQuery)
152
+ if !cqlQuery[0].nil? && !cqlQuery[0]["url"].nil?
153
+ url = cqlQuery[0]["url"]
154
+ else
155
+ url = ""
156
+ end
157
+
158
+ return url
159
+ end
160
+
161
+ end
162
+
@@ -0,0 +1,58 @@
1
+ #!/usr/bin/ruby
2
+ require 'json'
3
+ require 'CloudmunchService'
4
+
5
+ module UtilJira
6
+
7
+ def UtilJira.getSortedSprints(server, endpoint, params)
8
+ sprints = []
9
+ sname_by_sequence = {}
10
+ tseq = []
11
+
12
+ newParam = {
13
+ :action => 'listcustomcontext',
14
+ :fields => 'sequence, sprint_id',
15
+ :group_by => 'sequence',
16
+ :count => '*'
17
+ }
18
+
19
+ newParam = params.merge(newParam)
20
+ cqlQuery = CloudmunchService.getDataContext(server, endpoint, newParam)
21
+ cqlQuery = JSON.parse(cqlQuery)
22
+ cqlQuery.each do |v|
23
+ # puts v[1]
24
+ tseq << v[1]['sequence'].to_i
25
+ sname_by_sequence[v[1]['sequence'].to_i] = v[1]['sprint_id']
26
+ end
27
+
28
+ tseq.sort!.each do |y|
29
+ sprints << sname_by_sequence[y]
30
+ end
31
+
32
+ return sprints
33
+ end
34
+
35
+ def UtilJira.getActiveSprint(server, endpoint, params)
36
+ sprints = []
37
+
38
+ newParam = {
39
+ :action => "listcustomcontext",
40
+ :fields => "sprint_id,sprint_status",
41
+ :sort_by => "sprint_status",
42
+ :count => "*",
43
+ }
44
+
45
+ newParam = params.merge(newParam)
46
+ cqlQuery = CloudmunchService.getDataContext(server, endpoint, newParam)
47
+ cqlQuery = JSON.parse(cqlQuery)
48
+ sprint = nil
49
+ cqlQuery.each do |x|
50
+ if(x['sprint_status'] == 'ACTIVE')
51
+ sprint = x['sprint_id']
52
+ end
53
+ end
54
+ return sprint
55
+ end
56
+
57
+
58
+ end
@@ -0,0 +1,22 @@
1
+ {
2
+ "name":{"label": "Cost Performance", "color":"grey", "x":100, "y":10},
3
+ "date":"12 April 2015",
4
+ "source": "JIRA",
5
+
6
+ "plots":{
7
+ "cost_data":{
8
+ "type":"line",
9
+ "xaxis":{"label": "Sprints", "color":"black", "placement":"bottom","data":{"domain":{"factor":"1.5"}} } ,
10
+ "yaxis":{"label": "In Millions (USD)", "color":"black", "placement":"left", "plots":["cost_data"], "data":{"domain":{"data":["100", "1000"]}} },
11
+ "plots":{
12
+ "x":["label"],
13
+ "y":["Budget","Planned","Actual"],
14
+ "ystart": "0",
15
+ "Budget":{"color":"blue", "points":{} },
16
+ "Planned":{"color":"green", "points":{} },
17
+ "Actual":{"color":"red", "points":{} }
18
+ }
19
+ }
20
+ },
21
+ "dimensions":{"height":310, "width":400}
22
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "name":{"label": "Code Coverage", "color":"black", "x":120, "y":10},
3
+ "date":"12 April 2015",
4
+ "source": "JIRA",
5
+ "plots":{
6
+ "coverage_data":{
7
+ "type":"line",
8
+ "xaxis": {
9
+ "label": "",
10
+ "color": "black",
11
+ "placement": "bottom",
12
+ "data": {
13
+ "domain": {
14
+ "factor": "1.5"
15
+ }
16
+ }
17
+ },
18
+ "yaxis": {
19
+ "label": "% Coverage",
20
+ "color": "black",
21
+ "placement": "left"
22
+ },
23
+ "plots": {
24
+ "x": [
25
+ ],
26
+ "y": [
27
+ ],
28
+ "ystart": "0"
29
+ }
30
+ }
31
+
32
+ },
33
+ "dimensions":{"width":400, "height":310}
34
+ }
@@ -0,0 +1,67 @@
1
+ {
2
+ "name": {
3
+ "label": "Defect",
4
+ "color": "grey",
5
+ "x": 40,
6
+ "y": 10
7
+ },
8
+ "date": "12 April 2015",
9
+ "source": "JIRA",
10
+ "plots": {
11
+ "io_data": {
12
+ "type": "line",
13
+ "xaxis": {
14
+ "label": "Days",
15
+ "color": "black",
16
+ "placement": "bottom",
17
+ "data": {
18
+ "domain": {
19
+ "factor": "1.5"
20
+ }
21
+ }
22
+ },
23
+ "yaxis": {
24
+ "label": "Number of Defects",
25
+ "color": "black",
26
+ "placement": "left",
27
+ "plots": [
28
+ "io_data"
29
+ ],
30
+ "data": {
31
+ "domain": {
32
+ "data": [
33
+ "100",
34
+ "1000"
35
+ ]
36
+ }
37
+ }
38
+ },
39
+ "plots": {
40
+ "x": [
41
+ "label"
42
+ ],
43
+ "y": [
44
+ "Inbound",
45
+ "Outbound"
46
+ ],
47
+ "ystart": "0",
48
+ "Budget": {
49
+ "color": "blue",
50
+ "points": {}
51
+ },
52
+ "Planned": {
53
+ "color": "green",
54
+ "points": {}
55
+ },
56
+ "Actual": {
57
+ "color": "red",
58
+ "points": {}
59
+ }
60
+ }
61
+ }
62
+ },
63
+ "dimensions": {
64
+ "height": 310,
65
+ "width": 400
66
+ }
67
+ }
@@ -0,0 +1,66 @@
1
+ {
2
+ "name": {
3
+ "label": "Ility Score Card1",
4
+ "color": "grey",
5
+ "x": 100,
6
+ "y": 10
7
+ },
8
+ "date": "30 April 2015",
9
+ "source": "XLS",
10
+ "plots": {
11
+ "ility_data": {
12
+ "type": "line",
13
+ "xaxis": {
14
+ "label": "Days",
15
+ "color": "black",
16
+ "placement": "bottom",
17
+ "data": {
18
+ "domain": {
19
+ "factor": "1.5"
20
+ }
21
+ }
22
+ },
23
+ "yaxis": {
24
+ "label": "PI-Score",
25
+ "color": "black",
26
+ "placement": "left",
27
+ "plots": [
28
+ "ility_data"
29
+ ],
30
+ "data": {
31
+ "domain": {
32
+ "data": [
33
+ "100",
34
+ "1000"
35
+ ]
36
+ }
37
+ }
38
+ },
39
+ "plots": {
40
+ "x": [
41
+ "label"
42
+ ],
43
+ "y": [
44
+ "PI-Score"
45
+ ],
46
+ "ystart": "0",
47
+ "Budget": {
48
+ "color": "blue",
49
+ "points": {}
50
+ },
51
+ "Planned": {
52
+ "color": "green",
53
+ "points": {}
54
+ },
55
+ "Actual": {
56
+ "color": "red",
57
+ "points": {}
58
+ }
59
+ }
60
+ }
61
+ },
62
+ "dimensions": {
63
+ "height": 310,
64
+ "width": 400
65
+ }
66
+ }
@@ -0,0 +1,67 @@
1
+ {
2
+ "name": {
3
+ "label": "Defect Inflow/Burn",
4
+ "color": "grey",
5
+ "x": 90,
6
+ "y": 10
7
+ },
8
+ "date": "12 April 2015",
9
+ "source": "JIRA",
10
+ "plots": {
11
+ "io_data": {
12
+ "type": "line",
13
+ "xaxis": {
14
+ "label": "Days",
15
+ "color": "black",
16
+ "placement": "bottom",
17
+ "data": {
18
+ "domain": {
19
+ "factor": "1.5"
20
+ }
21
+ }
22
+ },
23
+ "yaxis": {
24
+ "label": "Number of Defects",
25
+ "color": "black",
26
+ "placement": "left",
27
+ "plots": [
28
+ "io_data"
29
+ ],
30
+ "data": {
31
+ "domain": {
32
+ "data": [
33
+ "100",
34
+ "1000"
35
+ ]
36
+ }
37
+ }
38
+ },
39
+ "plots": {
40
+ "x": [
41
+ "label"
42
+ ],
43
+ "y": [
44
+ "Inbound",
45
+ "Outbound"
46
+ ],
47
+ "ystart": "0",
48
+ "Budget": {
49
+ "color": "blue",
50
+ "points": {}
51
+ },
52
+ "Planned": {
53
+ "color": "green",
54
+ "points": {}
55
+ },
56
+ "Actual": {
57
+ "color": "red",
58
+ "points": {}
59
+ }
60
+ }
61
+ }
62
+ },
63
+ "dimensions": {
64
+ "height": 310,
65
+ "width": 400
66
+ }
67
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "name":{"label": "Risk", "color":"grey", "x":120, "y":10},
3
+ "date":"12 April 2015",
4
+ "source": "JIRA",
5
+ "plots":{
6
+ "risk_data":{
7
+ "type":"doughnut",
8
+ "plots":{
9
+ "sections":["Critical", "Warning", "Trivial"],
10
+ "Critical":{"color":"green"},
11
+ "Warning":{"color":"blue"},
12
+ "Trivial":{"color":"yellow"},
13
+ "x":"140",
14
+ "y":"120"
15
+ }
16
+ }
17
+ },
18
+ "dimensions":{"height":310, "width":400}
19
+ }
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": {
3
+ "label": "Scope",
4
+ "color": "grey",
5
+ "x": 120,
6
+ "y": 10
7
+ },
8
+ "date": "12 April 2015",
9
+ "source": "JIRA",
10
+ "plots": {
11
+ "scope_data": {
12
+ "type": "area_y",
13
+ "xaxis": {
14
+ "label": "Sprints",
15
+ "color": "black",
16
+ "placement": "bottom",
17
+ "data": {"domain": {"factor": "1.5"}}
18
+ },
19
+ "yaxis": {
20
+ "label": "Story Type",
21
+ "color": "black",
22
+ "placement": "left",
23
+ "plots": ["scope_data"],
24
+ "data": {
25
+ "domain": {
26
+ "data": [
27
+ "100",
28
+ "1000"
29
+ ]
30
+ }
31
+ }
32
+ },
33
+ "plots": {
34
+ "x": ["label"],
35
+ "y": [
36
+ "Budget",
37
+ "Planned",
38
+ "Actual"
39
+ ],
40
+ "ystart": "0",
41
+ "Budget": {
42
+ "color": "blue",
43
+ "points": {}
44
+ },
45
+ "Planned": {
46
+ "color": "green",
47
+ "points": {}
48
+ },
49
+ "Actual": {
50
+ "color": "red",
51
+ "points": {}
52
+ }
53
+ }
54
+ }
55
+ },
56
+ "dimensions": {
57
+ "height": 310,
58
+ "width": 400
59
+ }
60
+ }
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": {
3
+ "label": "Sprint Burn-Up",
4
+ "color": "#d3d3d3",
5
+ "x": 120,
6
+ "y": 10
7
+ },
8
+ "date": "12 April 2015",
9
+ "source": "JIRA",
10
+ "plots": {
11
+ "time_data": {
12
+ "type": "line",
13
+ "xaxis": {
14
+ "label": "Sprints",
15
+ "color": "black",
16
+ "placement": "bottom",
17
+ "data": {"domain": {"factor": "1.5"}}
18
+ },
19
+ "yaxis": {
20
+ "label": "Story Points",
21
+ "color": "black",
22
+ "placement": "left",
23
+ "plots": ["time_data"],
24
+ "data": {
25
+ "domain": {
26
+ "data": [
27
+ "100",
28
+ "1000"
29
+ ]
30
+ }
31
+ }
32
+ },
33
+ "plots": {
34
+ "x": ["label"],
35
+ "y": [
36
+ "Budget",
37
+ "Planned",
38
+ "Actual"
39
+ ],
40
+ "ystart": "0",
41
+ "Budget": {
42
+ "color": "blue",
43
+ "points": {}
44
+ },
45
+ "Planned": {
46
+ "color": "green",
47
+ "points": {}
48
+ },
49
+ "Actual": {
50
+ "color": "red",
51
+ "points": {}
52
+ }
53
+ }
54
+ }
55
+ },
56
+ "dimensions": {
57
+ "height": 310,
58
+ "width": 400
59
+ }
60
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "name":{"label": "Velocity", "color":"grey", "x":120, "y":10},
3
+ "date":"12 April 2015",
4
+ "source": "JIRA",
5
+
6
+ "plots":{
7
+ "velocity_data":{
8
+ "type":"line",
9
+ "xaxis":{"label": "Sprints", "color":"black", "placement":"bottom","data":{"domain":{"factor":"1.5"}} } ,
10
+ "yaxis":{"label": "Story Points", "color":"black", "placement":"left", "plots":["velocity_data"], "data":{"domain":{"data":["100", "1000"]}} },
11
+ "plots":{
12
+ "x":["label"],
13
+ "y":["Budget","Planned","Actual"],
14
+ "ystart": "0",
15
+ "Budget":{"color":"blue", "points":{} },
16
+ "Planned":{"color":"green", "points":{} },
17
+ "Actual":{"color":"red", "points":{} }
18
+ }
19
+ }
20
+ },
21
+ "dimensions":{"height":310, "width":400}
22
+ }
@@ -0,0 +1,3 @@
1
+ module Cloudmunch
2
+ VERSION = "0.2.1"
3
+ end
data/lib/cloudmunch.rb ADDED
@@ -0,0 +1,5 @@
1
+ require_relative "./cloudmunch/version.rb"
2
+ require_relative "./cloudmunch/AppAbstract.rb"
3
+ module Cloudmunch
4
+ # Your code goes here...
5
+ end
metadata ADDED
@@ -0,0 +1,119 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cloudmunch_sdk
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.1
5
+ platform: ruby
6
+ authors:
7
+ - syamk
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2015-09-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: json
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: logger
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '1.10'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '1.10'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '10.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '10.0'
69
+ description: Cloudmunch Ruby SDK to build plugins for cloudmunch platform.
70
+ email:
71
+ - syamk@cloudmunch.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - lib/cloudmunch/AppAbstract.rb
77
+ - lib/cloudmunch/AppContext.rb
78
+ - lib/cloudmunch/CloudmunchService.rb
79
+ - lib/cloudmunch/README.md
80
+ - lib/cloudmunch/ServiceProvider.rb
81
+ - lib/cloudmunch/templates/costview_meta.json
82
+ - lib/cloudmunch/templates/coverageview_meta.json
83
+ - lib/cloudmunch/templates/defecttrendview_meta.json
84
+ - lib/cloudmunch/templates/ilityview_meta.json
85
+ - lib/cloudmunch/templates/inboundoutboundview_meta.json
86
+ - lib/cloudmunch/templates/riskview_meta.json
87
+ - lib/cloudmunch/templates/scopeview_meta.json
88
+ - lib/cloudmunch/templates/timeview_meta.json
89
+ - lib/cloudmunch/templates/velocityview_meta.json
90
+ - lib/cloudmunch/Util.rb
91
+ - lib/cloudmunch/UtilJira.rb
92
+ - lib/cloudmunch/version.rb
93
+ - lib/cloudmunch.rb
94
+ homepage: https://rubygems.org/gems/cloudmunch
95
+ licenses:
96
+ - MIT
97
+ metadata:
98
+ allowed_push_host: https://rubygems.org
99
+ post_install_message:
100
+ rdoc_options: []
101
+ require_paths:
102
+ - lib
103
+ required_ruby_version: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - '>='
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
108
+ required_rubygems_version: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - '>='
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ requirements: []
114
+ rubyforge_project:
115
+ rubygems_version: 2.0.14
116
+ signing_key:
117
+ specification_version: 4
118
+ summary: Cloudmunch Ruby SDK.
119
+ test_files: []