|
@@ -1,236 +0,0 @@
|
|
|
-//var globalClusterInfo;
|
|
|
-
|
|
|
-function generateServiceMasterOptions (Y, masterHost, allHosts) {
|
|
|
-
|
|
|
- var generatedOptions = "<option>" + masterHost + "</option>";
|
|
|
-
|
|
|
- /* The dropdown hosts are allHosts minus masterHost. */
|
|
|
- Y.Array.each( allHosts, function(host) {
|
|
|
-
|
|
|
- if( host != masterHost ) {
|
|
|
- generatedOptions += "<option>" + host + "</option>";
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- return generatedOptions;
|
|
|
-}
|
|
|
-
|
|
|
-var registeredAssignHostsEventHandlers = false;
|
|
|
-
|
|
|
-function renderAssignHosts (Y, clusterInfo) {
|
|
|
-
|
|
|
- //globalClusterInfo = clusterInfo;
|
|
|
- // REZ XXX Remove.
|
|
|
- //setNavigationContent(Y, "Clusters > New cluster");
|
|
|
- //activateStage(Y, "#masterHostsSideBarId");
|
|
|
-
|
|
|
- if( !registeredAssignHostsEventHandlers ) {
|
|
|
-
|
|
|
- Y.one('#assignHostsSubmitButtonId').on('click', function (e) {
|
|
|
- e.target.set('disabled', true);
|
|
|
-
|
|
|
- var selections = Y.all("#assignHostsFieldSetId select");
|
|
|
-
|
|
|
- var assignHostsRequestData = {};
|
|
|
-
|
|
|
- selections.each( function(selection) {
|
|
|
-
|
|
|
- var selectedHostIndex = selection.get('selectedIndex');
|
|
|
-
|
|
|
- assignHostsRequestData[ selection.get('name') ] = selection.get('options').item(selectedHostIndex).get('text');
|
|
|
- });
|
|
|
-
|
|
|
- Y.io("../php/frontend/assignHosts.php?clusterName="+clusterInfo.clusterName, {
|
|
|
-
|
|
|
- method: 'POST',
|
|
|
- data: Y.JSON.stringify(assignHostsRequestData),
|
|
|
- timeout : 10000,
|
|
|
- on: {
|
|
|
- start: function(x, o) {
|
|
|
- showLoadingImg(Y);
|
|
|
- //waitPanel.show();
|
|
|
- },
|
|
|
- complete: function(x, o) {
|
|
|
- e.target.set('disabled', false);
|
|
|
- hideLoadingImg(Y);
|
|
|
- //waitPanel.hide();
|
|
|
- },
|
|
|
-
|
|
|
- success: function (x,o) {
|
|
|
- e.target.set('disabled', false);
|
|
|
- Y.log("RAW JSON DATA: " + o.responseText);
|
|
|
-
|
|
|
- // Process the JSON data returned from the server
|
|
|
- try {
|
|
|
- clusterConfigJson = Y.JSON.parse(o.responseText);
|
|
|
- }
|
|
|
- catch (e) {
|
|
|
- alert("JSON Parse failed!");
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- //Y.log("PARSED DATA: " + Y.Lang.dump(clusterConfigJson));
|
|
|
-
|
|
|
- if (clusterConfigJson.result != 0) {
|
|
|
- // Error!
|
|
|
- alert("Got error!" + clusterConfigJson.error);
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- clusterConfigJson = clusterConfigJson.response;
|
|
|
-
|
|
|
- /* Done with this stage, transition to the next. */
|
|
|
- transitionToNextStage( "#assignHostsCoreDivId", assignHostsRequestData,
|
|
|
- "#configureClusterCoreDivId", clusterConfigJson, renderConfigureCluster );
|
|
|
- },
|
|
|
- failure: function (x,o) {
|
|
|
- e.target.set('disabled', false);
|
|
|
- alert("Async call failed!");
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
- });
|
|
|
-
|
|
|
- registeredAssignHostsEventHandlers = true;
|
|
|
- }
|
|
|
-
|
|
|
- var allHosts = Y.Array( clusterInfo.allHosts.sort(Y.ArraySort.compare) );
|
|
|
- var servicesInfo = Y.Array( clusterInfo.services );
|
|
|
-
|
|
|
- var serviceMasterHostsMarkup = "";
|
|
|
-
|
|
|
- /* Given recommendations for all the services, generate serviceMasterHostsMarkup
|
|
|
- * to contain only those that are actually enabled for this cluster.
|
|
|
- */
|
|
|
- Y.Array.each(servicesInfo, function(serviceInfo) {
|
|
|
-
|
|
|
- if( serviceInfo.enabled == true ) {
|
|
|
-
|
|
|
- Y.Array.each(serviceInfo.masters, function(masterInfo) {
|
|
|
-
|
|
|
- var masterHostName = masterInfo.name;
|
|
|
- var masterHostNameID = masterHostName + 'Id';
|
|
|
-
|
|
|
- /* Inefficient, with all the string concatenations, but clear to read. */
|
|
|
- serviceMasterHostsMarkup +=
|
|
|
- '<div id="formElement">' +
|
|
|
- '<label for=' + masterHostNameID + '>' +
|
|
|
- masterInfo.displayName + ' Host' +
|
|
|
- '</label>' +
|
|
|
- '<select name=' + masterHostName + ' id=' + masterHostNameID + '>' +
|
|
|
- generateServiceMasterOptions(Y, masterInfo.hostName, allHosts) +
|
|
|
- '</select>' +
|
|
|
- '</div>';
|
|
|
- });
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- /* Link the newly-generated serviceMasterHostsMarkup into the DOM. */
|
|
|
- Y.one('#assignHostsDynamicRenderDivId').setContent( serviceMasterHostsMarkup );
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-///////////////////////// New stuff //////////////
|
|
|
-
|
|
|
-var currentMaster="";
|
|
|
-var nodeGroups = [ "A", "B"];
|
|
|
-var serviceMasters = [ "NameNode", "JobTracker" , "HBaseMaster" ]
|
|
|
-var slotContents = {};
|
|
|
-var serviceLocations = {};
|
|
|
-
|
|
|
-function renderSlots(Y) {
|
|
|
- for (nodeGroupIndex in nodeGroups) {
|
|
|
- for (serviceMasterIndex in serviceMasters) {
|
|
|
- var content= "";
|
|
|
- var thisId = 'slotForGroup' + nodeGroups[nodeGroupIndex] + serviceMasterIndex;
|
|
|
- for (master in slotContents[thisId]) {
|
|
|
- content += master + "<br/>";
|
|
|
- }
|
|
|
- Y.one('#' + thisId).setContent(content);
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
- ////////////////// Render service links ///////////////////
|
|
|
- var serviceMastersLinksMarkup ="";
|
|
|
- for (key in serviceMasters) {
|
|
|
- serviceMastersLinksMarkup += '<div id="' + serviceMasters[key] + '" class="aServiceMasterLink">' + serviceMasters[key] + '</div><br/>';
|
|
|
- }
|
|
|
- Y.one("#serviceMastersLinksDivId").setContent(serviceMastersLinksMarkup);
|
|
|
- ////////////////// End of rendering service links ////////
|
|
|
-
|
|
|
- ////////////////// Register click handlers for all masters ///////////////////
|
|
|
- for (key in serviceMasters) {
|
|
|
- var serviceLinkId = "#" + serviceMasters[key];
|
|
|
- Y.one(serviceLinkId).on('click', function(e) {
|
|
|
- if ( currentMaster != this.get('id')) {
|
|
|
- activate(Y, this.get('id'));
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- ////////////////// End of registering click handlers for all masters ///////////////////
|
|
|
-
|
|
|
- ////////////////// Render node groups ////////
|
|
|
- var nodeGroupsMarkup = '<div id="nodeGroupsTable">';
|
|
|
- for (nodeGroupIndex in nodeGroups) {
|
|
|
- nodeGroupsMarkup += '<div id="' + nodeGroups[nodeGroupIndex] + '" class="aNodeGroup"> <p>Node group ' + nodeGroups[nodeGroupIndex] + '</p>';
|
|
|
-
|
|
|
- // Number of boxes equal to number of service-masters
|
|
|
- for (serviceMasterIndex in serviceMasters) {
|
|
|
- nodeGroupsMarkup += '<div id="slotForGroup' + nodeGroups[nodeGroupIndex] + serviceMasterIndex + '" class="slot"></div>';
|
|
|
- }
|
|
|
- nodeGroupsMarkup += '</div>';
|
|
|
- }
|
|
|
- nodeGroupsMarkup += '</div>';
|
|
|
- Y.one("#nodeGroupsDivId").setContent(nodeGroupsMarkup);
|
|
|
- ////////////////// End of rendering node groups ////////
|
|
|
-
|
|
|
- // Register click handlers for all node-slots
|
|
|
- for (nodeGroupIndex in nodeGroups) {
|
|
|
- for (serviceMasterIndex in serviceMasters) {
|
|
|
- var slotDivId = '#slotForGroup' + nodeGroups[nodeGroupIndex] + serviceMasterIndex;
|
|
|
- Y.log("registering for " + slotDivId);
|
|
|
- Y.one(slotDivId).on('click', function(e) {
|
|
|
- Y.log("Clicked on " + this.get('id'));
|
|
|
- //Y.log(currentMaster + " " + nodeGroups[nodeGroupIndex] + " " + serviceMasterIndex);
|
|
|
- //Y.log('#slotForGroup' + nodeGroups[nodeGroupIndex] + serviceMasterIndex);
|
|
|
- //Y.one('#slotForGroup' + nodeGroups[nodeGroupIndex] + serviceMasterIndex).setContent("hello");
|
|
|
- // this.setContent(serviceMasters[currentMaster]);
|
|
|
- var oldSlotId = serviceLocations[currentMaster];
|
|
|
- if (oldSlotId != this.get('id')) {
|
|
|
- delete slotContents[oldSlotId][currentMaster];
|
|
|
- serviceLocations[currentMaster] = this.get('id');
|
|
|
- if (slotContents[this.get('id')] === undefined) {
|
|
|
- slotContents[this.get('id')] = {};
|
|
|
- }
|
|
|
- slotContents[this.get('id')][currentMaster] = [currentMaster];
|
|
|
- renderSlots(Y);
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- ////////////////// Initialize all slots ///////////////////
|
|
|
- var thisId = 'slotForGroup' + nodeGroups[0] + 0;
|
|
|
- for (serviceMasterIndex in serviceMasters) {
|
|
|
- if (slotContents[thisId] === undefined) {
|
|
|
- slotContents[thisId] = {};
|
|
|
- }
|
|
|
- var masterName = serviceMasters[serviceMasterIndex];
|
|
|
- slotContents[thisId][masterName] = masterName;
|
|
|
- serviceLocations[masterName] = thisId;
|
|
|
- }
|
|
|
- renderSlots(Y);
|
|
|
- ////////////////// End of initializing all slots ///////////////////
|
|
|
-
|
|
|
-function activate(Y, serviceMaster) {
|
|
|
- Y.log("Activated " + serviceMaster + " from " + currentMaster);
|
|
|
- Y.one("#" + serviceMaster).replaceClass("aServiceMasterLink", "aServiceMasterLinkVisited");
|
|
|
- if (currentMaster != "") {
|
|
|
- Y.one("#" + currentMaster).replaceClass("aServiceMasterLinkVisited", "aServiceMasterLink");
|
|
|
- }
|
|
|
- currentMaster = serviceMaster;
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-}
|