]>
Commit | Line | Data |
---|---|---|
64f9c6d6 DC |
1 | Ext.define('PVE.node.CreateLVMThin', { |
2 | extend: 'Proxmox.window.Edit', | |
3 | xtype: 'pveCreateLVMThin', | |
4 | ||
5 | subject: 'LVM Thinpool', | |
6 | ||
7 | showProgress: true, | |
8 | ||
705edf41 | 9 | onlineHelp: 'chapter_lvm', |
64f9c6d6 DC |
10 | |
11 | initComponent : function() { | |
12 | var me = this; | |
13 | ||
14 | if (!me.nodename) { | |
15 | throw "no node name specified"; | |
16 | } | |
17 | ||
18 | me.isCreate = true; | |
19 | ||
20 | Ext.applyIf(me, { | |
21 | url: "/nodes/" + me.nodename + "/disks/lvmthin", | |
22 | method: 'POST', | |
23 | items: [ | |
24 | { | |
d0cfe2ea | 25 | xtype: 'pmxDiskSelector', |
64f9c6d6 DC |
26 | name: 'device', |
27 | nodename: me.nodename, | |
28 | diskType: 'unused', | |
29 | fieldLabel: gettext('Disk'), | |
30 | allowBlank: false | |
31 | }, | |
32 | { | |
33 | xtype: 'proxmoxtextfield', | |
34 | name: 'name', | |
35 | fieldLabel: gettext('Name'), | |
36 | allowBlank: false | |
37 | }, | |
38 | { | |
39 | xtype: 'proxmoxcheckbox', | |
40 | name: 'add_storage', | |
41 | fieldLabel: gettext('Add Storage'), | |
42 | value: '1' | |
43 | } | |
44 | ] | |
45 | }); | |
46 | ||
47 | me.callParent(); | |
48 | } | |
49 | }); | |
50 | ||
51 | Ext.define('PVE.node.LVMThinList', { | |
52 | extend: 'Ext.grid.Panel', | |
53 | xtype: 'pveLVMThinList', | |
54 | ||
55 | emptyText: gettext('No thinpools found'), | |
56 | stateful: true, | |
57 | stateId: 'grid-node-lvmthin', | |
58 | columns: [ | |
59 | { | |
60 | text: gettext('Name'), | |
61 | dataIndex: 'lv', | |
62 | flex: 1 | |
63 | }, | |
64 | { | |
65 | header: gettext('Usage'), | |
66 | width: 110, | |
67 | dataIndex: 'usage', | |
68 | tdCls: 'x-progressbar-default-cell', | |
69 | xtype: 'widgetcolumn', | |
70 | widget: { | |
71 | xtype: 'pveProgressBar' | |
72 | } | |
73 | }, | |
74 | { | |
75 | header: gettext('Size'), | |
76 | width: 100, | |
77 | align: 'right', | |
78 | sortable: true, | |
79 | renderer: Proxmox.Utils.format_size, | |
80 | dataIndex: 'lv_size' | |
81 | }, | |
82 | { | |
83 | header: gettext('Used'), | |
84 | width: 100, | |
85 | align: 'right', | |
86 | sortable: true, | |
87 | renderer: Proxmox.Utils.format_size, | |
88 | dataIndex: 'used' | |
89 | }, | |
90 | { | |
91 | header: gettext('Metadata Usage'), | |
92 | width: 120, | |
93 | dataIndex: 'metadata_usage', | |
94 | tdCls: 'x-progressbar-default-cell', | |
95 | xtype: 'widgetcolumn', | |
96 | widget: { | |
97 | xtype: 'pveProgressBar' | |
98 | } | |
99 | }, | |
100 | { | |
101 | header: gettext('Metadata Size'), | |
102 | width: 120, | |
103 | align: 'right', | |
104 | sortable: true, | |
105 | renderer: Proxmox.Utils.format_size, | |
106 | dataIndex: 'metadata_size' | |
107 | }, | |
108 | { | |
109 | header: gettext('Metadata Used'), | |
110 | width: 125, | |
111 | align: 'right', | |
112 | sortable: true, | |
113 | renderer: Proxmox.Utils.format_size, | |
114 | dataIndex: 'metadata_used' | |
115 | } | |
116 | ], | |
117 | ||
118 | rootVisible: false, | |
119 | useArrows: true, | |
120 | ||
121 | tbar: [ | |
122 | { | |
123 | text: gettext('Reload'), | |
124 | iconCls: 'fa fa-refresh', | |
125 | handler: function() { | |
126 | var me = this.up('panel'); | |
127 | me.reload(); | |
128 | } | |
129 | }, | |
130 | { | |
131 | text: gettext('Create') + ': Thinpool', | |
132 | handler: function() { | |
133 | var me = this.up('panel'); | |
134 | var win = Ext.create('PVE.node.CreateLVMThin', { | |
135 | nodename: me.nodename, | |
136 | taskDone: function() { | |
137 | me.reload(); | |
138 | } | |
139 | }).show(); | |
140 | } | |
141 | } | |
142 | ], | |
143 | ||
144 | reload: function() { | |
145 | var me = this; | |
146 | me.store.load(); | |
147 | me.store.sort(); | |
148 | }, | |
149 | ||
150 | listeners: { | |
151 | activate: function() { | |
152 | var me = this; | |
153 | me.reload(); | |
154 | } | |
155 | }, | |
156 | ||
157 | initComponent: function() { | |
64f9c6d6 DC |
158 | var me = this; |
159 | ||
160 | me.nodename = me.pveSelNode.data.node; | |
161 | if (!me.nodename) { | |
162 | throw "no node name specified"; | |
163 | } | |
164 | ||
165 | Ext.apply(me, { | |
166 | store: { | |
167 | fields: ['lv', 'lv_size', 'used', 'metadata_size', 'metadata_used', | |
168 | { | |
169 | type: 'number', | |
170 | name: 'usage', | |
171 | calculate: function(data) { | |
172 | return data.used/data.lv_size; | |
173 | } | |
174 | }, | |
175 | { | |
176 | type: 'number', | |
177 | name: 'metadata_usage', | |
178 | calculate: function(data) { | |
179 | return data.metadata_used/data.metadata_size; | |
180 | } | |
181 | } | |
182 | ], | |
183 | proxy: { | |
184 | type: 'proxmox', | |
185 | url: "/api2/json/nodes/" + me.nodename + '/disks/lvmthin' | |
186 | }, | |
187 | sorters: 'lv' | |
188 | } | |
189 | }); | |
190 | ||
191 | me.callParent(); | |
192 | ||
193 | Proxmox.Utils.monStoreErrors(me, me.getStore(), true); | |
194 | me.reload(); | |
195 | } | |
196 | }); | |
197 |