You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by on...@apache.org on 2015/03/30 14:08:57 UTC

ambari git commit: AMBARI-10269. Config overrides have isOriginalSCP field as true, but should be false (onechiporenko)

Repository: ambari
Updated Branches:
  refs/heads/trunk d2e2a7914 -> d794a8470


AMBARI-10269. Config overrides have isOriginalSCP field as true, but should be false (onechiporenko)


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

Branch: refs/heads/trunk
Commit: d794a8470e671d4188317c5a525cdabc92fa5407
Parents: d2e2a79
Author: Oleg Nechiporenko <on...@apache.org>
Authored: Mon Mar 30 14:35:55 2015 +0300
Committer: Oleg Nechiporenko <on...@apache.org>
Committed: Mon Mar 30 14:35:55 2015 +0300

----------------------------------------------------------------------
 .../controllers/main/service/info/configs.js    | 96 +++++++++-----------
 .../configs/widgets/slider_config_widget.hbs    |  8 +-
 ambari-web/app/views.js                         |  1 +
 .../configs/selectable_popup_body_view.js       | 58 ++++++++++++
 .../configs/widgets/config_widget_view.js       |  8 ++
 .../widgets/slider_config_widget_view.js        |  2 +-
 6 files changed, 117 insertions(+), 56 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/d794a847/ambari-web/app/controllers/main/service/info/configs.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/service/info/configs.js b/ambari-web/app/controllers/main/service/info/configs.js
