]>
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 includePartitions
: true,
30 fieldLabel
: gettext('Disk'),
34 xtype
: 'proxmoxtextfield',
36 fieldLabel
: gettext('Name'),
40 xtype
: 'proxmoxcheckbox',
42 fieldLabel
: gettext('Add Storage'),
52 Ext
.define('PVE.node.LVMList', {
53 extend
: 'Ext.tree.Panel',
63 xclass
: 'Ext.app.ViewController',
65 destroyVolumeGroup: function() {
67 let vm
= me
.getViewModel();
68 let view
= me
.getView();
70 const volumeGroup
= vm
.get('volumeGroup');
73 throw "no node name specified";
77 throw "no volume group specified";
80 Ext
.create('PVE.window.SafeDestroyStorage', {
81 url
: `/nodes/${view.nodename}/disks/lvm/${volumeGroup}`,
82 item
: { id
: volumeGroup
},
83 taskName
: 'lvmremove',
84 taskDone
: () => { view
.reload(); },
89 emptyText
: gettext('No Volume Groups found'),
92 stateId
: 'grid-node-lvm',
100 text
: gettext('Name'),
105 text
: gettext('Number of LVs'),
106 dataIndex
: 'lvcount',
111 header
: gettext('Assigned to LVs'),
114 tdCls
: 'x-progressbar-default-cell',
115 xtype
: 'widgetcolumn',
117 xtype
: 'pveProgressBar',
121 header
: gettext('Size'),
125 renderer
: Proxmox
.Utils
.format_size
,
129 header
: gettext('Free'),
133 renderer
: Proxmox
.Utils
.format_size
,
140 text
: gettext('Reload'),
141 iconCls
: 'fa fa-refresh',
142 handler: function() {
143 this.up('panel').reload();
147 text
: gettext('Create') + ': Volume Group',
148 handler: function() {
149 let view
= this.up('panel');
150 Ext
.create('PVE.node.CreateLVM', {
151 nodename
: view
.nodename
,
152 taskDone
: () => view
.reload(),
161 volumeGroup
: undefined,
165 volumeGroup
: "{volumeGroup}",
169 '<tpl if="volumeGroup">',
170 'Volume group {volumeGroup}:',
172 Ext
.String
.format(gettext('No {0} selected'), 'volume group'),
177 text
: gettext('More'),
178 iconCls
: 'fa fa-bars',
181 disabled
: '{!volumeGroup}',
185 text
: gettext('Destroy'),
187 iconCls
: 'fa fa-fw fa-trash-o',
188 handler
: 'destroyVolumeGroup',
191 disabled
: '{!volumeGroup}',
200 let sm
= me
.getSelectionModel();
201 Proxmox
.Utils
.API2Request({
202 url
: `/nodes/${me.nodename}/disks/lvm`,
205 failure
: (response
, opts
) => Proxmox
.Utils
.setErrorMask(me
, response
.htmlStatus
),
206 success: function(response
, opts
) {
208 me
.setRootNode(response
.result
.data
);
215 activate: function() {
218 selectionchange: function(model
, selected
) {
220 let vm
= me
.getViewModel();
222 if (selected
.length
< 1 || selected
[0].data
.parentId
!== 'root') {
223 vm
.set('volumeGroup', '');
225 vm
.set('volumeGroup', selected
[0].data
.name
);
230 selModel
: 'treemodel',
238 calculate
: data
=> `fa x-fa-tree fa-${data.leaf ? 'hdd-o' : 'object-group'}`,
243 calculate
: data
=> (data
.size
- data
.free
) / data
.size
,
248 initComponent: function() {
251 me
.nodename
= me
.pveSelNode
.data
.node
;
253 throw "no node name specified";