Left: | ||
Right: |
LEFT | RIGHT |
---|---|
1 { | 1 { |
jeff.pihach
2013/04/01 19:49:23
If/when this data gets stale it would be nice if t
rharding
2013/04/01 20:08:26
I can't drop a comment above the JSON or it won't
| |
2 "result": { | 2 "_comment": "Comment is added to say this comes from: http://staging.jujucha rms.com/api/0/charm/precise/cassandra-2/qa", |
3 "questions": [ | 3 "result": { |
4 { | |
5 "description": "Data Handling",· | |
6 "name": "data_handling",· | |
7 "questions": [ | 4 "questions": [ |
8 { | 5 { |
9 "description": "Integrate data storage best practices",· | 6 "description": "Data Handling",· |
10 "extended_description": "Backups based on service usage",· | 7 "name": "data_handling",· |
11 "id": "data_handling_0",· | 8 "questions": [ |
12 "points": 1 | 9 { |
13 },· | 10 "description": "Integrate data storage best practices",· |
14 { | 11 "extended_description": "Backups based on service usage" ,· |
15 "description": "Handle the service's user data",· | 12 "id": "data_handling_0",· |
16 "extended_description": "Version control",· | 13 "points": 1 |
17 "id": "data_handling_1",· | 14 },· |
18 "points": 1 | 15 { |
19 },· | 16 "description": "Handle the service's user data",· |
20 { | 17 "extended_description": "Version control",· |
21 "description": "Handle the service's user data",· | 18 "id": "data_handling_1",· |
22 "extended_description": "Automated snapshots and backup.",· | 19 "points": 1 |
23 "id": "data_handling_2",· | 20 },· |
24 "points": 1 | 21 { |
25 } | 22 "description": "Handle the service's user data",· |
23 "extended_description": "Automated snapshots and backup. ",· | |
24 "id": "data_handling_2",· | |
25 "points": 1 | |
26 } | |
27 ] | |
28 },· | |
29 { | |
30 "description": "Secure",· | |
31 "name": "secure",· | |
32 "questions": [ | |
33 { | |
34 "description": "Contain a well tested AppArmor profile",······· | |
35 "extended_description": "",· | |
36 "id": "secure_0",· | |
37 "points": 1 | |
38 },· | |
39 { | |
40 "description": "Conform to security policies of the char m store",· | |
41 "extended_description": "Tight access control",· | |
42 "id": "secure_1",· | |
43 "points": 1 | |
44 },· | |
45 { | |
46 "description": "Doesn't run as root",· | |
47 "extended_description": "",· | |
48 "id": "secure_2",· | |
49 "points": 1 | |
50 },· | |
51 { | |
52 "description": "Per instance or service access control",······· | |
53 "extended_description": "",· | |
54 "id": "secure_3",· | |
55 "points": 1 | |
56 } | |
57 ] | |
58 },· | |
59 { | |
60 "description": "Reliable",· | |
61 "name": "reliable",· | |
62 "questions": [ | |
63 { | |
64 "description": "AWS",· | |
65 "extended_description": "",· | |
66 "id": "reliable_0",· | |
67 "points": 1 | |
68 },· | |
69 { | |
70 "description": "HP Cloud",· | |
71 "extended_description": "",· | |
72 "id": "reliable_1",· | |
73 "points": 1 | |
74 },· | |
75 { | |
76 "description": "OpenStack",· | |
77 "extended_description": "",· | |
78 "id": "reliable_2",· | |
79 "points": 1 | |
80 },· | |
81 { | |
82 "description": "LXC",· | |
83 "extended_description": "",· | |
84 "id": "reliable_3",· | |
85 "points": 1 | |
86 },· | |
87 { | |
88 "description": "MAAS",· | |
89 "extended_description": "",· | |
90 "id": "reliable_4",· | |
91 "points": 1 | |
92 },· | |
93 { | |
94 "description": "Check for integrity from upstream source ",· | |
95 "extended_description": "",· | |
96 "id": "reliable_5",· | |
97 "points": 1 | |
98 },· | |
99 { | |
100 "description": "Fail gracefully if upstream source goes missing",· | |
101 "extended_description": "",· | |
102 "id": "reliable_6",· | |
103 "points": 1 | |
104 },· | |
105 { | |
106 "description": "Contain a suite of tests with the charm that pass",· | |
107 "extended_description": "",· | |
108 "id": "reliable_7",· | |
109 "points": 1 | |
110 },· | |
111 { | |
112 "description": "Passes tests from Jenkins on jujucharms. com",· | |
113 "extended_description": "",· | |
114 "id": "reliable_8",· | |
115 "points": 1 | |
116 } | |
117 ] | |
118 },· | |
119 { | |
120 "description": "Scaleable",· | |
121 "name": "scalable",· | |
122 "questions": [ | |
123 { | |
124 "description": "Responds to add-unit based on the servic e's needs",· | |
125 "extended_description": "Configuration should not requir e additional steps to scale horizontally",· | |
126 "id": "scalable_0",· | |
127 "points": 1 | |
128 },· | |
129 { | |
130 "description": "Be tested with a real workload, not just a synthetic benchmark",· | |
131 "extended_description": "",· | |
132 "id": "scalable_1",· | |
133 "points": 1 | |
134 },· | |
135 { | |
136 "description": "From upstream and existing devops practi ces for that service",· | |
137 "extended_description": "",· | |
138 "id": "scalable_2",· | |
139 "points": 1 | |
140 },· | |
141 { | |
142 "description": "Community peer reviewed",· | |
143 "extended_description": "",· | |
144 "id": "scalable_3",· | |
145 "points": 1 | |
146 },· | |
147 { | |
148 "description": "Have a configure option for most perform ant configuration if not the default",· | |
149 "extended_description": "",· | |
150 "id": "scalable_4",· | |
151 "points": 1 | |
152 } | |
153 ] | |
154 },· | |
155 { | |
156 "description": "Upstream Friendly",· | |
157 "name": "upstream",· | |
158 "questions": [ | |
159 { | |
160 "description": "Follow upstream best practices",· | |
161 "extended_description": "Provide an option for a barebon es \"pure upstream\" configuration",· | |
162 "id": "upstream_0",· | |
163 "points": 1 | |
164 },· | |
165 { | |
166 "description": "Should go lock-step with deployment reco mmendations",· | |
167 "extended_description": "Provide tip-of-trunk testing if feasible",· | |
168 "id": "upstream_1",· | |
169 "points": 1 | |
170 },· | |
171 { | |
172 "description": "Fresh charm on release day!",· | |
173 "extended_description": "",· | |
174 "id": "upstream_2",· | |
175 "points": 1 | |
176 },· | |
177 { | |
178 "description": "Endeavour to be upstream's recommended w ay to deploy that service in the cloud (website mention or something)",· | |
179 "extended_description": "",· | |
180 "id": "upstream_3",· | |
181 "points": 1 | |
182 } | |
183 ] | |
184 },· | |
185 { | |
186 "description": "Responsive to DevOps Needs",· | |
187 "name": "responsive",· | |
188 "questions": [ | |
189 { | |
190 "description": "Allow for easy upgrade via juju upgrade- charm",· | |
191 "extended_description": "",· | |
192 "id": "responsive_0",· | |
193 "points": 1 | |
194 },· | |
195 { | |
196 "description": "Allow upgrading the service itself.",· | |
197 "extended_description": "",· | |
198 "id": "responsive_1",· | |
199 "points": 1 | |
200 },· | |
201 { | |
202 "description": "Responsive to user bug reports and conce rns",· | |
203 "extended_description": "",· | |
204 "id": "responsive_2",· | |
205 "points": 1 | |
206 },· | |
207 { | |
208 "description": "Maintainable, easy to read and modify",· | |
209 "extended_description": "",· | |
210 "id": "responsive_3",· | |
211 "points": 1 | |
212 } | |
213 ] | |
214 },· | |
215 { | |
216 "description": "Flexible",· | |
217 "name": "flexible",· | |
218 "questions": [ | |
219 { | |
220 "description": "Contain opinionated tuning options",· | |
221 "extended_description": "\n Examples (depends on the service): \"safe\", \"default\", \"fast\",\n \"real fast, not so safe\". Don't expose every configuration,\n \"pick that reflect real world usage. Make it so I don't have to read the boo k.\n ",· | |
222 "id": "flexible_0",· | |
223 "points": 1 | |
224 },· | |
225 { | |
226 "description": "Use existing interfaces with other charm s",· | |
227 "extended_description": "Highly relatable",· | |
228 "id": "flexible_1",· | |
229 "points": 1 | |
230 } | |
231 ] | |
232 },· | |
233 { | |
234 "description": "Easy to Deploy",· | |
235 "name": "easy_deploy",· | |
236 "questions": [ | |
237 { | |
238 "description": "README with examples of use for a typica l workload",· | |
239 "extended_description": "",· | |
240 "id": "easy_deploy_0",· | |
241 "points": 1 | |
242 },· | |
243 { | |
244 "description": "README with examples of use for workload s at scale",· | |
245 "extended_description": "",· | |
246 "id": "easy_deploy_1",· | |
247 "points": 1 | |
248 },· | |
249 { | |
250 "description": "README with examples of use recommend be st-practice relationships",· | |
251 "extended_description": "",· | |
252 "id": "easy_deploy_2",· | |
253 "points": 1 | |
254 },· | |
255 { | |
256 "description": "Allow installation from pure upstream so urce",· | |
257 "extended_description": "",· | |
258 "id": "easy_deploy_3",· | |
259 "points": 1 | |
260 },· | |
261 { | |
262 "description": "Allow installation from your local sourc e",· | |
263 "extended_description": "",· | |
264 "id": "easy_deploy_4",· | |
265 "points": 1 | |
266 },· | |
267 { | |
268 "description": "Allow installation from PPA (if availabl e)",· | |
269 "extended_description": "",· | |
270 "id": "easy_deploy_5",· | |
271 "points": 1 | |
272 },· | |
273 { | |
274 "description": "Allow installation from the Ubuntu repos itory",· | |
275 "extended_description": "",· | |
276 "id": "easy_deploy_6",· | |
277 "points": 1 | |
278 } | |
279 ] | |
280 } | |
26 ] | 281 ] |
27 },· | |
28 { | |
29 "description": "Secure",· | |
30 "name": "secure",· | |
31 "questions": [ | |
32 { | |
33 "description": "Contain a well tested AppArmor profile",· | |
34 "extended_description": "",· | |
35 "id": "secure_0",· | |
36 "points": 1 | |
37 },· | |
38 { | |
39 "description": "Conform to security policies of the charm store",· | |
40 "extended_description": "Tight access control",· | |
41 "id": "secure_1",· | |
42 "points": 1 | |
43 },· | |
44 { | |
45 "description": "Doesn't run as root",· | |
46 "extended_description": "",· | |
47 "id": "secure_2",· | |
48 "points": 1 | |
49 },· | |
50 { | |
51 "description": "Per instance or service access control",· | |
52 "extended_description": "",· | |
53 "id": "secure_3",· | |
54 "points": 1 | |
55 } | |
56 ] | |
57 },· | |
58 { | |
59 "description": "Reliable",· | |
60 "name": "reliable",· | |
61 "questions": [ | |
62 { | |
63 "description": "AWS",· | |
64 "extended_description": "",· | |
65 "id": "reliable_0",· | |
66 "points": 1 | |
67 },· | |
68 { | |
69 "description": "HP Cloud",· | |
70 "extended_description": "",· | |
71 "id": "reliable_1",· | |
72 "points": 1 | |
73 },· | |
74 { | |
75 "description": "OpenStack",· | |
76 "extended_description": "",· | |
77 "id": "reliable_2",· | |
78 "points": 1 | |
79 },· | |
80 { | |
81 "description": "LXC",· | |
82 "extended_description": "",· | |
83 "id": "reliable_3",· | |
84 "points": 1 | |
85 },· | |
86 { | |
87 "description": "MAAS",· | |
88 "extended_description": "",· | |
89 "id": "reliable_4",· | |
90 "points": 1 | |
91 },· | |
92 { | |
93 "description": "Check for integrity from upstream source",· | |
94 "extended_description": "",· | |
95 "id": "reliable_5",· | |
96 "points": 1 | |
97 },· | |
98 { | |
99 "description": "Fail gracefully if upstream source goes missing",· | |
100 "extended_description": "",· | |
101 "id": "reliable_6",· | |
102 "points": 1 | |
103 },· | |
104 { | |
105 "description": "Contain a suite of tests with the charm that pass",· | |
106 "extended_description": "",· | |
107 "id": "reliable_7",· | |
108 "points": 1 | |
109 },· | |
110 { | |
111 "description": "Passes tests from Jenkins on jujucharms.com",· | |
112 "extended_description": "",· | |
113 "id": "reliable_8",· | |
114 "points": 1 | |
115 } | |
116 ] | |
117 },· | |
118 { | |
119 "description": "Scaleable",· | |
120 "name": "scalable",· | |
121 "questions": [ | |
122 { | |
123 "description": "Responds to add-unit based on the service's needs",· | |
124 "extended_description": "Configuration should not require additional steps to scale horizontally",· | |
125 "id": "scalable_0",· | |
126 "points": 1 | |
127 },· | |
128 { | |
129 "description": "Be tested with a real workload, not just a synthetic benchmark",· | |
130 "extended_description": "",· | |
131 "id": "scalable_1",· | |
132 "points": 1 | |
133 },· | |
134 { | |
135 "description": "From upstream and existing devops practices for that service",· | |
136 "extended_description": "",· | |
137 "id": "scalable_2",· | |
138 "points": 1 | |
139 },· | |
140 { | |
141 "description": "Community peer reviewed",· | |
142 "extended_description": "",· | |
143 "id": "scalable_3",· | |
144 "points": 1 | |
145 },· | |
146 { | |
147 "description": "Have a configure option for most performant configur ation if not the default",· | |
148 "extended_description": "",· | |
149 "id": "scalable_4",· | |
150 "points": 1 | |
151 } | |
152 ] | |
153 },· | |
154 { | |
155 "description": "Upstream Friendly",· | |
156 "name": "upstream",· | |
157 "questions": [ | |
158 { | |
159 "description": "Follow upstream best practices",· | |
160 "extended_description": "Provide an option for a barebones \"pure up stream\" configuration",· | |
161 "id": "upstream_0",· | |
162 "points": 1 | |
163 },· | |
164 { | |
165 "description": "Should go lock-step with deployment recommendations" ,· | |
166 "extended_description": "Provide tip-of-trunk testing if feasible",· | |
167 "id": "upstream_1",· | |
168 "points": 1 | |
169 },· | |
170 { | |
171 "description": "Fresh charm on release day!",· | |
172 "extended_description": "",· | |
173 "id": "upstream_2",· | |
174 "points": 1 | |
175 },· | |
176 { | |
177 "description": "Endeavour to be upstream's recommended way to deploy that service in the cloud (website mention or something)",· | |
178 "extended_description": "",· | |
179 "id": "upstream_3",· | |
180 "points": 1 | |
181 } | |
182 ] | |
183 },· | |
184 { | |
185 "description": "Responsive to DevOps Needs",· | |
186 "name": "responsive",· | |
187 "questions": [ | |
188 { | |
189 "description": "Allow for easy upgrade via juju upgrade-charm",· | |
190 "extended_description": "",· | |
191 "id": "responsive_0",· | |
192 "points": 1 | |
193 },· | |
194 { | |
195 "description": "Allow upgrading the service itself.",· | |
196 "extended_description": "",· | |
197 "id": "responsive_1",· | |
198 "points": 1 | |
199 },· | |
200 { | |
201 "description": "Responsive to user bug reports and concerns",· | |
202 "extended_description": "",· | |
203 "id": "responsive_2",· | |
204 "points": 1 | |
205 },· | |
206 { | |
207 "description": "Maintainable, easy to read and modify",· | |
208 "extended_description": "",· | |
209 "id": "responsive_3",· | |
210 "points": 1 | |
211 } | |
212 ] | |
213 },· | |
214 { | |
215 "description": "Flexible",· | |
216 "name": "flexible",· | |
217 "questions": [ | |
218 { | |
219 "description": "Contain opinionated tuning options",· | |
220 "extended_description": "\n Examples (depends on the service): \"safe\", \"default\", \"fast\",\n \"real fast, not so safe\". Don't expose every configuration,\n \"pick th at reflect real world usage. Make it so I don't have to read the book.\n ",· | |
221 "id": "flexible_0",· | |
222 "points": 1 | |
223 },· | |
224 { | |
225 "description": "Use existing interfaces with other charms",· | |
226 "extended_description": "Highly relatable",· | |
227 "id": "flexible_1",· | |
228 "points": 1 | |
229 } | |
230 ] | |
231 },· | |
232 { | |
233 "description": "Easy to Deploy",· | |
234 "name": "easy_deploy",· | |
235 "questions": [ | |
236 { | |
237 "description": "README with examples of use for a typical workload",······· | |
238 "extended_description": "",· | |
239 "id": "easy_deploy_0",· | |
240 "points": 1 | |
241 },· | |
242 { | |
243 "description": "README with examples of use for workloads at scale",······· | |
244 "extended_description": "",· | |
245 "id": "easy_deploy_1",· | |
246 "points": 1 | |
247 },· | |
248 { | |
249 "description": "README with examples of use recommend best-practice relationships",· | |
250 "extended_description": "",· | |
251 "id": "easy_deploy_2",· | |
252 "points": 1 | |
253 },· | |
254 { | |
255 "description": "Allow installation from pure upstream source",· | |
256 "extended_description": "",· | |
257 "id": "easy_deploy_3",· | |
258 "points": 1 | |
259 },· | |
260 { | |
261 "description": "Allow installation from your local source",· | |
262 "extended_description": "",· | |
263 "id": "easy_deploy_4",· | |
264 "points": 1 | |
265 },· | |
266 { | |
267 "description": "Allow installation from PPA (if available)",· | |
268 "extended_description": "",· | |
269 "id": "easy_deploy_5",· | |
270 "points": 1 | |
271 },· | |
272 { | |
273 "description": "Allow installation from the Ubuntu repository",· | |
274 "extended_description": "",· | |
275 "id": "easy_deploy_6",· | |
276 "points": 1 | |
277 } | |
278 ] | |
279 } | |
280 ] | |
281 },· | |
282 "scores": { | |
283 "data_handling": { | |
284 "data_handling_0": "1",· | |
285 "data_handling_1": "1",· | |
286 "data_handling_2": "1" | |
287 },· | 282 },· |
288 "easy_deploy": { | 283 "scores": { |
289 "easy_deploy_0": "0",· | 284 "data_handling": { |
290 "easy_deploy_1": "1",· | 285 "data_handling_0": "1",· |
291 "easy_deploy_2": "1",· | 286 "data_handling_1": "1",· |
292 "easy_deploy_3": "0",· | 287 "data_handling_2": "1" |
293 "easy_deploy_4": "0",· | 288 },· |
294 "easy_deploy_5": "1",· | 289 "easy_deploy": { |
295 "easy_deploy_6": "1" | 290 "easy_deploy_0": "0",· |
296 },· | 291 "easy_deploy_1": "1",· |
297 "flexible": { | 292 "easy_deploy_2": "1",· |
298 "flexible_0": "",· | 293 "easy_deploy_3": "0",· |
299 "flexible_1": "" | 294 "easy_deploy_4": "0",· |
300 },· | 295 "easy_deploy_5": "1",· |
301 "reliable": { | 296 "easy_deploy_6": "1" |
302 "reliable_0": "1",· | 297 },· |
303 "reliable_1": "1",· | 298 "flexible": { |
304 "reliable_2": "0",· | 299 "flexible_0": "",· |
305 "reliable_3": "0",· | 300 "flexible_1": "" |
306 "reliable_4": "1",· | 301 },· |
307 "reliable_5": "",· | 302 "reliable": { |
308 "reliable_6": "0",· | 303 "reliable_0": "1",· |
309 "reliable_7": "0",· | 304 "reliable_1": "1",· |
310 "reliable_8": "" | 305 "reliable_2": "0",· |
311 },· | 306 "reliable_3": "0",· |
312 "responsive": { | 307 "reliable_4": "1",· |
313 "responsive_0": "1",· | 308 "reliable_5": "",· |
314 "responsive_1": "0",· | 309 "reliable_6": "0",· |
315 "responsive_2": "0",· | 310 "reliable_7": "0",· |
316 "responsive_3": "" | 311 "reliable_8": "" |
317 },· | 312 },· |
318 "scalable": { | 313 "responsive": { |
319 "scalable_0": "0",· | 314 "responsive_0": "1",· |
320 "scalable_1": "0",· | 315 "responsive_1": "0",· |
321 "scalable_2": "0",· | 316 "responsive_2": "0",· |
322 "scalable_3": "1",· | 317 "responsive_3": "" |
323 "scalable_4": "0" | 318 },· |
324 },· | 319 "scalable": { |
325 "secure": { | 320 "scalable_0": "0",· |
326 "secure_0": "0",· | 321 "scalable_1": "0",· |
327 "secure_1": "0",· | 322 "scalable_2": "0",· |
328 "secure_2": "1",· | 323 "scalable_3": "1",· |
329 "secure_3": "0" | 324 "scalable_4": "0" |
330 },· | 325 },· |
331 "upstream": { | 326 "secure": { |
332 "upstream_0": "0",· | 327 "secure_0": "0",· |
333 "upstream_1": "0",· | 328 "secure_1": "0",· |
334 "upstream_2": "",· | 329 "secure_2": "1",· |
335 "upstream_3": "" | 330 "secure_3": "0" |
331 },· | |
332 "upstream": { | |
333 "upstream_0": "0",· | |
334 "upstream_1": "0",· | |
335 "upstream_2": "",· | |
336 "upstream_3": "" | |
337 } | |
336 } | 338 } |
337 } | 339 } |
338 } | |
LEFT | RIGHT |