Repository: ambari
Updated Branches:
  refs/heads/trunk e9d39f951 -> 59fa68e77


AMBARI-8653 UI integration with the BE - install repo versions on hosts from 
admin tab. (ababiichuk)


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

Branch: refs/heads/trunk
Commit: 59fa68e77e90141647538775f81dc5aff57f22ac
Parents: e9d39f9
Author: aBabiichuk <ababiic...@cybervisiontech.com>
Authored: Thu Dec 11 12:53:06 2014 +0200
Committer: aBabiichuk <ababiic...@cybervisiontech.com>
Committed: Thu Dec 11 12:53:06 2014 +0200

----------------------------------------------------------------------
 .../data/stack_versions/stack_version_all.json  | 479 +++++++++++++++++--
 .../stack_versions/repo_versions_controller.js  |  59 ++-
 .../stack_version_details_controller.js         |  64 +--
 .../stack_versions/stack_versions_controller.js |  39 +-
 ambari-web/app/mappers/stack_version_mapper.js  |   2 +-
 ambari-web/app/models/stack_version/version.js  |   4 +
 ambari-web/app/styles/application.less          |   2 +-
 .../stack_versions/stack_version_details.hbs    |   4 +-
 ambari-web/app/views/common/filter_view.js      |   5 +
 .../admin/stack_versions/repo_version_view.js   |  23 +-
 .../stack_version_details_view.js               |   9 +-
 .../admin/stack_versions/stack_version_view.js  |  26 +-
 .../repo_versions_controller_test.js            |  29 +-
 .../stack_version_details_controller_test.js    |  33 +-
 .../stack_versions_controller_test.js           |  55 +++
 15 files changed, 669 insertions(+), 164 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/59fa68e7/ambari-web/app/assets/data/stack_versions/stack_version_all.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/stack_versions/stack_version_all.json 
