mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-11-04 05:12:30 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			259 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			259 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/**
 | 
						|
 * Global variables
 | 
						|
 */
 | 
						|
var provisionTabs; // Provision tabs
 | 
						|
 | 
						|
/**
 | 
						|
 * Set the provision tab
 | 
						|
 *
 | 
						|
 * @param obj Tab object
 | 
						|
 */
 | 
						|
function setProvisionTab(obj) {
 | 
						|
    provisionTabs = obj;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Get the provision tab
 | 
						|
 *
 | 
						|
 * @param Nothing
 | 
						|
 * @return Tab object
 | 
						|
 */
 | 
						|
function getProvisionTab() {
 | 
						|
    return provisionTabs;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Load provision page
 | 
						|
 */
 | 
						|
function loadProvisionPage() {
 | 
						|
    // If the page is loaded
 | 
						|
    if ($('#content').children().length) {
 | 
						|
        // Do not load again
 | 
						|
        return;
 | 
						|
    }
 | 
						|
 | 
						|
    // Get OS image names
 | 
						|
    if (!$.cookie('xcat_imagenames')){
 | 
						|
        $.ajax( {
 | 
						|
            url : 'lib/cmd.php',
 | 
						|
            dataType : 'json',
 | 
						|
            data : {
 | 
						|
                cmd : 'tabdump',
 | 
						|
                tgt : '',
 | 
						|
                args : 'osimage',
 | 
						|
                msg : ''
 | 
						|
            },
 | 
						|
 | 
						|
            success : function(data) {
 | 
						|
                data = decodeRsp(data);
 | 
						|
                setOSImageCookies(data);
 | 
						|
            }
 | 
						|
        });
 | 
						|
    }
 | 
						|
 | 
						|
    // Get groups
 | 
						|
    if (!$.cookie('xcat_groups')){
 | 
						|
        $.ajax( {
 | 
						|
            url : 'lib/cmd.php',
 | 
						|
            dataType : 'json',
 | 
						|
            data : {
 | 
						|
                cmd : 'extnoderange',
 | 
						|
                tgt : '/.*',
 | 
						|
                args : 'subgroups',
 | 
						|
                msg : ''
 | 
						|
            },
 | 
						|
 | 
						|
            success : function(data) {
 | 
						|
                data = decodeRsp(data);
 | 
						|
                setGroupsCookies(data);
 | 
						|
            }
 | 
						|
        });
 | 
						|
    }
 | 
						|
 | 
						|
    // Create info bar
 | 
						|
    var infoBar = createInfoBar('Select a platform to provision or re-provision a node on, then click Ok.');
 | 
						|
 | 
						|
    // Create provision page
 | 
						|
    var provPg = $('<div class="form"></div>');
 | 
						|
    provPg.append(infoBar);
 | 
						|
 | 
						|
    // Create provision tab
 | 
						|
    var tab = new Tab('provisionPageTabs');
 | 
						|
    setProvisionTab(tab);
 | 
						|
    tab.init();
 | 
						|
    $('#content').append(tab.object());
 | 
						|
 | 
						|
    // Create radio buttons for platforms
 | 
						|
    var hwList = $('<ol>Platforms available:</ol>');
 | 
						|
    var esx = $('<li><input type="radio" name="hw" value="esx" disabled/>ESX</li>');
 | 
						|
    var kvm = $('<li><input type="radio" name="hw" value="kvm" disabled/>KVM</li>');
 | 
						|
    var zvm = $('<li><input type="radio" name="hw" value="zvm" checked/>z\/VM</li>');
 | 
						|
    var ipmi = $('<li><input type="radio" name="hw" value="ipmi" disabled/>iDataPlex</li>');
 | 
						|
    var blade = $('<li><input type="radio" name="hw" value="blade" disabled/>BladeCenter</li>');
 | 
						|
    var hmc = $('<li><input type="radio" name="hw" value="hmc" disabled/>System p</li>');
 | 
						|
 | 
						|
    hwList.append(esx);
 | 
						|
    hwList.append(kvm);
 | 
						|
    hwList.append(zvm);
 | 
						|
    hwList.append(blade);
 | 
						|
    hwList.append(ipmi);
 | 
						|
    hwList.append(hmc);
 | 
						|
    provPg.append(hwList);
 | 
						|
 | 
						|
    /**
 | 
						|
     * Ok
 | 
						|
     */
 | 
						|
    var okBtn = createButton('Ok');
 | 
						|
    okBtn.bind('click', function(event) {
 | 
						|
        // Get hardware that was selected
 | 
						|
        var hw = $(this).parent().find('input[name="hw"]:checked').val();
 | 
						|
 | 
						|
        var inst = 0;
 | 
						|
        var newTabId = hw + 'ProvisionTab' + inst;
 | 
						|
        while ($('#' + newTabId).length) {
 | 
						|
            // If one already exists, generate another one
 | 
						|
            inst = inst + 1;
 | 
						|
            newTabId = hw + 'ProvisionTab' + inst;
 | 
						|
        }
 | 
						|
 | 
						|
        // Create an instance of the plugin
 | 
						|
        var title = '';
 | 
						|
        var plugin;
 | 
						|
        switch (hw) {
 | 
						|
            case "kvm":
 | 
						|
                plugin = new kvmPlugin();
 | 
						|
                title = 'KVM';
 | 
						|
                break;
 | 
						|
            case "esx":
 | 
						|
                plugin = new esxPlugin();
 | 
						|
                title = 'ESX';
 | 
						|
                break;
 | 
						|
            case "blade":
 | 
						|
                plugin = new bladePlugin();
 | 
						|
                title = 'BladeCenter';
 | 
						|
                break;
 | 
						|
            case "hmc":
 | 
						|
                plugin = new hmcPlugin();
 | 
						|
                title = 'System p';
 | 
						|
                break;
 | 
						|
            case "ipmi":
 | 
						|
                plugin = new ipmiPlugin();
 | 
						|
                title = 'iDataPlex';
 | 
						|
                break;
 | 
						|
            case "zvm":
 | 
						|
                plugin = new zvmPlugin();
 | 
						|
                title = 'z/VM';
 | 
						|
                break;
 | 
						|
        }
 | 
						|
 | 
						|
        // Select tab
 | 
						|
        tab.add(newTabId, title, '', true);
 | 
						|
        tab.select(newTabId);
 | 
						|
        plugin.loadProvisionPage(newTabId);
 | 
						|
    });
 | 
						|
    provPg.append(okBtn);
 | 
						|
 | 
						|
    // Create resources tab
 | 
						|
    var resrcPg = $('<div class="form"></div>');
 | 
						|
 | 
						|
    // Create info bar
 | 
						|
    var resrcInfoBar = createInfoBar('Select a platform to view its current resources.');
 | 
						|
    resrcPg.append(resrcInfoBar);
 | 
						|
 | 
						|
    // Create radio buttons for platforms
 | 
						|
    var rsrcHwList = $('<ol>Platforms available:</ol>');
 | 
						|
    esx = $('<li><input type="radio" name="rsrcHw" value="esx" disabled/>ESX</li>');
 | 
						|
    kvm = $('<li><input type="radio" name="rsrcHw" value="kvm" disabled/>KVM</li>');
 | 
						|
    zvm = $('<li><input type="radio" name="rsrcHw" value="zvm" checked/>z\/VM</li>');
 | 
						|
    ipmi = $('<li><input type="radio" name="rsrcHw" value="ipmi" disabled/>iDataPlex</li>');
 | 
						|
    blade = $('<li><input type="radio" name="rsrcHw" value="blade" disabled/>BladeCenter</li>');
 | 
						|
    hmc = $('<li><input type="radio" name="rsrcHw" value="hmc" disabled/>System p</li>');
 | 
						|
 | 
						|
    rsrcHwList.append(esx);
 | 
						|
    rsrcHwList.append(kvm);
 | 
						|
    rsrcHwList.append(zvm);
 | 
						|
    rsrcHwList.append(blade);
 | 
						|
    rsrcHwList.append(ipmi);
 | 
						|
    rsrcHwList.append(hmc);
 | 
						|
 | 
						|
    resrcPg.append(rsrcHwList);
 | 
						|
 | 
						|
    var okBtn = createButton('Ok');
 | 
						|
    okBtn.bind('click', function(event) {
 | 
						|
        // Get hardware that was selected
 | 
						|
        var hw = $(this).parent().find('input[name="rsrcHw"]:checked').val();
 | 
						|
 | 
						|
        // Generate new tab ID
 | 
						|
        var newTabId = hw + 'ResourceTab';
 | 
						|
        if (!$('#' + newTabId).length) {
 | 
						|
            // Create loader
 | 
						|
            var loader = $('<center></center>').append(createLoader(hw + 'ResourceLoader'));
 | 
						|
 | 
						|
            // Create an instance of the plugin
 | 
						|
            var plugin = null;
 | 
						|
            var displayName = "";
 | 
						|
            switch (hw) {
 | 
						|
                case "kvm":
 | 
						|
                    plugin = new kvmPlugin();
 | 
						|
                    displayName = "KVM";
 | 
						|
                    break;
 | 
						|
                case "esx":
 | 
						|
                    plugin = new esxPlugin();
 | 
						|
                    displayName = "ESX";
 | 
						|
                    break;
 | 
						|
                case "blade":
 | 
						|
                    plugin = new bladePlugin();
 | 
						|
                    displayName = "BladeCenter";
 | 
						|
                    break;
 | 
						|
                case "hmc":
 | 
						|
                    plugin = new hmcPlugin();
 | 
						|
                    displayName = "System p";
 | 
						|
                    break;
 | 
						|
                case "ipmi":
 | 
						|
                    plugin = new ipmiPlugin();
 | 
						|
                    displayName = "iDataPlex";
 | 
						|
                    break;
 | 
						|
                case "zvm":
 | 
						|
                    plugin = new zvmPlugin();
 | 
						|
                    displayName = "z\/VM";
 | 
						|
                    break;
 | 
						|
            }
 | 
						|
 | 
						|
            // Add resource tab and load resources
 | 
						|
            tab.add(newTabId, displayName, loader, true);
 | 
						|
            plugin.loadResources();
 | 
						|
        }
 | 
						|
 | 
						|
        // Select tab
 | 
						|
        tab.select(newTabId);
 | 
						|
    });
 | 
						|
 | 
						|
    resrcPg.append(okBtn);
 | 
						|
 | 
						|
    // Add provision tab
 | 
						|
    tab.add('provisionTab', 'Provision', provPg, false);
 | 
						|
    // Add image tab
 | 
						|
    tab.add('imagesTab', 'Images', '', false);
 | 
						|
    // Add resource tab
 | 
						|
    tab.add('resourceTab', 'Resources', resrcPg, false);
 | 
						|
 | 
						|
    // Load tabs onselect
 | 
						|
    $('#provisionPageTabs').bind('tabsselect', function(event, ui){
 | 
						|
        // Load image page
 | 
						|
        if (!$('#imagesTab').children().length && ui.index == 1) {
 | 
						|
            $('#imagesTab').append($('<center></center>').append(createLoader('')));
 | 
						|
            loadImagesPage();
 | 
						|
        }
 | 
						|
    });
 | 
						|
 | 
						|
    // Open the quick provision tab
 | 
						|
    if (window.location.search) {
 | 
						|
        tab.add('quickProvisionTab', 'Quick Provision', '', true);
 | 
						|
        tab.select('quickProvisionTab');
 | 
						|
 | 
						|
        var provForm = $('<div class="form"></div>');
 | 
						|
        $('#quickProvisionTab').append(provForm);
 | 
						|
        appendProvisionSection('quick', provForm);
 | 
						|
    }
 | 
						|
}
 |