You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by at...@apache.org on 2015/01/23 19:25:08 UTC

ambari git commit: AMBARI-9299 Versions: UI cleanup. (atkach)

Repository: ambari
Updated Branches:
  refs/heads/trunk dcf47a45f -> 731fe2661


AMBARI-9299 Versions: UI cleanup. (atkach)


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

Branch: refs/heads/trunk
Commit: 731fe266192a35da113d65df9b2371bdf8c86dfa
Parents: dcf47a4
Author: Andrii Tkach <at...@hortonworks.com>
Authored: Fri Jan 23 17:32:37 2015 +0200
Committer: Andrii Tkach <at...@hortonworks.com>
Committed: Fri Jan 23 20:24:59 2015 +0200

----------------------------------------------------------------------
 .../resources/ui/admin-web/app/styles/main.css  |  2 +-
 .../views/stackVersions/stackVersionPage.html   |  4 +--
 .../background_operations/list_on_start.json    | 10 +++---
 .../app/assets/data/hosts/HDP2/hosts.json       | 17 +++++----
 .../app/controllers/global/update_controller.js |  4 ++-
 ambari-web/app/controllers/main/host.js         | 11 ++----
 ambari-web/app/controllers/main/host/details.js | 19 ++++++++++
 ambari-web/app/mappers/hosts_mapper.js          |  1 +
 ambari-web/app/messages.js                      |  1 +
 .../mixins/common/table_server_view_mixin.js    | 21 +----------
 ambari-web/app/models/host_stack_version.js     | 21 +++++++++++
 ambari-web/app/styles/application.less          |  4 +--
 ambari-web/app/styles/stack_versions.less       | 18 +++++++---
 .../admin/stack_upgrade/edit_repositories.hbs   |  4 +--
 .../admin/stack_upgrade/upgrade_version_box.hbs | 10 ++++--
 .../app/templates/main/host/stack_versions.hbs  |  8 +++--
 .../stack_upgrade/upgrade_version_box_view.js   | 37 +++++++++++++-------
 ambari-web/app/views/main/host.js               | 22 ++++++++----
 .../app/views/main/host/stack_versions_view.js  |  7 ++++
 .../test/controllers/main/host/details_test.js  | 29 ++++++++++++++-
 .../test/models/host_stack_version_test.js      | 20 +++++++++++
 21 files changed, 194 insertions(+), 76 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/731fe266/ambari-admin/src/main/resources/ui/admin-web/app/styles/main.css
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/styles/main.css b/ambari-admin/src/main/resources/ui/admin-web/app/styles/main.css
index 4138cf1..ca8faed 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/styles/main.css
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/styles/main.css
@@ -1299,7 +1299,7 @@ accordion .panel-group .panel{
 }
 
 .status-installed {
-  background-color: orangered;
+  background-color: #999;
 }
 
 .repo-version-select {

http://git-wip-us.apache.org/repos/asf/ambari/blob/731fe266/ambari-admin/src/main/resources/ui/admin-web/app/views/stackVersions/stackVersionPage.html
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/stackVersions/stackVersionPage.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/stackVersions/stackVersionPage.html
index 1484c14..378a85c 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/views/stackVersions/stackVersionPage.html
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/stackVersions/stackVersionPage.html
@@ -24,7 +24,7 @@
   </ol>
 
   <div class="pull-right top-margin-4" ng-switch="deleteEnabled"  ng-if="editController">
-    <button ng-switch-when="false" class="btn disabled btn-default" tooltip="Cannot Delete Static Instances">Deregister
+    <button ng-switch-when="false" class="btn disabled btn-default" tooltip="Cannot delete version already installed.">Deregister
       Version
     </button>
     <button ng-switch-when="true" class="btn btn-danger" ng-click="delete()">Deregister Version
@@ -86,7 +86,7 @@
           <div class="form-group" ng-class="{'has-error': repository.hasError }" ng-repeat="repository in os.repositories">
             <div class="col-sm-3"><label class="control-label">{{repository.Repositories.repo_name}}</label></div>
             <div class="col-sm-9"><input type="text" class="form-control" ng-model="repository.Repositories.base_url"
-                                         ng-change="clearError()"></div>
+                                         ng-change="clearError()" ng-disabled="!os.selected"></div>
           </div>
         </div>
       </div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/731fe266/ambari-web/app/assets/data/background_operations/list_on_start.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/background_operations/list_on_start.json b/ambari-web/app/assets/data/background_operations/list_on_start.json
index 7d47c15..fb0aa30 100644
--- a/ambari-web/app/assets/data/background_operations/list_on_start.json
+++ b/ambari-web/app/assets/data/background_operations/list_on_start.json
@@ -12,14 +12,14 @@
         "end_time" : 1420733166162,
         "exclusive" : false,
         "failed_task_count" : 0,
-        "id" : 17,
+        "id" : 1,
         "inputs" : null,
         "operation_level" : null,
-        "progress_percent" : 100.0,
+        "progress_percent" : 50.0,
         "queued_task_count" : 0,
         "request_context" : "Distribute repositories/install packages",
         "request_schedule" : null,
-        "request_status" : "COMPLETED",
+        "request_status" : "IN_PROGRESS",
         "resource_filters" : [ ],
         "start_time" : 1420732929071,
         "task_count" : 3,
@@ -137,7 +137,7 @@
         "end_time" : 1420801992902,
         "exclusive" : false,
         "failed_task_count" : 0,
-        "id" : 22,
+        "id" : 12,
         "inputs" : null,
         "operation_level" : null,
         "progress_percent" : 100.0,
@@ -187,7 +187,7 @@
         "end_time" : 1420802467535,
         "exclusive" : false,
         "failed_task_count" : 0,
-        "id" : 24,
+        "id" : 13,
         "inputs" : null,
         "operation_level" : null,
         "progress_percent" : 100.0,

http://git-wip-us.apache.org/repos/asf/ambari/blob/731fe266/ambari-web/app/assets/data/hosts/HDP2/hosts.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/hosts/HDP2/hosts.json b/ambari-web/app/assets/data/hosts/HDP2/hosts.json
index 9a63f1a..1ef6384 100644
--- a/ambari-web/app/assets/data/hosts/HDP2/hosts.json
+++ b/ambari-web/app/assets/data/hosts/HDP2/hosts.json
@@ -27,7 +27,8 @@
             {
               "RepositoryVersions" : {
                 "id" : 1,
-                "repository_version" : "2.2.0.1-885"
+                "repository_version" : "2.2.0.1-885",
+                "display_name" : "HDP-2.2.0.1-885"
               }
             }
           ]
