1
|
// JSLint defined globals
|
2
|
/*global dojo:false, dijit:false, window:false */
|
3
|
define([
|
4
|
'dojo/data/ItemFileWriteStore',
|
5
|
'dojox/data/AndOrWriteStore',
|
6
|
'dojo/data/ItemFileReadStore',
|
7
|
//'dojo/store/Memory',
|
8
|
'dojox/data/JsonRestStore',
|
9
|
'dojox/data/JsonQueryRestStore',
|
10
|
'dojox/data/AndOrReadStore'
|
11
|
], function(){
|
12
|
|
13
|
var server = {
|
14
|
parseResponse: function(response) {
|
15
|
var responsearray = response.split("\n");
|
16
|
var a = "";
|
17
|
var status = "";
|
18
|
for ( var i = 0; i<responsearray.length; i++ ){
|
19
|
var res = responsearray[i];
|
20
|
if (res != "") {
|
21
|
status = res.substring(res.indexOf("=")+1,res.indexOf(" "));
|
22
|
res = res.substring(res.indexOf(" ")+1);
|
23
|
a += res + "<br>";
|
24
|
}
|
25
|
}
|
26
|
if(a != ""){
|
27
|
var msg = [{message: a, type: "message",duration: 5000}];
|
28
|
IRIGO.toaster(msg);
|
29
|
}
|
30
|
return {status:status, message:a};
|
31
|
},
|
32
|
|
33
|
saveEverythingFn: function(url){
|
34
|
return function(saveCompleteCallback, saveFailedCallback, newFileContentString){
|
35
|
var store = this;
|
36
|
newFileContentString = newFileContentString.replace(/\+/g, "\\u002b"); //%2b Plus signs don't get across
|
37
|
// newFileContentString = newFileContentString.replace("+", "\u002b"); //%2b
|
38
|
newFileContentString = newFileContentString.replace(/=/g, "\\u003d"); //%3d
|
39
|
// newFileContentString = encodeURIComponent(newFileContentString);
|
40
|
dojo.xhrPost(
|
41
|
{
|
42
|
url: url,
|
43
|
// postData: dojo.toJson(dojo.fromJson(newFileContentString)), // this unprettifies the string
|
44
|
postData: newFileContentString,
|
45
|
error: saveFailedCallback,
|
46
|
load: function(response) {
|
47
|
var parsed = server.parseResponse(response);
|
48
|
// FIXME: waiting for the serverside to be updated.
|
49
|
if(parsed.message.substr(6, 26) == 'Image already exists'){
|
50
|
saveFailedCallback("An image with that name already exists!");
|
51
|
}
|
52
|
else{
|
53
|
saveCompleteCallback();
|
54
|
}
|
55
|
}
|
56
|
});
|
57
|
IRIGO.toaster([
|
58
|
{
|
59
|
message: "Processing ...",
|
60
|
type: "message",
|
61
|
duration: 2000
|
62
|
}]);
|
63
|
|
64
|
};
|
65
|
}
|
66
|
};
|
67
|
|
68
|
var stores = {
|
69
|
register: new dojox.data.JsonRestStore({
|
70
|
target:"/stabile/systems?action=register/",
|
71
|
idAttribute:"uuid"
|
72
|
}),
|
73
|
|
74
|
packages: new dojox.data.JsonRestStore({
|
75
|
target:"/stabile/systems?action=packages/",
|
76
|
idAttribute:"id"
|
77
|
}),
|
78
|
|
79
|
monitors: new dojox.data.JsonRestStore({
|
80
|
target:"/stabile/systems/monitors/",
|
81
|
idAttribute:"id",
|
82
|
syncMode:false,
|
83
|
|
84
|
cacheByDefault: true,
|
85
|
urlPreventCache: true,
|
86
|
clearOnClose: true,
|
87
|
|
88
|
reset: function(id){
|
89
|
// remove all the existing elements from the index
|
90
|
for (idx in dojox.rpc.Rest._index) {
|
91
|
if (idx.match("monitors")) {
|
92
|
if (!id || dojox.rpc.Rest._index[idx].id == id) {
|
93
|
// console.log("Deleting from Dojo: " + idx);
|
94
|
delete dojox.rpc.Rest._index[idx];
|
95
|
}
|
96
|
}
|
97
|
};
|
98
|
this._updates = [];
|
99
|
// clear the query cache
|
100
|
this.clearCache();
|
101
|
// this.revert();
|
102
|
}
|
103
|
}),
|
104
|
|
105
|
// uptimeMonths: new dojo.store.Memory(),
|
106
|
|
107
|
uptimeMonths: new dojo.data.ItemFileWriteStore({data: {identifier: "yearmonth", label: "name", items: []}}),
|
108
|
usageMonths: new dojo.data.ItemFileWriteStore({data: {identifier: "yearmonth", label: "name", items: []}}),
|
109
|
|
110
|
monitorsServices: new dojox.data.AndOrReadStore({
|
111
|
data: {identifier: "service", label: "name", items: [
|
112
|
{service:"ping", monitor:"fping.monitor", name:"ping"},
|
113
|
{service:"diskspace", monitor:"stabile-diskspace.monitor", name:"diskspace"},
|
114
|
{service:"http", monitor:"http_tppnp.monitor", name:"http"},
|
115
|
{service:"https", monitor:"http_tppnp.monitor", name:"https"},
|
116
|
{service:"smtp", monitor:"smtp3.monitor", name:"smtp"},
|
117
|
{service:"smtps", monitor:"smtp3.monitor", name:"smtp (tls)"},
|
118
|
{service:"imap", monitor:"imap.monitor", name:"imap"},
|
119
|
{service:"imaps", monitor:"imap-ssl.monitor", name:"imaps"},
|
120
|
{service:"ldap", monitor:"ldap.monitor", name:"ldap"},
|
121
|
{service:"telnet", monitor:"telnet.monitor", name:"telnet"}
|
122
|
]}
|
123
|
}),
|
124
|
|
125
|
systemsSelect: new dojo.data.ItemFileReadStore({
|
126
|
url: "/stabile/systems?action=flatlist",
|
127
|
urlPreventCache: true,
|
128
|
clearOnClose: true
|
129
|
}),
|
130
|
|
131
|
// servers: new dojox.data.AndOrWriteStore({
|
132
|
// url : "/stabile/servers?action=list",
|
133
|
// urlPreventCache: true,
|
134
|
// clearOnClose: true
|
135
|
// }),
|
136
|
|
137
|
servers: new dojox.data.JsonRestStore({
|
138
|
target: "/stabile/servers",
|
139
|
idAttribute:"uuid",
|
140
|
syncMode:false,
|
141
|
cacheByDefault: false,
|
142
|
urlPreventCache: true,
|
143
|
clearOnClose: true
|
144
|
}),
|
145
|
|
146
|
serversReadOnly: new dojo.data.ItemFileReadStore({
|
147
|
url: "/stabile/servers?action=list",
|
148
|
urlPreventCache: true,
|
149
|
clearOnClose: true
|
150
|
}),
|
151
|
|
152
|
images: new dojox.data.JsonRestStore({
|
153
|
target:"/stabile/images",
|
154
|
idAttribute:"uuid",
|
155
|
syncMode:false,
|
156
|
cacheByDefault: false,
|
157
|
clearOnClose:true,
|
158
|
urlPreventCache:true
|
159
|
}),
|
160
|
|
161
|
networks: new dojox.data.JsonRestStore({
|
162
|
target:"/stabile/networks",
|
163
|
idAttribute:"uuid",
|
164
|
syncMode:false,
|
165
|
cacheByDefault: false,
|
166
|
clearOnClose:true,
|
167
|
urlPreventCache: true
|
168
|
}),
|
169
|
|
170
|
users: new dojox.data.JsonRestStore({
|
171
|
target:"/stabile/users",
|
172
|
idAttribute:"username",
|
173
|
syncMode:false,
|
174
|
cacheByDefault: false,
|
175
|
clearOnClose:true,
|
176
|
urlPreventCache: true
|
177
|
}),
|
178
|
|
179
|
nodesReadOnly: new dojo.data.ItemFileReadStore({
|
180
|
url:"/stabile/nodes?action=listnodes",
|
181
|
clearOnClose:true,
|
182
|
urlPreventCache:true
|
183
|
}),
|
184
|
|
185
|
nodes: new dojox.data.JsonRestStore({
|
186
|
target:"/stabile/nodes",
|
187
|
idAttribute:"mac",
|
188
|
syncMode:false,
|
189
|
cacheByDefault: false,
|
190
|
clearOnClose:true,
|
191
|
urlPreventCache:true
|
192
|
}),
|
193
|
|
194
|
networksReadOnly: new dojo.data.ItemFileReadStore({
|
195
|
url:"/stabile/networks?action=list",
|
196
|
clearOnClose:true,
|
197
|
urlPreventCache: true
|
198
|
}),
|
199
|
|
200
|
unusedNetworks: new dojox.data.AndOrWriteStore({
|
201
|
url:"/stabile/networks?action=listnetworks",
|
202
|
clearOnClose:true,
|
203
|
urlPreventCache: true
|
204
|
}),
|
205
|
|
206
|
unusedNetworks2: new dojo.data.ItemFileReadStore({
|
207
|
url:"/stabile/networks?action=listnetworks",
|
208
|
clearOnClose:true,
|
209
|
urlPreventCache: true
|
210
|
}),
|
211
|
|
212
|
cdroms: new dojo.data.ItemFileReadStore({
|
213
|
url:"/stabile/images?action=listcdroms",
|
214
|
clearOnClose:true,
|
215
|
urlPreventCache: true
|
216
|
}),
|
217
|
|
218
|
ids: new dojo.data.ItemFileReadStore({
|
219
|
url:"/stabile/users?action=listids",
|
220
|
clearOnClose:true,
|
221
|
urlPreventCache:true
|
222
|
}),
|
223
|
|
224
|
imageids: new dojo.data.ItemFileReadStore({
|
225
|
url:"/stabile/users?action=listaccounts&common=1",
|
226
|
clearOnClose:true,
|
227
|
urlPreventCache:true
|
228
|
}),
|
229
|
|
230
|
accounts: new dojo.data.ItemFileReadStore({
|
231
|
url:"/stabile/users?action=listaccounts",
|
232
|
clearOnClose:true,
|
233
|
urlPreventCache:true
|
234
|
}),
|
235
|
|
236
|
engines: new dojo.data.ItemFileReadStore({
|
237
|
url:"/stabile/users?action=listengines",
|
238
|
clearOnClose:true,
|
239
|
urlPreventCache:true
|
240
|
/* data: {
|
241
|
identifier: "href", label: "name", items: [
|
242
|
{href: "#", name: "Compute"}
|
243
|
]
|
244
|
} */
|
245
|
}),
|
246
|
|
247
|
imagesDevices: new dojo.data.ItemFileReadStore({
|
248
|
url:"/stabile/images?action=listimagesdevices",
|
249
|
clearOnClose:true,
|
250
|
urlPreventCache:true
|
251
|
}),
|
252
|
backupDevices: new dojo.data.ItemFileReadStore({
|
253
|
url:"/stabile/images?action=listbackupdevices",
|
254
|
clearOnClose:true,
|
255
|
urlPreventCache:true
|
256
|
}),
|
257
|
|
258
|
engineBackups: new dojo.data.ItemFileReadStore({
|
259
|
url:"/stabile/users?action=listenginebackups",
|
260
|
clearOnClose:true,
|
261
|
urlPreventCache:true
|
262
|
}),
|
263
|
|
264
|
nodeIdentities: new dojo.data.ItemFileReadStore({
|
265
|
url: "/stabile/nodes?action=listnodeidentities",
|
266
|
clearOnClose: true,
|
267
|
urlPreventCache:true
|
268
|
}),
|
269
|
|
270
|
unusedImages: new dojo.data.ItemFileReadStore({
|
271
|
url:"/stabile/images?action=listimages",
|
272
|
clearOnClose:true,
|
273
|
urlPreventCache:true
|
274
|
}),
|
275
|
|
276
|
unusedImages2: new dojo.data.ItemFileReadStore({
|
277
|
url:"/stabile/images?action=listimages",
|
278
|
clearOnClose:true,
|
279
|
urlPreventCache:true
|
280
|
}),
|
281
|
|
282
|
backups: new dojo.data.ItemFileReadStore({
|
283
|
// url:"/stabile/images?action=listbackups",
|
284
|
clearOnClose:true,
|
285
|
urlPreventCache:true
|
286
|
}),
|
287
|
|
288
|
backupSchedules: new dojo.data.ItemFileReadStore({
|
289
|
data: {
|
290
|
identifier: "schedule", label: "name", items: [
|
291
|
{schedule: "manually", name: "Manually"},
|
292
|
{schedule: "none", name: "Clear backups"},
|
293
|
{schedule: "daily7", name: "Daily, 1 week"},
|
294
|
{schedule: "daily14", name: "Daily, 2 weeks"}
|
295
|
]
|
296
|
}
|
297
|
}),
|
298
|
|
299
|
storagePools: new dojo.data.ItemFileReadStore({
|
300
|
url:"/stabile/images?action=liststoragepools&dojo=1",
|
301
|
clearOnClose:true,
|
302
|
urlPreventCache:true
|
303
|
}),
|
304
|
|
305
|
imagesByPath: new dojo.data.ItemFileReadStore({
|
306
|
url: "/stabile/images?action=listimages&image=all", //listall",
|
307
|
clearOnClose:true,
|
308
|
urlPreventCache:true
|
309
|
}),
|
310
|
|
311
|
masterimages: new dojo.data.ItemFileReadStore({
|
312
|
url:"/stabile/images?action=listmasterimages",
|
313
|
clearOnClose:true,
|
314
|
urlPreventCache: true
|
315
|
}),
|
316
|
|
317
|
memory: new dojo.data.ItemFileReadStore({
|
318
|
data: {
|
319
|
identifier: "memory",
|
320
|
label: "memory",
|
321
|
items: [{memory:256},{memory:512},{memory:1024},{memory:2048},
|
322
|
{memory:4096},{memory:8192},{memory:12288},{memory:16384},{memory:24576},{memory:32768},{memory:49152},{memory:65536}]}
|
323
|
}),
|
324
|
diskbus: new dojo.data.ItemFileReadStore({
|
325
|
data: {identifier: "type", label: "type", items: [{type:"ide"},{type:"scsi"},{type:"virtio"}]}
|
326
|
}),
|
327
|
networkInterfaces: new dojo.data.ItemFileReadStore({
|
328
|
data: {identifier: "type", label: "name", items: [
|
329
|
{type:"virtio", hypervisor:"kvm,vbox", name: "Paravirtualized Network"},
|
330
|
{type:"rtl8139", hypervisor:"kvm", name: "Realtek 8139 (fast)"},
|
331
|
{type: "ne2k_pci", hypervisor:"kvm", name: "Realtek NE2000 (fast)"},
|
332
|
{type:"e1000", hypervisor:"kvm", name: "Intel Pro/1000"},
|
333
|
{type:"i82551", hypervisor:"kvm", name: "Intel 82551 (fast)"},
|
334
|
{type: "i82557b", hypervisor:"kvm", name: "Intel i82557b (fast)"},
|
335
|
{type: "i82559er", hypervisor:"kvm", name: "Intel i82559er (fast)"},
|
336
|
{type:"pcnet", hypervisor:"kvm", name: "PCnet (fast)"},
|
337
|
{type:"Am79C973", hypervisor:"vbox", name: "PCnet-FAST III"},
|
338
|
{type:"Am79C970A", hypervisor:"vbox", name: "PCnet-PCI II"},
|
339
|
{type:"82540EM", hypervisor:"vbox", name: "Intel Pro/1000 MT Desktop"},
|
340
|
{type:"82543GC", hypervisor:"vbox", name: "Intel Pro/1000 T Server"},
|
341
|
{type:"82545EM", hypervisor:"vbox", name: "Intel Pro/1000 MT Server"}
|
342
|
]}
|
343
|
}),
|
344
|
bootDevices: new dojo.data.ItemFileReadStore({
|
345
|
data: {identifier: "device", label: "device", items: [{device: "hd"},{device: "cdrom"},{device: "network"}]}
|
346
|
}),
|
347
|
imageTypes: new dojo.data.ItemFileReadStore({
|
348
|
data: {
|
349
|
identifier: "type", label: "type", items: [
|
350
|
{type: "qcow2"},
|
351
|
{type: "vdi"},
|
352
|
{type: "iso"},
|
353
|
{type: "vmdk"},
|
354
|
{type: "img"}
|
355
|
]
|
356
|
}
|
357
|
}),
|
358
|
networkTypes: new dojo.data.ItemFileReadStore({
|
359
|
/* data: {
|
360
|
identifier: "type", label: "name", items: [
|
361
|
{type: "gateway", name: "Gateway"},
|
362
|
{type: "internalip", name: "Internal IP"},
|
363
|
{type: "ipmapping", name: "IP mapping"},
|
364
|
{type: "externalip", name: "External IP"}
|
365
|
]
|
366
|
}*/
|
367
|
url:"/stabile/networks?action=listnetworktypes",
|
368
|
clearOnClose:true,
|
369
|
urlPreventCache: true
|
370
|
}),
|
371
|
virtualSizes: new dojo.data.ItemFileReadStore({
|
372
|
data: {
|
373
|
identifier: "size", label: "size", items: [
|
374
|
{size: "10737418240", label: "10GB"}, {size: "21474836480", label: "20GB"},
|
375
|
{size: "42949672960", label: "40GB"}, {size: "64424509440", label: "60GB"},
|
376
|
{size: "85899345920", label: "80GB"}, {size: "107374182400", label: "100GB"},
|
377
|
{size: "128849018880", label: "120GB"}, {size: "257698037760", label: "240GB"},
|
378
|
{size: "549755813888", label: "512GB"}, {size: "1099511627776", label: "1024GB"},
|
379
|
{size: "2199023255552", label: "2048GB"}
|
380
|
|
381
|
]
|
382
|
}
|
383
|
}),
|
384
|
rdpKeyboardLayouts: new dojo.data.ItemFileReadStore(
|
385
|
{
|
386
|
data: {
|
387
|
identifier: "lang", label: "lang", items: [
|
388
|
{lang:"en-us"},
|
389
|
{lang:"ar"},
|
390
|
{lang:"da"},
|
391
|
{lang:"de"},
|
392
|
{lang:"en-gb"},
|
393
|
{lang:"es"},
|
394
|
{lang:"fi"},
|
395
|
{lang:"fr"},
|
396
|
{lang:"fr-be"},
|
397
|
{lang:"hr"},
|
398
|
{lang:"it"},
|
399
|
{lang:"ja"},
|
400
|
{lang:"lt"},
|
401
|
{lang:"lv"},
|
402
|
{lang:"mk"},
|
403
|
{lang:"no"},
|
404
|
{lang:"pl"},
|
405
|
{lang:"pt"},
|
406
|
{lang:"pt-br"},
|
407
|
{lang:"ru"},
|
408
|
{lang:"sl"},
|
409
|
{lang:"sv"},
|
410
|
{lang:"tk"},
|
411
|
{lang:"tr"}
|
412
|
]
|
413
|
}
|
414
|
}
|
415
|
),
|
416
|
rdpScreenSize: new dojo.data.ItemFileReadStore({
|
417
|
data: {
|
418
|
identifier: "size", label: "size", items: [
|
419
|
{size: "800x600"}, {size: "1280x1024"}]
|
420
|
}
|
421
|
})
|
422
|
};
|
423
|
|
424
|
// on store save post everything to server
|
425
|
stores.images._saveEverything = server.saveEverythingFn("/stabile/images");
|
426
|
stores.servers._saveEverything = server.saveEverythingFn("/stabile/servers");
|
427
|
stores.networks._saveEverything = server.saveEverythingFn("/stabile/networks");
|
428
|
stores.nodes._saveEverything = server.saveEverythingFn("/stabile/nodes");
|
429
|
|
430
|
window.stores = stores;
|
431
|
window.server = server;
|
432
|
|
433
|
return stores;
|
434
|
});
|