Repository: ambari Updated Branches: refs/heads/trunk 8b820346c -> 786d4b633
AMBARI-22462 Remove hard-code from StackAdvisorCommand requests to another resources (dgrinenko) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/786d4b63 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/786d4b63 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/786d4b63 Branch: refs/heads/trunk Commit: 786d4b63349d2c0f18d8a06a29fe1cc5598cf8fc Parents: 8b82034 Author: Dmytro Grinenko <[email protected]> Authored: Mon Nov 20 07:37:02 2017 +0200 Committer: Dmytro Grinenko <[email protected]> Committed: Mon Nov 20 07:37:02 2017 +0200 ---------------------------------------------------------------------- .../stackadvisor/commands/StackAdvisorCommand.java | 15 +++++++++++---- .../ambari/server/controller/KerberosHelperImpl.java | 6 +++--- ...erviceComponentConfigurationResourceProvider.java | 8 ++++---- .../AbstractPrepareKerberosServerAction.java | 6 ++++-- .../PrepareKerberosIdentitiesServerAction.java | 5 ++++- .../apache/ambari/server/topology/AmbariContext.java | 3 ++- .../ambari/server/topology/BlueprintFactory.java | 3 ++- .../validators/RequiredPasswordValidator.java | 3 ++- 8 files changed, 32 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/786d4b63/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommand.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommand.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommand.java index 17591ec..1b89c4f 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommand.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommand.java @@ -47,6 +47,7 @@ import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorResponse; import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorRunner; import org.apache.ambari.server.controller.RootComponent; import org.apache.ambari.server.controller.RootService; +import org.apache.ambari.server.controller.internal.RootServiceComponentConfigurationResourceProvider; import org.apache.ambari.server.controller.spi.Resource; import org.apache.ambari.server.state.ServiceInfo; import org.apache.ambari.server.utils.DateUtils; @@ -77,6 +78,8 @@ public abstract class StackAdvisorCommand<T extends StackAdvisorResponse> extend private static final String GET_HOSTS_INFO_URI = "/api/v1/hosts" + "?fields=Hosts/*&Hosts/host_name.in(%s)"; + static final String LDAP_CONFIGURATION_PROPERTY = "ldap-configuration"; + private static final String GET_SERVICES_INFO_URI = "/api/v1/stacks/%s/versions/%s/" + "?fields=Versions/stack_name,Versions/stack_version,Versions/parent_stack_version" + ",services/StackServices/service_name,services/StackServices/service_version" @@ -86,9 +89,14 @@ public abstract class StackAdvisorCommand<T extends StackAdvisorResponse> extend + ",services/configurations/dependencies/StackConfigurationDependency/dependency_name" + ",services/configurations/dependencies/StackConfigurationDependency/dependency_type,services/configurations/StackConfigurations/type" + "&services/StackServices/service_name.in(%s)"; - private static final String GET_AMBARI_LDAP_CONFIG_URI = "/api/v1/services/AMBARI/components/AMBARI_SERVER/configurations" + - "?Configuration/category=ldap-configuration" + - "&fields=Configuration/properties"; + + private static final String GET_AMBARI_LDAP_CONFIG_URI = String.format("/api/v1/services/%s/components/%s/configurations?%s=%s&fields=%s", + RootService.AMBARI.name(), + RootComponent.AMBARI_SERVER.name(), + RootServiceComponentConfigurationResourceProvider.CONFIGURATION_CATEGORY_PROPERTY_ID, + LDAP_CONFIGURATION_PROPERTY, + RootServiceComponentConfigurationResourceProvider.CONFIGURATION_PROPERTIES_PROPERTY_ID); + private static final String SERVICES_PROPERTY = "services"; private static final String SERVICES_COMPONENTS_PROPERTY = "components"; private static final String CONFIG_GROUPS_PROPERTY = "config-groups"; @@ -100,7 +108,6 @@ public abstract class StackAdvisorCommand<T extends StackAdvisorResponse> extend private static final String CHANGED_CONFIGURATIONS_PROPERTY = "changed-configurations"; private static final String USER_CONTEXT_PROPERTY = "user-context"; private static final String AMBARI_SERVER_CONFIGURATIONS_PROPERTY = "ambari-server-properties"; - static final String LDAP_CONFIGURATION_PROPERTY = "ldap-configuration"; private File recommendationsDir; private String recommendationsArtifactsLifetime; http://git-wip-us.apache.org/repos/asf/ambari/blob/786d4b63/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelperImpl.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelperImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelperImpl.java index 474c335..ab85aa1 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelperImpl.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelperImpl.java @@ -467,8 +467,8 @@ public class KerberosHelperImpl implements KerberosHelper { // If Ambari is managing it own identities then add AMBARI to the set of installed service so // that its Kerberos descriptor entries will be included. if (createAmbariIdentities(existingConfigurations.get(KERBEROS_ENV))) { - installedServices = new HashMap<String, Set<String>>(installedServices); - installedServices.put("AMBARI", Collections.singleton("AMBARI_SERVER")); + installedServices = new HashMap<>(installedServices); + installedServices.put(RootService.AMBARI.name(), Collections.singleton(RootComponent.AMBARI_SERVER.name())); } // Create the context to use for filtering Kerberos Identities based on the state of the cluster @@ -1547,7 +1547,7 @@ public class KerberosHelperImpl implements KerberosHelper { keytabFileGroupName, keytabFileGroupAccess, Sets.newHashSet(Pair.of(hostId, Pair.of(evaluatedPrincipal, principalType))), - serviceName.equalsIgnoreCase("AMBARI"), + serviceName.equalsIgnoreCase(RootService.AMBARI.name()), componentName.equalsIgnoreCase("AMBARI_SERVER_SELF") ); if (resolvedKeytabs.containsKey(keytabFilePath)) { http://git-wip-us.apache.org/repos/asf/ambari/blob/786d4b63/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RootServiceComponentConfigurationResourceProvider.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RootServiceComponentConfigurationResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RootServiceComponentConfigurationResourceProvider.java index ea9cf4f..7807865 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RootServiceComponentConfigurationResourceProvider.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RootServiceComponentConfigurationResourceProvider.java @@ -59,10 +59,10 @@ public class RootServiceComponentConfigurationResourceProvider extends AbstractA static final String RESOURCE_KEY = "Configuration"; - static final String CONFIGURATION_CATEGORY_PROPERTY_ID = PropertyHelper.getPropertyId(RESOURCE_KEY, "category"); - static final String CONFIGURATION_PROPERTIES_PROPERTY_ID = PropertyHelper.getPropertyId(RESOURCE_KEY, "properties"); - static final String CONFIGURATION_COMPONENT_NAME_PROPERTY_ID = PropertyHelper.getPropertyId(RESOURCE_KEY, "component_name"); - static final String CONFIGURATION_SERVICE_NAME_PROPERTY_ID = PropertyHelper.getPropertyId(RESOURCE_KEY, "service_name"); + public static final String CONFIGURATION_CATEGORY_PROPERTY_ID = PropertyHelper.getPropertyId(RESOURCE_KEY, "category"); + public static final String CONFIGURATION_PROPERTIES_PROPERTY_ID = PropertyHelper.getPropertyId(RESOURCE_KEY, "properties"); + public static final String CONFIGURATION_COMPONENT_NAME_PROPERTY_ID = PropertyHelper.getPropertyId(RESOURCE_KEY, "component_name"); + public static final String CONFIGURATION_SERVICE_NAME_PROPERTY_ID = PropertyHelper.getPropertyId(RESOURCE_KEY, "service_name"); private static final Set<String> PROPERTIES; http://git-wip-us.apache.org/repos/asf/ambari/blob/786d4b63/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/AbstractPrepareKerberosServerAction.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/AbstractPrepareKerberosServerAction.java b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/AbstractPrepareKerberosServerAction.java index 4008620..b8affb4 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/AbstractPrepareKerberosServerAction.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/AbstractPrepareKerberosServerAction.java @@ -33,6 +33,8 @@ import java.util.Set; import org.apache.ambari.server.AmbariException; import org.apache.ambari.server.agent.CommandReport; import org.apache.ambari.server.controller.KerberosHelper; +import org.apache.ambari.server.controller.RootComponent; +import org.apache.ambari.server.controller.RootService; import org.apache.ambari.server.serveraction.kerberos.stageutils.ResolvedKerberosKeytab; import org.apache.ambari.server.state.Cluster; import org.apache.ambari.server.state.ServiceComponentHost; @@ -192,11 +194,11 @@ public abstract class AbstractPrepareKerberosServerAction extends KerberosServer // component. String componentName = KerberosHelper.AMBARI_SERVER_KERBEROS_IDENTITY_NAME.equals(identity.getName()) ? "AMBARI_SERVER_SELF" - : "AMBARI_SERVER"; + : RootComponent.AMBARI_SERVER.name(); List<KerberosIdentityDescriptor> componentIdentities = Collections.singletonList(identity); kerberosHelper.addIdentities(kerberosIdentityDataFileWriter, componentIdentities, - identityFilter, StageUtils.getHostName(), ambariServerHostID(), "AMBARI", componentName, kerberosConfigurations, currentConfigurations, + identityFilter, StageUtils.getHostName(), ambariServerHostID(), RootService.AMBARI.name(), componentName, kerberosConfigurations, currentConfigurations, resolvedKeytabs, realm); propertiesToIgnore = gatherPropertiesToIgnore(componentIdentities, propertiesToIgnore); } http://git-wip-us.apache.org/repos/asf/ambari/blob/786d4b63/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/PrepareKerberosIdentitiesServerAction.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/PrepareKerberosIdentitiesServerAction.java b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/PrepareKerberosIdentitiesServerAction.java index b0fca8d..83a2106 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/PrepareKerberosIdentitiesServerAction.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/PrepareKerberosIdentitiesServerAction.java @@ -30,6 +30,8 @@ import org.apache.ambari.server.AmbariException; import org.apache.ambari.server.actionmanager.HostRoleStatus; import org.apache.ambari.server.agent.CommandReport; import org.apache.ambari.server.controller.KerberosHelper; +import org.apache.ambari.server.controller.RootComponent; +import org.apache.ambari.server.controller.RootService; import org.apache.ambari.server.state.Cluster; import org.apache.ambari.server.state.ServiceComponentHost; import org.apache.ambari.server.state.kerberos.KerberosComponentDescriptor; @@ -110,7 +112,8 @@ public class PrepareKerberosIdentitiesServerAction extends AbstractPrepareKerber if (serviceComponentFilter != null) { // If we are including the Ambari identity; then ensure that if a service/component filter is set, // it contains the AMBARI/AMBARI_SERVER component; else do not include the Ambari service identity. - includeAmbariIdentity &= (serviceComponentFilter.get("AMBARI") != null) && serviceComponentFilter.get("AMBARI").contains("AMBARI_SERVER"); + includeAmbariIdentity &= (serviceComponentFilter.get(RootService.AMBARI.name()) != null) + && serviceComponentFilter.get(RootService.AMBARI.name()).contains(RootComponent.AMBARI_SERVER.name()); if((operationType != OperationType.DEFAULT)) { // Update the identity filter, if necessary http://git-wip-us.apache.org/repos/asf/ambari/blob/786d4b63/ambari-server/src/main/java/org/apache/ambari/server/topology/AmbariContext.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/AmbariContext.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/AmbariContext.java index eb39562..933afa2 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/topology/AmbariContext.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/AmbariContext.java @@ -49,6 +49,7 @@ import org.apache.ambari.server.controller.ClusterRequest; import org.apache.ambari.server.controller.ConfigGroupRequest; import org.apache.ambari.server.controller.ConfigurationRequest; import org.apache.ambari.server.controller.RequestStatusResponse; +import org.apache.ambari.server.controller.RootComponent; import org.apache.ambari.server.controller.ServiceComponentHostRequest; import org.apache.ambari.server.controller.ServiceComponentRequest; import org.apache.ambari.server.controller.ServiceRequest; @@ -402,7 +403,7 @@ public class AmbariContext { for (String component : entry.getValue()) { //todo: handle this in a generic manner. These checks are all over the code try { - if (cluster.getService(service) != null && !component.equals("AMBARI_SERVER")) { + if (cluster.getService(service) != null && !component.equals(RootComponent.AMBARI_SERVER.name())) { requests.add(new ServiceComponentHostRequest(clusterName, service, component, hostName, null)); } } catch(AmbariException se) { http://git-wip-us.apache.org/repos/asf/ambari/blob/786d4b63/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintFactory.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintFactory.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintFactory.java index 404068d..24b4785 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintFactory.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintFactory.java @@ -30,6 +30,7 @@ import org.apache.ambari.server.AmbariException; import org.apache.ambari.server.ObjectNotFoundException; import org.apache.ambari.server.controller.AmbariManagementController; import org.apache.ambari.server.controller.AmbariServer; +import org.apache.ambari.server.controller.RootComponent; import org.apache.ambari.server.controller.internal.ProvisionAction; import org.apache.ambari.server.controller.internal.Stack; import org.apache.ambari.server.controller.utilities.PropertyHelper; @@ -205,7 +206,7 @@ public class BlueprintFactory { allComponents.addAll(components); } // currently ambari server is no a recognized component - allComponents.add("AMBARI_SERVER"); + allComponents.add(RootComponent.AMBARI_SERVER.name()); return allComponents; } http://git-wip-us.apache.org/repos/asf/ambari/blob/786d4b63/ambari-server/src/main/java/org/apache/ambari/server/topology/validators/RequiredPasswordValidator.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/validators/RequiredPasswordValidator.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/validators/RequiredPasswordValidator.java index 5b4ecc1..3ad1a19 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/topology/validators/RequiredPasswordValidator.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/validators/RequiredPasswordValidator.java @@ -19,6 +19,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Map; +import org.apache.ambari.server.controller.RootComponent; import org.apache.ambari.server.controller.internal.Stack; import org.apache.ambari.server.state.PropertyInfo; import org.apache.ambari.server.topology.Blueprint; @@ -86,7 +87,7 @@ public class RequiredPasswordValidator implements TopologyValidator { HostGroup hostGroup = blueprint.getHostGroup(hostGroupName); for (String component : hostGroup.getComponentNames()) { //for now, AMBARI is not recognized as a service in Stacks - if (component.equals("AMBARI_SERVER")) { + if (component.equals(RootComponent.AMBARI_SERVER.name())) { continue; }
