]>
Commit | Line | Data |
---|---|---|
337dca7c DM |
1 | /*jslint confusion: true */ |
2 | Ext.define('PVE.openvz.Options', { | |
3 | extend: 'PVE.grid.ObjectGrid', | |
4 | alias: ['widget.pveOpenVZOptions'], | |
5 | ||
6 | initComponent : function() { | |
7 | var me = this; | |
8 | var i; | |
9 | ||
10 | var nodename = me.pveSelNode.data.node; | |
11 | if (!nodename) { | |
12 | throw "no node name specified"; | |
13 | } | |
14 | ||
15 | var vmid = me.pveSelNode.data.vmid; | |
16 | if (!vmid) { | |
17 | throw "no VM ID specified"; | |
18 | } | |
19 | ||
8fb7d745 DM |
20 | var caps = Ext.state.Manager.get('GuiCap'); |
21 | ||
337dca7c | 22 | var rows = { |
337dca7c | 23 | onboot: { |
f3bb9bb6 | 24 | header: gettext('Start at boot'), |
337dca7c DM |
25 | defaultValue: '', |
26 | renderer: PVE.Utils.format_boolean, | |
8fb7d745 | 27 | editor: caps.vms['VM.Config.Options'] ? { |
337dca7c | 28 | xtype: 'pveWindowEdit', |
f3bb9bb6 | 29 | subject: gettext('Start at boot'), |
337dca7c DM |
30 | items: { |
31 | xtype: 'pvecheckbox', | |
32 | name: 'onboot', | |
33 | uncheckedValue: 0, | |
34 | defaultValue: 0, | |
f3bb9bb6 | 35 | fieldLabel: gettext('Start at boot') |
337dca7c | 36 | } |
8fb7d745 | 37 | } : undefined |
337dca7c | 38 | }, |
337dca7c | 39 | ostemplate: { |
f3bb9bb6 | 40 | header: gettext('Template'), |
337dca7c DM |
41 | defaultValue: 'no set' |
42 | }, | |
2c8e0b15 | 43 | storage: { |
f3bb9bb6 | 44 | header: gettext('Storage'), |
2c8e0b15 DM |
45 | defaultValue: 'no set' |
46 | }, | |
337dca7c | 47 | cpuunits: { |
0070ee37 | 48 | header: gettext('CPU units'), |
337dca7c | 49 | defaultValue: '1000', |
8fb7d745 | 50 | editor: caps.vms['VM.Config.CPU'] ? { |
337dca7c | 51 | xtype: 'pveWindowEdit', |
0070ee37 | 52 | subject: gettext('CPU units'), |
337dca7c DM |
53 | items: { |
54 | xtype: 'numberfield', | |
55 | name: 'cpuunits', | |
0070ee37 | 56 | fieldLabel: gettext('CPU units'), |
337dca7c DM |
57 | minValue: 8, |
58 | maxValue: 500000, | |
59 | allowBlank: false | |
60 | } | |
8fb7d745 | 61 | } : undefined |
337dca7c DM |
62 | }, |
63 | quotaugidlimit: { | |
0070ee37 | 64 | header: gettext('Quota UGID limit'), |
337dca7c DM |
65 | defaultValue: '0', |
66 | renderer: function(value) { | |
67 | if (value == 0) { | |
a2f57991 | 68 | return 'User quotas disabled.'; |
337dca7c DM |
69 | } |
70 | return value; | |
71 | }, | |
8fb7d745 | 72 | editor: caps.vms['VM.Config.Disk'] ? { |
337dca7c | 73 | xtype: 'pveWindowEdit', |
0070ee37 | 74 | subject: gettext('Quota UGID limit (0 to disable user quotas)'), |
337dca7c DM |
75 | items: { |
76 | xtype: 'numberfield', | |
77 | name: 'quotaugidlimit', | |
0070ee37 | 78 | fieldLabel: gettext('UGID limit'), |
337dca7c DM |
79 | minValue: 0, |
80 | allowBlank: false | |
81 | } | |
8fb7d745 | 82 | } : undefined |
337dca7c DM |
83 | }, |
84 | quotatime: { | |
0070ee37 | 85 | header: gettext('Quota Grace period'), |
337dca7c | 86 | defaultValue: '0', |
8fb7d745 | 87 | editor: caps.vms['VM.Config.Disk'] ? { |
337dca7c | 88 | xtype: 'pveWindowEdit', |
0070ee37 | 89 | subject: gettext('Quota Grace period (seconds)'), |
337dca7c DM |
90 | items: { |
91 | xtype: 'numberfield', | |
92 | name: 'quotatime', | |
93 | minValue: 0, | |
94 | allowBlank: false, | |
95 | fieldLabel: 'Grace period' | |
96 | } | |
8fb7d745 | 97 | } : undefined |
337dca7c DM |
98 | } |
99 | }; | |
100 | ||
101 | var baseurl = 'nodes/' + nodename + '/openvz/' + vmid + '/config'; | |
102 | ||
103 | var reload = function() { | |
104 | me.rstore.load(); | |
105 | }; | |
106 | ||
f3bb9bb6 DM |
107 | var sm = Ext.create('Ext.selection.RowModel', {}); |
108 | ||
337dca7c | 109 | var run_editor = function() { |
337dca7c DM |
110 | var rec = sm.getSelection()[0]; |
111 | if (!rec) { | |
112 | return; | |
113 | } | |
114 | ||
115 | var rowdef = rows[rec.data.key]; | |
116 | if (!rowdef.editor) { | |
117 | return; | |
118 | } | |
119 | ||
7690de6e DM |
120 | var config = Ext.apply({ |
121 | pveSelNode: me.pveSelNode, | |
122 | confid: rec.data.key, | |
123 | url: '/api2/extjs/' + baseurl | |
124 | }, rowdef.editor); | |
125 | var win = Ext.createWidget(rowdef.editor.xtype, config); | |
126 | win.load(); | |
337dca7c DM |
127 | |
128 | win.show(); | |
129 | win.on('destroy', reload); | |
130 | }; | |
131 | ||
f3bb9bb6 DM |
132 | var edit_btn = new PVE.button.Button({ |
133 | text: gettext('Edit'), | |
337dca7c | 134 | disabled: true, |
f3bb9bb6 DM |
135 | selModel: sm, |
136 | enableFn: function(rec) { | |
137 | var rowdef = rows[rec.data.key]; | |
138 | return !!rowdef.editor; | |
139 | }, | |
337dca7c DM |
140 | handler: run_editor |
141 | }); | |
142 | ||
337dca7c DM |
143 | Ext.applyIf(me, { |
144 | url: "/api2/json/nodes/" + nodename + "/openvz/" + vmid + "/config", | |
f3bb9bb6 | 145 | selModel: sm, |
337dca7c DM |
146 | cwidth1: 150, |
147 | tbar: [ edit_btn ], | |
148 | rows: rows, | |
149 | listeners: { | |
f3bb9bb6 | 150 | itemdblclick: run_editor |
337dca7c DM |
151 | } |
152 | }); | |
153 | ||
154 | me.callParent(); | |
155 | ||
156 | me.on('show', reload); | |
157 | } | |
158 | }); | |
159 |