mirror of
				https://git.proxmox.com/git/pve-manager
				synced 2025-11-04 07:12:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			189 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			189 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
Ext.define('PVE.node.CreateLVM', {
 | 
						|
    extend: 'Proxmox.window.Edit',
 | 
						|
    xtype: 'pveCreateLVM',
 | 
						|
 | 
						|
    subject: 'LVM Volume Group',
 | 
						|
 | 
						|
    showProgress: true,
 | 
						|
 | 
						|
    onlineHelp: 'chapter_lvm',
 | 
						|
 | 
						|
    initComponent : function() {
 | 
						|
        var me = this;
 | 
						|
 | 
						|
	if (!me.nodename) {
 | 
						|
	    throw "no node name specified";
 | 
						|
	}
 | 
						|
 | 
						|
	me.isCreate = true;
 | 
						|
 | 
						|
        Ext.applyIf(me, {
 | 
						|
	    url: "/nodes/" + me.nodename + "/disks/lvm",
 | 
						|
	    method: 'POST',
 | 
						|
	    items: [
 | 
						|
		{
 | 
						|
		    xtype: 'pveDiskSelector',
 | 
						|
		    name: 'device',
 | 
						|
		    nodename: me.nodename,
 | 
						|
		    diskType: 'unused',
 | 
						|
		    fieldLabel: gettext('Disk'),
 | 
						|
		    allowBlank: false
 | 
						|
		},
 | 
						|
		{
 | 
						|
		    xtype: 'proxmoxtextfield',
 | 
						|
		    name: 'name',
 | 
						|
		    fieldLabel: gettext('Name'),
 | 
						|
		    allowBlank: false
 | 
						|
		},
 | 
						|
		{
 | 
						|
		    xtype: 'proxmoxcheckbox',
 | 
						|
		    name: 'add_storage',
 | 
						|
		    fieldLabel: gettext('Add Storage'),
 | 
						|
		    value: '1'
 | 
						|
		}
 | 
						|
            ]
 | 
						|
        });
 | 
						|
 | 
						|
        me.callParent();
 | 
						|
    }
 | 
						|
});
 | 
						|
 | 
						|
