| 
						 
							
							
							
						 
					 | 
				
			
			 | 
			 | 
			
				@@ -1,45 +1,9 @@
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				/**
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * Global variables
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				var diskDatatable; // zVM datatable containing disks
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				var zfcpDatatable; // zVM datatable containing zFCP devices
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				var networkDatatable; // zVM datatable containing networks
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				/**
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * Get the disk datatable
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * @return Data table object
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				function getDiskDataTable() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    return diskDatatable;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				/**
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * Set the disk datatable
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * @param table Data table object
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				function setDiskDataTable(table) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    diskDatatable = table;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				/**
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * Get the zFCP datatable
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * @return Data table object
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				function getZfcpDataTable() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    return zfcpDatatable;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				/**
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * Set the zFCP datatable
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * @param table Data table object
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				function setZfcpDataTable(table) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    zfcpDatatable = table;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				var diskSpace;  // Hash containing the disk pool space
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				var zfcpSpace;  // Hash containing the zFcp pool space
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				/**
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * Get the network datatable
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -965,76 +929,160 @@ function getZResources(data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Delete loader
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        $('#' + tabId).find('img[src="images/loader.gif"]').remove();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Obtain mapping for zHCP to zVM system
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var hcp2zvm = new Object();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        hcp2zvm = getHcpZvmHash();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Create accordion panel for disk
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        diskSpace = new Object();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var resourcesAccordion = $('<div id="zvmResourceAccordion"></div>');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var diskSection = $('<div id="zvmDiskResource"></div>');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var diskLnk = $('<h3><a href="#">Disks</a></h3>').click(function () {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            // Do not load panel again if it is already loaded
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if ($('#zvmDiskResource').children().length)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if ($('#zvmDiskResource').children().length) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                return;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                $('#zvmDiskResource').append(createLoader(''));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            // Resize accordion
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            $('#zvmResourceAccordion').accordion('resize');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            // Create a array for hardware control points
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            var hcps = new Array();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if ($.cookie('hcp').indexOf(',') > -1)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if ($.cookie('hcp').indexOf(',') > -1) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                hcps = $.cookie('hcp').split(',');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            } else {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                hcps.push($.cookie('hcp'));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            // Query the disk pools for each
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            // Create info bar
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            var info = createInfoBar('Below are disks that are defined in the EXTENT CONTROL file.');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            $('#zvmDiskResource').append(info);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            // Create a tab for each zVM LPAR
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	var zvmDiskTab = new Tab();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	zvmDiskTab.init();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	$('#zvmDiskResource').append(zvmDiskTab.object());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            for (var i in hcps) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                $.ajax( {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            	var tabId = hcps[i] + 'Disks';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            	var diskPanel = $('<div></div>').append(createLoader(''));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            	zvmDiskTab.add(tabId, hcp2zvm[hcps[i]], diskPanel, false);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            	
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            	diskSpace[hcps[i]] = new Object();  // Create a hash to contain zVM pool
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            // Query disk pool on-select
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            $('#zvmDiskResource').bind('tabsselect', function(event, ui) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            	var hcp = $(ui.panel).attr('id').replace('Disks', '');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            	
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            	// If disk pool is already loaded, do not load again
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            	if ($('#' + hcp2zvm[hcp] + 'DiskDataTable').length) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            		return;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            	}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            	
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            	$.ajax({
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    url : 'lib/cmd.php',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    dataType : 'json',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    data : {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        cmd : 'lsvm',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        tgt : hcps[i],
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        tgt : hcp,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        args : '--diskpoolnames',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        msg : hcps[i]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        msg : hcp
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    success : getDiskPool
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }            
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            // Select the 1st tab
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if (!$('#' + hcp2zvm[hcps[0]] + 'DiskDataTable').length) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            	$.ajax({
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    url : 'lib/cmd.php',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    dataType : 'json',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    data : {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        cmd : 'lsvm',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        tgt : hcps[0],
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        args : '--diskpoolnames',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        msg : hcps[0]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    success : getDiskPool
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                });  
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Create accordion panel for zFCP devices
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var zfcpSection = $('<div id="zfcpResource"></div>');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        zfcpSpace = new Object();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var zfcpSection = $('<div id="zFcpResource"></div>');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var zfcpLnk = $('<h3><a href="#">zFCP</a></h3>').click(function () {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            // Do not load panel again if it is already loaded
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if ($('#zfcpResource').children().length)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if ($('#zFcpResource').children().length) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                return;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                $('#zfcpResource').append(createLoader(''));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            // Resize accordion
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            $('#zvmResourceAccordion').accordion('resize');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            // Create a array for hardware control points
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            var hcps = new Array();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if ($.cookie('hcp').indexOf(',') > -1)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if ($.cookie('hcp').indexOf(',') > -1) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                hcps = $.cookie('hcp').split(',');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            } else {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                hcps.push($.cookie('hcp'));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            for ( var i in hcps) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                // Gather networks from hardware control points
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                $.ajax( {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            // Resource tab ID    
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            var info = createInfoBar('Below are devices that are defined internally in the zFCP pools.');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            $('#zFcpResource').append(info);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            // Create a tab for each zVM LPAR
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	var zFcpTab = new Tab();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	zFcpTab.init();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	$('#zFcpResource').append(zFcpTab.object());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            for (var i in hcps) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            	var tabId = hcps[i] + 'Zfcps';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            	var zfcpPanel = $('<div></div>').append(createLoader(''));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            	zFcpTab.add(tabId, hcp2zvm[hcps[i]], zfcpPanel, false);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            	
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            	zfcpSpace[hcps[i]] = new Object();  // Create a hash to contain zVM pool
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            // Query zFcp pool on-select
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            $('#zFcpResource').bind('tabsselect', function(event, ui) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            	var hcp = $(ui.panel).attr('id').replace('Zfcps', '');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            	
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            	// If zFcp pool is already loaded, do not load again
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            	if ($('#' + hcp2zvm[hcp] + 'ZfcpDataTable').length) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            		return;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            	}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            	
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            	$.ajax({
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    url : 'lib/cmd.php',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    dataType : 'json',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    data : {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        cmd : 'lsvm',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        tgt : hcps[i],
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        tgt : hcp,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        args : '--zfcppoolnames',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        msg : hcps[i]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        msg : hcp
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    success : getZfcpPool
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            // Select the 1st tab
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if (!$('#' + hcp2zvm[hcps[0]] + 'ZfcpDataTable').length) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            	$.ajax({
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    url : 'lib/cmd.php',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    dataType : 'json',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    data : {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        cmd : 'lsvm',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        tgt : hcps[0],
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        args : '--zfcppoolnames',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        msg : hcps[0]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    success : getZfcpPool
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                });  
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -1042,22 +1090,24 @@ function getZResources(data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var networkSection = $('<div id="zvmNetworkResource"></div>');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var networkLnk = $('<h3><a href="#">Networks</a></h3>').click(function () {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            // Do not load panel again if it is already loaded
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if ($('#zvmNetworkResource').children().length)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if ($('#zvmNetworkResource').children().length) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                return;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            } else {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                $('#zvmNetworkResource').append(createLoader(''));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            // Resize accordion
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            $('#zvmResourceAccordion').accordion('resize');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            // Create a array for hardware control points
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            var hcps = new Array();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if ($.cookie('hcp').indexOf(',') > -1)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if ($.cookie('hcp').indexOf(',') > -1) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                hcps = $.cookie('hcp').split(',');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            } else {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                hcps.push($.cookie('hcp'));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            for ( var i in hcps) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            for (var i in hcps) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                // Gather networks from hardware control points
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                $.ajax( {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    url : 'lib/cmd.php',
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -1078,7 +1128,7 @@ function getZResources(data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Append accordion to tab
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        $('#' + tabId).append(resourcesAccordion);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        resourcesAccordion.accordion();        
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        resourcesAccordion.accordion();      
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        networkLnk.trigger('click');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -3181,7 +3231,7 @@ function removeNic(node, nic) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * @param data Data from HTTP request
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				function setNetworkCookies(data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (data.rsp.length) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (data.rsp.length  && data.rsp[0].indexOf("Failed") == -1) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var node = data.msg;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var networks = data.rsp[0].split(node + ': ');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -3203,12 +3253,13 @@ function getDiskPool(data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var pools = data.rsp[0].split(hcp + ': ');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Get contents of each disk pool
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        for ( var i in pools) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        for (var i in pools) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	pools[i] = jQuery.trim(pools[i]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if (pools[i]) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                pools[i] = jQuery.trim(pools[i]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                      
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                diskSpace[hcp][pools[i]] = new Object();  // Create hash to contain free and used space
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                      
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                // Get used space
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                $.ajax( {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                $.ajax({
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    url : 'lib/cmd.php',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    dataType : 'json',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    data : {
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -3222,7 +3273,7 @@ function getDiskPool(data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                // Get free space
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                $.ajax( {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                $.ajax({
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    url : 'lib/cmd.php',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    dataType : 'json',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    data : {
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -3238,7 +3289,11 @@ function getDiskPool(data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        } // End of for
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    } else {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Load empty table
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        loadDiskPoolTable();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	var data = { 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    		msg : 'hcp=' + data.msg + ';',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    		rsp : []
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	};
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        loadDiskPoolTable(data);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -3254,11 +3309,12 @@ function getZfcpPool(data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Get contents of each disk pool
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        for (var i in pools) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	pools[i] = jQuery.trim(pools[i]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if (pools[i]) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                pools[i] = jQuery.trim(pools[i]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                      
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            	zfcpSpace[hcp][pools[i]] = new Object();  // Create hash to contain free and used space
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                // Query used and free space
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                $.ajax( {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                $.ajax({
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    url : 'lib/cmd.php',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    dataType : 'json',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    data : {
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -3274,7 +3330,11 @@ function getZfcpPool(data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        } // End of for
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    } else {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Load empty table
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        loadZfcpPoolTable();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	var data = { 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    		msg : 'hcp=' + data.msg + ';',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    		rsp : []
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	};
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        loadZfcpPoolTable(data);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -3317,13 +3377,9 @@ function getNetwork(data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * @param data HTTP request data
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				function loadDiskPoolTable(data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // Remove loader
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    var panelId = 'zvmDiskResource';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    $('#' + panelId).find('img[src="images/loader.gif"]').remove();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    var hcp2zvm = new Object();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    var args, hcp, pool, stat, tmp;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (data.rsp.length) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Do not continue if the call failed
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if (!data.rsp.length && data.rsp[0].indexOf("Failed") > 0) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            return;
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -3335,36 +3391,36 @@ function loadDiskPoolTable(data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        args = data.msg.split(';');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        hcp = args[0].replace('hcp=', '');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        pool = args[1].replace('pool=', '');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        stat = args[2].replace('stat=', '');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        stat = jQuery.trim(args[2].replace('stat=', ''));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        tmp = data.rsp[0].split(hcp + ': ');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Initialize free or used space in hash
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        diskSpace[hcp][pool][stat] = 0;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    } else {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Provide empty values so the table will be generated
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        hcp = '';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	args = data.msg.split(';');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	// Provide empty values so the table will be generated
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	hcp = args[0].replace('hcp=', '');    	
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        pool = '';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        stat = '';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        tmp = new Array();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // Resource tab ID    
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    var info = $('#' + panelId).find('.ui-state-highlight');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // If there is no info bar
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (!info.length) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Create info bar
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        info = createInfoBar('Below are disks that are defined in the EXTENT CONTROL file.');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        $('#' + panelId).append(info);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // Remove loader
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    var panelId = hcp + 'Disks';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    $('#' + panelId).find('img[src="images/loader.gif"]').remove();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // Get datatable
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    var tableId = 'zDiskDataTable';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    var dTable = getDiskDataTable();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (!dTable) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    var tableId = hcp2zvm[hcp] + 'DiskDataTable';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    var dTable;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (!$('#' + tableId).length) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Create a datatable        
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var table = new DataTable(tableId);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Resource headers: volume ID, device type, start address, and size
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        table.init( [ '<input type="checkbox" onclick="selectAllDisk(event, $(this))">', 'z/VM', 'Pool', 'Status', 'Volume', 'Device type', 'Starting address', 'Size' ]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Append datatable to panel
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        $('#' + panelId).append(table.object());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        $('#' + hcp + 'Disks').append(table.object());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Turn into datatable
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        dTable = $('#' + tableId).dataTable({
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -3380,7 +3436,8 @@ function loadDiskPoolTable(data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        setDiskDataTable(dTable);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    } else {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	dTable = $('#' + tableId).dataTable();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // Skip index 0 and 1 because it contains nothing
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -3388,11 +3445,79 @@ function loadDiskPoolTable(data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        tmp[i] = jQuery.trim(tmp[i]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var diskAttrs = tmp[i].split(' ');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var key = hcp2zvm[hcp] + "-" + pool + "-" + diskAttrs[0];
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        dTable.fnAddData( [ '<input type="checkbox" name="' + key + '"/>', hcp2zvm[hcp], pool, stat, diskAttrs[0], diskAttrs[1], diskAttrs[2], diskAttrs[3] ]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var type = diskAttrs[1];
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Calculate disk size
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var size;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if (type.indexOf('3390') != -1) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	size = convertCylinders2Gb(parseInt(diskAttrs[3]));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        } else if (type.indexOf('9336') != -1) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	size = convertBlocks2Gb(parseInt(diskAttrs[3]))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        } else {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	size = 0;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        dTable.fnAddData( [ '<input type="checkbox" name="' + key + '"/>', hcp2zvm[hcp], pool, stat, diskAttrs[0], type, diskAttrs[2], diskAttrs[3] + " (" + size + "G)" ]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Add up the free or used size
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	diskSpace[hcp][pool][stat] += size;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // Plot bar chart when all data is gathered
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    var plotBarChart = true;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    for (var p in diskSpace[hcp]) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if (!('free' in diskSpace[hcp][p]) || !('used' in diskSpace[hcp][p])) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							plotBarChart = false;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (plotBarChart) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	// Bar chart data points
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var ticks = new Array();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var free = new Array();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var used = new Array();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	for (var p in diskSpace[hcp]) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    		ticks.push(p);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    		
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    	free.push(diskSpace[hcp][p]['free']);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							used.push(diskSpace[hcp][p]['used']);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Create bar chart, only when there is data
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	var plot;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	var panelId = hcp + 'Disks';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						$('#' + panelId).prepend($('<div id="' + hcp + 'DiskChart" style="height:300px; width:500px; margin-left:auto; margin-right:auto;"></div>'));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	plot = $.jqplot(hcp + 'DiskChart', [used, free], {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    		title: '', 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	    stackSeries: true,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	    seriesDefaults: {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	        renderer: $.jqplot.BarRenderer,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	        rendererOptions: {barMargin: 25}, 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	        pointLabels: {show: true}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	    },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	    series: [
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					            {label: 'Used'},
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					            {label: 'Free'}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					        ],
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	    axes: {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	        xaxis: {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	        	renderer: $.jqplot.CategoryAxisRenderer,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    ticks: ticks
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	        },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	        yaxis: {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    tickOptions: {formatString: '%dG'}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	    },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	    legend: {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	    	show: true,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	        placement: 'outsideGrid'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	    }  
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	});
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // Create actions menu
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (!$('#zvmDiskResourceActions').length) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    var menuId = hcp2zvm[hcp] + 'DiskResourceActions';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (!$('#' + menuId).length) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Empty filter area
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        $('#' + tableId + '_length').empty();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -3411,32 +3536,22 @@ function loadDiskPoolTable(data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Refresh table
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var refreshLnk = $('<a>Refresh</a>');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        refreshLnk.bind('click', function(event){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            $('#zvmDiskResource').empty().append(createLoader(''));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            setDiskDataTable('');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        refreshLnk.bind('click', function(event) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            $('#' + panelId).empty().append(createLoader(''));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            // Create a array for hardware control points
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            var hcps = new Array();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if ($.cookie('hcp').indexOf(',') > -1)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                hcps = $.cookie('hcp').split(',');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                hcps.push($.cookie('hcp'));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            // Query the disk pools for each
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            for (var i in hcps) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                $.ajax( {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    url : 'lib/cmd.php',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    dataType : 'json',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    data : {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        cmd : 'lsvm',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        tgt : hcps[i],
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        args : '--diskpoolnames',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        msg : hcps[i]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            // Query the disk pools
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            $.ajax({
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                url : 'lib/cmd.php',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                dataType : 'json',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                data : {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    cmd : 'lsvm',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    tgt : hcp,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    args : '--diskpoolnames',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    msg : hcp
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    success : getDiskPool
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }    
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                success : getDiskPool
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }); 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Add ECKD to system
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -3475,7 +3590,7 @@ function loadDiskPoolTable(data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var advancedMenu = createMenu([addEckdLnk, addPageSpoolLnk, addEdevLnk, removeEdevLnk, shareLnk]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Create action bar
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var actionBar = $('<div id="zvmDiskResourceActions" class="actionBar"></div>').css("width", "450px");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var actionBar = $('<div id="' + menuId + '" class="actionBar"></div>').css("width", "450px");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Create an action menu
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var actionsMenu = createMenu([refreshLnk, addLnk, removeLnk, [advancedLnk, advancedMenu]]);
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -3495,7 +3610,7 @@ function loadDiskPoolTable(data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        $('#' + tableId + '_length').prepend(menuDiv);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        $('#' + tableId + '_length').css({
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            'padding': '0px',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            'width': '500px'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            'width': '460px'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        $('#' + tableId + '_filter').css('padding', '10px');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        menuDiv.append(actionBar);
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -3510,14 +3625,10 @@ function loadDiskPoolTable(data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * @param data HTTP request data
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				function loadZfcpPoolTable(data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // Delete loader
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    var panelId = 'zfcpResource';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    $('#' + panelId).find('img[src="images/loader.gif"]').remove();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				function loadZfcpPoolTable(data) {    
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    var hcp2zvm = new Object();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    var args, hcp, pool, tmp;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (data.rsp.length) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Do not continue if the call failed
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if (!data.rsp.length && data.rsp[0].indexOf("Failed") > 0) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            return;
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -3530,29 +3641,32 @@ function loadZfcpPoolTable(data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        hcp = args[0].replace('hcp=', '');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        pool = args[1].replace('pool=', '');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        tmp = data.rsp[0].split(hcp + ': ');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Initialize free, reserved, and used space in hash
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        zfcpSpace[hcp][pool]['free'] = 0;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        zfcpSpace[hcp][pool]['used'] = 0;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        zfcpSpace[hcp][pool]['reserved'] = 0;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    } else {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Provide empty values so the table will be generated
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        hcp = '';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        pool = ''
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	args = data.msg.split(';');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	// Provide empty values so the table will be generated
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	hcp = args[0].replace('hcp=', '');    	
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        pool = '';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        tmp = new Array();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // Resource tab ID    
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    var info = $('#' + panelId).find('.ui-state-highlight');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // If there is no info bar, create info bar
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (!info.length) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        info = createInfoBar('Below are devices that are defined internally in the zFCP pools.');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        $('#' + panelId).append(info);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // Remove loader
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    var panelId = hcp + 'Zfcps';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    $('#' + panelId).find('img[src="images/loader.gif"]').remove();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // Get datatable
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    var tableId = 'zFcpDataTable';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    var dTable = getZfcpDataTable();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (!dTable) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Create a datatable        
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    var tableId = hcp2zvm[hcp] + 'ZfcpDataTable';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    var dTable;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (!$('#' + tableId).length) {    	
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Create a datatable
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var table = new DataTable(tableId);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Resource headers: status, WWPN, LUN, size, owner, channel, tag
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        table.init( [ '<input type="checkbox" onclick="selectAllDisk(event, $(this))">', 'z/VM', 'Pool', 'Status', 'Port name', 'Unit number', 'Size', 'Range', 'Owner', 'Channel', 'Tag' ]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        table.init([ '<input type="checkbox" onclick="selectAllDisk(event, $(this))">', 'z/VM', 'Pool', 'Status', 'Port name', 'Unit number', 'Size', 'Range', 'Owner', 'Channel', 'Tag' ]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Append datatable to panel
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        $('#' + panelId).append(table.object());
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -3571,22 +3685,74 @@ function loadZfcpPoolTable(data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        setZfcpDataTable(dTable);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    } else {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	dTable = $('#' + tableId).dataTable();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (data.rsp.length) {   	
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Skip index 0 and 1 because it contains nothing
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var key = "";
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        for ( var i = 2; i < tmp.length; i++) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        for (var i = 2; i < tmp.length; i++) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            tmp[i] = jQuery.trim(tmp[i]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            var diskAttrs = tmp[i].split(',');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            diskAttrs[0] = diskAttrs[0].toLowerCase();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            var key = hcp2zvm[hcp] + '-' + pool + '-' + diskAttrs[2];
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            dTable.fnAddData( [ '<input type="checkbox" name="' + key + '"/>', hcp2zvm[hcp], pool, diskAttrs[0], diskAttrs[1], diskAttrs[2], diskAttrs[3], diskAttrs[4], diskAttrs[5], diskAttrs[6], diskAttrs[7] ]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            dTable.fnAddData([ '<input type="checkbox" name="' + key + '"/>', hcp2zvm[hcp], pool, diskAttrs[0], diskAttrs[1], diskAttrs[2], diskAttrs[3], diskAttrs[4], diskAttrs[5], diskAttrs[6], diskAttrs[7] ]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            // Add up the free or used size
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            zfcpSpace[hcp][pool][diskAttrs[0]] += convertString2Gb(diskAttrs[3]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Bar chart data points
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var ticks = new Array();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var free = new Array();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var used = new Array();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        for (var pool in zfcpSpace[hcp]) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	ticks.push(pool);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	free.push(zfcpSpace[hcp][pool]['free']);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	if ('reserved' in zfcpSpace[hcp][pool]) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        		used.push(zfcpSpace[hcp][pool]['used'] + zfcpSpace[hcp][pool]['reserved']);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	} else {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        		used.push(zfcpSpace[hcp][pool]['used']);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Create bar chart, only when there is data
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if ((used.length || free.length) && ticks.length) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	$('#' + panelId).prepend($('<div id="' + hcp + 'ZfcpChart" style="height:300px; width:500px; margin-left:auto; margin-right:auto;"></div>'));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	var plot = $.jqplot(hcp + 'ZfcpChart', [used, free], {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        		title: '',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	    stackSeries: true,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	    seriesDefaults: {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	        renderer: $.jqplot.BarRenderer,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	        rendererOptions: {barMargin: 25}, 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	        pointLabels: {show: true}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	    },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	    series: [
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	            {label: 'Used'},
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	            {label: 'Free'}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    	        ],
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	    axes: {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	        xaxis: {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	        	renderer: $.jqplot.CategoryAxisRenderer,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        ticks: ticks
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	        },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	        yaxis: {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        tickOptions: {formatString: '%dG'}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	    },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	    legend: {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	    	show: true,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	        placement: 'outsideGrid'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	    }  
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	});
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // Create actions menu
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (!$('#zFcpResourceActions').length) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    var menuId = hcp2zvm[hcp] + 'ZfcpResourceActions';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (!$('#' + menuId).length) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Empty filter area
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        $('#' + tableId + '_length').empty();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -3606,31 +3772,21 @@ function loadZfcpPoolTable(data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Refresh table
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var refreshLnk = $('<a>Refresh</a>');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        refreshLnk.bind('click', function(event){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            $('#zfcpResource').empty().append(createLoader(''));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            setZfcpDataTable('');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        	$('#' + panelId).empty().append(createLoader(''));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            // Create a array for hardware control points
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            var hcps = new Array();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if ($.cookie('hcp').indexOf(',') > -1)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                hcps = $.cookie('hcp').split(',');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                hcps.push($.cookie('hcp'));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            // Query the disk pools for each
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            for (var i in hcps) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                $.ajax( {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    url : 'lib/cmd.php',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    dataType : 'json',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    data : {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        cmd : 'lsvm',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        tgt : hcps[i],
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        args : '--zfcppoolnames',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        msg : hcps[i]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            // Query the disk pools
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            $.ajax({
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                url : 'lib/cmd.php',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                dataType : 'json',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                data : {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    cmd : 'lsvm',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    tgt : hcp,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    args : '--zfcppoolnames',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    msg : hcp
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    success : getZfcpPool
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }    
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                success : getZfcpPool
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Create action bar
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -3654,7 +3810,7 @@ function loadZfcpPoolTable(data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        $('#' + tableId + '_length').prepend(menuDiv);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        $('#' + tableId + '_length').css({
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            'padding': '0px',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            'width': '500px'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            'width': '460px'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        $('#' + tableId + '_filter').css('padding', '10px');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        menuDiv.append(actionBar);
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -5883,7 +6039,7 @@ function loadGoldenImages(col) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * @param data Data from HTTP request
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				function setzVMCookies(data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (data.rsp[0].length) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (data.rsp[0].length && data.rsp[0].indexOf("Failed") == -1) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var zvms = new Array();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var hosts = data.rsp[0].split("\n");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        for ( var i = 0; i < hosts.length; i++) {
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -5905,7 +6061,7 @@ function setzVMCookies(data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * @param data Data from HTTP request
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				function setGoldenImagesCookies(data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (data.rsp[0].length) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (data.rsp[0].length && data.rsp[0].indexOf("Failed") == -1) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var copies = new Array();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var tmp = data.rsp[0].split(",");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        for ( var i = 0; i < tmp.length; i++) {
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -5927,7 +6083,7 @@ function setGoldenImagesCookies(data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * @param data Data from HTTP request
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				function setDiskPoolCookies(data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (data.rsp[0].length) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (data.rsp[0].length && data.rsp[0].indexOf("Failed") == -1) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var node = data.msg;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var pools = data.rsp[0].split(node + ': ');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        for (var i in pools) {
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -5947,7 +6103,7 @@ function setDiskPoolCookies(data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * @param data Data from HTTP request
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				function setZfcpPoolCookies(data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (data.rsp[0].length) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (data.rsp[0].length && data.rsp[0].indexOf("Failed") == -1) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var node = data.msg;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var pools = data.rsp[0].split(node + ': ');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        for (var i in pools) {
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -5981,7 +6137,7 @@ function setzHcpCookies(zhcps) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * @param data Data from HTTP request
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				function setUserProfilesCookies(data) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (data.rsp[0].length) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (data.rsp[0].length && data.rsp[0].indexOf("Failed") == -1) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var node = data.msg;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var profiles = data.rsp[0].split(node + ': ');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        for (var i in profiles) {
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -6690,4 +6846,48 @@ function generateUserEntry(userId, password, memory, privilege, profile, cpuCoun
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    userDirectoryEntry += "SPOOL 000E 1403 A\n";
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    return userDirectoryEntry;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				/**
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * Convert a string (e.g. 1024M) into GB
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * @param size The string containing the size
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * @return Size in GB
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				function convertString2Gb(size) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					var sizeGb = 0;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if (size.indexOf('G') != -1) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						sizeGb = parseInt(size);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					} else if (size.indexOf('M') != -1) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						sizeGb = parseInt(size)*1024;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					return sizeGb;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				/**
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * Convert a given number of cylinders into GB
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * @param cylinders Number of cylinders
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * @return Size in GB
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				function convertCylinders2Gb(cylinders) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					var bytes = cylinders * 737280;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					var sizeGb = bytes/(1024*1024*1024);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					sizeGb = Math.round(sizeGb * 10)/10;  // Round to 1 decimal place
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					return sizeGb;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				/**
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * Convert a given number of blocks into GB
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * @param blocks Number of blocks
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * @return Size in GB
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				function convertBlocks2Gb(blocks) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					var sizeGb = blocks/(2048*1024);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					sizeGb = Math.round(sizeGb * 10)/10;  // Round to 1 decimal place
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					return sizeGb;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 |