diff --git a/xCAT-UI/js/ui.js b/xCAT-UI/js/ui.js index 646329702..f0d4a6648 100644 --- a/xCAT-UI/js/ui.js +++ b/xCAT-UI/js/ui.js @@ -403,6 +403,7 @@ function initPage() { includeJs("js/monitor/monitor.js"); includeJs("js/nodes/nodes.js"); includeJs("js/provision/provision.js"); + includeJs("js/update/update.js"); // Get the page being loaded var url = window.location.pathname; @@ -424,6 +425,9 @@ function initPage() { } else if (page == 'monitor.php') { headers.eq(3).css('background-color', '#A9D0F5'); loadMonitorPage(); + } else if (page == 'update.php') { + headers.eq(4).css('background-color', '#A9D0F5'); + loadUpdatePage(); } else { headers.eq(0).css('background-color', '#A9D0F5'); loadNodesPage(); diff --git a/xCAT-UI/js/update/update.js b/xCAT-UI/js/update/update.js new file mode 100644 index 000000000..bc3c9cf68 --- /dev/null +++ b/xCAT-UI/js/update/update.js @@ -0,0 +1,258 @@ +/** + * Load update page + * + * @return Nothing + */ + function loadUpdatePage() { + repositoryDiv = $('
'); + rpmDiv = $('
'); + updateDiv = $('
'); + + $('#content').append(repositoryDiv); + $('#content').append(rpmDiv); + $('#content').append(updateDiv); + + repositoryDiv.append("

Repository

"); + + $.ajax( { + url : 'lib/systemcmd.php', + dataType : 'json', + data : { + cmd : 'ostype' + }, + + success : showRepository + }); + + rpmDiv.append("

xCAT Update Info

"); + + $.ajax({ + url: 'lib/systemcmd.php', + dataType : 'json', + data : { + cmd : 'rpm -q xCAT-client perl-xCAT xCAT-server xCAT xCAT-rmc xCAT-UI' + }, + + success : showRpmInfo + }); + } + +/** + * Show the Rpm Repository, it can use user's last choice and input + * + * @return Nothing + */ +function showRepository(data) { + var DevelRepository = ""; + var StableRepository = ""; + var Show = ""; + + //get the corresponding repository by OS Type + if ("aix" == data.rsp) + { + DevelRepository = "http://xcat.sourceforge.net/aix/devel/xcat-core/"; + StableRepository = "http://xcat.sourceforge.net/aix/xcat-core/"; + } + else + { + DevelRepository = "http://xcat.sourceforge.net/yum/devel/xcat-core/"; + StableRepository = "http://xcat.sourceforge.net/yum/xcat-core/"; + } + + //dispaly the Devel Repository, remember user's last selection + Show = Show + ""; + Show = Show + DevelRepository + "(Devel)
"; + + $('#repository').append(Show); + + //dispaly the Stable Repository, remember user's last selection + Show = ""; + Show = Show + StableRepository + "(Stable)
"; + + $('#repository').append(Show); + + //dispaly the Input Repository, remember user's last selection + if (($.cookie('xcatrepository')) + && (1 != $.cookie('xcatrepository')) + && (2 != $.cookie('xcatrepository'))) + { + Show = "Other:"; + Show += ""; + } + else + { + Show = "Other:"; + Show += ""; + } + + $('#repository').append(Show); +} + +function showRpmInfo(data) +{ + var Rpms = null; + var Show = ""; + var RpmNames = new Array("xCAT-client","perl-xCAT","xCAT-server","xCAT","xCAT-rmc","xCAT-UI"); + var temp = 0; + if(null == data.rsp) + { + $('#rpm').append("Get Rpm Info Error!"); + return; + } + + Rpms = data.rsp.split(/\n/); + //no rpm installed, return + if (1 > Rpms.length) + { + $('#rpm').append("No Rpm installed!"); + return; + } + + Show = ""; + Show += ""; + Show += ""; + Show += ""; + Show += ""; + $('#rpm').append(Show); + + for (temp = 0; temp < Rpms.length; temp++) + { + //empty line continue + if ("" == Rpms[temp]) + { + continue; + } + + //the rpm is not installed, continue + if (-1 != Rpms[temp].indexOf("not")) + { + continue; + } + + //show the version in table + Show = ""; + Show += ""; + Show += ""; + Show += ""; + $('#rpm').append(Show); + } + Show = "
Package NameVersion
" + RpmNames[temp] + "" + Rpms[temp].substr(RpmNames[temp].length + 1) + "
"; + Show = "" + Show += ""; + $('#rpm').append(Show); +} + +function updateSelectAll() +{ + var check_status = $('#selectall').attr('checked'); + $('input:checkbox').attr('checked', check_status); +} + +function updateRpm() +{ + var rpmPath = $('input[type=radio]:checked').val(); + var rpmPathType = "0"; + var rpms = ""; + var temp = ""; + + if(undefined == rpmPath) + { + rpmPath = ""; + } + + //select other and we should use the value in the input + if ("" == rpmPath) + { + //user input the repo, and we must stroe it in the cookie + rpmPath = $('#repositoryaddr').val(); + rpmPathType = rpmPath; + } + else + { + if(-1 == rpmPath.toLowerCase().indexOf("devel")) + { + rpmPathType = "2"; + } + else + { + rpmPathType = "1";; + } + } + + $("input[type=checkbox]:checked").each(function(){ + temp = $(this).val(); + if("" == temp) + { + //continue; + return true; + } + var pattern = new RegExp("^" + temp + ",|," + temp + ",");; + if (pattern.test(rpms)) + { + return true; + } + rpms = rpms + temp + ","; + }); + + if(0 < rpms.length) + { + rpms = rpms.slice(0, -1); + } + + if ("" == rpms) + { + $('#update').empty(); + $('#update').append("Please select the rpm!"); + return; + } + + if ("" == rpmPath) + { + $('#update').empty(); + $('#update').append("Please select or input the repository!"); + return; + } + + //remember users' choice and input + $.cookie('xcatrepository', rpmPathType, { path: '/xcat', expires: 10 }); + + $('#update').empty(); + $('#update').append("

update " + rpms + " from " + rpmPath + "

"); + + // send the update command to server + $.ajax( { + url : 'lib/cmd.php', + dataType : 'json', + data : { + cmd : 'webrun', + tgt : '', + args : 'update;' + rpms + ";" + rpmPath, + msg : '' + }, + + success : ShowUpdateResult + }); +} + +function ShowUpdateResult(data) +{ + var temp = 0; + + $('#update').append("Update finished."); + for (temp = 0; temp < data.rsp.length; temp++) + { + $('#update').append(data.rsp[temp] + ""); + } +} \ No newline at end of file diff --git a/xCAT-UI/lib/systemcmd.php b/xCAT-UI/lib/systemcmd.php new file mode 100644 index 000000000..6fc9be412 --- /dev/null +++ b/xCAT-UI/lib/systemcmd.php @@ -0,0 +1,30 @@ +$ret)); +} +?> \ No newline at end of file diff --git a/xCAT-UI/lib/ui.php b/xCAT-UI/lib/ui.php index 06a94adc7..80e024781 100644 --- a/xCAT-UI/lib/ui.php +++ b/xCAT-UI/lib/ui.php @@ -32,6 +32,7 @@ function loadPage(){
  • Configure
  • Provision
  • Monitor
  • +
  • Update
  • '; diff --git a/xCAT-UI/update.php b/xCAT-UI/update.php new file mode 100644 index 000000000..2e316d9b7 --- /dev/null +++ b/xCAT-UI/update.php @@ -0,0 +1,20 @@ + +