index 670d06e..28c1a63 100644
--- a/ambari-web/app/controllers/main/service/info/configs.js
+++ b/ambari-web/app/controllers/main/service/info/configs.js
@@ -165,6 +165,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
 
   /**
    * Dropdown menu items in filter combobox
+   * @type {{attributeName: string, attributeValue: string, name: string, selected: boolean}[]}
    */
   filterColumns: function () {
     var filterColumns = [];
@@ -183,7 +184,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
   }.property('propertyFilters', 'isCompareMode'),
 
   /**
-   * indicate wtether service config version belongs to default config group
+   * indicate whether service config version belongs to default config group
    * @method isVersionDefault
    * @param version
    * @return {Boolean}
@@ -202,26 +203,29 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
 
   /**
    * clear and set properties to default value
+   * @method clearStep
    */
   clearStep: function () {
     if (this.get('requestInProgress') && this.get('requestInProgress').readyState !== 4) {
       this.get('requestInProgress').abort();
       this.set('requestInProgress', null);
     }
-    this.set("saveInProgress", false);
-    this.set('modifiedFileNames', []);
-    this.set('isInit', true);
-    this.set('hash', null);
-    this.set('forceTransition', false);
-    this.set('dataIsLoaded', false);
-    this.set('versionLoaded', false);
-    this.set('filter', '');
+    this.setProperties({
+      saveInProgress: false,
+      modifiedFileNames: [],
+      isInit: true,
+      hash: null,
+      forceTransition: false,
+      dataIsLoaded: false,
+      versionLoaded: false,
+      filter: '',
+      loadedGroupToOverrideSiteToTagMap: {},
+      serviceConfigVersionNote: ''
+    });
     this.get('filterColumns').setEach('selected', false);
     this.get('stepConfigs').clear();
     this.get('allConfigs').clear();
     this.get('uiConfigs').clear();
-    this.set('loadedGroupToOverrideSiteToTagMap', {});
-    this.set('serviceConfigVersionNote', '');
     if (this.get('serviceConfigTags')) {
       this.set('serviceConfigTags', null);
     }
@@ -237,6 +241,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
    * {String}
    */
   hash: null,
+
   /**
    * Is this initial config group changing
    * {Boolean}
@@ -245,6 +250,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
 
   /**
    * On load function
+   * @method loadStep
    */
   loadStep: function () {
     console.log("TRACE: Loading configure for service");
@@ -943,10 +949,12 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
     this.get('stepConfigs').pushObject(serviceConfig);
     this.set('selectedService', this.get('stepConfigs').objectAt(0));
     this.checkForSecureConfig(this.get('selectedService'));
-    this.set('dataIsLoaded', true);
-    this.set('versionLoaded', true);
-    this.set('hash', this.getHash());
-    this.set('isInit', false);
+    this.setProperties({
+      dataIsLoaded: true,
+      versionLoaded: true,
+      hash: this.getHash(),
+      isInit: false
+    });
   },
 
   /**
@@ -1009,7 +1017,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
     var defaultGroupSelected = this.get('selectedConfigGroup.isDefault');
     configs.forEach(function (_serviceConfigProperty) {
       var serviceConfigProperty = this.createConfigProperty(_serviceConfigProperty, defaultGroupSelected);
-      componentConfig.configs.pushObject(serviceConfigProperty);
+      componentConfig.get('configs').pushObject(serviceConfigProperty);
       serviceConfigProperty.validate();
     }, this);
     componentConfig.set('initConfigsLength', componentConfig.get('configs.length'));
@@ -1025,10 +1033,10 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
   createConfigProperty: function (_serviceConfigProperty, defaultGroupSelected) {
     if (!_serviceConfigProperty) return null;
 
-    var overrides = _serviceConfigProperty.overrides;
+    var overrides = Em.get(_serviceConfigProperty, 'overrides');
     // we will populate the override properties below
     Em.set(_serviceConfigProperty, 'overrides', null);
-    _serviceConfigProperty.isOverridable = Em.isNone(_serviceConfigProperty.isOverridable) ? true : _serviceConfigProperty.isOverridable;
+    Em.set(_serviceConfigProperty, 'isOverridable', Em.isNone(Em.get(_serviceConfigProperty, 'isOverridable')) ? true : Em.get(_serviceConfigProperty, 'isOverridable'));
 
     var serviceConfigProperty = App.ServiceConfigProperty.create(_serviceConfigProperty);
 
@@ -1144,14 +1152,15 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
    * @returns {*}
    */
   createNewSCP: function (override, _serviceConfigProperty, serviceConfigProperty, defaultGroupSelected) {
-    var newSCP = App.ServiceConfigProperty.create(_serviceConfigProperty);
-    newSCP.set('value', override.value);
-    newSCP.set('isFinal', override.isFinal);
-    newSCP.set('supportsFinal', serviceConfigProperty.get('supportsFinal'));
-    newSCP.set('isOriginalSCP', false); // indicated this is overridden value,
-    newSCP.set('parentSCP', serviceConfigProperty);
-    newSCP.set('overrides', null);
-    newSCP.set('group', Em.get(override, 'group'));
+    var newSCP = App.ServiceConfigProperty.create(_serviceConfigProperty, {
+      value: Em.get(override, 'value'),
+      isFinal: Em.get(override, 'isFinal'),
+      group: Em.get(override, 'group'),
+      supportsFinal: serviceConfigProperty.get('supportsFinal'),
+      isOriginalSCP: false,
+      parentSCP: serviceConfigProperty,
+      overrides: null
+    });
     if (defaultGroupSelected) {
       newSCP.set('isEditable', false);
     }
@@ -2562,26 +2571,10 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
   },
 
   showItemsShouldBeRestarted: function (content, header) {
-    App.ModalPopup.show({
+    return App.ModalPopup.show({
       content: content,
       header: header,
-      bodyClass: Em.View.extend({
-        templateName: require('templates/common/selectable_popup'),
-        textareaVisible: false,
-        textTrigger: function () {
-          this.set('textareaVisible', !this.get('textareaVisible'));
-        },
-        putContentToTextarea: function () {
-          var content = this.get('parentView.content');
-          if (this.get('textareaVisible')) {
-            var wrapper = $(".task-detail-log-maintext");
-            $('.task-detail-log-clipboard').html(content).width(wrapper.width()).height(wrapper.height());
-            Em.run.next(function () {
-              $('.task-detail-log-clipboard').select();
-            });
-          }
-        }.observes('textareaVisible')
-      }),
+      bodyClass: App.SelectablePopupBodyView,
       secondary: null
     });
   },
@@ -2601,13 +2594,14 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
         serviceConfigProperty.set('overrides', overrides);
       }
       // create new override with new value
-      var newSCP = App.ServiceConfigProperty.create(serviceConfigProperty);
-      newSCP.set('value', value || '');
-      newSCP.set('isOriginalSCP', false); // indicated this is overridden value,
-      newSCP.set('parentSCP', serviceConfigProperty);
-      newSCP.set('isEditable', true);
-      newSCP.set('group', group);
-      newSCP.set('overrides', null);
+      var newSCP = App.ServiceConfigProperty.create(serviceConfigProperty, {
+        value: value || '',
+        isOriginalSCP: false,
+        parentSCP: serviceConfigProperty,
+        isEditable: true,
+        group: group,
+        overrides: null
+      });
       console.debug("createOverrideProperty(): Added:", newSCP, " to main-property:", serviceConfigProperty);
       overrides.pushObject(newSCP);
     }

http://git-wip-us.apache.org/repos/asf/ambari/blob/d794a847/ambari-web/app/templates/common/configs/widgets/slider_config_widget.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/common/configs/widgets/slider_config_widget.hbs b/ambari-web/app/templates/common/configs/widgets/slider_config_widget.hbs
index 67f296a..54ac741 100644
--- a/ambari-web/app/templates/common/configs/widgets/slider_config_widget.hbs
+++ b/ambari-web/app/templates/common/configs/widgets/slider_config_widget.hbs
@@ -17,8 +17,8 @@
 }}
 
 <div class="widget slider-widget">
