You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ab...@apache.org on 2015/09/28 08:55:34 UTC

ambari git commit: AMBARI-13247 All config controls are shown in Advanced Tab. (ababiichuk)

Repository: ambari
Updated Branches:
  refs/heads/trunk 3e7308a1d -> 360a4b4a2


AMBARI-13247 All config controls are shown in Advanced Tab. (ababiichuk)


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

Branch: refs/heads/trunk
Commit: 360a4b4a2f6a325e0d51792124d394d180e4788d
Parents: 3e7308a
Author: aBabiichuk <ab...@cybervisiontech.com>
Authored: Mon Sep 28 09:55:05 2015 +0300
Committer: aBabiichuk <ab...@cybervisiontech.com>
Committed: Mon Sep 28 09:55:05 2015 +0300

----------------------------------------------------------------------
 ambari-web/app/messages.js                      |  2 -
 .../configs/objects/service_config_property.js  | 60 ++----------
 .../app/templates/common/configs/controls.hbs   | 61 ++++++++++++
 .../common/configs/service_config_category.hbs  | 51 +---------
 .../controls_slave_component_groups_menu.hbs    | 25 -----
 ambari-web/app/views.js                         |  1 +
 .../app/views/common/configs/controls_view.js   | 57 +++++++++++
 ambari-web/app/views/common/controls_view.js    | 99 --------------------
 .../objects/service_config_property_test.js     | 35 -------
 9 files changed, 126 insertions(+), 265 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/360a4b4a/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index d30af64..616eeca 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -481,8 +481,6 @@ Em.I18n.translations = {
   'installer.controls.serviceConfigMultipleHosts.other':'1 other',
   'installer.controls.serviceConfigMultipleHosts.others':'{0} others',
   'installer.controls.serviceConfigMasterHosts.header':'{0} Hosts',
-  'installer.controls.addSlaveComponentGroupButton.title':'Add a {0} Group',
-  'installer.controls.addSlaveComponentGroupButton.content':'If you need different settings on certain {0}s, you can add a {1} group.<br>All {2}s within the same group will have the same set of settings.  You can create multiple groups.',
   'installer.controls.slaveComponentChangeGroupName.error':'group with this name already exist',
 
   'installer.step0.header':'Get Started',

http://git-wip-us.apache.org/repos/asf/ambari/blob/360a4b4a/ambari-web/app/models/configs/objects/service_config_property.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/configs/objects/service_config_property.js b/ambari-web/app/models/configs/objects/service_config_property.js
index 0462809..632cc1e 100644
--- a/ambari-web/app/models/configs/objects/service_config_property.js
+++ b/ambari-web/app/models/configs/objects/service_config_property.js
@@ -137,8 +137,6 @@ App.ServiceConfigProperty = Em.Object.extend({
   }.property('errorMessage', 'warnMessage', 'overrideErrorTrigger'),
 
   overrideErrorTrigger: 0, //Trigger for overridable property error
-  isRestartRequired: false,
-  restartRequiredMessage: 'Restart required',
   index: null, //sequence number in category
   editDone: false, //Text field: on focusOut: true, on focusIn: false
   isNotSaved: false, // user property was added but not saved
@@ -177,12 +175,11 @@ App.ServiceConfigProperty = Em.Object.extend({
     var editable = this.get('isEditable');
     var overrides = this.get('overrides');
     var dt = this.get('displayType');
-    return overrideable && (editable || !overrides || !overrides.length) && ("componentHost" != dt);
+    return overrideable && (editable || !overrides || !overrides.length) && (!["componentHost", "password"].contains(dt));
   }.property('isEditable', 'displayType', 'isOverridable', 'overrides.length'),
 
   isOverridden: function() {
-    var overrides = this.get('overrides');
-    return (overrides != null && overrides.get('length')>0) || !this.get('isOriginalSCP');
+    return (this.get('overrides') != null && this.get('overrides.length') > 0) || !this.get('isOriginalSCP');
   }.property('overrides', 'overrides.length', 'isOriginalSCP'),
 
   isOverrideChanged: function () {
@@ -192,14 +189,9 @@ App.ServiceConfigProperty = Em.Object.extend({
   }.property('isOverridden', 'overrides.@each.isNotDefaultValue', 'overrideValues.length'),
 
   isRemovable: function() {
-    var isOriginalSCP = this.get('isOriginalSCP');
-    var isUserProperty = this.get('isUserProperty');
-    var isRequiredByAgent = this.get('isRequiredByAgent');
-    var isEditable = this.get('isEditable');
-    var hasOverrides = this.get('overrides.length') > 0;
-    // Removable when this is a user property, or it is not an original property and it is editable
-    return isEditable && !hasOverrides && isRequiredByAgent && (isUserProperty || !isOriginalSCP);
-  }.property('isUserProperty', 'isOriginalSCP', 'overrides.length'),
+    return this.get('isEditable') && this.get('isRequiredByAgent') && !(this.get('overrides.length') > 0)
+       && (this.get('isUserProperty') || !this.get('isOriginalSCP'));
+  }.property('isUserProperty', 'isOriginalSCP', 'overrides.length', 'isRequiredByAgent'),
 
   init: function () {
     if (this.get('value') == '') {
@@ -209,7 +201,7 @@ App.ServiceConfigProperty = Em.Object.extend({
         this.set('value', this.get('recommendedValue'));
       }
     }
-    if(this.get("displayType") === "password"){
+    if(this.get("displayType") === "password") {
       this.set('retypedPassword', this.get('value'));
       this.set('recommendedValue', '');
     }
@@ -242,46 +234,6 @@ App.ServiceConfigProperty = Em.Object.extend({
     return ["componentHost", "componentHosts", "radio button"].contains(this.get('displayType'));
   }.property('displayType'),
 
-  /**
-   * Used in <code>templates/common/configs/service_config_category.hbs</code>
-   * @type {boolean}
-   */
-  undoAvailable: function () {
-    return !this.get('cantBeUndone') && this.get('isNotDefaultValue');
-  }.property('cantBeUndone', 'isNotDefaultValue'),
-
-  /**
-   * Used in <code>templates/common/configs/service_config_category.hbs</code>
-   * @type {boolean}
-   */
-  removeAvailable: function () {
-    return this.get('isRemovable') && !this.get('isComparison');
-  }.property('isComparison', 'isRemovable'),
-
-  /**
-   * Used in <code>templates/common/configs/service_config_category.hbs</code>
-   * @type {boolean}
-   */
-  switchGroupAvailable: function () {
-    return !this.get('isEditable') && this.get('group');
-  }.property('isEditable', 'group'),
-
-  /**
-   * Used in <code>templates/common/configs/service_config_category.hbs</code>
-   * @type {boolean}
-   */
-  setRecommendedAvailable: function () {
-    return this.get('isEditable') && this.get('recommendedValueExists');
-  }.property('isEditable', 'recommendedValueExists'),
-
-  /**
-   * Used in <code>templates/common/configs/service_config_category.hbs</code>
-   * @type {boolean}
-   */
-  overrideAvailable: function () {
-    return !this.get('isComparison') && this.get('isPropertyOverridable') && (this.get('displayType') !== 'password');
-  }.property('isPropertyOverridable', 'isComparison'),
-
   isValid: function () {
     return this.get('errorMessage') === '';
   }.property('errorMessage'),

http://git-wip-us.apache.org/repos/asf/ambari/blob/360a4b4a/ambari-web/app/templates/common/configs/controls.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/common/configs/controls.hbs b/ambari-web/app/templates/common/configs/controls.hbs
new file mode 100644
index 0000000..b6439cb
--- /dev/null
+++ b/ambari-web/app/templates/common/configs/controls.hbs
@@ -0,0 +1,61 @@
+{{!
+* 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.
+}}
+
+{{#if view.showSwitchToGroup}}
+  <a rel='SwitchGroupTooltip' {{bindAttr data-original-title="this.group.switchGroupTextShort" class="switchGroupAvailable:show:hide :action"}}
+    {{action selectConfigGroup group target="controller"}}>
+    {{group.switchGroupTextShort}}
+  </a>
+{{else}}
+  {{#if view.showIsFinal}}
+    <a href="#" data-toggle="tooltip"
+      {{bindAttr class=":btn-small :btn-final view.serviceConfigProperty.isFinal:active view.serviceConfigProperty.hideFinalIcon:hidden" disabled="view.serviceConfigProperty.isNotEditable"}}
+      {{action "toggleFinalFlag" this target="view.parentView"}}
+      {{translateAttr data-original-title="services.service.config.final"}}>
+      <i class="icon-lock"></i>
+    </a>
+  {{/if}}
+  {{#if view.showOverride}}
+    <a href="#" data-toggle="tooltip" class="btn-small"
+      {{action "createOverrideProperty" this target="view.parentView"}}
+      {{translateAttr data-original-title="common.override"}}>
+      <i class="icon-plus-sign"></i>
+    </a>
+  {{/if}}
+  {{#if view.showUndo}}
+    <a href="#" data-toggle="tooltip" class="btn-small"
+      {{action "doRestoreDefaultValue" this target="view.parentView"}}
+      {{translateAttr data-original-title="common.undo"}}>
+      <i class="icon-undo"></i>
+    </a>
+  {{/if}}
+  {{#if view.showRemove}}
+    <a href="#" data-toggle="tooltip" class="btn-small"
+      {{action "removeProperty" this target="view.parentView"}}
+      {{translateAttr data-original-title="common.remove"}}>
+      <i class="icon-minus-sign"></i>
+    </a>
+  {{/if}}
+  {{#if view.showSetRecommended}}
+    <a href="#" data-toggle="tooltip" class="btn-small"
+      {{action "setRecommendedValue" this target="view.parentView"}}
+      {{translateAttr data-original-title="services.service.config.setRecommendedValue"}}>
+      <i class="icon-repeat"></i>
+    </a>
+  {{/if}}
+{{/if}}

http://git-wip-us.apache.org/repos/asf/ambari/blob/360a4b4a/ambari-web/app/templates/common/configs/service_config_category.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/common/configs/service_config_category.hbs b/ambari-web/app/templates/common/configs/service_config_category.hbs
index 47d3a2e..8cb65ae 100644
--- a/ambari-web/app/templates/common/configs/service_config_category.hbs
+++ b/ambari-web/app/templates/common/configs/service_config_category.hbs
@@ -40,12 +40,6 @@
                     <a href="javascript:void(null);"><i class="icon-lock" rel="tooltip" data-toggle="tooltip"
                                                         title="security knob"></i></a>
                   {{/if}}
-                  {{#if view.supportsHostOverrides}}
-                    {{#if isRestartRequired}}
-                      <i class="icon-refresh restart-required-property"
-                         rel="tooltip" {{bindAttr title="restartRequiredMessage"}}></i>
-                    {{/if}}
-                  {{/if}}
                 </label>
               </span>
             {{/if}}
@@ -65,50 +59,7 @@
                       &nbsp;{{t services.service.config.configHistory.configGroup}}</span>
                   {{/if}}
                 {{/if}}
-                {{#if supportsFinal}}
-                  <a href="#" data-toggle="tooltip"
-                    {{bindAttr class=":btn-small :btn-final isFinal:active hideFinalIcon:hidden" disabled="isNotEditable"}}
-                    {{action "toggleFinalFlag" this target="view"}}
-                    {{translateAttr data-original-title="services.service.config.final"}}>
-                    <i class="icon-lock"></i>
-                  </a>
-                {{/if}}
-                {{#if view.canEdit}}
-                  {{#if view.supportsHostOverrides}}
-                    {{#isAccessible ADMIN}}
-                      <a href="#" data-toggle="tooltip"
-                        {{action "createOverrideProperty" this target="view"}}
-                        {{translateAttr data-original-title="common.override"}}
-                        {{bindAttr class="overrideAvailable::hide :btn-small"}}>
-                        <i class="icon-plus-sign"></i>
-                      </a>
-                    {{/isAccessible}}
-                  {{/if}}
-                  <a href="#" data-toggle="tooltip"
-                    {{action "doRestoreDefaultValue" this target="view"}}
-                    {{translateAttr data-original-title="common.undo"}}
-                    {{bindAttr class="undoAvailable::hide :btn-small"}}>
-                    <i class="icon-undo"></i>
-                  </a>
-                  {{#isAccessible ADMIN}}
-                    <a href="#" data-toggle="tooltip"
-                      {{action "removeProperty" this target="view"}}
-                      {{translateAttr data-original-title="common.remove"}}
-                      {{bindAttr class="removeAvailable::hide :btn-small"}}>
-                      <i class="icon-minus-sign"></i>
-                    </a>
-                  {{/isAccessible}}
-                  <a rel='SwitchGroupTooltip' {{bindAttr data-original-title="this.group.switchGroupTextShort" class="switchGroupAvailable:show:hide :action"}}
-                    {{action selectConfigGroup group target="controller"}}>
-                    {{group.switchGroupTextShort}}
-                  </a>
-                  <a href="#" data-toggle="tooltip"
-                    {{action "setRecommendedValue" this target="view"}}
-                    {{translateAttr data-original-title="services.service.config.setRecommendedValue"}}
-                    {{bindAttr class="setRecommendedAvailable::hide :btn-small"}}>
-                    <i class="icon-repeat"></i>
-                  </a>
-                {{/if}}
+                {{view App.ControlsView serviceConfigPropertyBinding="this"}}
                 <span class="help-inline">{{errorMessage}}</span>
                 <span class="help-inline">{{warnMessage}}</span>
               </div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/360a4b4a/ambari-web/app/templates/wizard/controls_slave_component_groups_menu.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/wizard/controls_slave_component_groups_menu.hbs b/ambari-web/app/templates/wizard/controls_slave_component_groups_menu.hbs
deleted file mode 100644
index f8eb0d8..0000000
--- a/ambari-web/app/templates/wizard/controls_slave_component_groups_menu.hbs
+++ /dev/null
@@ -1,25 +0,0 @@
-{{!
-* 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.
-}}
-
-<a {{action showSlaveComponentGroup view.content target="controller"}} href="#">
-  {{view.content.name}}
-  {{#if view.errorCount}}
-    <span class="badge badge-important">{{view.errorCount}}</span>
-  {{/if}}
-</a>
-<i {{action removeSlaveComponentGroup view.content target="controller"}} class="icon-remove"></i>

http://git-wip-us.apache.org/repos/asf/ambari/blob/360a4b4a/ambari-web/app/views.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views.js b/ambari-web/app/views.js
index 9cc5f0b..3e12998 100644
--- a/ambari-web/app/views.js
+++ b/ambari-web/app/views.js
@@ -75,6 +75,7 @@ require('views/common/filter_combo_cleanable');
 require('views/common/table_view');
 require('views/common/progress_bar_view');
 require('views/common/controls_view');
+require('views/common/configs/controls_view');
 require('views/common/widget/graph_widget_view');
 require('views/common/widget/template_widget_view');
 require('views/common/widget/gauge_widget_view');

http://git-wip-us.apache.org/repos/asf/ambari/blob/360a4b4a/ambari-web/app/views/common/configs/controls_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/configs/controls_view.js b/ambari-web/app/views/common/configs/controls_view.js
new file mode 100644
index 0000000..21965a6
--- /dev/null
+++ b/ambari-web/app/views/common/configs/controls_view.js
@@ -0,0 +1,57 @@
+/**
+ * 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');
+
+App.ControlsView = Ember.View.extend({
+
+	classNames: ['display-inline-block'],
+
+	templateName: require('templates/common/configs/controls'),
+
+	serviceConfigProperty: null,
+
+	showActions: function() {
+		return App.isAccessible('ADMIN') && this.get('serviceConfigProperty.isEditable') && this.get('serviceConfigProperty.isRequiredByAgent') && !this.get('serviceConfigProperty.isComparison');
+	}.property('serviceConfigProperty.isEditable', 'serviceConfigProperty.isRequiredByAgent', 'serviceConfigProperty.isComparison'),
+
+	showSwitchToGroup: function() {
+		return !this.get('serviceConfigProperty.isEditable') && this.get('serviceConfigProperty.group');
+	}.property('showActions', 'serviceConfigProperty.group'),
+
+	showIsFinal: function() {
+		return this.get('serviceConfigProperty.supportsFinal');
+	}.property('serviceConfigProperty.supportsFinal'),
+
+	showRemove: function() {
+		return this.get('showActions') && this.get('serviceConfigProperty.isRemovable');
+	}.property('showActions', 'serviceConfigProperty.isRemovable'),
+
+	showOverride: function() {
+		return this.get('showActions') && this.get('serviceConfigProperty.isPropertyOverridable');
+	}.property('showActions', 'serviceConfigProperty.isPropertyOverridable'),
+
+	showUndo: function() {
+		return this.get('showActions') && !this.get('serviceConfigProperty.cantBeUndone') && this.get('serviceConfigProperty.isNotDefaultValue');
+	}.property('showActions', 'serviceConfigProperty.cantBeUndone', 'serviceConfigProperty.isNotDefaultValue'),
+
+	showSetRecommended: function() {
+		return this.get('showActions') && this.get('serviceConfigProperty.recommendedValueExists');
+	}.property('showActions', 'serviceConfigProperty.recommendedValueExists')
+
+});
+

http://git-wip-us.apache.org/repos/asf/ambari/blob/360a4b4a/ambari-web/app/views/common/controls_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/controls_view.js b/ambari-web/app/views/common/controls_view.js
index 8d1365a..17eb6bd 100644
--- a/ambari-web/app/views/common/controls_view.js
+++ b/ambari-web/app/views/common/controls_view.js
@@ -859,56 +859,6 @@ App.ServiceConfigMultipleHostsDisplay = Ember.Mixin.create(App.ServiceConfigHost
 
 });
 
-
-/**
- * Show tabs list for slave hosts
- * @type {*}
- */
-App.SlaveComponentGroupsMenu = Em.CollectionView.extend(App.ServiceConfigCalculateId, {
-
-  content: function () {
-    return this.get('controller.componentGroups');
-  }.property('controller.componentGroups'),
-
-  tagName: 'ul',
-  classNames: ["nav", "nav-tabs"],
-
-  itemViewClass: Em.View.extend({
-    classNameBindings: ["active"],
-
-    active: function () {
-      return this.get('content.active');
-    }.property('content.active'),
-
-    errorCount: function () {
-      return this.get('content.properties').filterProperty('isValid', false).filterProperty('isVisible', true).get('length');
-    }.property('content.properties.@each.isValid', 'content.properties.@each.isVisible'),
-
-    templateName: require('templates/wizard/controls_slave_component_groups_menu')
-  })
-
-});
-
-/**
- * <code>Add group</code> button
- * @type {*}
- */
-App.AddSlaveComponentGroupButton = Ember.View.extend(App.ServiceConfigCalculateId, {
-
-  tagName: 'span',
-  slaveComponentName: null,
-
-  didInsertElement: function () {
-    App.popover(this.$(), {
-      title: Em.I18n.t('installer.controls.addSlaveComponentGroupButton.title').format(this.get('slaveComponentName')),
-      content: Em.I18n.t('installer.controls.addSlaveComponentGroupButton.content').format(this.get('slaveComponentName'), this.get('slaveComponentName'), this.get('slaveComponentName')),
-      placement: 'right',
-      trigger: 'hover'
-    });
-  }
-
-});
-
 /**
  * Multiple Slave Hosts component
  * @type {*}
@@ -940,26 +890,6 @@ App.ServiceConfigComponentHostsView = Ember.View.extend(App.ServiceConfigMultipl
 
 });
 
-/**
- * properties for present active slave group
- * @type {*}
- */
-App.SlaveGroupPropertiesView = Ember.View.extend(App.ServiceConfigCalculateId, {
-
-  viewName: 'serviceConfigComponentHostsView',
-
-  group: function () {
-    return this.get('controller.activeGroup');
-  }.property('controller.activeGroup'),
-
-  groupConfigs: function () {
-    return this.get('group.properties');
-  }.property('group.properties.@each').cacheable(),
-
-  errorCount: function () {
-    return this.get('group.properties').filterProperty('isValid', false).filterProperty('isVisible', true).get('length');
-  }.property('configs.@each.isValid', 'configs.@each.isVisible')
-});
 
 /**
  * DropDown component for <code>select hosts for groups</code> popup
@@ -991,35 +921,6 @@ App.SlaveComponentDropDownGroupView = Ember.View.extend(App.ServiceConfigCalcula
 });
 
 /**
- * Show info about current group
- * @type {*}
- */
-App.SlaveComponentChangeGroupNameView = Ember.View.extend(App.ServiceConfigCalculateId, {
-
-  contentBinding: 'controller.activeGroup',
-  classNames: ['control-group'],
-  classNameBindings: 'error',
-  error: false,
-  setError: function () {
-    this.set('error', false);
-  }.observes('controller.activeGroup'),
-  errorMessage: function () {
-    return this.get('error') ? Em.I18n.t('installer.controls.slaveComponentChangeGroupName.error') : '';
-  }.property('error'),
-
-  /**
-   * Onclick handler for saving updated group name
-   * @param event
-   */
-  changeGroupName: function (event) {
-    var inputVal = $('#' + this.get('elementId') + ' input[type="text"]').val();
-    if (inputVal !== this.get('content.name')) {
-      var result = this.get('controller').changeSlaveGroupName(this.get('content'), inputVal);
-      this.set('error', result);
-    }
-  }
-});
-/**
  * View for testing connection to database.
  **/
 App.CheckDBConnectionView = Ember.View.extend({

http://git-wip-us.apache.org/repos/asf/ambari/blob/360a4b4a/ambari-web/test/models/configs/objects/service_config_property_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/models/configs/objects/service_config_property_test.js b/ambari-web/test/models/configs/objects/service_config_property_test.js
index 691d86e..da9e7af 100644
--- a/ambari-web/test/models/configs/objects/service_config_property_test.js
+++ b/ambari-web/test/models/configs/objects/service_config_property_test.js
@@ -474,41 +474,6 @@ describe('App.ServiceConfigProperty', function () {
     });
   });
 
-  describe('#undoAvailable', function () {
-
-    Em.A([
-      {
-        cantBeUndone: true,
-        isNotDefaultValue: true,
-        e: false
-      },
-      {
-        cantBeUndone: false,
-        isNotDefaultValue: true,
-        e: true
-      },
-      {
-        cantBeUndone: true,
-        isNotDefaultValue: false,
-        e: false
-      },
-      {
-        cantBeUndone: false,
-        isNotDefaultValue: false,
-        e: false
-      }
-    ]).forEach(function (test) {
-      it('', function () {
-        serviceConfigProperty.reopen({
-          cantBeUndone: test.cantBeUndone,
-          isNotDefaultValue: test.isNotDefaultValue
-        });
-        expect(serviceConfigProperty.get('undoAvailable')).to.equal(test.e);
-      });
-    });
-
-  });
-
   describe('#overrideIsFinalValues', function () {
     it('should be defined as empty array', function () {
       expect(serviceConfigProperty.get('overrideIsFinalValues')).to.eql([]);