@@ -45,7 +46,8 @@
             {
               "RepositoryVersions" : {
                 "id" : 2,
-                "repository_version" : "2.2.1.1-885"
+                "repository_version" : "2.2.1.1-885",
+                "display_name" : "HDP-2.2.1.1-885"
               }
             }
           ]
@@ -56,14 +58,15 @@
             "host_name" : "dev01.hortonworks.com",
             "id" : 3,
             "stack" : "HDP",
-            "state" : "INIT",
+            "state" : "OUT_OF_SYNC",
             "version" : "2.2"
           },
           "repository_versions" : [
             {
               "RepositoryVersions" : {
                 "id" : 3,
-                "repository_version" : "2.2.2.1-885"
+                "repository_version" : "2.2.2.1-885",
+                "display_name" : "HDP-2.2.2.1-885"
               }
             }
           ]
@@ -81,7 +84,8 @@
             {
               "RepositoryVersions" : {
                 "id" : 4,
-                "repository_version" : "2.2.3.1-885"
+                "repository_version" : "2.2.3.1-885",
+                "display_name" : "HDP-2.2.3.1-885"
               }
             }
           ]
@@ -99,7 +103,8 @@
             {
               "RepositoryVersions" : {
                 "id" : 6,
-                "repository_version" : "2.2.4.1-885"
+                "repository_version" : "2.2.4.1-885",
+                "display_name" : "HDP-2.2.4.1-885"
               }
             }
           ]

