/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ App.TestConnectionResultsController = Ember.Controller.extend({ name: 'testConnectionResultsController', connectStatuses: [ Ember.Object.create({ type: 'readonly', isConnectionSuccess: false }), Ember.Object.create({ type: 'write', isConnectionSuccess: false }), Ember.Object.create({ type: 'workflow', isConnectionSuccess: false }) ], isNameNodeWebUIConnected: function () { var connectStatus = this.get('connectStatuses').findProperty('type', 'readonly'); return connectStatus.get('isConnectionSuccess'); }.property('connectStatuses.@each.isConnectionSuccess'), isNameNodeRpcConnected: function () { var connectStatus = this.get('connectStatuses').findProperty('type', 'write'); return connectStatus.get('isConnectionSuccess'); }.property('connectStatuses.@each.isConnectionSuccess'), isOozieServerConnected: function () { var connectStatus = this.get('connectStatuses').findProperty('type', 'workflow'); return connectStatus.get('isConnectionSuccess'); }.property('connectStatuses.@each.isConnectionSuccess'), isConnectionSuccessful: function () { return this.get('isNameNodeWebUIConnected') && this.get('isNameNodeRpcConnected') && this.get('isOozieServerConnected'); }.property('isNameNodeWebUIConnected', 'isNameNodeRpcConnected', 'isOozieServerConnected'), shouldBeDisabled: function () { return !this.get('isConnectionSuccessful'); }.property('isConnectionSuccessful'), mockDataPrefix: '/data/mirroring/poll/', tryConnecting: function () { var types = ["readonly", "write", "workflow"]; var arrayOfPollData = ["testConnection_poll1", "testConnection_poll2", "testConnection_poll3", "testConnection_poll4"]; var shouldContinuePolling = true; var poll_count = 0; var interval_id = 0; var self = this; var connect = function () { var method = 'GET'; console.debug('poll_count : ' + poll_count); var url = self.get('mockDataPrefix') + arrayOfPollData[poll_count++] + ".json"; $.ajax({ type: method, url: url, async: true, // shd be chnaged to true data: null, // temporarily .this depends upon what the api is expecting. dataType: 'text', timeout: App.timeout, success: function (data) { var jsonData = jQuery.parseJSON(data); var connectStatuses = self.get('connectStatuses'); jsonData.tasks.forEach(function (task) { var type = task.Tasks.type; var status = task.Tasks.status; var connectStatus = connectStatuses.findProperty("type", type); connectStatus.set('isConnectionSuccess', status === "SUCCESS"); }); var totalNum = connectStatuses.length; var succeededStatuses = connectStatuses.filterProperty("isConnectionSuccess", true); var succeededNum = succeededStatuses.length; if (totalNum == succeededNum) { clearInterval(interval_id); console.debug('Cleared function id ' + interval_id); } else { clearInterval(interval_id); console.debug('Cleared function id ' + interval_id + "totalNum : " + totalNum + ', succeededNum : ' + succeededNum); interval_id = setInterval(connect, 100); console.debug('Generated function id ' + interval_id); } } }); }; connect(); }, saveClusterName: function () { var targetCluster = this.get('content.targetCluster'); var isEditing = this.get('content.isPopupForEdit'); if (isEditing) { var targetClusterRecord = this.get('content.originalRecord'); var targetClusterEdited = this.get('content.targetCluster'); targetClusterRecord.set('id', targetClusterEdited.get('id')); targetClusterRecord.set('clusterName', targetClusterEdited.get('clusterName')); targetClusterRecord.set('nameNodeWebUrl', targetClusterEdited.get('nameNodeRpcUrl')); targetClusterRecord.set('nameNodeRpcUrl', targetClusterEdited.get('id')); targetClusterRecord.set('oozieServerUrl', targetClusterEdited.get('oozieServerUrl')); } else { var targetClusterRecord = App.TargetCluster.createRecord(targetCluster); // refresh main page model var mainMirroringController = App.router.get('mainMirroringController'); mainMirroringController.notifyPropertyChange("targetClusters"); // refresh add/edit dataset model var addDataSetController = App.router.get('mainMirroringEditDataSetController'); var dataSet = addDataSetController.get('model.newDataSet'); if (dataSet) // this may be undefined or null if we try to add cluster from main page. Hence the if check. dataSet.set('targetCluster', targetClusterRecord); } var popup = this.get('controllers.mainMirroringTargetClusterController.popup'); popup.hide(); } });