Revision 69c64a4c

b/snf-cyclades-app/synnefo/ui/new_ui/ui/javascripts/ember/dict.js
78 78
    'shutting' : 'SHUTTING DOWN',
79 79
};
80 80

  
81

  
82
var statusActionsVm = {
83
    'off'      : {
84
        enabledActions : ['start', 'destroy'],
85
    },
86
    'error'      : {
87
        enabledActions : ['destroy'],
88
    },
89
    'building'      : {
90
        enabledActions : [],
91
    },
92
    'running'      : {
93
        enabledActions : ['reboot', 'shutdown', 'destroy'],
94
    },
95
    'rebooting'      : {
96
        enabledActions : ['destroy'],
97
    },
98
    'starting'      : {
99
        enabledActions : ['destroy'],
100
    },
101
    'shutting'      : {
102
        enabledActions : ['destroy'],
103
    },
104
};
105

  
106

  
107
var statusActionsNetwork = {
108
    'off'      : {
109
        enabledActions : ['start', 'destroy'],
110
    },
111
    'error'      : {
112
        enabledActions : ['destroy'],
113
    },
114
    'building'      : {
115
        enabledActions : [],
116
    },
117
    'running'      : {
118
        enabledActions : ['reboot', 'shutdown', 'destroy'],
119
    },
120
    'rebooting'      : {
121
        enabledActions : ['destroy'],
122
    },
123
    'starting'      : {
124
        enabledActions : ['destroy'],
125
    },
126
    'shutting'      : {
127
        enabledActions : ['destroy'],
128
    },
129
};
130

  
131

  
132
var statusActionsVolume = {
133
    'off'      : {
134
        enabledActions : ['start', 'destroy'],
135
    },
136
    'error'      : {
137
        enabledActions : ['destroy'],
138
    },
139
    'building'      : {
140
        enabledActions : [],
141
    },
142
    'running'      : {
143
        enabledActions : ['reboot', 'shutdown', 'destroy'],
144
    },
145
    'rebooting'      : {
146
        enabledActions : ['destroy'],
147
    },
148
    'starting'      : {
149
        enabledActions : ['destroy'],
150
    },
151
    'shutting'      : {
152
        enabledActions : ['destroy'],
153
    },
154
};
155

  
156

  
b/snf-cyclades-app/synnefo/ui/new_ui/ui/javascripts/ember/models/network.js
1
/*TODO: 
2
Add tags to Vm model*/
3

  
4

  
5
var statusActionsNetwork = {
6
    'off'      : {
7
        enabledActions : ['start', 'destroy'],
8
    },
9
    'error'      : {
10
        enabledActions : ['destroy'],
11
    },
12
    'building'      : {
13
        enabledActions : [],
14
    },
15
    'running'      : {
16
        enabledActions : ['reboot', 'shutdown', 'destroy'],
17
    },
18
    'rebooting'      : {
19
        enabledActions : ['destroy'],
20
    },
21
    'starting'      : {
22
        enabledActions : ['destroy'],
23
    },
24
    'shutting'      : {
25
        enabledActions : ['destroy'],
26
    },
27
};
28

  
29

  
30

  
31
// the model for a Network
32 1
App.Network = DS.Model.extend({
33
    name    : DS.attr(),
34
    status  : DS.attr(),
35
    vm      : DS.belongsTo('vm', { async:true }),
2
    
3
    name       : DS.attr(),
4
    status     : DS.attr(),
5
    firewall   : DS.attr(),
6
    vms        : DS.hasMany('vm', { async:true }),
36 7

  
37 8
    enabledActions: function() {
38 9
        return statusActionsNetwork[this.get('status')].enabledActions;
39 10
    }.property('status'),
11

  
12
    // firewallState can be off or on
13
    firewallState: function() {
14
        var state = 'off';
15
        if ( _.contains(['on','partial'], this.get('firewall')) ) { state='on'; }
16
        return state;
17
    }.property('firewall'),
18

  
40 19
});
41 20

  
42 21

  
......
45 24
        id: 1,
46 25
        name: 'Network 1',
47 26
        status: 'running',
48
        vm: '1',
27
        vms: [1,2],
28
        firewall: 'on',
49 29
    },
50 30
    {
51 31
        id: 2,
52 32
        name: 'Network 2',
53 33
        status: 'building',
54
        vm: '1',
34
        vms: [3],
35
        firewall: 'partial',
55 36
    },
56 37
    {
57 38
        id: 3,
58 39
        name: 'Network 3',
59 40
        status: 'off',
60
        vm: '2',
41
        firewall: 'off',
61 42
    },
