svn commit: r26609 - in /release/ambari: ambari-2.6.1/ ambari-2.6.2/ ambari-2.6.2/apache-ambari-2.6.2-src.tar.gz ambari-2.6.2/apache-ambari-2.6.2-src.tar.gz.asc ambari-2.6.2/apache-ambari-2.6.2-src.ta

2018-04-30 Thread swapan
Author: swapan
Date: Mon Apr 30 21:18:17 2018
New Revision: 26609

Log:
Committing Release 2.6.2

Added:
release/ambari/ambari-2.6.2/
release/ambari/ambari-2.6.2/apache-ambari-2.6.2-src.tar.gz   (with props)
release/ambari/ambari-2.6.2/apache-ambari-2.6.2-src.tar.gz.asc
release/ambari/ambari-2.6.2/apache-ambari-2.6.2-src.tar.gz.sh1
Removed:
release/ambari/ambari-2.6.1/

Added: release/ambari/ambari-2.6.2/apache-ambari-2.6.2-src.tar.gz
==
Binary file - no diff available.

Propchange: release/ambari/ambari-2.6.2/apache-ambari-2.6.2-src.tar.gz
--
svn:mime-type = application/octet-stream

Added: release/ambari/ambari-2.6.2/apache-ambari-2.6.2-src.tar.gz.asc
==
--- release/ambari/ambari-2.6.2/apache-ambari-2.6.2-src.tar.gz.asc (added)
+++ release/ambari/ambari-2.6.2/apache-ambari-2.6.2-src.tar.gz.asc Mon Apr 30 
21:18:17 2018
@@ -0,0 +1,11 @@
+-BEGIN PGP SIGNATURE-
+
+iQEzBAABCAAdFiEEIC+QKneR09EnEC9kvMXqJdAgOxgFAlriVKcACgkQvMXqJdAg
+OxjS2Af/eG26rmRBalNcsGjqGoKn7bsGu7zwMgMvmsoRP/Dh4o+vcilhuaxMirU2
+NQjwt2vhJP0t1T7jM1UHMnZ2+NNLW5wixtWr1HUx8Jjt7k5fT8VvV3JYv6hE/pIw
+K8TRdfjA0f1wCgd9smLRANi+G5jDcN3Vfff+oOa9gGI0LW//JkmjJlK9/h+owScK
+4nC1W+FCnSdFAvgl1KCE+thOxYcAtVBJBepGbT9l2q3NsLN0gxMV3meqem39Df/P
+RS5JHeWZN0noUjQ4a7H/uBkhKd+VQzQ2028DvGp/uDh8cG2BoXYVGNLk1/S8C2jh
+17+pDcuNDKnm+ZPm4qQ9FCO1+wP08Q==
+=a+22
+-END PGP SIGNATURE-

Added: release/ambari/ambari-2.6.2/apache-ambari-2.6.2-src.tar.gz.sh1
==
--- release/ambari/ambari-2.6.2/apache-ambari-2.6.2-src.tar.gz.sh1 (added)
+++ release/ambari/ambari-2.6.2/apache-ambari-2.6.2-src.tar.gz.sh1 Mon Apr 30 
21:18:17 2018
@@ -0,0 +1 @@
+SHA512(apache-ambari-2.6.2-src.tar.gz)= 
5ac79574622628ce63d62df595e9b3c4003247284789018af717866cd4115880e8ed9db4081a6a12f68768506ea20b748440f78ef11328364d1141c78fda7df1




