You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ak...@apache.org on 2014/02/26 17:51:02 UTC

git commit: AMBARI-4850. Mirroring: disable ability to edit target clusters. (akovalenko)

Repository: ambari
Updated Branches:
  refs/heads/trunk f9bc43dde -> d77b11dd7


AMBARI-4850. Mirroring: disable ability to edit target clusters. (akovalenko)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/d77b11dd
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/d77b11dd
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/d77b11dd

Branch: refs/heads/trunk
Commit: d77b11dd72271192a9d7f1972dd12a298c29a4f4
Parents: f9bc43d
Author: Aleksandr Kovalenko <ak...@hortonworks.com>
Authored: Wed Feb 26 18:48:42 2014 +0200
Committer: Aleksandr Kovalenko <ak...@hortonworks.com>
Committed: Wed Feb 26 18:48:42 2014 +0200

----------------------------------------------------------------------
 .../mirroring/manage_clusters_controller.js     | 71 +++++++--------
 .../main/mirroring/manage_clusters.hbs          | 12 +--
 ambari-web/app/utils/ajax.js                    | 94 +++++---------------
 3 files changed, 60 insertions(+), 117 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/d77b11dd/ambari-web/app/controllers/main/mirroring/manage_clusters_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/mirroring/manage_clusters_controller.js b/ambari-web/app/controllers/main/mirroring/manage_clusters_controller.js
