Project

General

Profile

Download (14.1 KB) Statistics
| Branch: | Revision:
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
});
(18-18/23)