浏览代码

AMBARI-14797. Register Version: display loaded version definition info in different categories and Save them.(XIWANG)

Xi Wang 9 年之前
父节点
当前提交
0b47564002

+ 3 - 0
ambari-admin/src/main/resources/ui/admin-web/app/assets/data/version/version.json

@@ -26,6 +26,7 @@
             "services": [
             "services": [
               {
               {
                 "name": "HDFS",
                 "name": "HDFS",
+                "display_name": "HDFS",
                 "versions": [
                 "versions": [
                   {
                   {
                     "version": "2.1.1",
                     "version": "2.1.1",
@@ -36,6 +37,7 @@
               },
               },
               {
               {
                 "name": "HIVE",
                 "name": "HIVE",
+                "display_name": "Hive",
                 "versions": [
                 "versions": [
                   {
                   {
                     "version": "1.2.1"
                     "version": "1.2.1"
@@ -44,6 +46,7 @@
               },
               },
               {
               {
                 "name": "ZOOKEEPER",
                 "name": "ZOOKEEPER",
+                "display_name": "ZooKeeper",
                 "versions": [
                 "versions": [
                   {
                   {
                     "version": "3.4.5"
                     "version": "3.4.5"

+ 23 - 23
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/stackVersions/StackVersionsCreateCtrl.js

@@ -156,14 +156,14 @@ angular.module('ambariAdminConsole')
     index: 1,
     index: 1,
     displayName: 'Upload Version Definition File',
     displayName: 'Upload Version Definition File',
     url: 'files://',
     url: 'files://',
-    selected: true,
-    hasError: true
+    //selected: true,
+    hasError: false
   };
   };
   $scope.option2 = {
   $scope.option2 = {
     index: 2,
     index: 2,
     displayName: 'Version Definition File URL',
     displayName: 'Version Definition File URL',
     url: 'https://',
     url: 'https://',
-    selected: false,
+    //selected: false,
     hasError: false
     hasError: false
   };
   };
   $scope.selectedOption = 1;
   $scope.selectedOption = 1;
@@ -172,8 +172,8 @@ angular.module('ambariAdminConsole')
    * User can select ONLY one option to upload version definition file
    * User can select ONLY one option to upload version definition file
    */
    */
   $scope.toggleOptionSelect = function () {
   $scope.toggleOptionSelect = function () {
-    $scope.option1.selected = $scope.selectedOption == $scope.option1.index;
-    $scope.option2.selected = $scope.selectedOption == $scope.option2.index;
+    //$scope.option1.selected = $scope.selectedOption == $scope.option1.index;
+    //$scope.option2.selected = $scope.selectedOption == $scope.option2.index;
     $scope.option1.hasError = false;
     $scope.option1.hasError = false;
     $scope.option2.hasError = false;
     $scope.option2.hasError = false;
   };
   };
@@ -215,11 +215,11 @@ angular.module('ambariAdminConsole')
     return Stack.getLatestRepo('HDP').then(function (response) {
     return Stack.getLatestRepo('HDP').then(function (response) {
       $scope.id = response.id;
       $scope.id = response.id;
       $scope.isPatch = response.type == 'PATCH';
       $scope.isPatch = response.type == 'PATCH';
-      $scope.stackNameVersion = response.stackNameVersion;
-      $scope.displayName = response.displayName;
-      $scope.version = response.version;
-      $scope.actualVersion = response.actualVersion;
-      $scope.services = response.services;
+      $scope.stackNameVersion = response.stackNameVersion || 'n/a';
+      $scope.displayName = response.displayName || 'n/a';
+      $scope.version = response.version || 'n/a';
+      $scope.actualVersion = response.actualVersion || 'n/a';
+      $scope.services = response.services || [];
       //save default values of repos to check if they were changed
       //save default values of repos to check if they were changed
       $scope.defaulfOSRepos = {};
       $scope.defaulfOSRepos = {};
       response.updateObj.operating_systems.forEach(function(os) {
       response.updateObj.operating_systems.forEach(function(os) {
@@ -236,19 +236,19 @@ angular.module('ambariAdminConsole')
       $scope.osList = response.osList;
       $scope.osList = response.osList;
       // if user reach here from UI click, repo status should be cached
       // if user reach here from UI click, repo status should be cached
       // otherwise re-fetch repo status from cluster end point.
       // otherwise re-fetch repo status from cluster end point.
-      $scope.repoStatus = Cluster.repoStatusCache[$scope.id];
-      if (!$scope.repoStatus) {
-        $scope.fetchClusters()
-          .then(function () {
-            return $scope.fetchRepoClusterStatus();
-          })
-          .then(function () {
-            $scope.deleteEnabled = $scope.isDeletable();
-          });
-      } else {
-        $scope.deleteEnabled = $scope.isDeletable();
-      }
-      $scope.addMissingOSList();
+//      $scope.repoStatus = Cluster.repoStatusCache[$scope.id];
+//      if (!$scope.repoStatus) {
+//        $scope.fetchClusters()
+//          .then(function () {
+//            return $scope.fetchRepoClusterStatus();
+//          })
+//          .then(function () {
+//            $scope.deleteEnabled = $scope.isDeletable();
+//          });
+//      } else {
+//        $scope.deleteEnabled = $scope.isDeletable();
+//      }
+      //$scope.addMissingOSList();
     });
     });
   };
   };
 }]);
 }]);

+ 11 - 1
ambari-admin/src/main/resources/ui/admin-web/app/scripts/i18n.config.js

@@ -306,7 +306,17 @@ angular.module('ambariAdminConsole')
       'os': 'OS',
       'os': 'OS',
       'baseURL': 'Base URL',
       'baseURL': 'Base URL',
       'skipValidation': 'Skip Repository Base URL validation (Advanced)',
       'skipValidation': 'Skip Repository Base URL validation (Advanced)',
-
+      'contents': {
+        'title': 'Contents',
+        'empty': 'No contents to display'
+      },
+      'details': {
+        'stackName': 'Stack Name',
+        'displayName': 'Display Name',
+        'version': 'Version',
+        'actualVersion': 'Actual Version',
+        'releaseNotes': 'Release Notes'
+      },
       'changeBaseURLConfirmation': {
       'changeBaseURLConfirmation': {
         'title': 'Confirm Base URL Change',
         'title': 'Confirm Base URL Change',
         'message': 'You are about to change repository Base URLs that are already in use. Please confirm that you intend to make this change and that the new Base URLs point to the same exact Stack version and build'
         'message': 'You are about to change repository Base URLs that are already in use. Please confirm that you intend to make this change and that the new Base URLs point to the same exact Stack version and build'

+ 168 - 2
ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Stack.js

@@ -176,11 +176,176 @@ angular.module('ambariAdminConsole')
     getLatestRepo: function (stack_name) {
     getLatestRepo: function (stack_name) {
       var url = Settings.baseUrl + '/stacks/' + stack_name + '/versions?' +
       var url = Settings.baseUrl + '/stacks/' + stack_name + '/versions?' +
         'fields=repository_versions/operating_systems/repositories/*' +
         'fields=repository_versions/operating_systems/repositories/*' +
-        ',repository_versions/RepositoryVersions/*';
+        ',repository_versions/RepositoryVersions/*';  // tbd
       var deferred = $q.defer();
       var deferred = $q.defer();
       $http.get(url, {mock: 'version/version.json'})
       $http.get(url, {mock: 'version/version.json'})
         .success(function (data) {
         .success(function (data) {
-          data = data.items[0];
+          //data = data.items[0];
+          data = {
+            "href" : "http://c6401.ambari.apache.org:8080/api/v1/stacks/HDP/versions/2.2",
+            "Versions" : {
+              "stack_name" : "HDP",
+              "stack_version" : "2.2"
+            },
+            "repository_versions" : [
+              {
+                "href" : "http://c6401.ambari.apache.org:8080/api/v1/stacks/HDP/versions/2.2/repository_versions/15",
+                "RepositoryVersions" : {
+                  "id" : 15,
+                  "repository_version" : "2.2.0.1-901",
+                  "stack_name" : "HDP",
+                  "stack_version" : "2.2",
+                  "release": {
+                    "type": "PATCH",
+                    "stack_id": "HDP-2.2",
+                    "version": "2.2.0.1",
+                    "build": "901",
+                    "compatible_with": "2.2.0.1-[1-9]",
+                    "release_notes": "http://someurl"
+                  },
+                  "services": [
+                    {
+                      "name": "HDFS",
+                      "display_name": "HDFS",
+                      "versions": [
+                        {
+                          "version": "2.1.1",
+                          "version_id": "10",
+                          "components": [ "NAMENODE"]
+                        }
+                      ]
+                    },
+                    {
+                      "name": "HIVE",
+                      "display_name": "Hive",
+                      "versions": [
+                        {
+                          "version": "1.2.1"
+                        }
+                      ]
+                    },
+                    {
+                      "name": "ZOOKEEPER",
+                      "display_name": "ZooKeeper",
+                      "versions": [
+                        {
+                          "version": "3.4.5"
+                        }
+                      ]
+                    },
+                    {
+                      "name": "YARN",
+                      "versions": [
+                        {
+                          "version": "2.7.1"
+                        }
+                      ]
+                    },
+                    {
+                      "name": "SPARK",
+                      "versions": [
+                        {
+                          "version": "1.4.1"
+                        }
+                      ]
+                    },
+                    {
+                      "name": "SPARK",
+                      "versions": [
+                        {
+                          "version": "1.5.2"
+                        }
+                      ]
+                    }
+                  ]
+                },
+                "operating_systems" : [
+                  {
+                    "href" : "http://c6401.ambari.apache.org:8080/api/v1/stacks/HDP/versions/2.2/repository_versions/15/operating_systems/redhat5",
+                    "OperatingSystems" : {
+                      "os_type" : "redhat5",
+                      "repository_version_id" : 15,
+                      "stack_name" : "HDP",
+                      "stack_version" : "2.2"
+                    },
+                    "repositories" : [
+                      {
+                        "href" : "http://c6401.ambari.apache.org:8080/api/v1/stacks/HDP/versions/2.2/repository_versions/15/operating_systems/redhat5/repositories/HDP-2.2.0.1-901",
+                        "Repositories" : {
+                          "base_url" : "http://s3.amazonaws.com/dev.hortonworks.com/HDP/centos5/2.x/updates/2.2.0.0",
+                          "default_base_url" : "",
+                          "latest_base_url" : "",
+                          "mirrors_list" : "",
+                          "os_type" : "redhat5",
+                          "repo_id" : "HDP-2.2.0.1-901",
+                          "repo_name" : "HDP",
+                          "repository_version_id" : 15,
+                          "stack_name" : "HDP",
+                          "stack_version" : "2.2"
+                        }
+                      },
+                      {
+                        "href" : "http://c6401.ambari.apache.org:8080/api/v1/stacks/HDP/versions/2.2/repository_versions/15/operating_systems/redhat5/repositories/HDP-UTILS-2.2.0.1-901",
+                        "Repositories" : {
+                          "base_url" : "http://s3.amazonaws.com/dev.hortonworks.com/HDP/centos5/2.x/updates/2.2.0.0",
+                          "default_base_url" : "",
+                          "latest_base_url" : "",
+                          "mirrors_list" : "",
+                          "os_type" : "redhat5",
+                          "repo_id" : "HDP-UTILS-2.2.0.1-901",
+                          "repo_name" : "HDP-UTILS",
+                          "repository_version_id" : 15,
+                          "stack_name" : "HDP",
+                          "stack_version" : "2.2"
+                        }
+                      }
+                    ]
+                  },
+                  {
+                    "href" : "http://c6401.ambari.apache.org:8080/api/v1/stacks/HDP/versions/2.2/repository_versions/15/operating_systems/redhat6",
+                    "OperatingSystems" : {
+                      "os_type" : "redhat6",
+                      "repository_version_id" : 15,
+                      "stack_name" : "HDP",
+                      "stack_version" : "2.2"
+                    },
+                    "repositories" : [
+                      {
+                        "href" : "http://c6401.ambari.apache.org:8080/api/v1/stacks/HDP/versions/2.2/repository_versions/15/operating_systems/redhat6/repositories/HDP-2.2.0.1-901",
+                        "Repositories" : {
+                          "base_url" : "http://s3.amazonaws.com/dev.hortonworks.com/HDP/centos5/2.x/updates/2.2.0.0",
+                          "default_base_url" : "",
+                          "latest_base_url" : "",
+                          "mirrors_list" : "",
+                          "os_type" : "redhat6",
+                          "repo_id" : "HDP-2.2.0.1-901",
+                          "repo_name" : "HDP",
+                          "repository_version_id" : 15,
+                          "stack_name" : "HDP",
+                          "stack_version" : "2.2"
+                        }
+                      },
+                      {
+                        "href" : "http://c6401.ambari.apache.org:8080/api/v1/stacks/HDP/versions/2.2/repository_versions/15/operating_systems/redhat6/repositories/HDP-UTILS-2.2.0.1-901",
+                        "Repositories" : {
+                          "base_url" : "http://s3.amazonaws.com/dev.hortonworks.com/HDP/centos5/2.x/updates/2.2.0.0",
+                          "default_base_url" : "",
+                          "latest_base_url" : "",
+                          "mirrors_list" : "",
+                          "os_type" : "redhat6",
+                          "repo_id" : "HDP-UTILS-2.2.0.1-901",
+                          "repo_name" : "HDP-UTILS",
+                          "repository_version_id" : 15,
+                          "stack_name" : "HDP",
+                          "stack_version" : "2.2"
+                        }
+                      }
+                    ]
+                  }
+                ]
+              }
+            ]
+          };
           var response = {
           var response = {
             id : data.repository_versions[0].RepositoryVersions.id,
             id : data.repository_versions[0].RepositoryVersions.id,
             stackVersion : data.Versions.stack_version,
             stackVersion : data.Versions.stack_version,
@@ -189,6 +354,7 @@ angular.module('ambariAdminConsole')
             stackNameVersion: data.Versions.stack_name + '-' + data.Versions.stack_version, /// HDP-2.3
             stackNameVersion: data.Versions.stack_name + '-' + data.Versions.stack_version, /// HDP-2.3
             actualVersion: data.repository_versions[0].RepositoryVersions.repository_version, /// 2.3.4.0-3846
             actualVersion: data.repository_versions[0].RepositoryVersions.repository_version, /// 2.3.4.0-3846
             version: data.repository_versions[0].RepositoryVersions.release.version, /// 2.3.4.0
             version: data.repository_versions[0].RepositoryVersions.release.version, /// 2.3.4.0
+            releaseNotes: data.repository_versions[0].RepositoryVersions.release.release_notes,
             displayName: data.Versions.stack_name + '-' + data.repository_versions[0].RepositoryVersions.release.version, //HDP-2.3.4.0
             displayName: data.Versions.stack_name + '-' + data.repository_versions[0].RepositoryVersions.release.version, //HDP-2.3.4.0
             repoVersionFullName : data.Versions.stack_name + '-' + data.repository_versions[0].RepositoryVersions.repository_version,
             repoVersionFullName : data.Versions.stack_name + '-' + data.repository_versions[0].RepositoryVersions.repository_version,
             osList: data.repository_versions[0].operating_systems,
             osList: data.repository_versions[0].operating_systems,

+ 15 - 0
ambari-admin/src/main/resources/ui/admin-web/app/styles/main.css

@@ -1398,3 +1398,18 @@ thead.view-permission-header > tr > th {
   padding-bottom: 20px;
   padding-bottom: 20px;
 }
 }
 
 
+.register-version-form .patch-icon {
+  color: #ff4500;
+}
+
+.register-version-form .version-info {
+  padding-top: 7px;
+  margin-top: 0;
+  margin-bottom: 0;
+}
+
+.version-contents-body {
+  max-height: 150px;
+  overflow: scroll;
+}
+

+ 49 - 38
ambari-admin/src/main/resources/ui/admin-web/app/views/stackVersions/stackVersionPage.html

@@ -31,58 +31,69 @@
 <hr>
 <hr>
 
 
 
 
-
-<div class="clearfix register-version-options">
-  <div class="col-sm-5 option-radio-button">
-    <label class="option-label">
-      <input type="radio" ng-model="selectedOption" value="{{option1.index}}" ng-change="toggleOptionSelect()"> {{'versions.uploadFile' | translate}}
-    </label>
-  </div>
-  <div class="col-sm-7">
-    <input type="file" class="choose-file-input" ng-file-select="onFileSelect($files)"/>
-  </div>
-</div>
-<div class="clearfix register-version-options border-bottom bottom-margin">
-  <div class="col-sm-5 option-radio-button">
-    <label class="option-label">
-      <input type="radio" ng-model="selectedOption" value="{{option2.index}}" ng-change="toggleOptionSelect()"> {{'versions.enterURL' | translate}}
-    </label>
+<div id="upload-definition-file-panel" ng-if="createController">
+  <div class="clearfix register-version-options">
+    <div class="col-sm-5 option-radio-button">
+      <label class="option-label">
+        <input type="radio" ng-model="selectedOption" value="{{option1.index}}" ng-change="toggleOptionSelect()"> {{'versions.uploadFile' | translate}}
+      </label>
+    </div>
+    <div class="col-sm-7">
+      <input type="file" class="choose-file-input" ng-file-select="onFileSelect($files)"/>
+    </div>
   </div>
   </div>
+  <div class="clearfix register-version-options border-bottom bottom-margin">
+    <div class="col-sm-5 option-radio-button">
+      <label class="option-label">
+        <input type="radio" ng-model="selectedOption" value="{{option2.index}}" ng-change="toggleOptionSelect()"> {{'versions.enterURL' | translate}}
+      </label>
+    </div>
     <div class="col-sm-7">
     <div class="col-sm-7">
       <div class="form-group {{option2.name}}" ng-class="{'has-error': option2.url.hasError }">
       <div class="form-group {{option2.name}}" ng-class="{'has-error': option2.url.hasError }">
-        <div class=""><input type="text" class="form-control" ng-model="option2.url" ng-change="clearOptionsError()" ng-disabled="!option2.selected"></div>
+        <div class=""><input type="text" class="form-control" ng-model="option2.url" ng-change="clearOptionsError()" ng-disabled="!(selectedOption==2)"></div>
       </div>
       </div>
     </div>
     </div>
     <div class="col-sm-12 read-info-button">
     <div class="col-sm-12 read-info-button">
-    <button class="btn btn-primary pull-right" ng-click="readVersionInfo()"
-        ng-disabled="readInfoButtonDisabled()">{{'versions.readInfo' | translate}}</button>
+      <button class="btn btn-primary pull-right" ng-click="readVersionInfo()"
+            ng-disabled="readInfoButtonDisabled()">{{'versions.readInfo' | translate}}</button>
     </div>
     </div>
+  </div>
 </div>
 </div>
 
 
-
 <form class="form-horizontal register-version-form" role="form" name="repoRegForm" novalidate>
 <form class="form-horizontal register-version-form" role="form" name="repoRegForm" novalidate>
-  <div class="panel panel-default" ng-if="createController">
+  <div class="panel panel-default">
     <div class="panel-heading">
     <div class="panel-heading">
       <h3 class="panel-title">{{'common.details' | translate}}</h3>
       <h3 class="panel-title">{{'common.details' | translate}}</h3>
     </div>
     </div>
     <div class="panel-body">
     <div class="panel-body">
-      <div class="form-inline repo-version-inline">
-        <label class="control-label col-sm-2 repo-version-label">{{'common.name' | translate}}</label>
-        <div class="col-sm-10">
-          <select class="form-control repo-version-select"
-                  ng-model="$parent.upgradeStack.selected"
-                  ng-options="o as o.displayName for o in upgradeStack.options"
-                  ng-change="afterStackVersionChange()">
-          </select>
-          <span class="bold-dot">.</span>
-          <div class="form-group" ng-class="{'has-error' : repoRegForm.version.$error.pattern}">
-            <input class="form-control" name="version" type="text" ng-model="$parent.repoSubversion" ng-pattern="subversionPattern"
-                   placeholder="{{'versions.placeholder' | translate}}" ng-change="updateCurrentVersionInput()" required/>
-            <span class="text-danger" ng-show="repoRegForm.version.$error.pattern">
-              &nbsp{{'common.alerts.isInvalid' | translate: '{term: currentVersionInput}'}}
-            </span>
-          </div>
-        </div>
+      <div class="clearfix">
+        <label class="control-label col-sm-3">{{'versions.details.stackName' | translate}}</label>
+        <div class="version-info col-sm-7">{{stackNameVersion}}</div>
+        <div class="col-sm-2 patch-icon" ng-if="isPatch"><span class="glyphicon glyphicon-tree-deciduous">Patch</span></div>
+      </div>
+      <div class="clearfix">
+        <label class="control-label col-sm-3">{{'versions.details.displayName' | translate}}</label>
+        <div class="version-info col-sm-9">{{displayName}}</div>
+      </div>
+      <div class="clearfix">
+        <label class="control-label col-sm-3">{{'versions.details.version' | translate}}</label>
+        <div class="version-info col-sm-9">{{version}}</div>
+      </div>
+      <div class="clearfix">
+        <label class="control-label col-sm-3">{{'versions.details.actualVersion' | translate}}</label>
+        <div class="version-info col-sm-9">{{actualVersion}}</div>
+      </div>
+    </div>
+  </div>
+  <div class="panel panel-default">
+    <div class="panel-heading">
+      <h3 class="panel-title">{{'versions.contents.title' | translate}}</h3>
+    </div>
+    <div class="panel-body version-contents-body">
+      <div class="alert alert-info hide-soft" ng-class="{'visible' : !services || !services.length}" role="alert">{{'versions.contents.empty' | translate}}</div>
+      <div class="clearfix" ng-repeat="service in services">
+        <label class="control-label col-sm-3">{{service.name}}</label>
+        <div class="version-info col-sm-9">{{service.version}}</div>
       </div>
       </div>
     </div>
     </div>
   </div>
   </div>