index e221e75..e345253 100644
--- a/ambari-web/app/controllers/main/mirroring/manage_clusters_controller.js
+++ b/ambari-web/app/controllers/main/mirroring/manage_clusters_controller.js
@@ -26,8 +26,9 @@ App.MainMirroringManageClustersController = Em.ArrayController.extend({
 
   clusters: [],
 
-  // array of original clusters to compare with changed ones
-  originalClusters: [],
+  clustersToDelete: [],
+
+  clustersToCreate: [],
 
   queriesCount: 0,
 
@@ -41,7 +42,6 @@ App.MainMirroringManageClustersController = Em.ArrayController.extend({
   onLoad: function () {
     if (this.get('isLoaded')) {
       var clusters = [];
-      var originalClusters = [];
       App.TargetCluster.find().forEach(function (cluster) {
         var newCluster = {
           name: cluster.get('name'),
@@ -52,21 +52,31 @@ App.MainMirroringManageClustersController = Em.ArrayController.extend({
           working: cluster.get('working'),
           temp: cluster.get('temp')
         };
-        clusters.push(Ember.Object.create(newCluster));
-        originalClusters.push(Ember.Object.create(newCluster));
+        // Source cluster should be shown on top
+        if (cluster.get('name') === App.get('clusterName')) {
+          clusters.unshift(Ember.Object.create(newCluster));
+        } else {
+          clusters.push(Ember.Object.create(newCluster));
+        }
       }, this);
       this.set('clusters', clusters);
-      this.set('originalClusters', originalClusters);
+      this.get('clustersToDelete').clear();
+      this.get('clustersToCreate').clear();
     }
   }.observes('isLoaded'),
 
   selectedCluster: null,
 
+  // Disable input fields for already created clusters
+  isEditDisabled: function () {
+    return !this.get('clustersToCreate').mapProperty('name').contains(this.get('selectedCluster.name'));
+  }.property('selectedCluster.name', 'clustersToCreate.@each.name'),
+
   addCluster: function () {
     var self = this;
     App.showPromptPopup(Em.I18n.t('mirroring.manageClusters.specifyName'),
         function (clusterName) {
-          self.get('clusters').pushObject(Ember.Object.create({
+          var newCluster = Ember.Object.create({
             name: clusterName,
             execute: '',
             workflow: '',
@@ -74,7 +84,9 @@ App.MainMirroringManageClustersController = Em.ArrayController.extend({
             staging: '',
             working: '',
             temp: ''
-          }));
+          });
+          self.get('clusters').pushObject(newCluster);
+          self.get('clustersToCreate').pushObject(newCluster);
         }
     );
   },
@@ -82,6 +94,11 @@ App.MainMirroringManageClustersController = Em.ArrayController.extend({
   removeCluster: function () {
     var self = this;
     App.showConfirmationPopup(function () {
+      if (self.get('clustersToCreate').mapProperty('name').contains(self.get('selectedCluster.name'))) {
+        self.set('clustersToCreate', self.get('clustersToCreate').without(self.get('selectedCluster')));
+      } else {
+        self.get('clustersToDelete').push(self.get('selectedCluster'));
+      }
       self.set('clusters', self.get('clusters').without(self.get('selectedCluster')));
     });
   },
@@ -89,23 +106,9 @@ App.MainMirroringManageClustersController = Em.ArrayController.extend({
   save: function () {
     // define clusters need to be deleted, modified or created
     var clusters = this.get('clusters');
-    var originalClusters = this.get('originalClusters');
-    var originalClustersNames = originalClusters.mapProperty('name');
-    var clustersToModify = [];
-    var clustersToCreate = [];
-    clusters.forEach(function (cluster) {
-      var clusterName = cluster.get('name');
-      if (originalClustersNames.contains(clusterName)) {
-        if (JSON.stringify(cluster) !== JSON.stringify(originalClusters.findProperty('name', clusterName))) {
-          clustersToModify.push(clusterName);
-        }
-        originalClustersNames = originalClustersNames.without(clusterName);
-      } else {
-        clustersToCreate.push(clusterName);
-      }
-    }, this);
-    var clustersToDelete = originalClustersNames;
-    var queriesCount = clustersToCreate.length + clustersToDelete.length + clustersToModify.length;
+    var clustersToCreate = this.get('clustersToCreate');
+    var clustersToDelete = this.get('clustersToDelete');
+    var queriesCount = clustersToCreate.length + clustersToDelete.length;
     this.set('queriesCount', queriesCount);
 
     // send request to delete, modify or create cluster
@@ -116,7 +119,7 @@ App.MainMirroringManageClustersController = Em.ArrayController.extend({
           name: 'mirroring.delete_entity',
           sender: this,
           data: {
-            name: cluster,
+            name: cluster.get('name'),
             type: 'cluster',
             falconServer: App.get('falconServerURL')
           },
@@ -130,21 +133,7 @@ App.MainMirroringManageClustersController = Em.ArrayController.extend({
           sender: this,
           data: {
             type: 'cluster',
-            entity: this.formatClusterXML(clusters.findProperty('name', cluster)),
-            falconServer: App.get('falconServerURL')
-          },
-          success: 'onQueryResponse',
-          error: 'onQueryResponse'
-        });
-      }, this);
-      clustersToModify.forEach(function (cluster) {
-        App.ajax.send({
-          name: 'mirroring.update_entity',
-          sender: this,
-          data: {
-            name: cluster,
-            type: 'cluster',
-            entity: this.formatClusterXML(clusters.findProperty('name', cluster)),
+            entity: this.formatClusterXML(cluster),
             falconServer: App.get('falconServerURL')
           },
           success: 'onQueryResponse',

http://git-wip-us.apache.org/repos/asf/ambari/blob/d77b11dd/ambari-web/app/templates/main/mirroring/manage_clusters.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/mirroring/manage_clusters.hbs b/ambari-web/app/templates/main/mirroring/manage_clusters.hbs
index 4186a54..cf13f68 100644
--- a/ambari-web/app/templates/main/mirroring/manage_clusters.hbs
+++ b/ambari-web/app/templates/main/mirroring/manage_clusters.hbs
@@ -30,15 +30,15 @@
           <div style="margin-bottom: 15px">{{t mirroring.manageClusters.interfaces}}</div>
           <div class="control-group">
             <label class="control-label-manage-clusters">{{t mirroring.manageClusters.execute}}</label>
-            {{view Ember.TextField class="span8" valueBinding="controller.selectedCluster.execute"}}
+            {{view Ember.TextField class="span8" valueBinding="controller.selectedCluster.execute" disabledBinding="controller.isEditDisabled"}}
           </div>
           <div class="control-group">
             <label class="control-label-manage-clusters">{{t mirroring.manageClusters.readonly}}</label>
-            {{view Ember.TextField class="span8" valueBinding="controller.selectedCluster.readonly"}}
+            {{view Ember.TextField class="span8" valueBinding="controller.selectedCluster.readonly" disabledBinding="controller.isEditDisabled"}}
           </div>
           <div class="control-group">
             <label class="control-label-manage-clusters">{{t mirroring.manageClusters.workflow}}</label>
-            {{view Ember.TextField class="span8" valueBinding="controller.selectedCluster.workflow"}}
+            {{view Ember.TextField class="span8" valueBinding="controller.selectedCluster.workflow" disabledBinding="controller.isEditDisabled"}}
           </div>
         </div>
         <div class="accordion control-group" id="advanced-fields">
@@ -52,15 +52,15 @@
               <div class="accordion-inner">
                 <div class="control-group">
                   <label class="control-label-manage-clusters">{{t mirroring.manageClusters.staging}}</label>
-                  {{view Ember.TextField class="span8" valueBinding="controller.selectedCluster.staging"}}
+                  {{view Ember.TextField class="span8" valueBinding="controller.selectedCluster.staging" disabledBinding="controller.isEditDisabled"}}
                 </div>
                 <div class="control-group">
                   <label class="control-label-manage-clusters">{{t mirroring.manageClusters.working}}</label>
-                  {{view Ember.TextField class="span8" valueBinding="controller.selectedCluster.working"}}
+                  {{view Ember.TextField class="span8" valueBinding="controller.selectedCluster.working" disabledBinding="controller.isEditDisabled"}}
                 </div>
                 <div class="control-group">
                   <label class="control-label-manage-clusters">{{t mirroring.manageClusters.temp}}</label>
-                  {{view Ember.TextField class="span8" valueBinding="controller.selectedCluster.temp"}}
+                  {{view Ember.TextField class="span8" valueBinding="controller.selectedCluster.temp" disabledBinding="controller.isEditDisabled"}}
                 </div>
               </div>
             </div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/d77b11dd/ambari-web/app/utils/ajax.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/ajax.js b/ambari-web/app/utils/ajax.js
index c8953c5..6a17f41 100644
--- a/ambari-web/app/utils/ajax.js
+++ b/ambari-web/app/utils/ajax.js
@@ -1426,50 +1426,37 @@ var urls = {
   },
 
   'mirroring.get_all_entities': {
-    'real': '/proxy?url=http://{falconServer}:15000/api/entities/list/{type}?fields=status',
+    'real': '/proxy?url=http://{falconServer}:15000/api/entities/list/{type}?fields=status&user.name=ambari-qa',
     'mock': '/data/mirroring/{type}s.xml',
     'apiPrefix': '',
     'format': function () {
       return {
-        dataType: 'xml',
-        headers: {
-          'AmbariProxy-Remote-user': 'ambari-qa'
-        }
+        dataType: 'xml'
       }
     }
   },
 
   'mirroring.get_definition': {
-    'real': '/proxy?url=http://{falconServer}:15000/api/entities/definition/{type}/{name}',
+    'real': '/proxy?url=http://{falconServer}:15000/api/entities/definition/{type}/{name}?user.name=ambari-qa',
     'mock': '/data/mirroring/{name}_definition.xml',
     'apiPrefix': '',
     'format': function () {
       return {
         cache: true,
-        dataType: 'xml',
-        headers: {
-          'AmbariProxy-Remote-user': 'ambari-qa'
-        }
+        dataType: 'xml'
       }
     }
   },
 
   'mirroring.dataset.get_all_instances': {
-    'real': '/proxy?url=http://{falconServer}:15000/api/instance/status/feed/{dataset}?start={start}&end={end}',
+    'real': '/proxy?url=http://{falconServer}:15000/api/instance/status/feed/{dataset}?start={start}&end={end}&user.name=ambari-qa',
     'mock': '/data/mirroring/{dataset}_instances.json',
-    'apiPrefix': '',
-    'format': function (data) {
-      return {
-        headers: {
-          'AmbariProxy-Remote-user': 'ambari-qa'
-        }
-      }
-    }
+    'apiPrefix': ''
   },
 
 
   'mirroring.create_new_dataset': {
-    'real': '/proxy?url=http://{falconServer}:15000/api/entities/submitAndSchedule/feed',
+    'real': '/proxy?url=http://{falconServer}:15000/api/entities/submitAndSchedule/feed?user.name=ambari-qa',
     'mock': '/data/mirroring/succeeded.json',
     'apiPrefix': '',
     'type': 'POST',
@@ -1479,7 +1466,6 @@ var urls = {
         dataType: 'xml',
         data: data.dataset,
         headers: {
-          'AmbariProxy-Remote-user': 'ambari-qa',
           'AmbariProxy-Content-Type': 'text/xml'
         }
       }
@@ -1487,7 +1473,7 @@ var urls = {
   },
 
   'mirroring.submit_entity': {
-    'real': '/proxy?url=http://{falconServer}:15000/api/entities/submit/{type}',
+    'real': '/proxy?url=http://{falconServer}:15000/api/entities/submit/{type}?user.name=ambari-qa',
     'mock': '/data/mirroring/succeeded.json',
     'apiPrefix': '',
     'type': 'POST',
@@ -1497,7 +1483,6 @@ var urls = {
         dataType: 'xml',
         data: data.entity,
         headers: {
-          'AmbariProxy-Remote-user': 'ambari-qa',
           'AmbariProxy-Content-Type': 'text/xml'
         }
       }
@@ -1505,7 +1490,7 @@ var urls = {
   },
 
   'mirroring.update_entity': {
-    'real': '/proxy?url=http://{falconServer}:15000/api/entities/update/{type}/{name}',
+    'real': '/proxy?url=http://{falconServer}:15000/api/entities/update/{type}/{name}?user.name=ambari-qa',
     'mock': '/data/mirroring/succeeded.json',
     'apiPrefix': '',
     'type': 'POST',
@@ -1514,100 +1499,69 @@ var urls = {
         contentType: 'text/xml',
         dataType: 'xml',
         data: data.entity,
-        headers: {
-          'AmbariProxy-Remote-user': 'ambari-qa',
-          'AmbariProxy-Content-Type': 'text/xml'
-        }
+          headers: {
+        'AmbariProxy-Content-Type': 'text/xml'
+      }
       }
     }
   },
 
   'mirroring.delete_entity': {
-    'real': '/proxy?url=http://{falconServer}:15000/api/entities/delete/{type}/{name}',
+    'real': '/proxy?url=http://{falconServer}:15000/api/entities/delete/{type}/{name}?user.name=ambari-qa',
     'mock': '/data/mirroring/succeeded.json',
     'apiPrefix': '',
     'type': 'DELETE',
     'format': function (data) {
       return {
-        dataType: 'xml',
-        headers: {
-          'AmbariProxy-Remote-user': 'ambari-qa'
-        }
+        dataType: 'xml'
       }
     }
   },
 
   'mirroring.suspend_entity': {
-    'real': '/proxy?url=http://{falconServer}:15000/api/entities/suspend/{type}/{name}',
+    'real': '/proxy?url=http://{falconServer}:15000/api/entities/suspend/{type}/{name}?user.name=ambari-qa',
     'mock': '/data/mirroring/succeeded.json',
     'apiPrefix': '',
     'type': 'POST',
     'format': function (data) {
       return {
         dataType: 'xml',
-        data: data.entity,
-        headers: {
-          'AmbariProxy-Remote-user': 'ambari-qa'
-        }
+        data: data.entity
       }
     }
   },
 
   'mirroring.schedule_entity': {
-    'real': '/proxy?url=http://{falconServer}:15000/api/entities/resume/{type}/{name}',
+    'real': '/proxy?url=http://{falconServer}:15000/api/entities/resume/{type}/{name}?user.name=ambari-qa',
     'mock': '/data/mirroring/succeeded.json',
     'apiPrefix': '',
     'type': 'POST',
     'format': function (data) {
       return {
-        dataType: 'xml',
-        headers: {
-          'AmbariProxy-Remote-user': 'ambari-qa'
-        }
+        dataType: 'xml'
       }
     }
   },
 
   'mirroring.suspend_instance': {
-    'real': '/proxy?url=http://{falconServer}:15000/api/instance/suspend/feed/{feed}?start={name}',
+    'real': '/proxy?url=http://{falconServer}:15000/api/instance/suspend/feed/{feed}?start={name}&user.name=ambari-qa',
     'mock': '/data/mirroring/succeeded.json',
     'apiPrefix': '',
-    'type': 'POST',
-    'format': function (data) {
-      return {
-        headers: {
-          'AmbariProxy-Remote-user': 'ambari-qa'
-        }
-      }
-    }
+    'type': 'POST'
   },
 
   'mirroring.resume_instance': {
-    'real': '/proxy?url=http://{falconServer}:15000/api/instance/resume/feed/{feed}?start={name}',
+    'real': '/proxy?url=http://{falconServer}:15000/api/instance/resume/feed/{feed}?start={name}&user.name=ambari-qa',
     'mock': '/data/mirroring/succeeded.json',
     'apiPrefix': '',
-    'type': 'POST',
-    'format': function (data) {
-      return {
-        headers: {
-          'AmbariProxy-Remote-user': 'ambari-qa'
-        }
-      }
-    }
+    'type': 'POST'
   },
 
   'mirroring.kill_instance': {
-    'real': '/proxy?url=http://{falconServer}:15000/api/instance/kill/feed/{feed}?start={name}',
+    'real': '/proxy?url=http://{falconServer}:15000/api/instance/kill/feed/{feed}?start={name}&user.name=ambari-qa',
     'mock': '/data/mirroring/succeeded.json',
     'apiPrefix': '',
-    'type': 'POST',
-    'format': function (data) {
-      return {
-        headers: {
-          'AmbariProxy-Remote-user': 'ambari-qa'
-        }
-      }
-    }
+    'type': 'POST'
   },
 
   'bulk_request.host_components': {