b/ambari-web/app/assets/data/stack_versions/stack_version_all.json
index 314d909..b7ea2b0 100644
--- a/ambari-web/app/assets/data/stack_versions/stack_version_all.json
+++ b/ambari-web/app/assets/data/stack_versions/stack_version_all.json
@@ -1,66 +1,447 @@
 {
-  "items" : [
+  "href": 
"http://162.216.149.241:8080/api/v1/clusters/1/stack_versions?fields=*,repository_versions/*,repository_versions/operatingSystems/*";,
+  "items": [
     {
-      "ClusterStackVersions" : {
-        "cluster_name" : "c1",
-        "id" : 1,
-        "stack" : "HDP",
-        "state" : "CURRENT",
-        "version" : "2.2",
-        "host_states" : {
-          "CURRENT" : [
-            "dev01.hortonworks.com"
+      "href": "http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/1";,
+      "ClusterStackVersions": {
+        "cluster_name": "1",
+        "id": 1,
+        "repository_version": 1,
+        "stack": "HDP",
+        "state": "CURRENT",
+        "version": "2.2",
+        "host_states": {
+          "CURRENT": [
+            "ab3test-4.c.pramod-thangali.internal"
           ],
-          "INSTALLED" : [ ],
-          "INSTALLING" : [ ],
-          "INSTALL_FAILED" : [ ],
-          "UPGRADED" : [ ],
-          "UPGRADE_FAILED" : [ ],
-          "UPGRADING" : [ ]
+          "INSTALLED": [],
+          "INSTALLING": [],
+          "INSTALL_FAILED": [],
+          "UPGRADED": [],
+          "UPGRADE_FAILED": [],
+          "UPGRADING": []
         }
       },
-      "repository_versions" : [
+      "repository_versions": [
         {
-          "RepositoryVersions" : {
-            "display_name" : "HDP-2.2",
-            "id" : 1,
-            "repository_version" : "2.2",
-            "stack_name" : "HDP",
-            "stack_version" : "2.2",
-            "upgrade_pack" : ""
-          }
+          "href": 
"http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/1/repository_versions/1";,
+          "RepositoryVersions": {
+            "display_name": "HDP-2.2",
+            "id": 1,
+            "repository_version": "2.2",
+            "stack_name": "HDP",
+            "stack_version": "2.2",
+            "upgrade_pack": ""
+          },
+          "operating_systems": []
         }
       ]
     },
     {
-      "ClusterStackVersions" : {
-        "cluster_name" : "c1",
-        "id" : 2,
-        "stack" : "HDP",
-        "state" : "INSTALLED",
-        "version" : "2.2",
-        "host_states" : {
-          "CURRENT" : [ ],
-          "INSTALLED" : [
-            "dev01.hortonworks.com"
+      "href": "http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/2";,
+      "ClusterStackVersions": {
+        "cluster_name": "1",
+        "id": 2,
+        "repository_version": 2,
+        "stack": "HDP",
+        "state": "INSTALLED",
+        "version": "2.2",
+        "host_states": {
+          "CURRENT": [],
+          "INSTALLED": [
+            "ab3test-4.c.pramod-thangali.internal"
           ],
-          "INSTALLING" : [ ],
-          "INSTALL_FAILED" : [ ],
-          "UPGRADED" : [ ],
-          "UPGRADE_FAILED" : [ ],
-          "UPGRADING" : [ ]
+          "INSTALLING": [],
+          "INSTALL_FAILED": [],
+          "UPGRADED": [],
+          "UPGRADE_FAILED": [],
+          "UPGRADING": []
         }
       },
-      "repository_versions" : [
+      "repository_versions": [
         {
-          "RepositoryVersions" : {
-            "display_name" : "HDP-2.2.0.1-885",
-            "id" : 3,
-            "repository_version" : "2.2.0.1-885",
-            "stack_name" : "HDP",
-            "stack_version" : "2.2",
-            "upgrade_pack" : "upgrade-2.2"
-          }
+          "href": 
"http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/2/repository_versions/2";,
+          "RepositoryVersions": {
+            "display_name": "HDP 2.2.0",
+            "id": 2,
+            "repository_version": "2.2.0.1-885",
+            "stack_name": "HDP",
+            "stack_version": "2.2",
+            "upgrade_pack": "upgrade-2.2"
+          },
+          "operating_systems": [
+            {
+              "href": 
"http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/2/repository_versions/2/operating_systems/redhat6";,
+              "OperatingSystems": {
+                "os_type": "redhat6",
+                "repository_version_id": 2,
+                "stack_name": "HDP",
+                "stack_version": "2.2"
+              },
+              "repositories": [
+                {
+                  "href": 
"http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/2/repository_versions/2/operating_systems/redhat6/repositories/HDP-2.2";,
+                  "Repositories": {
+                    "os_type": "redhat6",
+                    "repo_id": "HDP-2.2",
+                    "repository_version_id": 2,
+                    "stack_name": "HDP",
+                    "stack_version": "2.2"
+                  }
+                },
+                {
+                  "href": 
"http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/2/repository_versions/2/operating_systems/redhat6/repositories/HDP-UTILS-1.1.0.20";,
+                  "Repositories": {
+                    "os_type": "redhat6",
+                    "repo_id": "HDP-UTILS-1.1.0.20",
+                    "repository_version_id": 2,
+                    "stack_name": "HDP",
+                    "stack_version": "2.2"
+                  }
+                }
+              ]
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "href": "http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/3";,
+      "ClusterStackVersions": {
+        "cluster_name": "1",
+        "id": 3,
+        "repository_version": 3,
+        "stack": "HDP",
+        "state": "INSTALLED",
+        "version": "2.2",
+        "host_states": {
+          "CURRENT": [],
+          "INSTALLED": [
+            "ab3test-4.c.pramod-thangali.internal"
+          ],
+          "INSTALLING": [],
+          "INSTALL_FAILED": [],
+          "UPGRADED": [],
+          "UPGRADE_FAILED": [],
+          "UPGRADING": []
+        }
+      },
+      "repository_versions": [
+        {
+          "href": 
"http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/3/repository_versions/3";,
+          "RepositoryVersions": {
+            "display_name": "HDP 2.2.1",
+            "id": 3,
+            "repository_version": "2.2.1.1-885",
+            "stack_name": "HDP",
+            "stack_version": "2.2",
+            "upgrade_pack": "upgrade-2.2"
+          },
+          "operating_systems": [
+            {
+              "href": 
"http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/3/repository_versions/3/operating_systems/redhat6";,
+              "OperatingSystems": {
+                "os_type": "redhat6",
+                "repository_version_id": 3,
+                "stack_name": "HDP",
+                "stack_version": "2.2"
+              },
+              "repositories": [
+                {
+                  "href": 
"http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/3/repository_versions/3/operating_systems/redhat6/repositories/HDP-2.2";,
+                  "Repositories": {
+                    "os_type": "redhat6",
+                    "repo_id": "HDP-2.2",
+                    "repository_version_id": 3,
+                    "stack_name": "HDP",
+                    "stack_version": "2.2"
+                  }
+                },
+                {
+                  "href": 
"http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/3/repository_versions/3/operating_systems/redhat6/repositories/HDP-UTILS-1.1.0.20";,
+                  "Repositories": {
+                    "os_type": "redhat6",
+                    "repo_id": "HDP-UTILS-1.1.0.20",
+                    "repository_version_id": 3,
+                    "stack_name": "HDP",
+                    "stack_version": "2.2"
+                  }
+                }
+              ]
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "href": "http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/4";,
+      "ClusterStackVersions": {
+        "cluster_name": "1",
+        "id": 4,
+        "repository_version": 4,
+        "stack": "HDP",
+        "state": "INSTALLED",
+        "version": "2.2",
+        "host_states": {
+          "CURRENT": [],
+          "INSTALLED": [
+            "ab3test-4.c.pramod-thangali.internal"
+          ],
+          "INSTALLING": [],
+          "INSTALL_FAILED": [],
+          "UPGRADED": [],
+          "UPGRADE_FAILED": [],
+          "UPGRADING": []
+        }
+      },
+      "repository_versions": [
+        {
+          "href": 
"http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/4/repository_versions/4";,
+          "RepositoryVersions": {
+            "display_name": "HDP 2.2.2",
+            "id": 4,
+            "repository_version": "2.2.2.1-885",
+            "stack_name": "HDP",
+            "stack_version": "2.2",
+            "upgrade_pack": "upgrade-2.2"
+          },
+          "operating_systems": [
+            {
+              "href": 
"http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/4/repository_versions/4/operating_systems/redhat6";,
+              "OperatingSystems": {
+                "os_type": "redhat6",
+                "repository_version_id": 4,
+                "stack_name": "HDP",
+                "stack_version": "2.2"
+              },
+              "repositories": [
+                {
+                  "href": 
"http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/4/repository_versions/4/operating_systems/redhat6/repositories/HDP-2.2";,
+                  "Repositories": {
+                    "os_type": "redhat6",
+                    "repo_id": "HDP-2.2",
+                    "repository_version_id": 4,
+                    "stack_name": "HDP",
+                    "stack_version": "2.2"
+                  }
+                },
+                {
+                  "href": 
"http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/4/repository_versions/4/operating_systems/redhat6/repositories/HDP-UTILS-1.1.0.20";,
+                  "Repositories": {
+                    "os_type": "redhat6",
+                    "repo_id": "HDP-UTILS-1.1.0.20",
+                    "repository_version_id": 4,
+                    "stack_name": "HDP",
+                    "stack_version": "2.2"
+                  }
+                }
+              ]
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "href": "http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/5";,
+      "ClusterStackVersions": {
+        "cluster_name": "1",
+        "id": 5,
+        "repository_version": 5,
+        "stack": "HDP",
+        "state": "INSTALLED",
+        "version": "2.2",
+        "host_states": {
+          "CURRENT": [],
+          "INSTALLED": [
+            "ab3test-4.c.pramod-thangali.internal"
+          ],
+          "INSTALLING": [],
+          "INSTALL_FAILED": [],
+          "UPGRADED": [],
+          "UPGRADE_FAILED": [],
+          "UPGRADING": []
+        }
+      },
+      "repository_versions": [
+        {
+          "href": 
"http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/5/repository_versions/5";,
+          "RepositoryVersions": {
+            "display_name": "HDP 2.2.3",
+            "id": 5,
+            "repository_version": "2.2.3.1-885",
+            "stack_name": "HDP",
+            "stack_version": "2.2",
+            "upgrade_pack": "upgrade-2.2"
+          },
+          "operating_systems": [
+            {
+              "href": 
"http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/5/repository_versions/5/operating_systems/redhat6";,
+              "OperatingSystems": {
+                "os_type": "redhat6",
+                "repository_version_id": 5,
+                "stack_name": "HDP",
+                "stack_version": "2.2"
+              },
+              "repositories": [
+                {
+                  "href": 
"http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/5/repository_versions/5/operating_systems/redhat6/repositories/HDP-2.2";,
+                  "Repositories": {
+                    "os_type": "redhat6",
+                    "repo_id": "HDP-2.2",
+                    "repository_version_id": 5,
+                    "stack_name": "HDP",
+                    "stack_version": "2.2"
+                  }
+                },
+                {
+                  "href": 
"http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/5/repository_versions/5/operating_systems/redhat6/repositories/HDP-UTILS-1.1.0.20";,
+                  "Repositories": {
+                    "os_type": "redhat6",
+                    "repo_id": "HDP-UTILS-1.1.0.20",
+                    "repository_version_id": 5,
+                    "stack_name": "HDP",
+                    "stack_version": "2.2"
+                  }
+                }
+              ]
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "href": "http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/6";,
+      "ClusterStackVersions": {
+        "cluster_name": "1",
+        "id": 6,
+        "repository_version": 6,
+        "stack": "HDP",
+        "state": "INSTALLED",
+        "version": "2.2",
+        "host_states": {
+          "CURRENT": [],
+          "INSTALLED": [
+            "ab3test-4.c.pramod-thangali.internal"
+          ],
+          "INSTALLING": [],
+          "INSTALL_FAILED": [],
+          "UPGRADED": [],
+          "UPGRADE_FAILED": [],
+          "UPGRADING": []
+        }
+      },
+      "repository_versions": [
+        {
+          "href": 
"http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/6/repository_versions/6";,
+          "RepositoryVersions": {
+            "display_name": "HDP 2.2.4",
+            "id": 6,
+            "repository_version": "2.2.4.1-885",
+            "stack_name": "HDP",
+            "stack_version": "2.2",
+            "upgrade_pack": "upgrade-2.2"
+          },
+          "operating_systems": [
+            {
+              "href": 
"http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/6/repository_versions/6/operating_systems/redhat6";,
+              "OperatingSystems": {
+                "os_type": "redhat6",
+                "repository_version_id": 6,
+                "stack_name": "HDP",
+                "stack_version": "2.2"
+              },
+              "repositories": [
+                {
+                  "href": 
"http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/6/repository_versions/6/operating_systems/redhat6/repositories/HDP-2.2";,
+                  "Repositories": {
+                    "os_type": "redhat6",
+                    "repo_id": "HDP-2.2",
+                    "repository_version_id": 6,
+                    "stack_name": "HDP",
+                    "stack_version": "2.2"
+                  }
+                },
+                {
+                  "href": 
"http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/6/repository_versions/6/operating_systems/redhat6/repositories/HDP-UTILS-1.1.0.20";,
+                  "Repositories": {
+                    "os_type": "redhat6",
+                    "repo_id": "HDP-UTILS-1.1.0.20",
+                    "repository_version_id": 6,
+                    "stack_name": "HDP",
+                    "stack_version": "2.2"
+                  }
+                }
+              ]
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "href": "http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/7";,
+      "ClusterStackVersions": {
+        "cluster_name": "1",
+        "id": 7,
+        "repository_version": 7,
+        "stack": "HDP",
+        "state": "INSTALLED",
+        "version": "2.2",
+        "host_states": {
+          "CURRENT": [],
+          "INSTALLED": [
+            "ab3test-4.c.pramod-thangali.internal"
+          ],
+          "INSTALLING": [],
+          "INSTALL_FAILED": [],
+          "UPGRADED": [],
+          "UPGRADE_FAILED": [],
+          "UPGRADING": []
+        }
+      },
+      "repository_versions": [
+        {
+          "href": 
"http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/7/repository_versions/7";,
+          "RepositoryVersions": {
+            "display_name": "HDP 2.2.5",
+            "id": 7,
+            "repository_version": "2.2.5.1-885",
+            "stack_name": "HDP",
+            "stack_version": "2.2",
+            "upgrade_pack": "upgrade-2.2"
+          },
+          "operating_systems": [
+            {
+              "href": 
"http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/7/repository_versions/7/operating_systems/redhat6";,
+              "OperatingSystems": {
+                "os_type": "redhat6",
+                "repository_version_id": 7,
+                "stack_name": "HDP",
+                "stack_version": "2.2"
+              },
+              "repositories": [
+                {
+                  "href": 
"http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/7/repository_versions/7/operating_systems/redhat6/repositories/HDP-2.2";,
+                  "Repositories": {
+                    "os_type": "redhat6",
+                    "repo_id": "HDP-2.2",
+                    "repository_version_id": 7,
+                    "stack_name": "HDP",
+                    "stack_version": "2.2"
+                  }
+                },
+                {
+                  "href": 
"http://162.216.149.241:8080/api/v1/clusters/1/stack_versions/7/repository_versions/7/operating_systems/redhat6/repositories/HDP-UTILS-1.1.0.20";,
+                  "Repositories": {
+                    "os_type": "redhat6",
+                    "repo_id": "HDP-UTILS-1.1.0.20",
+                    "repository_version_id": 7,
+                    "stack_name": "HDP",
+                    "stack_version": "2.2"
+                  }
+                }
+              ]
+            }
+          ]
         }
       ]
     }

http://git-wip-us.apache.org/repos/asf/ambari/blob/59fa68e7/ambari-web/app/controllers/main/admin/stack_versions/repo_versions_controller.js
----------------------------------------------------------------------
diff --git 
a/ambari-web/app/controllers/main/admin/stack_versions/repo_versions_controller.js
 
b/ambari-web/app/controllers/main/admin/stack_versions/repo_versions_controller.js
index 3204249..9b95941 100644
--- 
a/ambari-web/app/controllers/main/admin/stack_versions/repo_versions_controller.js
+++ 
b/ambari-web/app/controllers/main/admin/stack_versions/repo_versions_controller.js
@@ -24,14 +24,31 @@ App.RepoVersionsController = Em.ArrayController.extend({
   content: function () {
     return App.RepositoryVersion.find().filterProperty('stackVersion', null);
   }.property('dataIsLoaded'),
+
+  /**
+   * true if content is loaded to model
+   * @type {Boolean}
+   */
   dataIsLoaded: false,
+
+  /**
+   * path to the mock json
+   * @type {String}
+   */
   mockUrl: '/data/stack_versions/repo_versions_all.json',
+
+  /**
+   * api to get RepoVersions
+   * @type {String}
+   */
   realUrl: function () {
     return App.get('apiPrefix') + App.get('stackVersionURL') + 
'/repository_versions?fields=*,operatingSystems/*,operatingSystems/repositories/*';
   }.property('App.stackVersionURL'),
+
   /**
    * load all data components required by repo version table
    * @return {*}
+   * @method load()
    */
   load: function () {
     this.set('dataIsLoaded', false);
@@ -47,12 +64,14 @@ App.RepoVersionsController = Em.ArrayController.extend({
   /**
    * get repo versions from server and push it to model
    * @return {*}
+   * @params {Boolean} isUpdate - if true loads part of data that need to be 
updated
+   * @method loadRepoVersionsToModel()
    */
-  loadRepoVersionsToModel: function (isUpdate) {
+  loadRepoVersionsToModel: function () {
     var dfd = $.Deferred();
     var self = this;
     
App.get('router.mainStackVersionsController').loadStackVersionsToModel().done(function
 () {
-      App.HttpClient.get(self.getUrl(isUpdate), App.repoVersionMapper, {
+      App.HttpClient.get(self.getUrl(), App.repoVersionMapper, {
         complete: function () {
           dfd.resolve();
         }
@@ -62,11 +81,23 @@ App.RepoVersionsController = Em.ArrayController.extend({
     return dfd.promise();
   },
 
-  getUrl: function (isUpdate) {
-    return App.get('testMode') ? this.get('mockUrl') :
-      isUpdate ? this.get('realUpdateUrl') : this.get('realUrl');
+  /**
+   * returns api url to get repositoryVersion
+   * or mock json if testmode is on
+   * @returns {String}
+   * @method getUrl
+   */
+  getUrl: function () {
+    return App.get('testMode') ? this.get('mockUrl') : this.get('realUrl');
   },
 
+  /**
+   * sends request to install repoVersion to the cluster
+   * and create clusterStackVersion resourse
+   * @param event
+   * @return {$.ajax}
+   * @method installRepoVersion
+   */
   installRepoVersion: function (event) {
     var repo = event.context;
     var data = {
@@ -77,7 +108,7 @@ App.RepoVersionsController = Em.ArrayController.extend({
       },
       id: repo.get('id')
     };
-    App.ajax.send({
+    return App.ajax.send({
       name: 'admin.stack_version.install.repo_version',
       sender: this,
       data: data,
@@ -85,8 +116,20 @@ App.RepoVersionsController = Em.ArrayController.extend({
     });
   },
 
+  /**
+   * success callback for <code>installRepoVersion()<code>
+   * saves request id to the db, and redirect user to the just
+   * created clusterStackVersion.
+   * @param data
+   * @param opt
+   * @param params
+   * @method installStackVersionSuccess
+   */
   installStackVersionSuccess: function (data, opt, params) {
-    var stackVersion = 
App.StackVersion.find().findProperty('repositoryVersion.id', params.id);
-    App.router.transitionTo('main.admin.adminStackVersions.version', 
stackVersion);
+    App.db.set('stackUpgrade', 'id', [data.Requests.id]);
+    
App.get('router.mainStackVersionsController').loadStackVersionsToModel().done(function()
 {
+      var stackVersion = 
App.StackVersion.find().findProperty('repositoryVersion.id', params.id);
+      App.router.transitionTo('main.admin.adminStackVersions.version', 
stackVersion);
+    });
   }
 });

http://git-wip-us.apache.org/repos/asf/ambari/blob/59fa68e7/ambari-web/app/controllers/main/admin/stack_versions/stack_version_details_controller.js
----------------------------------------------------------------------
diff --git 
a/ambari-web/app/controllers/main/admin/stack_versions/stack_version_details_controller.js
 
b/ambari-web/app/controllers/main/admin/stack_versions/stack_version_details_controller.js
index ddcec11..faf56c3 100644
--- 
a/ambari-web/app/controllers/main/admin/stack_versions/stack_version_details_controller.js
+++ 
b/ambari-web/app/controllers/main/admin/stack_versions/stack_version_details_controller.js
@@ -23,63 +23,39 @@ App.MainStackVersionsDetailsController = 
Em.Controller.extend({
 
   content: null,
 
+  /**
+   * amount of all hosts installed on cluster
+   * @type {Number}
+   */
   totalHostCount: function() {
     return App.get('allHostNames.length');
   }.property('App.allHostNames.length'),
 
-
-  notInstalledHostsCount: function() {
-    return this.get('content.state') == 'INIT' ? 
this.get('totalHostCount.length') : 0;
-  }.property('content.state', 'totalHostCount.length'),
-
-  noInitHosts: function() {
-    return this.get('notInstalledHostsCount.length') == 0;
-  }.property('notInstalledHostsCount.length'),
   /**
    * true if stack version install is in progress
-   * {Boolean}
+   * @type {Boolean}
    */
   installInProgress: function() {
     return this.get('content.state') == "INSTALLING";
   }.property('content.state'),
 
   /**
-   * true if stack version upgrade is in progress
-   * {Boolean}
-   */
-  upgradeInProgress: function() {
-    return this.get('content.state') == "UPGRADING";
-  }.property('content.state'),
-
-  /**
    * true if repo version is installed on all hosts but not upgraded
-   * {Boolean}
+   * @type {Boolean}
    */
   installedNotUpgraded: function() {
-    return this.get("allInstalled") && !this.get("allUpgraded") ;
-  }.property("allInstalled", "allUpgraded"),
-
-  allInstalled: function() {
-    return this.get('content.installedHosts.length') == 
this.get('totalHostCount') ||
-      this.get('content.currentHosts.length') == this.get('totalHostCount');
-  }.property('content.installedHosts.length', 'content.currentHosts.length'),
+    return this.get('content.state') == "INSTALLED";
+  }.property('content.state'),
 
-  allUpgraded: function() {
-    return this.get('content.upgradedHosts.length') == 
this.get('totalHostCount') ||
-      this.get('content.currentHosts.length') == this.get('totalHostCount');
-  }.property('content.upgradedHosts.length', 'content.currentHosts.length'),
 
   /**
    * depending on state run or install repo request
    * or show the installation process popup
-   * @param event
    * @method installStackVersion
    */
-  installStackVersion: function(event) {
+  installStackVersion: function() {
     if (this.get('installInProgress')) {
       this.showProgressPopup();
-    } else if (!this.get('allInstalled')) {
-      this.doInstallStackVersion(event.context);
     }
   },
 
@@ -91,26 +67,6 @@ App.MainStackVersionsDetailsController = 
Em.Controller.extend({
     var popupTitle = 
Em.I18n.t('admin.stackVersions.datails.install.hosts.popup.title').format(this.get('content.repositoryVersion.displayName'));
     var requestIds = App.get('testMode') ? [1] : App.db.get('stackUpgrade', 
'id');
     var hostProgressPopupController = 
App.router.get('highAvailabilityProgressPopupController');
-    hostProgressPopupController.initPopup(popupTitle, requestIds, this, true);
-  },
-
-  /**
-   * runs request to install repo version
-   * @param stackVersion
-   * @returns {*|$.ajax}
-   * @method doInstallStackVersion
-   */
-  doInstallStackVersion: function(stackVersion) {
-    //TODO add correct request
-    return null;
-    /*return App.ajax.send({
-      name: 'admin.stack_version.install.repo_version',
-      data: data,
-      success: 'installStackVersionSuccess'
-    })*/
-  },
-
-  installStackVersionSuccess: function(data) {
-    App.db.set('stackUpgrade', 'id', [data.id]);
+    hostProgressPopupController.initPopup(popupTitle, requestIds, this);
   }
 });

http://git-wip-us.apache.org/repos/asf/ambari/blob/59fa68e7/ambari-web/app/controllers/main/admin/stack_versions/stack_versions_controller.js
----------------------------------------------------------------------
diff --git 
a/ambari-web/app/controllers/main/admin/stack_versions/stack_versions_controller.js
 
b/ambari-web/app/controllers/main/admin/stack_versions/stack_versions_controller.js
index 3f6e713..6d294ee 100644
--- 
a/ambari-web/app/controllers/main/admin/stack_versions/stack_versions_controller.js
+++ 
b/ambari-web/app/controllers/main/admin/stack_versions/stack_versions_controller.js
@@ -25,17 +25,32 @@ App.MainStackVersionsController = 
Em.ArrayController.extend({
   timeoutRef: null,
   isPolling: false,
   dataIsLoaded: false,
+
+  /**
+   *  path to the mock json
+   * @type {String}
+   */
   mockUrl: '/data/stack_versions/stack_version_all.json',
+
+  /**
+   * api to get ClusterStackVersions with repository_versions (use to init 
data load)
+   * @type {String}
+   */
   realUrl: function () {
     return App.apiPrefix + '/clusters/' + App.get('clusterName') + 
'/stack_versions?fields=*,repository_versions/*,repository_versions/operatingSystems/repositories/*';
   }.property('App.clusterName'),
+
+  /**
+   * api to get ClusterStackVersions without repository_versions (use to 
update data)
+   * @type {String}
+   */
   realUpdateUrl: function () {
     return App.apiPrefix + '/clusters/' + App.get('clusterName') + 
'/stack_versions?fields=ClusterStackVersions/*';
-    //TODO return App.apiPrefix + '/clusters/' + App.get('clusterName') + 
'/stack_versions?fields=ClusterStackVersions/state,ClusterStackVersions/host_states&minimal_response=true';
   }.property('App.clusterName'),
 
   /**
    * request latest data from server and update content
+   * @method doPolling
    */
   doPolling: function () {
     var self = this;
@@ -51,6 +66,7 @@ App.MainStackVersionsController = Em.ArrayController.extend({
   /**
    * load all data components required by stack version table
    * @return {*}
+   * @method load
    */
   load: function () {
     var dfd = $.Deferred();
@@ -65,6 +81,7 @@ App.MainStackVersionsController = Em.ArrayController.extend({
   /**
    * get stack versions from server and push it to model
    * @return {*}
+   * @method loadStackVersionsToModel
    */
   loadStackVersionsToModel: function (isUpdate) {
     var dfd = $.Deferred();
@@ -77,11 +94,25 @@ App.MainStackVersionsController = 
Em.ArrayController.extend({
     return dfd.promise();
   },
 
+  /**
+   * returns api url to get clusteStackVersion wirh repositoryVersion
+   * or just clustrerStackVersion if only updates are requested
+   * or mock json if testmode is on
+   * @param isUpdate true if data needs to be updated
+   * @returns {String}
+   * @method getUrl
+   */
   getUrl: function (isUpdate) {
     return App.get('testMode') ? this.get('mockUrl') :
       isUpdate ? this.get('realUpdateUrl') : this.get('realUrl');
   },
 
+  /**
+   * goes to the hosts page with content filtered by repo_version_name and 
repo_version_state
+   * @param version
+   * @param state
+   * @method filterHostsByStack
+   */
   filterHostsByStack: function (version, state) {
     if (!version || !state)
       return;
@@ -90,6 +121,12 @@ App.MainStackVersionsController = 
Em.ArrayController.extend({
     App.router.transitionTo('hosts.index');
   },
 
+  /**
+   * shows popup with listed hosts wich has current state of hostStackVersion
+   * @param event
+   * @returns {*|void}
+   * @method showHosts
+   */
   showHosts: function(event) {
     var self = this;
     var status = event.currentTarget.title.toCapital();

http://git-wip-us.apache.org/repos/asf/ambari/blob/59fa68e7/ambari-web/app/mappers/stack_version_mapper.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mappers/stack_version_mapper.js 
b/ambari-web/app/mappers/stack_version_mapper.js
index c8169ba..0de41ba 100644
--- a/ambari-web/app/mappers/stack_version_mapper.js
+++ b/ambari-web/app/mappers/stack_version_mapper.js
@@ -46,9 +46,9 @@ App.stackVersionMapper = App.QuickDataMapper.create({
         stack.repository_version_id = 
item.ClusterStackVersions.repository_version;
         if (item.repository_versions && item.repository_versions[0]) {
           item.repository_versions[0].RepositoryVersions.stackVersionId = 
item.ClusterStackVersions.id;
-          resultStack.push(this.parseIt(stack, this.get('modelStack')));
           App.repoVersionMapper.map({"items": item.repository_versions }, 
true);
         }
+        resultStack.push(this.parseIt(stack, this.get('modelStack')));
       }, this);
     }
     App.store.commit();

http://git-wip-us.apache.org/repos/asf/ambari/blob/59fa68e7/ambari-web/app/models/stack_version/version.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/stack_version/version.js 
b/ambari-web/app/models/stack_version/version.js
index b4ed9ff..6f718ea 100644
--- a/ambari-web/app/models/stack_version/version.js
+++ b/ambari-web/app/models/stack_version/version.js
@@ -42,6 +42,10 @@ App.StackVersion = DS.Model.extend({
 
   noCurrentHosts: function() {
     return this.get('currentHosts.length') == 0;
+  }.property('currentHosts.length'),
+
+  noInstallFailedHosts: function() {
+    return this.get('installFailedHosts.length') == 0;
   }.property('currentHosts.length')
 });
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/59fa68e7/ambari-web/app/styles/application.less
----------------------------------------------------------------------
diff --git a/ambari-web/app/styles/application.less 
b/ambari-web/app/styles/application.less
index 7ac2ea8..b6809bb 100644
--- a/ambari-web/app/styles/application.less
+++ b/ambari-web/app/styles/application.less
@@ -5031,7 +5031,7 @@ ul.inline li {
     td:first-child + td + td {
       width: 20%;
       word-wrap: break-word;
-      input.filter-input-width{
+      select.filter-input-width{
         width: 75%;
       }
     }

http://git-wip-us.apache.org/repos/asf/ambari/blob/59fa68e7/ambari-web/app/templates/main/admin/stack_versions/stack_version_details.hbs
----------------------------------------------------------------------
diff --git 
a/ambari-web/app/templates/main/admin/stack_versions/stack_version_details.hbs 
b/ambari-web/app/templates/main/admin/stack_versions/stack_version_details.hbs
index 694219b..5696a77 100644
--- 
a/ambari-web/app/templates/main/admin/stack_versions/stack_version_details.hbs
+++ 
b/ambari-web/app/templates/main/admin/stack_versions/stack_version_details.hbs
@@ -46,8 +46,8 @@
             <div class="span3">{{t 
admin.stackVersions.datails.not.installed.on}}</div>
             <div {{bindAttr class="noInitHosts:not-active-link :span6"}}>
               <a href="#" title='current' class="not-installed-hosts-count"
-                {{action showHosts content.repositoryVersion.displayName 
content.notInstalledHosts target="App.router.mainStackVersionsController"}}>
-                {{notInstalledHostsCount}}/{{totalHostCount}}
+                {{action showHosts content.repositoryVersion.displayName 
content.noInstallFailedHosts target="App.router.mainStackVersionsController"}}>
+                {{content.installFailedHosts.length}}/{{totalHostCount}}
               </a>
             </div>
           </div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/59fa68e7/ambari-web/app/views/common/filter_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/filter_view.js 
b/ambari-web/app/views/common/filter_view.js
index bdfea3d..e3503bc 100644
--- a/ambari-web/app/views/common/filter_view.js
+++ b/ambari-web/app/views/common/filter_view.js
@@ -581,6 +581,11 @@ module.exports = {
           return origin == compareValue;
         };
         break;
+      case 'os':
+        return function (origin, compareValue) {
+          return origin.getEach('osType').contains(compareValue)
+        };
+        break;
       case 'range':
         return function (origin, compareValue) {
           if (compareValue[1] && compareValue[0]) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/59fa68e7/ambari-web/app/views/main/admin/stack_versions/repo_version_view.js
----------------------------------------------------------------------
diff --git 
a/ambari-web/app/views/main/admin/stack_versions/repo_version_view.js 
b/ambari-web/app/views/main/admin/stack_versions/repo_version_view.js
index c613a35..1031c9e 100644
--- a/ambari-web/app/views/main/admin/stack_versions/repo_version_view.js
+++ b/ambari-web/app/views/main/admin/stack_versions/repo_version_view.js
@@ -62,8 +62,9 @@ App.RepoVersionsView = App.TableView.extend({
   }),
   osSort: sort.fieldView.extend({
     column: 3,
-    name: 'operatingSystems',
-    displayName: Em.I18n.t('admin.stackVersions.table.header.os')
+    name: 'operatingSystems.length',
+    displayName: Em.I18n.t('admin.stackVersions.table.header.os'),
+    type: 'number'
   }),
 
   repoNameFilterView: filters.createSelectView({
@@ -96,11 +97,25 @@ App.RepoVersionsView = App.TableView.extend({
     }
   }),
 
-  osFilterView: filters.createTextView({
+  osFilterView: filters.createSelectView({
     column: 3,
     fieldType: 'filter-input-width',
+    content: function () {
+      var names = App.OS.find().mapProperty('osType').uniq();
+      return [
+        {
+          value: '',
+          label: Em.I18n.t('common.all')
+        }
+      ].concat(names.map(function (name) {
+          return {
+            value: name,
+            label: name
+          }
+        }));
+    }.property('App.router.mainStackVersionsController.dataIsLoaded'),
     onChangeValue: function () {
-      this.get('parentView').updateFilter(this.get('column'), 
this.get('value'), 'string');
+      this.get('parentView').updateFilter(this.get('column'), 
this.get('value'), 'os');
     }
   }),
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/59fa68e7/ambari-web/app/views/main/admin/stack_versions/stack_version_details_view.js
----------------------------------------------------------------------
diff --git 
a/ambari-web/app/views/main/admin/stack_versions/stack_version_details_view.js 
b/ambari-web/app/views/main/admin/stack_versions/stack_version_details_view.js
index eed0f6c..4cdcac5 100644
--- 
a/ambari-web/app/views/main/admin/stack_versions/stack_version_details_view.js
+++ 
b/ambari-web/app/views/main/admin/stack_versions/stack_version_details_view.js
@@ -27,7 +27,7 @@ App.MainStackVersionsDetailsView = Em.View.extend({
   }.property('controller.content'),
   /**
    * text on install buttons
-   * {String}
+   * @type {String}
    */
   stackTextStatus: function() {
     var self = this;
@@ -39,20 +39,22 @@ App.MainStackVersionsDetailsView = Em.View.extend({
       case 'INSTALLED':
         return Em.I18n.t('admin.stackVersions.datails.hosts.btn.nothing');
         break;
+      //TODO remove INIT case if it would not be user
       case 'INIT':
         return 
Em.I18n.t('admin.stackVersions.datails.hosts.btn.install').format(self.get('totalHostCount')
 - self.get('content.installedHosts.length'));
         break;
       default:
         return self.get('content.state') && 
self.get('content.state').toCapital();
     }
-  }.property('content.state', 'content.notInstalledHostStacks.length'),
+  }.property('content.state'),
 
   /**
    * class on install buttons
-   * {String}
+   * @type {String}
    */
   statusClass: function() {
     switch (this.get('content.state')) {
+      //TODO remove INSTALL case if it would not be user
       case 'INSTALL':
         return 'btn-success';
         break;
@@ -70,7 +72,6 @@ App.MainStackVersionsDetailsView = Em.View.extend({
     App.get('router.mainStackVersionsController').doPolling();
   },
 
-
   willDestroyElement: function () {
     App.get('router.mainStackVersionsController').set('isPolling', false);
     clearTimeout(App.get('router.mainStackVersionsController.timeoutRef'));

http://git-wip-us.apache.org/repos/asf/ambari/blob/59fa68e7/ambari-web/app/views/main/admin/stack_versions/stack_version_view.js
----------------------------------------------------------------------
diff --git 
a/ambari-web/app/views/main/admin/stack_versions/stack_version_view.js 
b/ambari-web/app/views/main/admin/stack_versions/stack_version_view.js
index 1c14e37..41897fa 100644
--- a/ambari-web/app/views/main/admin/stack_versions/stack_version_view.js
+++ b/ambari-web/app/views/main/admin/stack_versions/stack_version_view.js
@@ -29,7 +29,7 @@ App.MainStackVersionsView = App.TableView.extend({
 
   /**
    * return filtered number of all content number information displayed on the 
page footer bar
-   * @returns {String}
+   * @type {String}
    */
   filteredContentInfo: function () {
     return 
this.t('tableView.filters.filteredConfigVersionInfo').format(this.get('filteredCount'),
 this.get('content.length'));
@@ -65,8 +65,9 @@ App.MainStackVersionsView = App.TableView.extend({
   }),
   osSort: sort.fieldView.extend({
     column: 3,
-    name: 'repositoryVersionoperatingSystems',
-    displayName: Em.I18n.t('admin.stackVersions.table.header.os')
+    name: 'repositoryVersion.operatingSystems.length',
+    displayName: Em.I18n.t('admin.stackVersions.table.header.os'),
+    type: 'number'
   }),
   installedSort: sort.fieldView.extend({
     column: 4,
@@ -111,11 +112,25 @@ App.MainStackVersionsView = App.TableView.extend({
     }
   }),
 
-  osFilterView: filters.createTextView({
+  osFilterView: filters.createSelectView({
     column: 3,
     fieldType: 'filter-input-width',
+    content: function () {
+      var names = App.OS.find().mapProperty('osType').uniq();
+      return [
+        {
+          value: '',
+          label: Em.I18n.t('common.all')
+        }
+      ].concat(names.map(function (name) {
+          return {
+            value: name,
+            label: name
+          }
+        }));
+    }.property('App.router.mainStackVersionsController.dataIsLoaded'),
     onChangeValue: function () {
-      this.get('parentView').updateFilter(this.get('column'), 
this.get('value'), 'string');
+      this.get('parentView').updateFilter(this.get('column'), 
this.get('value'), 'os');
     }
   }),
 
@@ -141,7 +156,6 @@ App.MainStackVersionsView = App.TableView.extend({
     this.get('controller').doPolling();
   },
 
-
   willDestroyElement: function () {
     this.set('controller.isPolling', false);
     clearTimeout(this.get('controller.timeoutRef'));

http://git-wip-us.apache.org/repos/asf/ambari/blob/59fa68e7/ambari-web/test/controllers/main/admin/stack_version/repo_versions_controller_test.js
----------------------------------------------------------------------
diff --git 
a/ambari-web/test/controllers/main/admin/stack_version/repo_versions_controller_test.js
 
b/ambari-web/test/controllers/main/admin/stack_version/repo_versions_controller_test.js
index 0d979ae..90598ad 100644
--- 
a/ambari-web/test/controllers/main/admin/stack_version/repo_versions_controller_test.js
+++ 
b/ambari-web/test/controllers/main/admin/stack_version/repo_versions_controller_test.js
@@ -50,7 +50,7 @@ describe('App.RepoVersionsController', function () {
   });
 
   describe('#load', function () {
-    it('', function () {
+    it('loads data by running loadRepoVersionsToModel', function () {
       sinon.stub(repoVersionsController, 
'loadRepoVersionsToModel').returns({done: Em.K});
       repoVersionsController.load();
       
expect(repoVersionsController.loadRepoVersionsToModel.calledOnce).to.be.true;
@@ -58,7 +58,7 @@ describe('App.RepoVersionsController', function () {
     });
   });
   describe('#loadRepoVersionsToModel()', function () {
-    it('', function () {
+    it('loads data to model', function () {
       sinon.stub(App.HttpClient, 'get', Em.K);
       sinon.stub(repoVersionsController, 'getUrl', Em.K);
       sinon.stub(App.get('router.mainStackVersionsController'), 
'loadStackVersionsToModel', function() { return $.Deferred().resolve()});
@@ -75,5 +75,30 @@ describe('App.RepoVersionsController', function () {
     });
   });
 
+  describe('#installStackVersionSuccess()', function () {
+    it('success callback for install stack version', function () {
+      var repoId = "1";
+      var requestId = "2";
+      var stackVersion = {repositoryVersion: {id: repoId}};
+      sinon.stub(App.db, 'set', Em.K);
+      sinon.stub(App.get('router.mainStackVersionsController'), 
'loadStackVersionsToModel', function() { return $.Deferred().resolve()});
+      sinon.stub(App.router, 'transitionTo', Em.K);
+      sinon.stub(App.StackVersion, 'find', function() {
+        return [stackVersion];
+      });
+
+      repoVersionsController.installStackVersionSuccess({Requests: {id: 
requestId}}, null, {id: repoId});
+      expect(App.db.set.calledWith('stackUpgrade', 'id', 
[requestId])).to.be.true;
+      
expect(App.get('router.mainStackVersionsController').loadStackVersionsToModel.calledOnce).to.be.true;
+      expect(App.StackVersion.find.calledOnce).to.be.true;
+      
expect(App.router.transitionTo.calledWith('main.admin.adminStackVersions.version',
 stackVersion)).to.be.true;
+
+      App.db.set.restore();
+      
App.get('router.mainStackVersionsController').loadStackVersionsToModel.restore();
+      App.router.transitionTo.restore();
+      App.StackVersion.find.restore();
+    });
+  });
+
 
 });
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/59fa68e7/ambari-web/test/controllers/main/admin/stack_version/stack_version_details_controller_test.js
----------------------------------------------------------------------
diff --git 
a/ambari-web/test/controllers/main/admin/stack_version/stack_version_details_controller_test.js
 
b/ambari-web/test/controllers/main/admin/stack_version/stack_version_details_controller_test.js
index 4fcf1dc..d449547 100644
--- 
a/ambari-web/test/controllers/main/admin/stack_version/stack_version_details_controller_test.js
+++ 
b/ambari-web/test/controllers/main/admin/stack_version/stack_version_details_controller_test.js
@@ -30,31 +30,14 @@ describe('App.MainStackVersionsDetailsController', function 
() {
   describe('#installStackVersion', function () {
     beforeEach(function() {
       sinon.stub(mainStackVersionsDetailsController, 'showProgressPopup', 
Em.K);
-      sinon.stub(mainStackVersionsDetailsController, 'doInstallStackVersion', 
Em.K);
     });
     afterEach(function() {
       mainStackVersionsDetailsController.showProgressPopup.restore();
-      mainStackVersionsDetailsController.doInstallStackVersion.restore();
     });
     it("shows installing proggress", function() {
       mainStackVersionsDetailsController.reopen({'installInProgress': true});
       mainStackVersionsDetailsController.installStackVersion({});
       
expect(mainStackVersionsDetailsController.showProgressPopup.calledOnce).to.be.true;
-      
expect(mainStackVersionsDetailsController.doInstallStackVersion.calledOnce).to.be.false;
-    });
-    it("runs install stack version", function() {
-      mainStackVersionsDetailsController.reopen({'installInProgress': false});
-      mainStackVersionsDetailsController.reopen({'allInstalled': false});
-      mainStackVersionsDetailsController.installStackVersion({});
-      
expect(mainStackVersionsDetailsController.showProgressPopup.calledOnce).to.be.false;
-      
expect(mainStackVersionsDetailsController.doInstallStackVersion.calledOnce).to.be.true;
-    });
-    it("doesn't do anything", function() {
-      mainStackVersionsDetailsController.reopen({'installInProgress': false});
-      mainStackVersionsDetailsController.reopen({'allInstalled': true});
-      mainStackVersionsDetailsController.installStackVersion({});
-      
expect(mainStackVersionsDetailsController.showProgressPopup.calledOnce).to.be.false;
-      
expect(mainStackVersionsDetailsController.doInstallStackVersion.calledOnce).to.be.false;
     });
   });
 
@@ -72,21 +55,7 @@ describe('App.MainStackVersionsDetailsController', function 
() {
       var popupTitle = 
Em.I18n.t('admin.stackVersions.datails.install.hosts.popup.title').format("v1");
       var requestIds =[1];
       mainStackVersionsDetailsController.showProgressPopup();
-      
expect(App.router.get('highAvailabilityProgressPopupController').initPopup.calledWith(popupTitle,
 requestIds, mainStackVersionsDetailsController, true)).to.be.true;
-    });
-  });
-/** TODO after implementing correct api
-  describe('#doInstallStackVersion', function () {
-    beforeEach(function() {
-      sinon.stub(App.ajax, 'send', Em.K);
-    });
-    afterEach(function() {
-      App.ajax.send.restore();
-    });
-    it("runs initPopup", function() {
-      
mainStackVersionsDetailsController.doInstallStackVersion(Em.Object.create({version:
 "1"}));
-      expect(App.ajax.send.calledOnce).to.be.true;
+      
expect(App.router.get('highAvailabilityProgressPopupController').initPopup.calledWith(popupTitle,
 requestIds, mainStackVersionsDetailsController)).to.be.true;
     });
   });
-*/
 });
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/59fa68e7/ambari-web/test/controllers/main/admin/stack_version/stack_versions_controller_test.js
----------------------------------------------------------------------
diff --git 
a/ambari-web/test/controllers/main/admin/stack_version/stack_versions_controller_test.js
 
b/ambari-web/test/controllers/main/admin/stack_version/stack_versions_controller_test.js
new file mode 100644
index 0000000..402b3d7
--- /dev/null
+++ 
b/ambari-web/test/controllers/main/admin/stack_version/stack_versions_controller_test.js
@@ -0,0 +1,55 @@
+/**
+ * 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');
+require('controllers/main/admin/stack_versions/stack_versions_controller');
+var controller;
+
+describe('App.MainStackVersionsController', function () {
+
+  beforeEach(function () {
+    controller = App.MainStackVersionsController.create();
+  });
+
+  describe('#load()', function () {
+    it('loads data to model by running loadStackVersionsToModel', function () {
+      sinon.stub(controller, 'loadStackVersionsToModel').returns({done: Em.K});
+
+      controller.load();
+      expect(controller.loadStackVersionsToModel.calledOnce).to.be.true;
+
+      controller.loadConfigVersionsToModel.restore();
+    });
+  });
+
+  describe('#loadStackVersionsToModel()', function () {
+    it('loads data to model', function () {
+      sinon.stub(App.HttpClient, 'get', Em.K);
+      sinon.stub(controller, 'getUrl', Em.K);
+
+      controller.loadConfigVersionsToModel();
+      expect(App.HttpClient.get.calledOnce).to.be.true;
+      expect(controller.getUrl.calledWith([1])).to.be.true;
+
+
+      controller.getUrl.restore();
+      App.HttpClient.get.restore();
+    });
+  });
+});
\ No newline at end of file

Reply via email to