/** * Load updatenode page * * @param tgtNodes * Targets to run updatenode against * @return Nothing */ function loadUpdatenodePage(tgtNodes) { // Get nodes tab var tab = getNodesTab(); // Generate new tab ID var inst = 0; var newTabId = 'updatenodeTab' + inst; while ($('#' + newTabId).length) { // If one already exists, generate another one inst = inst + 1; newTabId = 'updatenodeTab' + inst; } // Get node OS // They could be AIX, rh*, centos*, fedora*, or sles* // Create updatenode form var updatenodeForm = $('
'); // Create status bar var statBarId = 'updatenodeStatusBar' + inst; var statusBar = createStatusBar(statBarId); statusBar.hide(); updatenodeForm.append(statusBar); // Create loader var loader = createLoader('updatenodeLoader'); statusBar.append(loader); // Create info bar var infoBar = createInfoBar('Update nodes in an xCAT environment'); updatenodeForm.append(infoBar); // Create target node or group input var target = $('
'); updatenodeForm.append(target); // Create options var optsDIV = $('
'); var optsLabel = $(''); var optsList = $(''); optsDIV.append(optsLabel); optsDIV.append(optsList); updatenodeForm.append(optsDIV); // Create update all software checkbox var updateAllChkBox = $(''); var updateAllOpt = $('
  • '); optsList.append(updateAllOpt); updateAllOpt.append(updateAllChkBox); updateAllOpt.append('Install or update all software contained in the source directory'); var allSwScrDirectory = $('
  • '); allSwScrDirectory.hide(); optsList.append(allSwScrDirectory); // Show alternate source directory when checked updateAllChkBox.bind('click', function(event) { if ($(this).is(':checked')) { allSwScrDirectory.show(); } else { allSwScrDirectory.hide(); } }); // Create update software checkbox var updateChkBox = $(''); var updateOpt = $('
  • '); optsList.append(updateOpt); updateOpt.append(updateChkBox); updateOpt.append('Update software'); // Create source directory input var scrDirectory = $('
  • '); scrDirectory.hide(); optsList.append(scrDirectory); // Create other packages input var otherPkgs = $('
  • '); otherPkgs.hide(); optsList.append(otherPkgs); // Create RPM flags input var rpmFlags = $('
  • '); rpmFlags.hide(); optsList.append(rpmFlags); // Create installp flags input var installPFlags = $('
  • '); installPFlags.hide(); optsList.append(installPFlags); // Show alternate source directory when checked updateChkBox.bind('click', function(event) { if ($(this).is(':checked')) { scrDirectory.show(); otherPkgs.show(); rpmFlags.show(); installPFlags.show(); } else { scrDirectory.hide(); otherPkgs.hide(); rpmFlags.hide(); installPFlags.hide(); } }); // Create postscripts input var postChkBox = $(''); var postOpt = $('
  • '); optsList.append(postOpt); postOpt.append(postChkBox); postOpt.append('Run postscripts'); var postscripts = $('
  • '); postscripts.hide(); optsList.append(postscripts); // Show alternate source directory when checked postChkBox.bind('click', function(event) { if ($(this).is(':checked')) { postscripts.show(); } else { postscripts.hide(); } }); optsList.append('
  • Distribute and synchronize files
  • '); optsList.append('
  • Update the ssh keys and host keys for the service nodes and compute nodes
  • '); // Create update OS checkbox var osChkBox = $(''); var osOpt = $('
  • '); optsList.append(osOpt); osOpt.append(osChkBox); osOpt.append('Update the operating system'); var os = $('
  • '); os.hide(); optsList.append(os); // Show alternate source directory when checked osChkBox.bind('click', function(event) { if ($(this).is(':checked')) { os.show(); } else { os.hide(); } }); /** * Ok */ var okBtn = createButton('Ok'); okBtn.bind('click', function(event) { var ready = true; // Generate arguments var chkBoxes = $("#" + newTabId + " input[type='checkbox']:checked"); var optStr = ''; var opt; for ( var i = 0; i < chkBoxes.length; i++) { opt = chkBoxes.eq(i).attr('name'); optStr += '-' + opt; // If update all software is checked if (opt == 'S') { var srcDir = $('#' + newTabId + ' input[name=allSwSrcDirectory]').val(); if (srcDir) { optStr += ';-d ' + srcDir; } } // If update software is checked if (opt == 'S') { var srcDir = $('#' + newTabId + ' input[name=srcDirectory]').val(); if (srcDir) { optStr += ';-d;' + srcDir; } var otherpkgs = $('#' + newTabId + ' input[name=otherpkgs]').val(); if (otherpkgs) { optStr += ';otherpkgs=' + otherpkgs; } var rpm_flags = $('#' + newTabId + ' input[name=rpm_flags]').val(); if (rpm_flags) { optStr += ';rpm_flags=' + rpm_flags; } var installp_flags = $('#' + newTabId + ' input[name=installp_flags]').val(); if (installp_flags) { optStr += ';installp_flags=' + installp_flags; } } // If postscripts is checked if (opt == 'P') { // Get postscripts optStr += ';' + $('#' + newTabId + ' input[name=postscripts]').val(); } // If operating system is checked if (opt == 'o') { // Get the OS optStr += ';' + $('#' + newTabId + ' input[name=os]').val(); } // Append ; to end of string if (i < (chkBoxes.length - 1)) { optStr += ';'; } } // If no inputs are empty if (ready) { // Get nodes var tgts = $('#' + newTabId + ' input[name=target]').val(); // Disable Ok button $(this).unbind(event); $(this).css( { 'background-color' : '#F2F2F2', 'color' : '#424242' }); /** * (1) Boot to network */ $.ajax( { url : 'lib/cmd.php', dataType : 'json', data : { cmd : 'updatenode', tgt : tgts, args : optStr, msg : 'out=' + statBarId + ';cmd=updatenode;tgt=' + tgts }, success : updateStatusBar }); // Show status bar statusBar.show(); } else { alert('You are missing some values'); } }); updatenodeForm.append(okBtn); // Append to discover tab tab.add(newTabId, 'Updatenode', updatenodeForm, true); // Select new tab tab.select(newTabId); }