Ext.define('PVE.node.LVMList', {
 | 
						|
    extend: 'Ext.tree.Panel',
 | 
						|
    xtype: 'pveLVMList',
 | 
						|
    emptyText: gettext('No Volume Groups found'),
 | 
						|
    stateful: true,
 | 
						|
    stateId: 'grid-node-lvm',
 | 
						|
    columns: [
 | 
						|
	{
 | 
						|
	    xtype: 'treecolumn',
 | 
						|
	    text: gettext('Name'),
 | 
						|
	    dataIndex: 'name',
 | 
						|
	    flex: 1
 | 
						|
	},
 | 
						|
	{
 | 
						|
	    text: gettext('Number of LVs'),
 | 
						|
	    dataIndex: 'lvcount',
 | 
						|
	    width: 150,
 | 
						|
	    align: 'right'
 | 
						|
	},
 | 
						|
	{
 | 
						|
	    header: gettext('Usage'),
 | 
						|
	    width: 110,
 | 
						|
	    dataIndex: 'usage',
 | 
						|
	    tdCls: 'x-progressbar-default-cell',
 | 
						|
	    xtype: 'widgetcolumn',
 | 
						|
	    widget: {
 | 
						|
		xtype: 'pveProgressBar'
 | 
						|
	    }
 | 
						|
	},
 | 
						|
	{
 | 
						|
	    header: gettext('Size'),
 | 
						|
	    width: 100,
 | 
						|
	    align: 'right',
 | 
						|
	    sortable: true,
 | 
						|
	    renderer: Proxmox.Utils.format_size,
 | 
						|
	    dataIndex: 'size'
 | 
						|
	},
 | 
						|
	{
 | 
						|
	    header: gettext('Free'),
 | 
						|
	    width: 100,
 | 
						|
	    align: 'right',
 | 
						|
	    sortable: true,
 | 
						|
	    renderer: Proxmox.Utils.format_size,
 | 
						|
	    dataIndex: 'free'
 | 
						|
	}
 | 
						|
    ],
 | 
						|
 | 
						|
    rootVisible: false,
 | 
						|
    useArrows: true,
 | 
						|
 | 
						|
    tbar: [
 | 
						|
	{
 | 
						|
	    text: gettext('Reload'),
 | 
						|
	    iconCls: 'fa fa-refresh',
 | 
						|
	    handler: function() {
 | 
						|
		var me = this.up('panel');
 | 
						|
		me.reload();
 | 
						|
	    }
 | 
						|
	},
 | 
						|
	{
 | 
						|
	    text: gettext('Create') + ': Volume Group',
 | 
						|
	    handler: function() {
 | 
						|
		var me = this.up('panel');
 | 
						|
		var win = Ext.create('PVE.node.CreateLVM', {
 | 
						|
		    nodename: me.nodename,
 | 
						|
		    taskDone: function() {
 | 
						|
			me.reload();
 | 
						|
		    }
 | 
						|
		}).show();
 | 
						|
	    }
 | 
						|
	}
 | 
						|
    ],
 | 
						|
 | 
						|
    reload: function() {
 | 
						|
	var me = this;
 | 
						|
	var sm = me.getSelectionModel();
 | 
						|
	Proxmox.Utils.API2Request({
 | 
						|
	    url: "/nodes/" + me.nodename + "/disks/lvm",
 | 
						|
	    waitMsgTarget: me,
 | 
						|
	    method: 'GET',
 | 
						|
	    failure: function(response, opts) {
 | 
						|
		Proxmox.Utils.setErrorMask(me, response.htmlStatus);
 | 
						|
	    },
 | 
						|
	    success: function(response, opts) {
 | 
						|
		sm.deselectAll();
 | 
						|
		me.setRootNode(response.result.data);
 | 
						|
		me.expandAll();
 | 
						|
	    }
 | 
						|
	});
 | 
						|
    },
 | 
						|
 | 
						|
    listeners: {
 | 
						|
	activate: function() {
 | 
						|
	    var me = this;
 | 
						|
	    me.reload();
 | 
						|
	}
 | 
						|
    },
 | 
						|
 | 
						|
    initComponent: function() {
 | 
						|
	 /*jslint confusion: true */
 | 
						|
        var me = this;
 | 
						|
 | 
						|
	me.nodename = me.pveSelNode.data.node;
 | 
						|
	if (!me.nodename) {
 | 
						|
	    throw "no node name specified";
 | 
						|
	}
 | 
						|
 | 
						|
	var sm = Ext.create('Ext.selection.TreeModel', {});
 | 
						|
 | 
						|
	Ext.apply(me, {
 | 
						|
	    selModel: sm,
 | 
						|
	    fields: ['name', 'size', 'free',
 | 
						|
		{
 | 
						|
		    type: 'string',
 | 
						|
		    name: 'iconCls',
 | 
						|
		    calculate: function(data) {
 | 
						|
			var txt = 'fa x-fa-tree fa-';
 | 
						|
			txt += (data.leaf) ? 'hdd-o' : 'object-group';
 | 
						|
			return txt;
 | 
						|
		    }
 | 
						|
		},
 | 
						|
		{
 | 
						|
		    type: 'number',
 | 
						|
		    name: 'usage',
 | 
						|
		    calculate: function(data) {
 | 
						|
			return ((data.size-data.free)/data.size);
 | 
						|
		    }
 | 
						|
		}
 | 
						|
	    ],
 | 
						|
	    sorters: 'name'
 | 
						|
	});
 | 
						|
 | 
						|
	me.callParent();
 | 
						|
 | 
						|
	me.reload();
 | 
						|
    }
 | 
						|
});
 | 
						|
 |