ソースを参照

AMBARI-5172. Mirroring: filter out non-Ambari mirroring feeds by naming convention. (akovalenko)

Aleksandr Kovalenko 11 年 前
コミット
e5696384ac

+ 1 - 0
ambari-web/app/config.js

@@ -41,6 +41,7 @@ App.singleNodeInstall = false;
 App.singleNodeAlias = document.location.hostname;
 App.minDiskSpace = 2.0; // minimum disk space required for '/' for each host before install, unit GB
 App.minDiskSpaceUsrLib = 1.0; // minimum disk space for '/usr/lib' for each host before install, unit GB
+App.mirroringDatasetNamePrefix = 'ambari-mirroring-'; // special prefix to be added for each Falcon feed name created with Ambari
 
 // experimental features are automatically enabled if running on brunch server
 App.enableExperimental = false;

+ 4 - 2
ambari-web/app/controllers/main/mirroring/edit_dataset_controller.js

@@ -212,7 +212,9 @@ App.MainMirroringEditDataSetController = Ember.Controller.extend({
 
   save: function () {
     this.set('popup.isSaving', true);
+    var datasetNamePrefix = App.mirroringDatasetNamePrefix;
     var datasetName = this.get('formFields.datasetName');
+    var prefixedDatasetName = datasetNamePrefix + datasetName;
     var sourceCluster = App.get('clusterName');
     var targetCluster = this.get('formFields.datasetTargetClusterName');
     var sourceDir = this.get('formFields.datasetSourceDir');
@@ -234,7 +236,7 @@ App.MainMirroringEditDataSetController = Ember.Controller.extend({
       dataset_jobs: []
     };
     // Compose XML data, that will be sended to server
-    var dataToSend = '<?xml version="1.0"?><feed description="" name="' + datasetName + '" xmlns="uri:falcon:feed:0.1"><frequency>' + repeatOptionSelected + '(' + datasetFrequency + ')' +
+    var dataToSend = '<?xml version="1.0"?><feed description="" name="' + prefixedDatasetName + '" xmlns="uri:falcon:feed:0.1"><frequency>' + repeatOptionSelected + '(' + datasetFrequency + ')' +
         '</frequency><clusters><cluster name="' + sourceCluster + '" type="source"><validity start="' + scheduleStartDateFormatted + '" end="' + scheduleEndDateFormatted +
         '"/><retention limit="days(7)" action="delete"/></cluster><cluster name="' + targetCluster + '" type="target"><validity start="' + scheduleStartDateFormatted + '" end="' + scheduleEndDateFormatted +
         '"/><retention limit="months(1)" action="delete"/><locations><location type="data" path="' + targetDir + '" /></locations></cluster></clusters><locations><location type="data" path="' +
@@ -244,7 +246,7 @@ App.MainMirroringEditDataSetController = Ember.Controller.extend({
         name: 'mirroring.update_entity',
         sender: this,
         data: {
-          name: datasetName,
+          name: prefixedDatasetName,
           type: 'feed',
           entity: dataToSend,
           falconServer: App.get('falconServerURL'),

+ 3 - 3
ambari-web/app/controllers/main/mirroring/jobs_controller.js

@@ -26,7 +26,7 @@ App.MainDatasetJobsController = Em.Controller.extend({
       name: 'mirroring.suspend_entity',
       sender: this,
       data: {
-        name: this.get('content.name'),
+        name: this.get('content.prefixedName'),
         type: 'feed',
         falconServer: App.get('falconServerURL')
       },
@@ -45,7 +45,7 @@ App.MainDatasetJobsController = Em.Controller.extend({
       name: 'mirroring.schedule_entity',
       sender: this,
       data: {
-        name: this.get('content.name'),
+        name: this.get('content.prefixedName'),
         type: 'feed',
         falconServer: App.get('falconServerURL')
       },
@@ -67,7 +67,7 @@ App.MainDatasetJobsController = Em.Controller.extend({
         name: 'mirroring.delete_entity',
         sender: self,
         data: {
-          name: self.get('content.name'),
+          name: self.get('content.prefixedName'),
           type: 'feed',
           falconServer: App.get('falconServerURL')
         },

+ 7 - 2
ambari-web/app/controllers/main/mirroring_controller.js

@@ -85,8 +85,13 @@ App.MainMirroringController = Em.ArrayController.extend({
   onLoadDatasetsListSuccess: function (data) {
     var parsedData = misc.xmlToObject(data);
     var datasets = parsedData.entities.entity;
-    if (data && datasets) {
+    if (datasets) {
       datasets = Em.isArray(datasets) ? datasets : [datasets];
+      datasets = datasets.filter(function (dataset) {
+        return dataset.name['#text'].indexOf(App.mirroringDatasetNamePrefix) === 0;
+      });
+    }
+    if (datasets && datasets.length) {
       this.set('datasetCount', datasets.length);
       datasets.forEach(function (dataset) {
         App.ajax.send({
@@ -126,7 +131,7 @@ App.MainMirroringController = Em.ArrayController.extend({
     }
     this.get('datasetsData').push(
         Ember.Object.create({
-          name: parsedData.feed['@attributes'].name,
+          name: parsedData.feed['@attributes'].name.replace(App.mirroringDatasetNamePrefix, ''),
           status: arguments[2].status,
           sourceClusterName: sourceCluster['@attributes'].name,
           targetClusterName: targetCluster['@attributes'].name,

+ 5 - 0
ambari-web/app/models/dataset.js

@@ -32,6 +32,11 @@ App.Dataset = DS.Model.extend({
   scheduleEndDate: DS.attr('string'),
   datasetJobs: DS.hasMany('App.DataSetJob'),
 
+  // name with special prefix to distinguish feeds created with Ambari
+  prefixedName: function () {
+    return App.mirroringDatasetNamePrefix + this.get('name');
+  }.property('name'),
+
   statusFormatted: function (){
     var status = this.get('status');
     if (status) {