function populateHostToMasterRoleMapping(clusterServices, hostMap) {
for (var serviceName in clusterServices) {
if (clusterServices.hasOwnProperty(serviceName)) {
if (clusterServices[serviceName].isEnabled == "1" &&
clusterServices[serviceName].attributes.runnable &&
!clusterServices[serviceName].attributes.noDisplay) {
globalYui.Array.each( clusterServices[serviceName].components, function (serviceComponent) {
if (serviceComponent.isMaster) {
// just add the client to the hostname object
if ( !( serviceComponent.hostName in hostMap ) ) {
hostMap[serviceComponent.hostName] = new Array();
hostMap[serviceComponent.hostName].push({ serviceName: serviceComponent.displayName, isMaster: true });
} else {
hostMap[serviceComponent.hostName].push({ serviceName: serviceComponent.displayName, isMaster: true});
}
}
});
}
}
}
}
function populateHostToClientRoleMapping(clusterServices, hostMap) {
for (var serviceName in clusterServices) {
if (clusterServices.hasOwnProperty(serviceName)) {
if (clusterServices[serviceName].isEnabled == "1" &&
!clusterServices[serviceName].attributes.noDisplay) {
globalYui.Array.each( clusterServices[serviceName].components, function (serviceComponent) {
if (serviceComponent.isClient) {
// just add the client to the hostname object
if ( !( serviceComponent.hostName in hostMap ) ) {
hostMap[serviceComponent.hostName] = new Array();
hostMap[serviceComponent.hostName].push({ serviceName: serviceComponent.displayName, isMaster: false });
} else {
hostMap[serviceComponent.hostName].push({ serviceName: serviceComponent.displayName, isMaster: false });
}
}
});
}
}
}
}
function generateHostRoleMappingMarkup( clusterServices ) {
var hostMap = {};
var markup = '';
populateHostToMasterRoleMapping(clusterServices, hostMap);
populateHostToClientRoleMapping(clusterServices, hostMap);
markup = '
';
for (var hostName in hostMap) {
markup += '
' + hostName + '
' + '
';
for (var service in hostMap[hostName]) {
markup += '- ' + hostMap[hostName][service].serviceName + '
';
}
markup += '
';
}
markup += '
';
return markup;
}
function renderClusterList() {
globalYui.io("../php/frontend/listClusters.php", {
method: 'GET',
timeout : 10000,
on: {
success: function (x,o) {
globalYui.log("RAW JSON DATA: " + o.responseText);
// Process the JSON data returned from the server
try {
clusterListInfoJson = globalYui.JSON.parse(o.responseText);
}
catch (e) {
alert("JSON Parse failed!");
return;
}
globalYui.log("PARSED DATA: " + globalYui.Lang.dump(clusterListInfoJson));
if (clusterListInfoJson.result != 0) {
// Error!
alert("Got error!" + clusterListInfoJson.error);
return;
}
clusterListInfoJson = clusterListInfoJson.response;
var numClusters = clusterListInfoJson.length;
var clustersListMarkup;
var clusterId;
var multipleClustersSupported = false;
if (numClusters == 0) {
clustersListMarkup = "";
} else {
if (multipleClustersSupported) {
clustersListMarkup = "" +
"List of clusters" +
"Name of the cluster | Cluster status | Actions |
";
var i = 0;
for (clusterId in clusterListInfoJson) {
clustersListMarkup += "" + clusterId + " | " + clusterListInfoJson[clusterId] + " | Uninstall |
" ;
}
clustersListMarkup += "
";
} else {
var clusterName; var clusterInfo;
for (clusterId in clusterListInfoJson) {
clusterName = clusterId;
clusterInfo = globalYui.JSON.parse(clusterListInfoJson[clusterName]);
globalYui.log( "Cluster Info: " + globalYui.Lang.dump(clusterInfo.displayName));
}
clustersListMarkup = 'Cluster information
';
clustersListMarkup += '' +
'
' +
'' +
'' +
'
' +
'
' +
'' +
'' +
'
' +
'
' +
'
';
}
}
var newClusterLinkHTML = "";
if (multipleClustersSupported || numClusters == 0) {
document.location.href = "/hmc/html/welcome.php";
return;
}
/* Beginning of adding Role Topology information. */
globalYui.io( "../php/frontend/fetchClusterServices.php?clusterName=" + clusterName + "&getConfigs=true&getComponents=true", {
timeout: 10000,
on: {
success: function(x1, o1) {
hideLoadingImg();
globalYui.log("RAW JSON DATA: " + o1.responseText);
var clusterServicesResponseJson;
try {
clusterServicesResponseJson = globalYui.JSON.parse(o1.responseText);
}
catch (e) {
alert("JSON Parse failed");
return;
}
globalYui.log(globalYui.Lang.dump(clusterServicesResponseJson));
/* Check that clusterServicesResponseJson actually indicates success. */
if( clusterServicesResponseJson.result == 0 ) {
var clusterServices = clusterServicesResponseJson.response.services;
/* Link the newly-generated markup into the DOM. */
globalYui.one("#clusterHostRoleMappingDynamicRenderDivId").setContent(
generateHostRoleMappingMarkup(clusterServices) );
globalYui.one("#clusterHostRoleMappingDivId").show();
}
else {
alert("Fetching Cluster Services failed");
}
},
failure: function(x1, o1) {
hideLoadingImg();
alert("Async call failed");
}
}
});
/* End of adding Role Topology information. */
globalYui.one("#clustersListDivId").setContent( clustersListMarkup );
globalYui.one("#clustersListDivId").setStyle('display', 'block');
if (globalYui.one('#newClusterLinkDivId') != null) {
globalYui.one('#newClusterLinkDivId').on('click',function (e) {
/* Done with this stage, hide it. */
globalYui.one("#clustersListDivId").setStyle('display','none');
// globalYui.one("#installationWizardDivId").setStyle('display','block');
});
}
if(numClusters !=0) {
globalYui.one('#existingClusterLinkDivId').on('click',function (e) {
e.target.set('disabled', true);
/* Done with this stage, hide it. */
globalYui.one("#clustersListDivId").setStyle('display','none');
/* Render the next stage. */
getServicesStatus(globalYui, clusterId);
/* Show off our rendering. */
globalYui.one("#displayServiceStatusCoreDivId").setStyle('display','block');
});
}
},
failure: function (x,o) {
// e.target.set('disabled', false);
alert("Async call failed!");
}
}
});
}
/* Main() */
renderClusterList();