http://git-wip-us.apache.org/repos/asf/ambari/blob/731fe266/ambari-web/app/controllers/global/update_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/global/update_controller.js b/ambari-web/app/controllers/global/update_controller.js
index 8b7f896..e190b7d 100644
--- a/ambari-web/app/controllers/global/update_controller.js
+++ b/ambari-web/app/controllers/global/update_controller.js
@@ -159,7 +159,9 @@ App.UpdateController = Em.Controller.extend({
       'host_components/HostRoles/stale_configs,host_components/HostRoles/service_name,host_components/HostRoles/desired_admin_state,' +
         'metrics/disk,metrics/load/load_one,Hosts/total_mem<hostAuxiliaryInfo><stackVersions>&minimal_response=true';
     var hostAuxiliaryInfo = ',Hosts/os_arch,Hosts/os_type,metrics/cpu/cpu_system,metrics/cpu/cpu_user,metrics/memory/mem_total,metrics/memory/mem_free';
-    var stackVersionInfo = ',stack_versions/HostStackVersions,stack_versions/repository_versions/RepositoryVersions/repository_version,stack_versions/repository_versions/RepositoryVersions/id';
+    var stackVersionInfo = ',stack_versions/HostStackVersions,' +
+      'stack_versions/repository_versions/RepositoryVersions/repository_version,stack_versions/repository_versions/RepositoryVersions/id,' +
+      'stack_versions/repository_versions/RepositoryVersions/display_name';
     realUrl = realUrl.replace("<stackVersions>", (App.get('supports.stackUpgrade') ? stackVersionInfo : ""));
 
     if (App.router.get('currentState.name') == 'index' && App.router.get('currentState.parentState.name') == 'hosts') {

http://git-wip-us.apache.org/repos/asf/ambari/blob/731fe266/ambari-web/app/controllers/main/host.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/host.js b/ambari-web/app/controllers/main/host.js
index 100266e..1ba1faf 100644
--- a/ambari-web/app/controllers/main/host.js
+++ b/ambari-web/app/controllers/main/host.js
@@ -124,13 +124,8 @@ App.MainHostController = Em.ArrayController.extend(App.TableServerMixin, {
       type: 'MULTIPLE'
     },
     {
-      name: 'repositoryVersion',
-      key: 'stack_versions/repository_versions/RepositoryVersions/repository_version',
-      type: 'EQUAL'
-    },
-    {
-      name: 'hostStackVersionState',
-      key: 'stack_versions/HostStackVersions/state',
+      name: 'hostStackVersion',
+      key: 'stack_versions',
       type: 'EQUAL'
     }
   ],
@@ -938,8 +933,6 @@ App.MainHostController = Em.ArrayController.extend(App.TableServerMixin, {
     associations[9] = 'componentsInPassiveStateCount';
     associations[10] = 'selected';
     associations[11] = 'hostStackVersion';
-    associations[12] = 'repositoryVersion';
-    associations[13] = 'hostStackVersionState';
     return associations;
   }.property()
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/731fe266/ambari-web/app/controllers/main/host/details.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/host/details.js b/ambari-web/app/controllers/main/host/details.js
index 40077f7..c62f70e 100644
--- a/ambari-web/app/controllers/main/host/details.js
+++ b/ambari-web/app/controllers/main/host/details.js
@@ -1833,6 +1833,20 @@ App.MainHostDetailsController = Em.Controller.extend({
   },
 
   /**
+   * show popup confirmation of version installation
+   * @param event
+   */
+  installVersionConfirmation: function (event) {
+    var self = this;
+
+    return App.showConfirmationPopup(function () {
+        self.installVersion(event);
+      },
+      Em.I18n.t('hosts.host.stackVersions.install.confirmation').format(event.context.get('displayName'))
+    );
+  },
+
+  /**
    * install HostStackVersion on host
    * @param {object} event
    */
@@ -1857,5 +1871,10 @@ App.MainHostDetailsController = Em.Controller.extend({
    */
   installVersionSuccessCallback: function (data, opt, params) {
     App.HostStackVersion.find(params.version.get('id')).set('status', 'INSTALLING');
+    App.db.set('repoVersionInstall', 'id', [data.Requests.id]);
+    App.clusterStatus.setClusterStatus({
+      wizardControllerName: this.get('name'),
+      localdb: App.db.data
+    });
   }
 });

http://git-wip-us.apache.org/repos/asf/ambari/blob/731fe266/ambari-web/app/mappers/hosts_mapper.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mappers/hosts_mapper.js b/ambari-web/app/mappers/hosts_mapper.js
index 459a4ff..9013d12 100644
--- a/ambari-web/app/mappers/hosts_mapper.js
+++ b/ambari-web/app/mappers/hosts_mapper.js
@@ -70,6 +70,7 @@ App.hostsMapper = App.QuickDataMapper.create({
     stack: 'HostStackVersions.stack',
     repo_id: 'repository_versions[0].RepositoryVersions.id',
     repo_version: 'repository_versions[0].RepositoryVersions.repository_version',
+    display_name: 'repository_versions[0].RepositoryVersions.display_name',
     version: 'HostStackVersions.version',
     status: 'HostStackVersions.state',
     host_name: 'host_name',

http://git-wip-us.apache.org/repos/asf/ambari/blob/731fe266/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index adab32f..44081c0 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -1992,6 +1992,7 @@ Em.I18n.translations = {
   'hosts.host.stackVersions.status.out_of_sync': 'Out of sync',
   'hosts.host.stackVersions.status.upgrading': 'Upgrading',
   'hosts.host.stackVersions.status.upgrade_failed': 'Upgrade Failed',
+  'hosts.host.stackVersions.install.confirmation': 'You are about to install version <b>{0}</b> on this host.',
 
   'hosts.host.metrics.dataUnavailable':'Data Unavailable',
   'hosts.host.metrics.cpu':'CPU Usage',

http://git-wip-us.apache.org/repos/asf/ambari/blob/731fe266/ambari-web/app/mixins/common/table_server_view_mixin.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mixins/common/table_server_view_mixin.js b/ambari-web/app/mixins/common/table_server_view_mixin.js
index 78c1920..111be84 100644
--- a/ambari-web/app/mixins/common/table_server_view_mixin.js
+++ b/ambari-web/app/mixins/common/table_server_view_mixin.js
@@ -65,26 +65,7 @@ App.TableServerViewMixin = Em.Mixin.create({
       return a.get('index') - b.get('index');
     });
   }.property('filteredContent'),
-  /**
-   * compute applied filters and run content update from server
-   * @param filterObjects
-   */
-  updateFilters: function(filterObjects) {
-    this.set('controller.resetStartIndex', false);
-    filterObjects.forEach(function(filterObject) {
-      this.saveFilterConditions(filterObject.iColumn, filterObject.value, filterObject.type, false);
-    }, this);
-    if (!this.get('filteringComplete')) {
-      clearTimeout(this.get('timeOut'));
-      this.set('timeOut', setTimeout(function () {
-        self.updateFilters(filterObjects);
-      }, this.get('filterWaitingTime')));
-    } else {
-      clearTimeout(this.get('timeOut'));
-      this.set('controller.resetStartIndex', true);
-      this.refresh();
-    }
-  },
+
   /**
    * compute applied filter and run content update from server
    * @param iColumn

http://git-wip-us.apache.org/repos/asf/ambari/blob/731fe266/ambari-web/app/models/host_stack_version.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/host_stack_version.js b/ambari-web/app/models/host_stack_version.js
index a5817d3..4142a3d 100644
--- a/ambari-web/app/models/host_stack_version.js
+++ b/ambari-web/app/models/host_stack_version.js
@@ -23,19 +23,40 @@ App.HostStackVersion = DS.Model.extend({
   version: DS.attr('string'),
   repo: DS.belongsTo('App.Repository'),
   repoVersion: DS.attr('string'),
+  displayName: DS.attr('string'),
 
   /**
    * possible property value defined at App.HostStackVersion.statusDefinition
+   * @type {string}
    */
   status: DS.attr('string'),
   host: DS.belongsTo('App.Host'),
   hostName: DS.attr('string'),
+
+  /**
+   * @type {boolean}
+   */
   isCurrent: function () {
     return this.get('status') === 'CURRENT'
   }.property('status'),
+
+  /**
+   * @type {boolean}
+   */
+  isInstalling: function () {
+    return this.get('status') === 'INSTALLING';
+  }.property('status'),
+
+  /**
+   * @type {string}
+   */
   displayStatus: function() {
     return App.HostStackVersion.formatStatus(this.get('status'));
   }.property('status'),
+
+  /**
+   * @type {boolean}
+   */
   installEnabled: function () {
     return ['OUT_OF_SYNC', 'INSTALL_FAILED'].contains(this.get('status'));
   }.property('status'),

http://git-wip-us.apache.org/repos/asf/ambari/blob/731fe266/ambari-web/app/styles/application.less
----------------------------------------------------------------------
diff --git a/ambari-web/app/styles/application.less b/ambari-web/app/styles/application.less
index e5751ee..9abde83 100644
--- a/ambari-web/app/styles/application.less
+++ b/ambari-web/app/styles/application.less
@@ -3016,7 +3016,7 @@ table.graphs {
     .col8,
     td:first-child + td + td + td + td + td + td + td + td,
     th:first-child + th + th + th + th + th + th + th + th{
-      width: 10%!important;
+      width: 9%!important;
     }
 
     .col9,
@@ -3028,7 +3028,7 @@ table.graphs {
     .col10,
     td:first-child + td + td + td + td + td + td + td + td + td + td,
     th:first-child + th + th + th + th + th + th + th + th + th + th{
-      width: 15%!important;
+      width: 16%!important;
     }
 
     .col11,

http://git-wip-us.apache.org/repos/asf/ambari/blob/731fe266/ambari-web/app/styles/stack_versions.less
----------------------------------------------------------------------
diff --git a/ambari-web/app/styles/stack_versions.less b/ambari-web/app/styles/stack_versions.less
index 5779b16..96ec887 100644
--- a/ambari-web/app/styles/stack_versions.less
+++ b/ambari-web/app/styles/stack_versions.less
@@ -147,6 +147,7 @@
       margin: 15px 0;
       line-height: 30px;
       padding-top: 5px;
+      height: 30px;
       i {
         color: #0088cc;
         font-size: 16px;
@@ -156,6 +157,16 @@
         font-size: 14px;
       }
     }
+    .installing {
+      margin-top: 0;
+      padding-top: 0;
+      padding-bottom: 10px;
+      .progress {
+        height: 15px;
+        width: 60%;
+        margin: 0 20%;
+      }
+    }
     .host-link a {
       color: #0088cc;
       font-size: 14px;
@@ -183,7 +194,7 @@
       text-align: center;
       background: #f8f8f8;
       border-top: 1px solid #e4e4e4;
-      padding-bottom: 3px
+      padding-bottom: 4px;
     }
     .hosts-section .hosts-bar {
       font-size: 14px;
@@ -237,14 +248,11 @@
 }
 
 .repository-list {
-  .modal {
-    padding: 10px!important;
-  }
   .os-block {
     border-top: 1px solid #dddddd;
     padding-top: 10px;
   }
   input[type="text"] {
-    width: 100%;
+    width: 97%;
   }
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/731fe266/ambari-web/app/templates/main/admin/stack_upgrade/edit_repositories.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/admin/stack_upgrade/edit_repositories.hbs b/ambari-web/app/templates/main/admin/stack_upgrade/edit_repositories.hbs
index dc65f01..af861b3 100644
--- a/ambari-web/app/templates/main/admin/stack_upgrade/edit_repositories.hbs
+++ b/ambari-web/app/templates/main/admin/stack_upgrade/edit_repositories.hbs
@@ -32,13 +32,13 @@
 {{#each os in view.content.operatingSystems}}
   <div class="row-fluid os-block">
     <div class="span2">
-      {{view view.OSCheckBox osBinding="os"}}&nbsp;{{os.osType}}
+      {{os.osType}}
     </div>
   <div class="span10">
   {{#each repository in os.repositories}}
     <div class="row-fluid">
       <div class="span3">{{repository.repoName}}</div>
-      <div {{bindAttr class="repository.hasError:error :control-group :span9"}}>{{view App.BaseUrlTextField repositoryBinding="repository" disabledBinding="os.isDisabled"}}</div>
+      <div {{bindAttr class="repository.hasError:error :control-group :span9"}}>{{view App.BaseUrlTextField repositoryBinding="repository"}}</div>
         </div>
       {{/each}}
     </div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/731fe266/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_version_box.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_version_box.hbs b/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_version_box.hbs
index 687bb53..8507dbb 100644
--- a/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_version_box.hbs
+++ b/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_version_box.hbs
@@ -22,7 +22,7 @@
     <i class="icon-edit"></i>
   </a>
 </p>
-<p class="align-center state">
+<div {{bindAttr class="view.stateElement.isInstalling:installing :align-center :state"}}>
   {{#if view.stateElement.isButton}}
     <button class="btn btn-primary" {{action runAction view.stateElement target="view"}}>{{view.stateElement.text}}</button>
   {{/if}}
@@ -34,8 +34,14 @@
       <i {{bindAttr class="view.stateElement.iconClass"}}></i>
     {{/if}}
     <a href="#" {{action runAction view.stateElement target="view"}}>{{view.stateElement.text}}</a>
+    {{#if view.stateElement.isInstalling}}
+      {{view App.ProgressBarView
+        progressBinding="view.installProgress"
+        statusBinding="view.PROGRESS_STATUS"
+      }}
+    {{/if}}
   {{/if}}
-</p>
+</div>
 
 <div class="hosts-section">
   <div class="hosts-bar">{{t common.hosts}}</div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/731fe266/ambari-web/app/templates/main/host/stack_versions.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/host/stack_versions.hbs b/ambari-web/app/templates/main/host/stack_versions.hbs
index 2073fe7..0180781 100644
--- a/ambari-web/app/templates/main/host/stack_versions.hbs
+++ b/ambari-web/app/templates/main/host/stack_versions.hbs
@@ -40,12 +40,16 @@
           {{#if this.isCurrent}}
             <span class="label label-success">{{t common.current}}</span>
           {{else}}
-            {{this.displayStatus}}
+            {{#if this.isInstalling}}
+              <a href="#" {{action showInstallProgress this target="view"}}><i class="icon-cog in_progress"></i>&nbsp;{{this.displayStatus}}</a>
+            {{else}}
+              {{this.displayStatus}}
+            {{/if}}
           {{/if}}
         </td>
         <td class="install-repo-version align-center">
           {{#isAccessible ADMIN}}
-            <button class="btn" {{action installVersion this target="controller"}} {{bindAttr disabled="this.installDisabled"}}><i class="icon-off"></i>&nbsp;{{t common.install}}</button>
+            <button class="btn" {{action installVersionConfirmation this target="controller"}} {{bindAttr disabled="this.installDisabled"}}><i class="icon-off"></i>&nbsp;{{t common.install}}</button>
           {{/isAccessible}}
         </td>
       </tr>

http://git-wip-us.apache.org/repos/asf/ambari/blob/731fe266/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_box_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_box_view.js b/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_box_view.js
index 505c3bb..c0dab5b 100644
--- a/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_box_view.js
+++ b/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_box_view.js
@@ -25,6 +25,22 @@ App.UpgradeVersionBoxView = Em.View.extend({
   classNames: ['span4', 'version-box'],
   classNameBindings: ['versionClass'],
 
+  /**
+   * @type {string}
+   * @constant
+   */
+  PROGRESS_STATUS: 'IN_PROGRESS',
+
+  /**
+   * progress of version installation
+   * @type {number}
+   */
+  installProgress: function() {
+    var requestId = App.get('testMode') ? 1 : App.db.get('repoVersionInstall', 'id')[0];
+    var installRequest = App.router.get('backgroundOperationsController.services').findProperty('id', requestId);
+    return (installRequest) ? installRequest.get('progress') : 0;
+  }.property('App.router.backgroundOperationsController.services.@each.progress'),
+
   versionClass: function () {
     return this.get('content.status') == 'CURRENT'
       ? 'current-version-box' : '';
@@ -63,8 +79,13 @@ App.UpgradeVersionBoxView = Em.View.extend({
   stateElement: function () {
     var currentVersion = this.get('controller.currentVersion');
     var upgradeVersion = this.get('controller.upgradeVersion');
-    var element = Em.Object.create();
     var status = this.get('content.status');
+    var element = Em.Object.create({
+      status: status,
+      isInstalling: function () {
+        return this.get('status') === 'INSTALLING';
+      }.property('status')
+    });
 
     if (status === 'CURRENT') {
       element.set('isLabel', true);
@@ -88,6 +109,7 @@ App.UpgradeVersionBoxView = Em.View.extend({
         element.set('iconClass', 'icon-ok');
         element.set('isLink', true);
         element.set('text', Em.I18n.t('common.installed'));
+        element.set('action', null);
       }
     } else if (['UPGRADING', 'UPGRADE_FAILED', 'UPGRADED'].contains(status)) {
       element.set('isLink', true);
@@ -136,7 +158,6 @@ App.UpgradeVersionBoxView = Em.View.extend({
         return Em.Object.create({
           osType: os.get('osType'),
           isSelected: true,
-          isDisabled: Ember.computed.not('isSelected'),
           repositories: os.get('repositories').map(function (repository) {
             return Em.Object.create({
               repoName: repository.get('repoName'),
@@ -152,6 +173,7 @@ App.UpgradeVersionBoxView = Em.View.extend({
     return App.ModalPopup.show({
       classNames: ['repository-list', 'sixty-percent-width-modal'],
       skipValidation: false,
+      autoHeight: false,
       hasErrors: false,
       bodyClass: Ember.View.extend({
         content: repo,
@@ -170,16 +192,7 @@ App.UpgradeVersionBoxView = Em.View.extend({
         templateName: require('templates/main/admin/stack_upgrade/edit_repositories'),
         didInsertElement: function () {
           App.tooltip($("[rel=skip-validation-tooltip]"), {placement: 'right'});
-        },
-        OSCheckBox: Ember.Checkbox.extend({
-          classNames: ["align-checkbox"],
-
-          checkedBinding: "os.isSelected",
-
-          change: function () {
-            this.get('os.repositories').setEach('hasError', false);
-          }
-        })
+        }
       }),
       header: Em.I18n.t('common.repositories'),
       primary: Em.I18n.t('common.save'),

http://git-wip-us.apache.org/repos/asf/ambari/blob/731fe266/ambari-web/app/views/main/host.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/host.js b/ambari-web/app/views/main/host.js
index 107a2c8..217ca45 100644
--- a/ambari-web/app/views/main/host.js
+++ b/ambari-web/app/views/main/host.js
@@ -1014,7 +1014,6 @@ App.MainHostView = App.TableView.extend(App.TableServerViewMixin, {
       value: [],
 
       versionSelectView: filters.createSelectView({
-        column: 12,
         classNames: ['notActive'],
         fieldType: 'filter-input-width',
         content: function () {
@@ -1035,7 +1034,6 @@ App.MainHostView = App.TableView.extend(App.TableServerViewMixin, {
         }
       }),
       statusSelectView: filters.createSelectView({
-        column: 13,
         classNames: ['notActive'],
         fieldType: 'filter-input-width',
         content: function () {
@@ -1062,10 +1060,19 @@ App.MainHostView = App.TableView.extend(App.TableServerViewMixin, {
         this._super();
         var self = this;
         var filterProperties = [];
-        var filters = [];
-        filters.pushObject({ iColumn: 12, value: this.get('selectedVersion')});
-        filters.pushObject({ iColumn: 13, value: this.get('selectedStatus')});
-        this.get('parentView.parentView').updateFilters(filters);
+        if (this.get('selectedVersion')) {
+          filterProperties.push({
+            property: 'repository_versions/RepositoryVersions/repository_version',
+            value: this.get('selectedVersion')
+          });
+        }
+        if (this.get('selectedStatus')) {
+          filterProperties.push({
+            property: 'HostStackVersions/state',
+            value: this.get('selectedStatus')
+          });
+        }
+        self.set('value', filterProperties);
       },
       /**
        * Clear filter to initial state
@@ -1077,6 +1084,9 @@ App.MainHostView = App.TableView.extend(App.TableServerViewMixin, {
         });
       }
     }),
+    onChangeValue: function () {
+      this.get('parentView').updateFilter(this.get('column'), this.get('value'), 'sub-resource');
+    },
     clearFilter: function () {
       this._super();
       this.get('childViews').forEach(function (view) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/731fe266/ambari-web/app/views/main/host/stack_versions_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/host/stack_versions_view.js b/ambari-web/app/views/main/host/stack_versions_view.js
index 2fd4e79..8186e72 100644
--- a/ambari-web/app/views/main/host/stack_versions_view.js
+++ b/ambari-web/app/views/main/host/stack_versions_view.js
@@ -159,6 +159,13 @@ App.MainHostStackVersionsView = App.TableView.extend({
   }),
 
   /**
+   * show progress of installation of version on host
+   */
+  showInstallProgress: function (event) {
+    App.router.get('mainAdminStackAndUpgradeController').showProgressPopup(event.context);
+  },
+
+  /**
    * @type {Array}
    */
   colPropAssoc: function () {

http://git-wip-us.apache.org/repos/asf/ambari/blob/731fe266/ambari-web/test/controllers/main/host/details_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/main/host/details_test.js b/ambari-web/test/controllers/main/host/details_test.js
index 41b32ad..1bd8350 100644
--- a/ambari-web/test/controllers/main/host/details_test.js
+++ b/ambari-web/test/controllers/main/host/details_test.js
@@ -2286,6 +2286,27 @@ describe('App.MainHostDetailsController', function () {
     });
   });
 
+  describe('#installVersionConfirmation()', function () {
+
+    beforeEach(function () {
+      sinon.spy(App, "showConfirmationPopup");
+      sinon.stub(controller, 'installVersion', Em.K);
+    });
+    afterEach(function () {
+      App.showConfirmationPopup.restore();
+      controller.installVersion.restore();
+    });
+
+    it('confirm popup should be displayed', function () {
+      var event = {context: Em.Object.create({displayName: 'displayName'})};
+      var popup = controller.installVersionConfirmation(event);
+      expect(App.showConfirmationPopup.calledOnce).to.be.true;
+      popup.onPrimary();
+      expect(controller.installVersion.calledWith(event)).to.be.true;
+    });
+  });
+
+
   describe("#installVersion()", function() {
     it("call App.ajax.send", function() {
       controller.set('content.hostName', 'host1');
@@ -2305,9 +2326,13 @@ describe('App.MainHostDetailsController', function () {
   describe("#installVersionSuccessCallback()", function () {
     before(function () {
       this.mock = sinon.stub(App.HostStackVersion, 'find');
+      sinon.stub(App.db, 'set', Em.K);
+      sinon.stub(App.clusterStatus, 'setClusterStatus', Em.K);
     });
     after(function () {
       this.mock.restore();
+      App.db.set.restore();
+      App.clusterStatus.setClusterStatus.restore();
     });
     it("", function () {
       var version = Em.Object.create({
@@ -2315,8 +2340,10 @@ describe('App.MainHostDetailsController', function () {
         status: 'INIT'
       });
       this.mock.returns(version);
-      controller.installVersionSuccessCallback({}, {}, {version: version});
+      controller.installVersionSuccessCallback({Requests:{id: 1}}, {}, {version: version});
       expect(version.get('status')).to.equal('INSTALLING');
+      expect(App.db.set.calledWith('repoVersionInstall', 'id', [1])).to.be.true;
+      expect(App.clusterStatus.setClusterStatus.calledOnce).to.be.true;
     });
   });
 });

http://git-wip-us.apache.org/repos/asf/ambari/blob/731fe266/ambari-web/test/models/host_stack_version_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/models/host_stack_version_test.js b/ambari-web/test/models/host_stack_version_test.js
index 3086db9..702e284 100644
--- a/ambari-web/test/models/host_stack_version_test.js
+++ b/ambari-web/test/models/host_stack_version_test.js
@@ -127,4 +127,24 @@ describe('App.HostStackVersion', function () {
       expect(App.HostStackVersion.find(1).get('isCurrent')).to.be.false;
     });
   });
+
+  describe("#isInstalling", function () {
+    afterEach(function () {
+      App.HostStackVersion.find().clear();
+    });
+    it("status is INSTALLING", function () {
+      App.store.load(App.HostStackVersion, {
+        id: 1,
+        status: 'INSTALLING'
+      });
+      expect(App.HostStackVersion.find(1).get('isInstalling')).to.be.true;
+    });
+    it("status is not INSTALLING", function () {
+      App.store.load(App.HostStackVersion, {
+        id: 1,
+        status: 'INSTALLED'
+      });
+      expect(App.HostStackVersion.find(1).get('isInstalling')).to.be.false;
+    });
+  });
 });