-  {{#if view.config.isOriginalSCP}}
-    <p>{{view.configLabel}}</p>
+  {{#if view.isOriginalSCP}}
+    <p>{{formatWordBreak view.configLabel}}</p>
   {{/if}}
   <div>
     <div {{bindAttr class="view.isMirrorValueValid::error :control-group :pull-left"}}>
@@ -29,7 +29,7 @@
         {{/if}}
       </div>
     </div>
-    {{#if view.config.isOriginalSCP}}
+    {{#if view.isOriginalSCP}}
       {{view App.RestoreConfigView visibleBinding="view.undoAllowed"}}
     {{/if}}
     {{#if view.overrideAllowed}}
@@ -48,7 +48,7 @@
   <div class="ui-slider-wrapper">
     {{view Ember.TextField valueBinding="view.config.value" class="input-mini slider-input"}}
   </div>
-  {{#if view.config.overrides.length}}
+  {{#if view.isOriginalSCP}}
     {{view App.SliderConfigWidgetOverrideView
       serviceConfigPropertyBinding="view.config"
       isDefaultGroupSelectedBinding="controller.selectedConfigGroup.isDefault"

http://git-wip-us.apache.org/repos/asf/ambari/blob/d794a847/ambari-web/app/views.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views.js b/ambari-web/app/views.js
index b074010..ef98340 100644
--- a/ambari-web/app/views.js
+++ b/ambari-web/app/views.js
@@ -51,6 +51,7 @@ require('views/common/configs/overriddenProperty_view');
 require('views/common/configs/compare_property_view');
 require('views/common/configs/config_history_flow');
 require('views/common/configs/restore_config_view');
+require('views/common/configs/selectable_popup_body_view');
 require('views/common/configs/custom_category_views/notification_configs_view');
 require('views/common/configs/widgets/config_widget_view');
 require('views/common/configs/widgets/checkbox_config_widget_view');

http://git-wip-us.apache.org/repos/asf/ambari/blob/d794a847/ambari-web/app/views/common/configs/selectable_popup_body_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/configs/selectable_popup_body_view.js b/ambari-web/app/views/common/configs/selectable_popup_body_view.js
new file mode 100644
index 0000000..e527563
--- /dev/null
+++ b/ambari-web/app/views/common/configs/selectable_popup_body_view.js
@@ -0,0 +1,58 @@
+/**
+ * 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.
+ */
+
+var App = require('app');
+
+/**
+ * Body-view for popups where shown content may be switched to textarea-view
+ * @type {Ember.View}
+ */
+App.SelectablePopupBodyView = Em.View.extend({
+
+  templateName: require('templates/common/selectable_popup'),
+
+  /**
+   * True - if editable textarea is visible, false - otherwise
+   * @type {boolean}
+   */
+  textareaVisible: false,
+
+  /**
+   * Switch <code>textareaVisible</code> value
+   * @method textTrigger
+   */
+  textTrigger: function () {
+    this.toggleProperty('textareaVisible');
+  },
+
+  /**
+   * Set data to the visible textarea
+   * @method putContentToTextarea
+   */
+  putContentToTextarea: function () {
+    var content = this.get('parentView.content');
+    if (this.get('textareaVisible')) {
+      var wrapper = $(".task-detail-log-maintext");
+      $('.task-detail-log-clipboard').html(content).width(wrapper.width()).height(wrapper.height());
+      Em.run.next(function () {
+        $('.task-detail-log-clipboard').select();
+      });
+    }
+  }.observes('textareaVisible')
+
+});

http://git-wip-us.apache.org/repos/asf/ambari/blob/d794a847/ambari-web/app/views/common/configs/widgets/config_widget_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/configs/widgets/config_widget_view.js b/ambari-web/app/views/common/configs/widgets/config_widget_view.js
index d4d10ca..b7b1dc7 100644
--- a/ambari-web/app/views/common/configs/widgets/config_widget_view.js
+++ b/ambari-web/app/views/common/configs/widgets/config_widget_view.js
@@ -30,6 +30,14 @@ App.ConfigWidgetView = Em.View.extend({
   config: null,
 
   /**
+   * Alias to <code>config.isOriginalSCP</code>
+   * Should be used in the templates
+   * Don't use original <code>config.isOriginalSCP</code> in the widget-templates!!!
+   * @type {boolean}
+   */
+  isOriginalSCPBinding: 'config.isOriginalSCP',
+
+  /**
    * Config name to display.
    * @type {String}
    */

http://git-wip-us.apache.org/repos/asf/ambari/blob/d794a847/ambari-web/app/views/common/configs/widgets/slider_config_widget_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/configs/widgets/slider_config_widget_view.js b/ambari-web/app/views/common/configs/widgets/slider_config_widget_view.js
index 118f50f..fad30aa 100644
--- a/ambari-web/app/views/common/configs/widgets/slider_config_widget_view.js
+++ b/ambari-web/app/views/common/configs/widgets/slider_config_widget_view.js
@@ -165,7 +165,7 @@ App.SliderConfigWidgetView = App.ConfigWidgetView.extend({
       ticksLabels.push(index % 2 === 0 ? tick + ' ' + unit : '');
     });
 
-    var slider = new Slider('#' + this.get('elementId') + ' input.slider-input', {
+    var slider = new Slider(this.$('input.slider-input')[0], {
       value: parseFunction(this.get('config.value')),
       ticks: ticks,
       tooltip: 'hide',