Browse Source

AMBARI-7730. Slider View: Provide more detailed tooltips for view parameters. (Max Shepel via akovalenko)

Aleksandr Kovalenko 10 năm trước cách đây
mục cha
commit
57bded5f23

+ 9 - 1
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/CreateViewInstanceCtrl.js

@@ -18,12 +18,20 @@
 'use strict';
 
 angular.module('ambariAdminConsole')
-.controller('CreateViewInstanceCtrl',['$scope', 'View', 'Alert', '$routeParams', '$location', function($scope, View, Alert, $routeParams, $location) {
+.controller('CreateViewInstanceCtrl',['$scope', 'View', 'Alert', 'Auth', '$routeParams', '$location', function($scope, View, Alert, Auth, $routeParams, $location) {
   $scope.form = {};
 
   function loadMeta(){
     View.getMeta($routeParams.viewId, $scope.version).then(function(data) {
       var viewVersion = data.data;
+      var pattern = /{username}/;
+      viewVersion.ViewVersionInfo.parameters = viewVersion.ViewVersionInfo.parameters.map(function (item) {
+        var parameter = item;
+        if (pattern.test(item.description)) {
+          parameter.description = item.description.replace(pattern, Auth.getCurrentUser());
+        }
+        return parameter;
+      });
       $scope.view = viewVersion;
 
       $scope.instance = {

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

@@ -202,6 +202,7 @@
 
 .tooltip-inner{
   word-wrap: break-word;
+    text-align: left;
 }
 
  .instances-table{

+ 77 - 0
ambari-web/ambari-admin/src/main/resources/ui/admin-web/test/unit/controllers/ambariViews/CreateViewInstanceCtrl_test.js

@@ -0,0 +1,77 @@
+/**
+ * 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.
+ */
+
+describe('#CreateViewInstanceCtrl', function () {
+
+  describe('loadMeta', function () {
+
+    var scope, ctrl, $window, $q, deferred;
+
+    beforeEach(module('ambariAdminConsole', function ($provide) {
+      $provide.value('$window', {
+        location: {
+          pathname: 'http://c6401.ambari.apache.org:8080/views/ADMIN_VIEW/1.0.0/INSTANCE/#/'
+        }
+      });
+      $provide.value('Auth', {
+        getCurrentUser: function () {
+          return 'admin';
+        }
+      });
+      $provide.value('View', {
+        getMeta: function () {
+          return deferred.promise;
+        },
+        getVersions: function () {
+          var dfd = $q.defer();
+          return dfd.promise;
+        }
+      });
+      $provide.value('$routeParams', {
+        viewId: 'ADMIN_VIEW'
+      });
+    }));
+
+    beforeEach(inject(function ($rootScope, $controller, _$window_, _$q_) {
+      $q = _$q_;
+      $window = _$window_;
+      scope = $rootScope.$new();
+      deferred = $q.defer();
+      ctrl = $controller('CreateViewInstanceCtrl', {
+        $scope: scope
+      });
+    }));
+
+    it('should parse {username}', function () {
+      deferred.resolve({
+        data: {
+          ViewVersionInfo: {
+            parameters: [{
+              description: '{username}'
+            }]
+          }
+        }
+      });
+      scope.version = '1.0.0';
+      scope.$digest();
+      chai.expect(scope.view.ViewVersionInfo.parameters[0].description).to.equal('admin');
+    });
+
+  });
+
+});

+ 7 - 5
contrib/views/slider/src/main/resources/view.xml

@@ -38,20 +38,22 @@ limitations under the License. Kerberos, LDAP, Custom. Binary/Htt
 	</parameter>
 	<parameter>
 		<name>slider.user</name>
-		<description>Slider user</description>
+		<description>User this view instance should run as. Specifying an empty value runs view as YARN service user (for example 'yarn'). Specifying '{username}' runs the view as the currently logged in user. Specifying any other value runs the view as that user.
+			Administrators should check that the HDFS home folder for that user is created and accessible.
+        </description>
 		<required>false</required>
 	</parameter>
 	<parameter>
 		<name>view.kerberos.principal</name>
-		<description>Kerberos principal associated with this view. For
-			example: ambari/_HOST@EXAMPLE.COM
+		<description>Kerberos principal associated with this view. For example: ambari/_HOST@EXAMPLE.COM.
+			Administrators should make sure that HDFS service has the 'hadoop.proxyuser.[user].groups' and 'hadoop.proxyuser.[user].hosts' configs populated in 'core-site.xml'.
 		</description>
 		<required>false</required>
 	</parameter>
 	<parameter>
 		<name>view.kerberos.principal.keytab</name>
-		<description>Path to the Kerberos principal keytab used for view's
-			user. For example: /etc/security/keytabs/ambari.headless.keytab
+		<description>Path to the Kerberos principal keytab used for view's user. For example: /etc/security/keytabs/ambari.headless.keytab
+			Administrators should make sure that HDFS service has the 'hadoop.proxyuser.[user].groups' and 'hadoop.proxyuser.[user].hosts' configs populated in 'core-site.xml'.
 		</description>
 		<required>false</required>
 	</parameter>