62 43
];
b/snf-cyclades-app/synnefo/ui/new_ui/ui/javascripts/ember/models/tag.js
1 1
App.Tag = DS.Model.extend({
2

  
2 3
    name     : DS.attr(),
3 4
    color    : DS.attr(),
4 5
    vms      : DS.hasMany('vm', { async:true }),
6

  
5 7
});
6 8

  
7 9

  
b/snf-cyclades-app/synnefo/ui/new_ui/ui/javascripts/ember/models/vm.js
1
/*TODO: 
2
Add tags to Vm model*/
3

  
4

  
5
var statussActionsVm = {
6
    'off'      : {
7
        enabledActions : ['start', 'destroy'],
8
    },
9
    'error'      : {
10
        enabledActions : ['destroy'],
11
    },
12
    'building'      : {
13
        enabledActions : [],
14
    },
15
    'running'      : {
16
        enabledActions : ['reboot', 'shutdown', 'destroy'],
17
    },
18
    'rebooting'      : {
19
        enabledActions : ['destroy'],
20
    },
21
    'starting'      : {
22
        enabledActions : ['destroy'],
23
    },
24
    'shutting'      : {
25
        enabledActions : ['destroy'],
26
    },
27
};
28

  
29

  
30
// the model for a Vm
31 1
App.Vm = DS.Model.extend({
2

  
32 3
    name      : DS.attr(),
33 4
    status    : DS.attr(),
34 5
    os        : DS.attr(),
35 6
    link      : DS.attr(),
36 7
    created   : DS.attr('date'), 
37 8
    updated   : DS.attr('date'), 
38
    /*flavor   : DS.attr('raw'),*/
39
    networks  : DS.hasMany('network', { async:true }),
9
    network   : DS.belongsTo('network', { async:true }),
40 10
    tags      : DS.hasMany('tag', { async:true }),
11
    volumes   : DS.hasMany('volume', { async:true}),
12

  
13
    /*flavor   : DS.attr('raw'),*/
41 14

  
42 15
    enabledActions: function() {
43
        return statussActionsVm[this.get('status')].enabledActions;
16
        return statusActionsVm[this.get('status')].enabledActions;
44 17
    }.property('status'),
18

  
45 19
});
46 20

  
47 21

  
48 22
App.Vm.FIXTURES = [
49 23
    {
50
 
51 24
        created: '2011-04-19T10:18:52.085737+00:00',
52
        id: 42,
25
        id: 1,
53 26
        metadata: { foo: "bar"},
54
        name: "My Server",
27
        name: "The answer to everything",
55 28
        os: 'windows',
56 29
        status: "running",
57 30
        link: 'http://www.in.gr',
58 31
        updated: "2011-05-29T14:07:07.037602+00:00",
59
        networks: [1,2],
32
        network: 1,
60 33
        tags: [1,2,3],
34
        volumes: [1,2],
61 35
    }, 
62 36
    {
63 37
        id: 2,
......
65 39
        status: 'error',
66 40
        os: 'unknown',
67 41
        link: 'http://www.in.gr',
68
        networks:[3],
42
        updated: "2011-05-29T14:07:07.037602+00:00",
43
        networks: 1,
69 44
        tags: [1,2,3,4],
45
        volumes: [3],
70 46
    },
71 47
    {
72 48
        id: 3,
......
74 50
        status: 'building',
75 51
        os: 'windows',
76 52
        link: 'http://www.in.gr',
53
        network: 2,
77 54
        tags: [1],
78 55
    },
79 56
    {
b/snf-cyclades-app/synnefo/ui/new_ui/ui/javascripts/ember/models/volume.js
1
/*TODO: 
2
Add tags to Volume model*/
3

  
4

  
5
var statesActionsVolume = {
6
    'off'      : {
7
        enabledActions : ['start', 'destroy'],
8
    },
9
    'error'      : {
10
        enabledActions : ['destroy'],
11
    },
12
    'building'      : {
13
        enabledActions : [],
14
    },
15
    'running'      : {
16
        enabledActions : ['reboot', 'shutdown', 'destroy'],
17
    },
18
    'rebooting'      : {
19
        enabledActions : ['destroy'],
20
    },
21
    'starting'      : {
22
        enabledActions : ['destroy'],
23
    },
24
    'shutting'      : {
25
        enabledActions : ['destroy'],
26
    },
27
};
28

  
29

  
30
// the model for a Volume
31 1
App.Volume = DS.Model.extend({
32
    name     : DS.attr(),
33
    state    : DS.attr(),
2
    
3
    name        : DS.attr(),
4
    status      : DS.attr(),
5
    size        : DS.attr('number'),
6
    storageType : DS.attr('string', {defaultValue: 'Archipelago'}),
7
    vm          : DS.belongsTo('vm', { async:true }),
34 8
    
35 9
    enabledActions: function() {
36
        return statesActionsVolume[this.get('state')].enabledActions;
10
        return statusActionsVolume[this.get('status')].enabledActions;
37 11
    }.property('state'),
12

  
38 13
});
39 14

  
40 15

  
......
42 17
    {
43 18
        id: 1,
44 19
        name: 'Disk 1',
45
        state: 'off',
20
        status: 'running',
21
        size: 10737418240,
22
        vms: [1],
23
    },
24
    {
25
        id: 2,
26
        name: 'Disk 2',
27
        status: 'running',
28
        size: 2048,
29
        vms: [1],
30
    },
31
    {
32
        id: 3,
33
        name: 'Disk 3',
34
        status: 'running',
35
        size: 4096,
36
        storageType: 'drpd',
37
        vms: [2],
46 38
    },
47 39
];

Also available in: Unified diff