[ambari] branch trunk updated: [AMBARI-23727] Predicate evaluation does not work as expected for RequestResourceFilters. (swagle) (#1139)

2018-04-30 Thread swagle
This is an automated email from the ASF dual-hosted git repository.

swagle pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git


The following commit(s) were added to refs/heads/trunk by this push:
 new 154b361  [AMBARI-23727] Predicate evaluation does not work as expected 
for RequestResourceFilters. (swagle) (#1139)
154b361 is described below

commit 154b3610f75013350990ff4543900a1a19977854
Author: Siddharth 
AuthorDate: Mon Apr 30 12:18:18 2018 -0700

[AMBARI-23727] Predicate evaluation does not work as expected for 
RequestResourceFilters. (swagle) (#1139)
---
 .../internal/RequestResourceProvider.java  | 73 ++
 .../internal/RequestResourceProviderTest.java  | 19 +-
 2 files changed, 50 insertions(+), 42 deletions(-)

diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestResourceProvider.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestResourceProvider.java
index c4ef23b..48a9432 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestResourceProvider.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestResourceProvider.java
@@ -43,17 +43,18 @@ import 
org.apache.ambari.server.controller.AmbariManagementController;
 import org.apache.ambari.server.controller.ExecuteActionRequest;
 import org.apache.ambari.server.controller.RequestRequest;
 import org.apache.ambari.server.controller.RequestStatusResponse;
+import org.apache.ambari.server.controller.spi.ClusterController;
 import org.apache.ambari.server.controller.spi.NoSuchParentResourceException;
 import org.apache.ambari.server.controller.spi.NoSuchResourceException;
 import org.apache.ambari.server.controller.spi.Predicate;
+import org.apache.ambari.server.controller.spi.QueryResponse;
 import org.apache.ambari.server.controller.spi.Request;
 import org.apache.ambari.server.controller.spi.RequestStatus;
 import org.apache.ambari.server.controller.spi.Resource;
 import org.apache.ambari.server.controller.spi.ResourceAlreadyExistsException;
-import org.apache.ambari.server.controller.spi.ResourceProvider;
 import org.apache.ambari.server.controller.spi.SystemException;
 import org.apache.ambari.server.controller.spi.UnsupportedPropertyException;
-import org.apache.ambari.server.controller.utilities.PredicateBuilder;
+import org.apache.ambari.server.controller.utilities.ClusterControllerHelper;
 import org.apache.ambari.server.controller.utilities.PropertyHelper;
 import org.apache.ambari.server.customactions.ActionDefinition;
 import org.apache.ambari.server.orm.dao.HostRoleCommandDAO;
@@ -536,52 +537,46 @@ public class RequestResourceProvider extends 
AbstractControllerResourceProvider
 throw new SystemException(msg, e);
   }
 
-  ResourceProvider resourceProvider = 
getResourceProvider(Resource.Type.HostComponent);
-
   Set propertyIds = new HashSet<>();
   propertyIds.add(CLUSTER_NAME);
   propertyIds.add(SERVICE_NAME);
   propertyIds.add(COMPONENT_NAME);
 
   Request request = PropertyHelper.getReadRequest(propertyIds);
-
-  Predicate finalPredicate = new PredicateBuilder(filterPredicate)
-.property(CLUSTER_NAME).equals(clusterName).and()
-.property(SERVICE_NAME).equals(serviceName).and()
-.property(COMPONENT_NAME).equals(componentName)
-.toPredicate();
-
+  
   try {
-Set resources = resourceProvider.getResources(request, 
finalPredicate);
-
-if (resources != null && !resources.isEmpty()) {
-  // Allow request to span services / components using just the 
predicate
-  Map dupleListMap = new 
HashMap<>();
-  for (Resource resource : resources) {
-String hostnameStr = (String) resource.getPropertyValue(HOST_NAME);
-if (hostnameStr != null) {
-  String computedServiceName = (String) 
resource.getPropertyValue(SERVICE_NAME);
-  String computedComponentName = (String) 
resource.getPropertyValue(COMPONENT_NAME);
-  ServiceComponentTuple duple =
-new ServiceComponentTuple(computedServiceName, 
computedComponentName);
-
-  if (!dupleListMap.containsKey(duple)) {
-hostList = new ArrayList<>();
-hostList.add(hostnameStr);
-dupleListMap.put(duple, hostList);
-  } else {
-dupleListMap.get(duple).add(hostnameStr);
-  }
+ClusterController clusterController = 
ClusterControllerHelper.getClusterController();
+QueryResponse queryResponse = clusterController.getResources(
+  Resource.Type.HostComponent, request, filterPredicate);
+Iterable resourceIterable = clusterController.getIterable(
+  Resource.Type.HostComponent, queryResponse, request,
+

[ambari] branch trunk updated: Revert "AMBARI-23565. Restore configs does not work. (#1130)"

2018-04-30 Thread avijayan
This is an automated email from the ASF dual-hosted git repository.

avijayan pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git


The following commit(s) were added to refs/heads/trunk by this push:
 new bf55629  Revert "AMBARI-23565. Restore configs does not work. (#1130)"
bf55629 is described below

commit bf55629ce21a7da27778e252e67fd0a3841adc27
Author: Aravindan Vijayan 
AuthorDate: Mon Apr 30 10:34:27 2018 -0700

Revert "AMBARI-23565. Restore configs does not work. (#1130)"

This reverts commit 43cff24fc62604dee9726349e34ff72f83c43cc4.
---
 .../controller/AmbariManagementControllerImpl.java |   6 +-
 .../internal/ConfigGroupResourceProvider.java  |  17 
 .../apache/ambari/server/state/ConfigHelper.java   | 111 +++--
 .../apache/ambari/server/state/UpgradeHelper.java  |  12 +--
 .../ambari/server/state/cluster/ClusterImpl.java   |   5 +-
 .../ambari/server/state/cluster/ClustersImpl.java  |  18 
 .../server/upgrade/AbstractUpgradeCatalog.java |  10 +-
 .../AmbariCustomCommandExecutionHelperTest.java|  12 ---
 .../AmbariManagementControllerImplTest.java|   8 ++
 .../internal/ConfigGroupResourceProviderTest.java  |  18 +---
 .../ambari/server/state/cluster/ClusterTest.java   |   8 ++
 .../server/upgrade/UpgradeCatalog252Test.java  |  16 +--
 .../server/upgrade/UpgradeCatalog260Test.java  |  29 +++---
 .../server/upgrade/UpgradeCatalog270Test.java  |  13 +--
 14 files changed, 71 insertions(+), 212 deletions(-)

diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
index 20f9b8e..ba2ba3a 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
@@ -1868,6 +1868,8 @@ public class AmbariManagementControllerImpl implements 
AmbariManagementControlle
 }
   }
 }
+
m_metadataHolder.get().updateData(getClusterMetadataOnConfigsUpdate(cluster));
+m_agentConfigsHolder.get().updateData(cluster.getClusterId(), null);
 
 StackId currentVersion = cluster.getCurrentStackVersion();
 StackId desiredVersion = cluster.getDesiredStackVersion();
@@ -2012,10 +2014,6 @@ public class AmbariManagementControllerImpl implements 
AmbariManagementControlle
 }
   }
 }
-if (serviceConfigVersionResponse != null) {
-  
configHelper.updateAgentConfigs(Collections.singletonMap(cluster.getClusterName(),
-  
Collections.singleton(serviceConfigVersionResponse.getServiceName(;
-}
 
 if (requestStageContainer != null) {
   requestStageContainer.persist();
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProvider.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProvider.java
index ff25e30..6c55c85 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProvider.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProvider.java
@@ -58,7 +58,6 @@ import org.apache.ambari.server.state.Cluster;
 import org.apache.ambari.server.state.Clusters;
 import org.apache.ambari.server.state.Config;
 import org.apache.ambari.server.state.ConfigFactory;
-import org.apache.ambari.server.state.ConfigHelper;
 import org.apache.ambari.server.state.Host;
 import org.apache.ambari.server.state.configgroup.ConfigGroup;
 import org.apache.ambari.server.state.configgroup.ConfigGroupFactory;
@@ -70,7 +69,6 @@ import org.slf4j.LoggerFactory;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Sets;
 import com.google.inject.Inject;
-import com.google.inject.Provider;
 
 @StaticallyInject
 public class ConfigGroupResourceProvider extends
@@ -143,9 +141,6 @@ public class ConfigGroupResourceProvider extends
   @Inject
   private static ConfigFactory configFactory;
 
-  @Inject
-  private static Provider m_configHelper;
-
   /**
* Create a  new resource provider for the given management controller.
*
@@ -519,9 +514,6 @@ public class ConfigGroupResourceProvider extends
 cluster.getClusterName(), getManagementController().getAuthName(), 
configGroup.getName(), request.getId());
 
 cluster.deleteConfigGroup(request.getId());
-
-
m_configHelper.get().updateAgentConfigs(Collections.singletonMap(request.getClusterName(),
-Collections.singleton(configGroup.getServiceName(;
   }
 
   private void validateRequest(ConfigGroupRequest request) {
@@ -555,7 +547,6 @@ public class ConfigGroupResourceProvider extends
 ConfigGroupFactory configGroupFactory = 

[ambari] branch trunk updated: AMBARI-23627. Update Spring dependencies to fix CVE-2018-1270. (mpapirkovskyy) (#1135)

2018-04-30 Thread mpapirkovskyy
This is an automated email from the ASF dual-hosted git repository.

mpapirkovskyy pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git


The following commit(s) were added to refs/heads/trunk by this push:
 new 145ff84  AMBARI-23627. Update Spring dependencies to fix 
CVE-2018-1270. (mpapirkovskyy) (#1135)
145ff84 is described below

commit 145ff84abf6ea04ff6a6a9596573522f81a4afcd
Author: Myroslav Papirkovskyi 
AuthorDate: Mon Apr 30 21:33:50 2018 +0300

AMBARI-23627. Update Spring dependencies to fix CVE-2018-1270. 
(mpapirkovskyy) (#1135)
---
 ambari-project/pom.xml | 7 ++-
 ambari-server/pom.xml  | 5 +
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/ambari-project/pom.xml b/ambari-project/pom.xml
index 4a98bda..93ffd4b 100644
--- a/ambari-project/pom.xml
+++ b/ambari-project/pom.xml
@@ -37,7 +37,7 @@
 3.1.4
 1.7.20
 4.1.0
-4.3.7.RELEASE
+4.3.16.RELEASE
 2.9.5
 4
 false
@@ -476,6 +476,11 @@
   
   
 org.springframework
+spring-expression
+${spring.version}
+  
+  
+org.springframework
 spring-messaging
 ${spring.version}
   
diff --git a/ambari-server/pom.xml b/ambari-server/pom.xml
index 71034d2..8083880 100644
--- a/ambari-server/pom.xml
+++ b/ambari-server/pom.xml
@@ -1462,6 +1462,11 @@
 
 
 
+  org.springframework
+  spring-expression
+
+
+
   com.sun.jersey.contribs
   jersey-spring
   1.19

-- 
To stop receiving notification emails like this one, please contact
mpapirkovs...@apache.org.


[ambari] branch trunk updated: [AMBARI-23711] Customize Services - The selected service/Modified con… (#1117)

2018-04-30 Thread ishanbha
This is an automated email from the ASF dual-hosted git repository.

ishanbha pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git


The following commit(s) were added to refs/heads/trunk by this push:
 new 05bc12d  [AMBARI-23711] Customize Services - The selected 
service/Modified con… (#1117)
05bc12d is described below

commit 05bc12d4590970017575bb1b51f144219fd055bd
Author: Ishan Bhatt 
AuthorDate: Mon Apr 30 12:55:07 2018 -0400

[AMBARI-23711] Customize Services - The selected service/Modified con… 
(#1117)

* [AMBARI-23711] Customize Services - The selected service/Modified 
configurations are not remembered when navigating away/to the configuration 
tabs.

* Removed logger
---
 ambari-web/app/controllers/wizard.js   | 11 ++--
 .../app/controllers/wizard/step7_controller.js | 16 ++-
 ambari-web/app/messages.js |  2 +-
 ambari-web/app/routes/add_host_routes.js   |  9 +-
 ambari-web/app/routes/add_service_routes.js| 17 ---
 ambari-web/app/routes/installer.js |  6 ++--
 .../app/views/wizard/step7/directories_tab_view.js |  8 +-
 ambari-web/app/views/wizard/step7_view.js  |  1 +
 ambari-web/test/controllers/wizard/step7_test.js   | 33 +-
 9 files changed, 89 insertions(+), 14 deletions(-)

diff --git a/ambari-web/app/controllers/wizard.js 
b/ambari-web/app/controllers/wizard.js
index eb1de68..979806a 100644
--- a/ambari-web/app/controllers/wizard.js
+++ b/ambari-web/app/controllers/wizard.js
@@ -238,9 +238,11 @@ App.WizardController = 
Em.Controller.extend(App.LocalStorage, App.ThemesMappingM
 if (this.get('isStepDisabled').findProperty('step', step).get('value') !== 
false) {
   return false;
 }
+var currentStep = this.get('currentStep');
+var currentControllerName = this.get('content.controllerName');
 // if going back from Step 9 in Install Wizard, delete the checkpoint so 
that the user is not redirected
 // to Step 9
-if (this.get('content.controllerName') === 'installerController' && 
this.get('currentStep') === '9' && step < 9) {
+if (currentControllerName === 'installerController' && currentStep === '9' 
&& step < 9) {
   App.clusterStatus.setClusterStatus({
 clusterName: this.get('clusterName'),
 clusterState: 'CLUSTER_NOT_CREATED_1',
@@ -248,7 +250,12 @@ App.WizardController = 
Em.Controller.extend(App.LocalStorage, App.ThemesMappingM
 localdb: {}
   });
 }
-if ((this.get('currentStep') - step) > 1 && !disableNaviWarning) {
+var isCustomizeServicesStep = false;
+if ((currentControllerName === 'installerController' && currentStep === 
'7') || ((currentControllerName === 'addServiceController'|| 
currentControllerName === 'addHostController' ) && currentStep === '4')) {
+  isCustomizeServicesStep = true;
+}
+var stepDiff = currentStep - step;
+if (!disableNaviWarning && (stepDiff  > 1 || (isCustomizeServicesStep && 
stepDiff > 0))) {
   App.ModalPopup.show({
 header: Em.I18n.t('installer.navigation.warning.header'),
 onPrimary: function () {
diff --git a/ambari-web/app/controllers/wizard/step7_controller.js 
b/ambari-web/app/controllers/wizard/step7_controller.js
index 855817d..30131a8 100644
--- a/ambari-web/app/controllers/wizard/step7_controller.js
+++ b/ambari-web/app/controllers/wizard/step7_controller.js
@@ -360,6 +360,10 @@ App.WizardStep7Controller = 
Em.Controller.extend(App.ServerValidatorMixin, App.E
 this.get('filterColumns').setEach('selected', false);
   },
 
+  clearLastSelectedService: function () {
+
this.get('tabs').filterProperty('selectedServiceName').setEach('selectedServiceName',
 null);
+  },
+
   /**
* Generate "finger-print" for current stepConfigs[0]
* Used to determine, if user has some unsaved changes (comparing with 
hash)
@@ -1087,12 +1091,17 @@ App.WizardStep7Controller = 
Em.Controller.extend(App.ServerValidatorMixin, App.E
   },
 
   /**
+   * Select previously selected service if not within the tab for the first 
time
* Select first addable service for addServiceWizard
* Select first service at all in other cases
* @method selectProperService
*/
   selectProperService: function () {
-if (this.get('wizardController.name') === 'addServiceController') {
+var tabSelectedServiceName = this.get('tabs').findProperty('isActive', 
true).get('selectedServiceName');
+var lastSelectedService = tabSelectedServiceName ? 
this.get('stepConfigs').findProperty('serviceName', tabSelectedServiceName) : 
null
+if(tabSelectedServiceName && lastSelectedService) {
+  this.set('selectedService', lastSelectedService);
+} else if (this.get('wizardController.name') === 'addServiceController') {
   this.set('selectedService', 
this.get('stepConfigs').filterProperty('selected', 

[ambari] branch trunk updated: AMBARI-23730 When Spark2 is selected in left pane, Spark also gets selected along with it. (ababiichuk)

2018-04-30 Thread ababiichuk
This is an automated email from the ASF dual-hosted git repository.

ababiichuk pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git


The following commit(s) were added to refs/heads/trunk by this push:
 new cab7384  AMBARI-23730 When Spark2 is selected in left pane, Spark also 
gets selected along with it. (ababiichuk)
cab7384 is described below

commit cab73841d296042d549509b419de83ed1d4358fe
Author: ababiichuk 
AuthorDate: Mon Apr 30 17:38:55 2018 +0300

AMBARI-23730 When Spark2 is selected in left pane, Spark also gets selected 
along with it. (ababiichuk)
---
 ambari-web/vendor/scripts/theme/bootstrap-ambari.js | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/ambari-web/vendor/scripts/theme/bootstrap-ambari.js 
b/ambari-web/vendor/scripts/theme/bootstrap-ambari.js
index 6102bc3..1059ab3 100644
--- a/ambari-web/vendor/scripts/theme/bootstrap-ambari.js
+++ b/ambari-web/vendor/scripts/theme/bootstrap-ambari.js
@@ -86,10 +86,14 @@ $(document).ready(function () {
 
   function popStateHandler() {
 var path = window.location.pathname + window.location.hash;
+if (path[path.length - 1] !== '/') {
+  path += '/';
+}
 $navigationContainer.find('li a').each(function (index, link) {
   var $link = $(link);
   var href = $link.attr('data-href') || $link.attr('href');
-  if (path.indexOf(href) !== -1 && ['', '#'].indexOf(href) === -1) {
+  var hrefWithSlash = href == null || href[href.length - 1] === '/' ? 
href : href + '/';
+  if (path.indexOf(hrefWithSlash) !== -1 && ['', '#'].indexOf(href) 
=== -1) {
 $link.parent().addClass('active');
   } else {
 $link.parent().removeClass('active');

-- 
To stop receiving notification emails like this one, please contact
ababiic...@apache.org.


[ambari] branch trunk updated: [AMBARI-23530] Document enabling SSO via CLI

2018-04-30 Thread rlevas
This is an automated email from the ASF dual-hosted git repository.

rlevas pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git


The following commit(s) were added to refs/heads/trunk by this push:
 new b90128b  [AMBARI-23530] Document enabling SSO via CLI
b90128b is described below

commit b90128bca4e8c47101c95541b500e3753f5b70a5
Author: Robert Levas 
AuthorDate: Mon Apr 30 07:08:57 2018 -0400

[AMBARI-23530] Document enabling SSO via CLI
---
 ambari-server/docs/security/sso/index.md | 541 +++
 1 file changed, 541 insertions(+)

diff --git a/ambari-server/docs/security/sso/index.md 
b/ambari-server/docs/security/sso/index.md
new file mode 100644
index 000..9e3a5bc
--- /dev/null
+++ b/ambari-server/docs/security/sso/index.md
@@ -0,0 +1,541 @@
+
+
+Ambari Single Sign-on Configuration
+=
+
+- [Introduction](#introduction)
+- [How it Works](#how-it-works)
+- [Setting SSO Configuration Using the CLI](#setup-using-cli)
+  - [Silent Mode](#setup-using-cli-silent)
+  - [Interactive Mode](#setup-using-cli-interactive)
+- [Managing SSO Configuration Using the REST API](#setup-using-api)
+  - [Getting the SSO Configuration](#setup-using-api-get)
+  - [Setting the SSO Configuration](#setup-using-api-post)
+  - [Updating the SSO Configuration](#setup-using-api-put)
+  - [Deleting the SSO Configuration](#setup-using-api-delete)
+- [Implementation Details](#implementation-details)
+  - [Configuration Data](#implementation-details-data)
+  - [Stack Advisor](#implementation-details-stack-advisor)
+- [AmbariConfiguration 
class](#implementation-details-stack-advisor-ambariconfiguration)
+- [AmbariSSODetails 
class](#implementation-details-stack-advisor-ambarissodetails)
+- [Example](#implementation-details-stack-advisor-example)
+
+
+## Introduction
+
+Ambari has a feature to integrate with [Apache Knox](https://knox.apache.org/) 
to 
+provide single sign-on (SSO) services. To set this up, the Ambari Server CLI 
may be used by executing
+the following on the command line:
+
+```
+ambari-server setup-sso
+```
+   
+After answering a few prompts, the CLI utility would update the 
`/etc/ambari-server/conf/ambari.properties` 
+file with the appropriate properties so that when Ambari was restarted, it 
would rely on Knox for 
+authentication. One caveat is that both Ambari and Knox would need to know 
about the same set of users.
+This is typically done by having both Ambari and Knox sync with the same LDAP 
server. 
+
+See [Setting up Knox SSO for 
Ambari](https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.6.1/bk_security/content/setting_up_knox_sso_for_ambari.html)
 
+for more details on how it *used* to work. 
+
+One issue with this feature is that it only sets up Ambari to use Knox. 
However, other services have 
+the ability to integrate with Knox and each requires the user to configure 
separately.  This is
+inconvenient and error prone for the user. 
+
+As of Ambari 2.7.0, Ambari has the ability to collect SSO configuration 
details and configure itself, 
+as well as, any eligible services for SSO.  This is done using the Ambari 
Server CLI, as before; however,
+once complete, the collected information is stored in the Ambari database and 
then used to configure
+selected service. Any altered configurations would cause the relevant services 
to request to be 
+restarted.  Ambari, on the other hand, will load the SSO configuration 
automatically and change its
+behavior without needing to be restarted. 
+
+
+## How it works
+
+Ambari, by default, is eligible to be configured for SSO. Any other service 
that is to be eligible 
+for SSO configuration by Ambari needs to declare this by adding an "sso" 
declaration in its service 
+definition's `metainfo.xml` file.  The declaration is as follows:
+
+```
+
+  ...
+  
+
+...
+  
+true
+config-type/property_name
+  
+...
+
+  
+
+```  
+
+Inside the `` block, the `` element with the value of "true" 
tells Ambari that this
+service is eligible to be configured for SSO.  The `enabledConfiguration` is a 
property specification
+that indicates a boolean property to check to tell whether the service has 
been configured for SSO 
+or not.  
+
+For example, in the `metainfo.xml` file for Atlas:
+
+```
+
+  true
+  
application-properties/atlas.sso.knox.enabled
+
+```
+
+Support is enabled and the property value for `atlas.sso.knox.enabled` in the 
`application-properties`
+configuration type is used to tell if SSO has been enabled for Atlas or not. 
+
+Once support is declared by a service **and** it is installed, it will be 
listed as an eligible service
+while selecting services for which to enable SSO via the Ambari Server CLI.
+
+Example:
+```
+# ambari-server setup-sso
+...
+Manage SSO configurations for eligible services [y/n] (n)? y
+ Use SSO for all services [y/n] (n)? n
+   Use SSO for ATLAS 

[ambari] branch trunk updated: AMBARI-23729. Start Namenodes takes a very long time when adding a namespace (akovalenko)

2018-04-30 Thread akovalenko
This is an automated email from the ASF dual-hosted git repository.

akovalenko pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git


The following commit(s) were added to refs/heads/trunk by this push:
 new 9ccad63  AMBARI-23729. Start Namenodes takes a very long time when 
adding a namespace (akovalenko)
9ccad63 is described below

commit 9ccad6359549f03f9e2f4e0b1ca244aaac88e3f6
Author: Aleksandr Kovalenko 
AuthorDate: Mon Apr 30 17:43:28 2018 +0300

AMBARI-23729. Start Namenodes takes a very long time when adding a 
namespace (akovalenko)
---
 .../main/admin/federation/step1_controller.js  |  2 +-
 .../main/admin/federation/step4_controller.js  | 25 +-
 ambari-web/app/messages.js | 20 +
 3 files changed, 36 insertions(+), 11 deletions(-)

diff --git 
a/ambari-web/app/controllers/main/admin/federation/step1_controller.js 
b/ambari-web/app/controllers/main/admin/federation/step1_controller.js
index e7730a4..63b9ca8 100644
--- a/ambari-web/app/controllers/main/admin/federation/step1_controller.js
+++ b/ambari-web/app/controllers/main/admin/federation/step1_controller.js
@@ -37,7 +37,7 @@ App.NameNodeFederationWizardStep1Controller = 
Em.Controller.extend({
   }.property('content.nameServiceId', 'existingNameServices.length'),
 
   next: function () {
-if (this.get('isNameServiceIdValid')) {
+if (!this.get('isNameServiceIdError')) {
   App.router.send('next');
 }
   }
diff --git 
a/ambari-web/app/controllers/main/admin/federation/step4_controller.js 
b/ambari-web/app/controllers/main/admin/federation/step4_controller.js
index b1606f3..7bc3a0a 100644
--- a/ambari-web/app/controllers/main/admin/federation/step4_controller.js
+++ b/ambari-web/app/controllers/main/admin/federation/step4_controller.js
@@ -22,10 +22,25 @@ App.NameNodeFederationWizardStep4Controller = 
App.HighAvailabilityProgressPageCo
 
   name: "nameNodeFederationWizardStep4Controller",
 
-  commands: ['stopRequiredServices', 'reconfigureServices', 'installNameNode', 
'installZKFC', 'startJournalNodes', 'startNameNodes', 'formatNameNode', 
'formatZKFC', 'startZKFC', 'startNameNode', 'bootstrapNameNode', 'startZKFC2', 
'startNameNode2', 'restartAllServices'],
+  commands: ['stopRequiredServices', 'reconfigureServices', 'installNameNode', 
'installZKFC', 'startJournalNodes', 'startInfraSolr', 'startRanger', 
'startNameNodes', 'formatNameNode', 'formatZKFC', 'startZKFC', 'startNameNode', 
'bootstrapNameNode', 'startZKFC2', 'startNameNode2', 'restartAllServices'],
 
   tasksMessagesPrefix: 'admin.nameNodeFederation.wizard.step',
 
+  initializeTasks: function () {
+this._super();
+this.removeUnneededTasks();
+  },
+
+  removeUnneededTasks: function () {
+var installedServices = App.Service.find().mapProperty('serviceName');
+if (!installedServices.contains('RANGER')) {
+  this.removeTasks(['startInfraSolr', 'startRanger']);
+}
+if (!installedServices.contains('AMBARI_INFRA_SOLR')) {
+  this.removeTasks(['startInfraSolr']);
+}
+  },
+
   newNameNodeHosts: function () {
 return 
this.get('content.masterComponentHosts').filterProperty('component', 
'NAMENODE').filterProperty('isInstalled', false).mapProperty('hostName');
   }.property('content.masterComponentHosts.@each.hostName'),
@@ -114,6 +129,14 @@ App.NameNodeFederationWizardStep4Controller = 
App.HighAvailabilityProgressPageCo
 this.updateComponent('ZKFC', this.get('newNameNodeHosts')[0], "HDFS", 
"Start");
   },
 
+  startInfraSolr: function () {
+this.startServices(false, ['AMBARI_INFRA_SOLR'], true);
+  },
+
+  startRanger: function () {
+this.startServices(false, ['RANGER'], true);
+  },
+
   startNameNode: function () {
 this.updateComponent('NAMENODE', this.get('newNameNodeHosts')[0], "HDFS", 
"Start");
   },
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index 899504c..3849fac 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -1692,15 +1692,17 @@ Em.I18n.translations = {
   'admin.nameNodeFederation.wizard.step4.task2.title': 'Install Additional 
NameNodes',
   'admin.nameNodeFederation.wizard.step4.task3.title': 'Install Additional 
ZKFCs',
   'admin.nameNodeFederation.wizard.step4.task4.title': 'Start JournalNodes',
-  'admin.nameNodeFederation.wizard.step4.task5.title': 'Start NameNodes',
-  'admin.nameNodeFederation.wizard.step4.task6.title': 'Format NameNode',
-  'admin.nameNodeFederation.wizard.step4.task7.title': 'Format ZKFC',
-  'admin.nameNodeFederation.wizard.step4.task8.title': 'Start ZKFC',
-  'admin.nameNodeFederation.wizard.step4.task9.title': 'Start NameNode',
-  'admin.nameNodeFederation.wizard.step4.task10.title': 'Bootstrap NameNode',
-  'admin.nameNodeFederation.wizard.step4.task11.title': 'Start ZKFC',
-  'admin.nameNodeFederation.wizard.step4.task12.title': 'Start NameNode',
-  

[ambari] branch trunk updated: AMBARI-23715 Config Version Comparison tool shows diff text merging into each other if config values are long.

2018-04-30 Thread atkach
This is an automated email from the ASF dual-hosted git repository.

atkach pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git


The following commit(s) were added to refs/heads/trunk by this push:
 new 12501aa  AMBARI-23715 Config Version Comparison tool shows diff text 
merging into each other if config values are long.
12501aa is described below

commit 12501aab230ecb3d72a5ab1c26f2ebdf3aafd988
Author: Andrii Tkach 
AuthorDate: Fri Apr 27 13:56:39 2018 +0300

AMBARI-23715 Config Version Comparison tool shows diff text merging into 
each other if config values are long.
---
 ambari-web/app/styles/service_configurations.less  |  5 +
 .../templates/common/configs/service_config.hbs| 25 --
 .../views/common/configs/service_config_view.js|  2 +-
 3 files changed, 29 insertions(+), 3 deletions(-)

diff --git a/ambari-web/app/styles/service_configurations.less 
b/ambari-web/app/styles/service_configurations.less
index 0497172..8d7989c 100644
--- a/ambari-web/app/styles/service_configurations.less
+++ b/ambari-web/app/styles/service_configurations.less
@@ -32,10 +32,15 @@
   }
 
   .property-value-column {
+word-break: break-all;
 overflow: auto;
 max-height: 300px;
   }
 
+  .accordion-without-tabs {
+margin-top: 50px;
+  }
+
   .comparison-row {
 margin-left: -25px;
 padding: 10px 0;
diff --git a/ambari-web/app/templates/common/configs/service_config.hbs 
b/ambari-web/app/templates/common/configs/service_config.hbs
index e6a15ea..29f07dd 100644
--- a/ambari-web/app/templates/common/configs/service_config.hbs
+++ b/ambari-web/app/templates/common/configs/service_config.hbs
@@ -138,7 +138,7 @@
 
 
   {{#each tab in view.tabs}}
-
+
   {{#if tab.isAdvanced}}
 {{#if tab.isRendered}}
   {{#if isCompareMode}}
@@ -177,7 +177,28 @@
   {{/each}}
 
   {{else}}
-{{view App.ConfigCategoryContainerView 
categoriesBinding="selectedService.configCategories" 
canEditBinding="view.canEdit" serviceBinding="selectedService" 
serviceConfigsBinding="selectedService.configs" 
supportsHostOverridesBinding="view.supportsHostOverrides"}}
+
+  {{#if isCompareMode}}
+
+  {{t 
common.propertyName}}
+  
+{{t common.version}}{{selectedVersionRecord.version}}
+{{#if selectedVersionRecord.isCurrent}}
+  {{t common.current}}
+{{/if}}
+  
+  
+{{t common.version}}{{compareServiceVersion.version}}
+{{#if compareServiceVersion.isCurrent}}
+  {{t common.current}}
+{{/if}}
+  
+
+  {{/if}}
+  {{view App.ConfigCategoryContainerView 
categoriesBinding="selectedService.configCategories"
+ canEditBinding="view.canEdit" serviceBinding="selectedService"
+ serviceConfigsBinding="selectedService.configs" 
supportsHostOverridesBinding="view.supportsHostOverrides"}}
+
   {{/if}}
   {{#if view.isAllConfigsHidden}}
 
diff --git a/ambari-web/app/views/common/configs/service_config_view.js 
b/ambari-web/app/views/common/configs/service_config_view.js
index 58ccf12..590c0bc 100644
--- a/ambari-web/app/views/common/configs/service_config_view.js
+++ b/ambari-web/app/views/common/configs/service_config_view.js
@@ -75,7 +75,7 @@ App.ServiceConfigView = Em.View.extend({
*/
   isOnTheServicePage: Em.computed.equal('controller.name', 
'mainServiceInfoConfigsController'),
 
-  classNameBindings: ['isOnTheServicePage:serviceConfigs'],
+  classNameBindings: ['isOnTheServicePage:serviceConfigs', 
'controller.isCompareMode:settings-compare-layout'],
 
   /**
* flag defines if any config match filter

-- 
To stop receiving notification emails like this one, please contact
atk...@apache.org.


[ambari] branch trunk updated: AMBARI-23720 Ambari UI trying to create GPL repo with empty base url for the rest repos

2018-04-30 Thread atkach
This is an automated email from the ASF dual-hosted git repository.

atkach pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git


The following commit(s) were added to refs/heads/trunk by this push:
 new 67ff53b  AMBARI-23720 Ambari UI trying to create GPL repo with empty 
base url for the rest repos
67ff53b is described below

commit 67ff53b6daeeac41476567d1084ac90223999fc7
Author: Andrii Tkach 
AuthorDate: Fri Apr 27 18:53:29 2018 +0300

AMBARI-23720 Ambari UI trying to create GPL repo with empty base url for 
the rest repos
---
 ambari-web/app/controllers/installer.js| 26 +-
 .../app/controllers/wizard/step1_controller.js |  7 +-
 2 files changed, 21 insertions(+), 12 deletions(-)

diff --git a/ambari-web/app/controllers/installer.js 
b/ambari-web/app/controllers/installer.js
index 14010b6..9da077b 100644
--- a/ambari-web/app/controllers/installer.js
+++ b/ambari-web/app/controllers/installer.js
@@ -322,7 +322,9 @@ App.InstallerController = 
App.WizardController.extend(App.Persist, {
 var _oses = oses || [];
 var _stacks = stacks || [];
 _repos.forEach(function (repo) {
-  App.Repository.find().findProperty('id', repo.id).set('baseUrl', 
repo.base_url);
+  if (App.Repository.find(repo.id).get('isLoaded')) {
+App.Repository.find(repo.id).set('baseUrl', repo.base_url);
+  }
 });
 _oses.forEach(function (os) {
   if (App.OperatingSystem.find().findProperty('id', os.id)) {
@@ -823,16 +825,18 @@ App.InstallerController = 
App.WizardController.extend(App.Persist, {
   "repositories": []
 });
 os.get('repositories').forEach(function (repository) {
-  repoVersion.operating_systems[k].repositories.push({
-"Repositories": {
-  "base_url": repository.get('baseUrl'),
-  "repo_id": repository.get('repoId'),
-  "repo_name": repository.get('repoName'),
-  "components": repository.get('components'),
-  "tags": repository.get('tags'),
-  "distribution": repository.get('distribution')
-}
-  });
+  if (!(repository.get('isGPL') && 
_.isEmpty(repository.get('baseUrl' {
+repoVersion.operating_systems[k].repositories.push({
+  "Repositories": {
+"base_url": repository.get('baseUrl'),
+"repo_id": repository.get('repoId'),
+"repo_name": repository.get('repoName'),
+"components": repository.get('components'),
+"tags": repository.get('tags'),
+"distribution": repository.get('distribution')
+  }
+});
+  }
 });
 k++;
   }
diff --git a/ambari-web/app/controllers/wizard/step1_controller.js 
b/ambari-web/app/controllers/wizard/step1_controller.js
index c137d96..d731a43 100644
--- a/ambari-web/app/controllers/wizard/step1_controller.js
+++ b/ambari-web/app/controllers/wizard/step1_controller.js
@@ -61,7 +61,12 @@ App.WizardStep1Controller = Em.Controller.extend({
*
* @type {boolean}
*/
-  networkIssuesExist: Em.computed.everyBy('content.stacks', 'stackDefault', 
true),
+  networkIssuesExist: function() {
+if (this.get('content.stacks') && this.get('content.stacks.length') > 1) {
+  return this.get('content.stacks').everyProperty('stackDefault', true);
+}
+return false;
+  }.property('content.stacks.@each.stackDefault'),
 
   /**
* No stacks have repo update URL section (aka "latest") defined in 
repoinfo.xml

-- 
To stop receiving notification emails like this one, please contact
atk...@apache.org.


[ambari] branch trunk updated: AMBARI-23722. Ambari allows namespace name to be reused for new namespaces (akovalenko)

2018-04-30 Thread akovalenko
This is an automated email from the ASF dual-hosted git repository.

akovalenko pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git


The following commit(s) were added to refs/heads/trunk by this push:
 new 0fb38a0  AMBARI-23722. Ambari allows namespace name to be reused for 
new namespaces (akovalenko)
0fb38a0 is described below

commit 0fb38a0312d485ccad2ec065c72e69a08c4083ff
Author: Aleksandr Kovalenko 
AuthorDate: Fri Apr 27 21:38:04 2018 +0300

AMBARI-23722. Ambari allows namespace name to be reused for new namespaces 
(akovalenko)
---
 .../controllers/main/admin/federation/step1_controller.js | 15 ++-
 ambari-web/app/messages.js|  2 +-
 ambari-web/app/templates/main/admin/federation/step1.hbs  |  8 
 ambari-web/app/views/main/admin/federation/step1_view.js  |  4 +---
 4 files changed, 16 insertions(+), 13 deletions(-)

diff --git 
a/ambari-web/app/controllers/main/admin/federation/step1_controller.js 
b/ambari-web/app/controllers/main/admin/federation/step1_controller.js
index 67c45f4..e7730a4 100644
--- a/ambari-web/app/controllers/main/admin/federation/step1_controller.js
+++ b/ambari-web/app/controllers/main/admin/federation/step1_controller.js
@@ -24,12 +24,17 @@ App.NameNodeFederationWizardStep1Controller = 
Em.Controller.extend({
 
   existingNameServices: function () {
 var isMetricsLoaded = 
App.router.get('clusterController.isHostComponentMetricsLoaded');
-return isMetricsLoaded ? 
App.HDFSService.find().objectAt(0).get('masterComponentGroups').mapProperty('name').join(',
 ') : '';
-  }.property('App.router.clusterController.isHostComponentMetricsLoaded'),
+return isMetricsLoaded ? 
App.HDFSService.find().objectAt(0).get('masterComponentGroups').mapProperty('name')
 : [];
+  }.property('App.router.clusterController.isHDFSNameSpacesLoaded'),
 
-  isNameServiceIdValid: function () {
-return validator.isValidNameServiceId(this.get('content.nameServiceId'));
-  }.property('content.nameServiceId'),
+  existingNameServicesString: function () {
+return this.get('existingNameServices').join(', ');
+  }.property('existingNameServices.length'),
+
+  isNameServiceIdError: function () {
+var nameServiceId = this.get('content.nameServiceId');
+return !nameServiceId || 
this.get('existingNameServices').contains(nameServiceId) || 
!validator.isValidNameServiceId(nameServiceId);
+  }.property('content.nameServiceId', 'existingNameServices.length'),
 
   next: function () {
 if (this.get('isNameServiceIdValid')) {
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index edd0d15..899504c 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -1675,7 +1675,7 @@ Em.I18n.translations = {
   'admin.nameNodeFederation.wizard.step1.alert':'You should plan a cluster 
maintenance window and prepare for cluster downtime when adding a new HDFS 
Namespace as this Wizard will restart all services.',
   'admin.nameNodeFederation.wizard.step1.nameserviceid':'New Nameservice ID',
   'admin.nameNodeFederation.wizard.step1.nameserviceid.existing':'Existing 
Nameservice ID',
-  'admin.nameNodeFederation.wizard.step1.nameserviceid.error':'Must consist of 
letters, numbers, and hyphens. Cannot begin or end with a hyphen.',
+  'admin.nameNodeFederation.wizard.step1.nameserviceid.error':'Must be unique 
and consist of letters, numbers, and hyphens. Cannot begin or end with a 
hyphen.',
   'admin.nameNodeFederation.wizard.step2.header': 'Select Hosts',
   'admin.nameNodeFederation.wizard.step2.body': 'Select hosts running the 
NameNodes for {0}',
   'admin.nameNodeFederation.wizard.step3.header': 'Review',
diff --git a/ambari-web/app/templates/main/admin/federation/step1.hbs 
b/ambari-web/app/templates/main/admin/federation/step1.hbs
index e6b9d08..7477169 100644
--- a/ambari-web/app/templates/main/admin/federation/step1.hbs
+++ b/ambari-web/app/templates/main/admin/federation/step1.hbs
@@ -25,13 +25,13 @@
   
   
 
-  
+  
 
   
 {{t 
admin.nameNodeFederation.wizard.step1.nameserviceid.existing}}:
   
   
-{{controller.existingNameServices}}
+{{controller.existingNameServicesString}}
   
 
 
@@ -42,7 +42,7 @@
 {{view Ember.TextField valueBinding="content.nameServiceId" 
classNames="form-control"}}
   
   
-
+
   {{t admin.nameNodeFederation.wizard.step1.nameserviceid.error}}
 
   
@@ -53,7 +53,7 @@
 
 
   
-{{t 
common.next}} 
+{{t common.next}} 

   
 
 
diff --git a/ambari-web/app/views/main/admin/federation/step1_view.js 
b/ambari-web/app/views/main/admin/federation/step1_view.js
index a988f78..148a0ee 100644
--- a/ambari-web/app/views/main/admin/federation/step1_view.js
+++ b/ambari-web/app/views/main/admin/federation/step1_view.js
@@ -25,8