]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/node/LVM.js
1 Ext
.define('PVE.node.CreateLVM', {
2 extend
: 'Proxmox.window.Edit',
5 onlineHelp
: 'chapter_lvm',
6 subject
: 'LVM Volume Group',
11 initComponent: function() {
15 throw "no node name specified";
21 url
: `/nodes/${me.nodename}/disks/lvm`,
25 xtype
: 'pmxDiskSelector',
27 nodename
: me
.nodename
,
29 fieldLabel
: gettext('Disk'),
33 xtype
: 'proxmoxtextfield',
35 fieldLabel
: gettext('Name'),
39 xtype
: 'proxmoxcheckbox',
41 fieldLabel
: gettext('Add Storage'),
51 Ext
.define('PVE.node.LVMList', {
52 extend
: 'Ext.tree.Panel',
62 xclass
: 'Ext.app.ViewController',
64 destroyVolumeGroup: function() {
66 let vm
= me
.getViewModel();
67 let view
= me
.getView();
69 const volumeGroup
= vm
.get('volumeGroup');
72 throw "no node name specified";
76 throw "no volume group specified";
79 Ext
.create('PVE.window.SafeDestroyStorage', {
80 url
: `/nodes/${view.nodename}/disks/lvm/${volumeGroup}`,
81 item
: { id
: volumeGroup
},
82 taskName
: 'lvmremove',
83 taskDone
: () => { view
.reload(); },
88 emptyText
: gettext('No Volume Groups found'),
91 stateId
: 'grid-node-lvm',
99 text
: gettext('Name'),
104 text
: gettext('Number of LVs'),
105 dataIndex
: 'lvcount',
110 header
: gettext('Usage'),
113 tdCls
: 'x-progressbar-default-cell',
114 xtype
: 'widgetcolumn',
116 xtype
: 'pveProgressBar',
120 header
: gettext('Size'),
124 renderer
: Proxmox
.Utils
.format_size
,
128 header
: gettext('Free'),
132 renderer
: Proxmox
.Utils
.format_size
,
139 text
: gettext('Reload'),
140 iconCls
: 'fa fa-refresh',
141 handler: function() {
142 this.up('panel').reload();
146 text
: gettext('Create') + ': Volume Group',
147 handler: function() {
148 let view
= this.up('panel');
149 Ext
.create('PVE.node.CreateLVM', {
150 nodename
: view
.nodename
,
151 taskDone
: () => view
.reload(),
160 volumeGroup
: undefined,
164 volumeGroup
: "{volumeGroup}",
168 '<tpl if="volumeGroup">',
169 'Volume group {volumeGroup}:',
171 Ext
.String
.format(gettext('No {0} selected'), 'volume group'),
176 text
: gettext('More'),
177 iconCls
: 'fa fa-bars',
180 disabled
: '{!volumeGroup}',
184 text
: gettext('Destroy'),
186 iconCls
: 'fa fa-fw fa-trash-o',
187 handler
: 'destroyVolumeGroup',
190 disabled
: '{!volumeGroup}',
199 let sm
= me
.getSelectionModel();
200 Proxmox
.Utils
.API2Request({
201 url
: `/nodes/${me.nodename}/disks/lvm`,
204 failure
: (response
, opts
) => Proxmox
.Utils
.setErrorMask(me
, response
.htmlStatus
),
205 success: function(response
, opts
) {
207 me
.setRootNode(response
.result
.data
);
214 activate: function() {
217 selectionchange: function(model
, selected
) {
219 let vm
= me
.getViewModel();
221 if (selected
.length
< 1 || selected
[0].data
.parentId
!== 'root') {
222 vm
.set('volumeGroup', '');
224 vm
.set('volumeGroup', selected
[0].data
.name
);
229 selModel
: 'treemodel',
237 calculate
: data
=> `fa x-fa-tree fa-${data.leaf ? 'hdd-o' : 'object-group'}`,
242 calculate
: data
=> (data
.size
- data
.free
) / data
.size
,
247 initComponent: function() {
250 me
.nodename
= me
.pveSelNode
.data
.node
;
252 throw "no node name specified";