You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by jl...@apache.org on 2018/07/07 08:56:58 UTC
[ambari] 01/01: Merge remote-tracking branch 'origin/trunk' into
branch-feature-AMBARI-14714
This is an automated email from the ASF dual-hosted git repository.
jluniya pushed a commit to branch branch-feature-AMBARI-14714
in repository https://gitbox.apache.org/repos/asf/ambari.git
commit b1f8afdf5e646a03b1ae0fc0d52644f001871525
Merge: c210fe5 b211832
Author: Jayush Luniya <jl...@HW11039.local>
AuthorDate: Sat Jul 7 01:56:34 2018 -0700
Merge remote-tracking branch 'origin/trunk' into branch-feature-AMBARI-14714
.../stackVersions/StackVersionsCreateCtrl.js | 2 +-
.../resources/ui/admin-web/app/views/sideNav.html | 2 +-
.../src/main/python/ambari_agent/FileCache.py | 5 +-
.../main/python/resource_management/core/sudo.py | 14 +-
.../model/inputconfig/impl/InputConfigGson.java | 2 +-
.../impl/MapFieldCopyDescriptorImpl.java | 2 +-
.../impl/MapFieldNameDescriptorImpl.java | 8 +-
.../impl/MapFieldValueDescriptorImpl.java | 8 +-
.../inputconfig/impl/PostMapValuesAdapter.java | 8 +-
.../ambari/logsearch/domain/StoryDataRegistry.java | 24 ++
.../apache/ambari/logsearch/domain/WebClient.java | 79 ++++
.../ambari/logsearch/steps/LogSearchApiSteps.java | 46 +--
.../logsearch/steps/LogSearchConfigApiSteps.java | 67 ++++
.../logsearch/story/LogSearchBackendStories.java | 15 +-
.../backend/log_search_cofig_api_tests.story | 9 +
.../src/main/resources/alias_config.json | 6 +-
.../src/main/resources/filters.config.json | 54 +--
.../resources/samples/config/config_audit.json | 52 +--
.../model/common/LSServerMapFieldCopy.java | 2 +-
.../model/common/LSServerMapFieldName.java | 2 +-
.../model/common/LSServerMapFieldValue.java | 2 +-
.../LSServerPostMapValuesListDeserializer.java | 20 +-
ambari-logsearch/ambari-logsearch-web/.gitignore | 21 ++
.../src/mockdata/mock-data-get.ts | 28 +-
.../shipper-conf/input.config-ambari.json | 176 ++++-----
.../logfeeder/shipper-conf/input.config-hdfs.json | 52 +--
.../logfeeder/shipper-conf/input.config-hst.json | 2 +-
...ctionEvent.java => AmbariRuntimeException.java} | 39 +-
.../server/agent/stomp/AgentConfigsHolder.java | 7 +-
.../server/agent/stomp/AgentHostDataHolder.java | 74 ++--
.../server/agent/stomp/AlertDefinitionsHolder.java | 40 ++-
.../server/agent/stomp/HostLevelParamsHolder.java | 76 ++--
.../server/agent/stomp/dto/AlertCluster.java | 45 ++-
.../server/agent/stomp/dto/ClusterConfigs.java | 7 -
.../agent/stomp/dto/HostLevelParamsCluster.java | 8 -
.../server/agent/stomp/dto/HostRepositories.java | 8 -
.../api/resources/ClusterResourceDefinition.java | 1 +
.../ambari/server/controller/KerberosHelper.java | 18 +-
.../server/controller/KerberosHelperImpl.java | 111 ++++--
.../controller/UpdateConfigurationPolicy.java | 116 ++++++
.../controller/internal/HostResourceProvider.java | 5 +-
.../internal/UpgradeResourceProvider.java | 139 ++++++--
.../ambari/server/events/AgentActionEvent.java | 6 +-
.../server/events/AgentConfigsUpdateEvent.java | 11 +-
.../server/events/ExecutionCommandEvent.java | 19 +-
.../server/events/HostLevelParamsUpdateEvent.java | 17 +-
.../alerts/AlertDefinitionsUIUpdateListener.java | 8 +-
.../events/publishers/AgentCommandsPublisher.java | 58 ++-
.../AbstractPrepareKerberosServerAction.java | 168 ++++++++-
.../kerberos/CreateKeytabFilesServerAction.java | 4 +-
.../kerberos/KerberosServerAction.java | 31 +-
.../PrepareDisableKerberosServerAction.java | 2 +-
.../PrepareEnableKerberosServerAction.java | 2 +-
.../PrepareKerberosIdentitiesServerAction.java | 27 +-
.../stageutils/KerberosKeytabController.java | 19 +-
.../org/apache/ambari/server/state/Cluster.java | 3 +
.../org/apache/ambari/server/state/Clusters.java | 4 +-
.../apache/ambari/server/state/ConfigHelper.java | 3 +-
.../ambari/server/state/alert/AlertDefinition.java | 38 ++
.../server/state/alert/AlertDefinitionHash.java | 11 +-
.../ambari/server/state/cluster/ClusterImpl.java | 12 +-
.../ambari/server/state/cluster/ClustersImpl.java | 4 +-
.../ambari/server/upgrade/UpgradeCatalog270.java | 166 ++++++---
.../src/main/python/ambari_server/setupSecurity.py | 53 +--
.../package/templates/input.config-hive.json.j2 | 2 +-
.../0.5.0/properties/input.config-ambari.json.j2 | 362 +++++++++----------
.../package/templates/input.config-spark.json.j2 | 2 +-
.../package/templates/input.config-spark2.json.j2 | 2 +-
.../ambari/server/agent/HeartbeatTestHelper.java | 5 +-
.../ambari/server/agent/TestHeartbeatHandler.java | 18 +-
.../server/agent/stomp/AgentDataHolderTest.java | 10 +-
.../agent/stomp/AlertDefinitionsHolderTest.java | 121 +++++++
.../agent/stomp/HostLevelParamsHolderTest.java | 118 ++++++
.../AmbariCustomCommandExecutionHelperTest.java | 6 +-
.../AbstractPrepareKerberosServerActionTest.java | 397 +++++++++++++++++++--
.../server/upgrade/UpgradeCatalog270Test.java | 12 +
ambari-web/app/assets/test/tests.js | 1 +
.../app/mixins/wizard/assign_master_components.js | 6 +-
ambari-web/app/models/host.js | 2 +
ambari-web/app/routes/main.js | 12 +-
ambari-web/app/styles/hosts.less | 9 +
ambari-web/app/styles/top-nav.less | 8 +-
.../widgets/service_config_password_field.hbs | 16 +-
ambari-web/app/templates/main/host/details.hbs | 13 +-
ambari-web/app/utils/config.js | 6 +-
ambari-web/app/views/common/controls_view.js | 2 +-
ambari-web/app/views/main/host/details.js | 4 +-
.../main/admin/federation/step1_controller_test.js | 142 ++++++++
ambari-web/test/utils/config_test.js | 18 +
ambari-web/test/views/main/host/details_test.js | 16 +-
90 files changed, 2455 insertions(+), 923 deletions(-)
diff --cc ambari-server/src/main/java/org/apache/ambari/server/agent/stomp/HostLevelParamsHolder.java
index 783ad4f,b309bbb..69fa512
--- a/ambari-server/src/main/java/org/apache/ambari/server/agent/stomp/HostLevelParamsHolder.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/agent/stomp/HostLevelParamsHolder.java
@@@ -21,9 -23,13 +23,12 @@@ import java.util.SortedMap
import java.util.TreeMap;
import org.apache.ambari.server.AmbariException;
+ import org.apache.ambari.server.agent.CommandRepository;
+ import org.apache.ambari.server.agent.RecoveryConfig;
import org.apache.ambari.server.agent.RecoveryConfigHelper;
import org.apache.ambari.server.agent.stomp.dto.HostLevelParamsCluster;
+ import org.apache.ambari.server.agent.stomp.dto.HostRepositories;
import org.apache.ambari.server.controller.AmbariManagementController;
-import org.apache.ambari.server.events.ClusterComponentsRepoChangedEvent;
import org.apache.ambari.server.events.HostLevelParamsUpdateEvent;
import org.apache.ambari.server.events.MaintenanceModeEvent;
import org.apache.ambari.server.events.ServiceComponentRecoveryChangedEvent;
diff --cc ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
index 16b4636,287e1a5..2e2f988
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
@@@ -78,8 -81,12 +82,10 @@@ import org.apache.ambari.server.securit
import org.apache.ambari.server.security.authorization.AuthorizationHelper;
import org.apache.ambari.server.security.authorization.ResourceType;
import org.apache.ambari.server.security.authorization.RoleAuthorization;
+ import org.apache.ambari.server.serveraction.kerberos.KerberosOperationException;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Clusters;
+ import org.apache.ambari.server.state.ConfigHelper;
-import org.apache.ambari.server.state.Service;
-import org.apache.ambari.server.state.ServiceComponent;
import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.UpgradeContext;
import org.apache.ambari.server.state.UpgradeContextFactory;
@@@ -692,7 -726,9 +734,9 @@@ public class UpgradeResourceProvider ex
Cluster cluster = upgradeContext.getCluster();
Direction direction = upgradeContext.getDirection();
+ ConfigHelper configHelper = getManagementController().getConfigHelper();
+
- List<UpgradeGroupHolder> groups = s_upgradeHelper.createSequence(pack, upgradeContext);
+ List<UpgradeGroupHolder> groups = s_upgradeHelper.createSequence(upgradeContext, upgradePlan);
if (groups.isEmpty()) {
throw new AmbariException("There are no groupings available");
@@@ -755,38 -813,94 +799,85 @@@
List<UpgradeItemEntity> itemEntities = new ArrayList<>();
for (StageWrapper wrapper : group.items) {
- if (wrapper.getType() == StageWrapper.Type.SERVER_SIDE_ACTION) {
- // !!! each stage is guaranteed to be of one type. but because there
- // is a bug that prevents one stage with multiple tasks assigned for
- // the same host, break them out into individual stages.
- for (TaskWrapper taskWrapper : wrapper.getTasks()) {
- Task task = taskWrapper.getTask();
--
- if (upgradeContext.isManualVerificationAutoSkipped()
- && task.getType() == Task.Type.MANUAL) {
- continue;
+ switch(wrapper.getType()) {
+ case SERVER_SIDE_ACTION:{
+ // !!! each stage is guaranteed to be of one type. but because there
+ // is a bug that prevents one stage with multiple tasks assigned for
+ // the same host, break them out into individual stages.
+ for (TaskWrapper taskWrapper : wrapper.getTasks()) {
- for (Task task : taskWrapper.getTasks()) {
- if (upgradeContext.isManualVerificationAutoSkipped()
- && task.getType() == Task.Type.MANUAL) {
- continue;
- }
-
- UpgradeItemEntity itemEntity = new UpgradeItemEntity();
++ Task task = taskWrapper.getTask();
++ if (upgradeContext.isManualVerificationAutoSkipped()
++ && task.getType() == Task.Type.MANUAL) {
++ continue;
++ }
+
- itemEntity.setText(wrapper.getText());
- itemEntity.setTasks(wrapper.getTasksJson());
- itemEntity.setHosts(wrapper.getHostsJson());
++ UpgradeItemEntity itemEntity = new UpgradeItemEntity();
++ itemEntity.setText(wrapper.getText());
++ itemEntity.setTasks(wrapper.getTasksJson());
++ itemEntity.setHosts(wrapper.getHostsJson());
+
- injectVariables(configHelper, cluster, itemEntity);
- if (makeServerSideStage(group, upgradeContext, effectiveStack, req,
- itemEntity, (ServerSideActionTask) task, configUpgradePack)) {
- itemEntities.add(itemEntity);
- }
++ injectVariables(configHelper, cluster, itemEntity);
++ if (makeServerSideStage(group, upgradeContext, null, req,
++ itemEntity, (ServerSideActionTask) task, configUpgradePack)) {
++ itemEntities.add(itemEntity);
+ }
+ }
+ break;
+ }
+ case REGENERATE_KEYTABS: {
+ try {
+ // remmeber how many stages we had before adding keytab stuff
+ int stageCount = req.getStages().size();
+
+ // build a map of request properties which say to
+ // - only regenerate missing tabs
+ // - allow all tasks which fail to be retried (so the upgrade doesn't abort)
+ Map<String, String> requestProperties = new HashMap<>();
+ requestProperties.put(SupportedCustomOperation.REGENERATE_KEYTABS.name().toLowerCase(), "missing");
+ requestProperties.put(KerberosHelper.ALLOW_RETRY, Boolean.TRUE.toString().toLowerCase());
+ requestProperties.put(KerberosHelper.DIRECTIVE_CONFIG_UPDATE_POLICY, UpdateConfigurationPolicy.NEW_AND_IDENTITIES.name());
+
+ // add stages to the upgrade which will regenerate missing keytabs only
+ req = s_kerberosHelper.get().executeCustomOperations(cluster, requestProperties, req, null);
+
+ // for every stage which was added for kerberos stuff create an
+ // associated upgrade item for it
+ List<Stage> stages = req.getStages();
+ int newStageCount = stages.size();
+ for (int i = stageCount; i < newStageCount; i++) {
+ Stage stage = stages.get(i);
+ stage.setSkippable(group.skippable);
+ stage.setAutoSkipFailureSupported(group.supportsAutoSkipOnFailure);
+
+ UpgradeItemEntity itemEntity = new UpgradeItemEntity();
+ itemEntity.setStageId(stage.getStageId());
+ itemEntity.setText(stage.getRequestContext());
+ itemEntity.setTasks(wrapper.getTasksJson());
+ itemEntity.setHosts(wrapper.getHostsJson());
+ itemEntities.add(itemEntity);
+ injectVariables(configHelper, cluster, itemEntity);
+ }
+ } catch (KerberosOperationException kerberosOperationException) {
+ throw new AmbariException("Unable to build keytab regeneration stage",
+ kerberosOperationException);
}
+ break;
+ }
+ default: {
UpgradeItemEntity itemEntity = new UpgradeItemEntity();
-
itemEntity.setText(wrapper.getText());
itemEntity.setTasks(wrapper.getTasksJson());
itemEntity.setHosts(wrapper.getHostsJson());
+ itemEntities.add(itemEntity);
- if (makeServerSideStage(group, upgradeContext, null, req,
- itemEntity, (ServerSideActionTask) task, configUpgradePack)) {
- itemEntities.add(itemEntity);
- }
+ injectVariables(configHelper, cluster, itemEntity);
+
+ // upgrade items match a stage
- createStage(group, upgradeContext, effectiveStack, req, itemEntity, wrapper);
++ createStage(group, upgradeContext, null, req, itemEntity, wrapper);
+
+ break;
}
- } else {
- UpgradeItemEntity itemEntity = new UpgradeItemEntity();
- itemEntity.setText(wrapper.getText());
- itemEntity.setTasks(wrapper.getTasksJson());
- itemEntity.setHosts(wrapper.getHostsJson());
- itemEntities.add(itemEntity);
-
- // upgrade items match a stage
- createStage(group, upgradeContext, null, req, itemEntity, wrapper);
}
}
diff --cc ambari-server/src/main/java/org/apache/ambari/server/events/publishers/AgentCommandsPublisher.java
index c4fb497,c64131d..c549752
--- a/ambari-server/src/main/java/org/apache/ambari/server/events/publishers/AgentCommandsPublisher.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/events/publishers/AgentCommandsPublisher.java
@@@ -33,6 -34,6 +34,8 @@@ import java.util.List
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
++import java.util.function.Function;
++import java.util.stream.Collectors;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.agent.AgentCommand;
@@@ -248,4 -257,32 +259,33 @@@ public class AgentCommandsPublisher
ec.setKerberosCommandParams(kcp);
}
}
+
+ private Map<String, Collection<String>> adjustServiceComponentFilter(String clusterName, Map<String, ? extends Collection<String>> serviceComponentFilter) throws AmbariException {
+ Map<String, Collection<String>> adjustedFilter = new HashMap<>();
+ Cluster cluster = clusters.getCluster(clusterName);
+
- Map<String, Service> installedServices = (cluster == null) ? null : cluster.getServices();
++ Map<String, Service> installedServices = (cluster == null) ? null : cluster.getServices().stream().collect(
++ Collectors.toMap(Service::getName, Function.identity()));
+
+ if(!MapUtils.isEmpty(installedServices)) {
+ if (serviceComponentFilter != null) {
+ // prune off services that are not installed, or considered installed - like AMBARI
+ for(Map.Entry<String, ? extends Collection<String>> entry: serviceComponentFilter.entrySet()) {
+ String serviceName = entry.getKey();
+
+ if(installedServices.containsKey(serviceName)) {
+ adjustedFilter.put(serviceName, entry.getValue());
+ }
+ }
+ } else {
+ // return only the set of installed services
+ for(String serviceName: installedServices.keySet()) {
+ // Add an entry to indicate the service and all of it's components should be considered
+ adjustedFilter.put(serviceName, Collections.singletonList("*"));
+ }
+ }
+ }
+
+ return adjustedFilter;
+ }
}
diff --cc ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
index 0844aa0,821bdbc..048ab3a
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
@@@ -2796,18 -2246,7 +2796,8 @@@ public class ClusterImpl implements Clu
@Override
public Collection<Host> getHosts() {
- Map<String, Host> hosts;
-
- try {
- //todo: why the hell does this method throw AmbariException???
- //todo: this is ridiculous that I need to get hosts for this cluster from Clusters!!!
- //todo: should I getHosts using the same logic as the other getHosts call? At least that doesn't throw AmbariException.
- hosts = clusters.getHostsForCluster(clusterName);
- } catch (AmbariException e) {
- //todo: in what conditions is AmbariException thrown?
- throw new RuntimeException("Unable to get hosts for cluster: " + clusterName, e);
- }
- return clusters.getHostsForCluster(clusterName).values();
++ Map<String, Host> hosts = clusters.getHostsForCluster(clusterName);
+ return hosts == null ? Collections.emptyList() : hosts.values();
}
private ClusterHealthReport getClusterHealthReport(
diff --cc ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog270.java
index d77a1dc,43bbc87..c1689bb
--- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog270.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog270.java
@@@ -1079,41 -1075,107 +1070,108 @@@ public class UpgradeCatalog270 extends
if (MapUtils.isEmpty(clusterMap))
return;
- ServiceConfigDAO serviceConfigDAO = injector.getInstance(ServiceConfigDAO.class);
- for (ServiceConfigEntity serviceConfigEntity : serviceConfigDAO.findAll()) {
- if (AMBARI_INFRA_OLD_NAME.equals(serviceConfigEntity.getServiceName())) {
- serviceConfigEntity.setServiceName(AMBARI_INFRA_NEW_NAME);
- serviceConfigDAO.merge(serviceConfigEntity);
- }
- }
+ EntityManager entityManager = getEntityManagerProvider().get();
+ ClusterServiceDAO clusterServiceDAO = injector.getInstance(ClusterServiceDAO.class);
+ HostComponentStateDAO hostComponentStateDAO = injector.getInstance(HostComponentStateDAO.class);
+ HostComponentDesiredStateDAO hostComponentDesiredStateDAO = injector.getInstance(HostComponentDesiredStateDAO.class);
+ ServiceDesiredStateDAO serviceDesiredStateDAO = injector.getInstance(ServiceDesiredStateDAO.class);
+ ServiceComponentDesiredStateDAO serviceComponentDesiredStateDAO = injector.getInstance(ServiceComponentDesiredStateDAO.class);
- AlertDefinitionDAO alertDefinitionDAO = injector.getInstance(AlertDefinitionDAO.class);
for (final Cluster cluster : clusterMap.values()) {
- for (AlertDefinitionEntity alertDefinitionEntity : alertDefinitionDAO.findByService(cluster.getClusterId(), AMBARI_INFRA_OLD_NAME)) {
- alertDefinitionEntity.setServiceName(AMBARI_INFRA_NEW_NAME);
- alertDefinitionDAO.merge(alertDefinitionEntity);
- ClusterServiceEntityPK clusterServiceEntityPK = new ClusterServiceEntityPK();
- clusterServiceEntityPK.setClusterId(cluster.getClusterId());
- clusterServiceEntityPK.setServiceName(AMBARI_INFRA_OLD_NAME);
- ClusterServiceEntity clusterServiceEntity = clusterServiceDAO.findByPK(clusterServiceEntityPK);
- if (clusterServiceEntity == null)
- continue;
-
- List<ServiceComponentDesiredStateEntity> serviceComponentDesiredStateEntities =
- new ArrayList<>(clusterServiceEntity.getServiceComponentDesiredStateEntities());
- ServiceDesiredStateEntity serviceDesiredStateEntity = clusterServiceEntity.getServiceDesiredStateEntity();
- List<HostComponentStateEntity> hostComponentStateEntities = hostComponentStateDAO.findByService(AMBARI_INFRA_OLD_NAME);
- List<HostComponentDesiredStateEntity> hostComponentDesiredStateEntities = new ArrayList<>();
- for (ServiceComponentDesiredStateEntity serviceComponentDesiredStateEntity : clusterServiceEntity.getServiceComponentDesiredStateEntities()) {
- hostComponentDesiredStateEntities.addAll(
- hostComponentDesiredStateDAO.findByIndex(cluster.getClusterId(), AMBARI_INFRA_OLD_NAME, serviceComponentDesiredStateEntity.getComponentName()));
- }
-
- for (HostComponentStateEntity hostComponentStateEntity : hostComponentStateEntities) {
- hostComponentStateDAO.remove(hostComponentStateEntity);
- entityManager.detach(hostComponentStateEntity);
- hostComponentStateEntity.setServiceName(AMBARI_INFRA_NEW_NAME);
- }
-
- for (HostComponentDesiredStateEntity hostComponentDesiredStateEntity : hostComponentDesiredStateEntities) {
- hostComponentDesiredStateDAO.remove(hostComponentDesiredStateEntity);
- entityManager.detach(hostComponentDesiredStateEntity);
- hostComponentDesiredStateEntity.setServiceName(AMBARI_INFRA_NEW_NAME);
- }
-
- clusterServiceEntity.getServiceComponentDesiredStateEntities().clear();
- for (ServiceComponentDesiredStateEntity serviceComponentDesiredStateEntity : serviceComponentDesiredStateEntities) {
- serviceComponentDesiredStateDAO.remove(serviceComponentDesiredStateEntity);
- entityManager.detach(serviceComponentDesiredStateEntity);
- serviceComponentDesiredStateEntity.setServiceName(AMBARI_INFRA_NEW_NAME);
- }
-
- if (serviceDesiredStateEntity != null) {
- clusterServiceEntity.setServiceDesiredStateEntity(null);
- serviceDesiredStateDAO.remove(serviceDesiredStateEntity);
- entityManager.detach(serviceDesiredStateEntity);
- serviceDesiredStateEntity.setServiceName(AMBARI_INFRA_NEW_NAME);
-- }
-
- clusterServiceDAO.remove(clusterServiceEntity);
- entityManager.detach(clusterServiceEntity);
-
- clusterServiceEntity.setServiceName(AMBARI_INFRA_NEW_NAME);
- clusterServiceEntity.setServiceDesiredStateEntity(serviceDesiredStateEntity);
- clusterServiceDAO.create(clusterServiceEntity);
-
- for (ServiceComponentDesiredStateEntity serviceComponentDesiredStateEntity : serviceComponentDesiredStateEntities)
- serviceComponentDesiredStateDAO.create(serviceComponentDesiredStateEntity);
- for (HostComponentStateEntity hostComponentStateEntity : hostComponentStateEntities)
- hostComponentStateDAO.create(hostComponentStateEntity);
- for (HostComponentDesiredStateEntity hostComponentDesiredStateEntity : hostComponentDesiredStateEntities)
- hostComponentDesiredStateDAO.create(hostComponentDesiredStateEntity);
++ // TODO: [AMP] Revisit logic
++// ClusterServiceEntity clusterServiceEntity = clusterServiceDAO.findByPK(cluster.getClusterId());
++// if (clusterServiceEntity == null)
++// continue;
++//
++// List<ServiceComponentDesiredStateEntity> serviceComponentDesiredStateEntities =
++// new ArrayList<>(clusterServiceEntity.getServiceComponentDesiredStateEntities());
++// ServiceDesiredStateEntity serviceDesiredStateEntity = clusterServiceEntity.getServiceDesiredStateEntity();
++//
++// List<HostComponentStateEntity> hostComponentStateEntities = hostComponentStateDAO.findByService(AMBARI_INFRA_OLD_NAME);
++// List<HostComponentDesiredStateEntity> hostComponentDesiredStateEntities = new ArrayList<>();
++//
++//
++// for (ServiceComponentDesiredStateEntity serviceComponentDesiredStateEntity : clusterServiceEntity.getServiceComponentDesiredStateEntities()) {
++// hostComponentDesiredStateEntities.addAll(
++// hostComponentDesiredStateDAO.findByIndex(cluster.getClusterId(), AMBARI_INFRA_OLD_NAME, serviceComponentDesiredStateEntity.getComponentName()));
++// }
++//
++// for (HostComponentStateEntity hostComponentStateEntity : hostComponentStateEntities) {
++// hostComponentStateDAO.remove(hostComponentStateEntity);
++// entityManager.detach(hostComponentStateEntity);
++// hostComponentStateEntity.setServiceName(AMBARI_INFRA_NEW_NAME);
++// }
++//
++// for (HostComponentDesiredStateEntity hostComponentDesiredStateEntity : hostComponentDesiredStateEntities) {
++// hostComponentDesiredStateDAO.remove(hostComponentDesiredStateEntity);
++// entityManager.detach(hostComponentDesiredStateEntity);
++// hostComponentDesiredStateEntity.setServiceName(AMBARI_INFRA_NEW_NAME);
++// }
++//
++// clusterServiceEntity.getServiceComponentDesiredStateEntities().clear();
++// for (ServiceComponentDesiredStateEntity serviceComponentDesiredStateEntity : serviceComponentDesiredStateEntities) {
++// serviceComponentDesiredStateDAO.remove(serviceComponentDesiredStateEntity);
++// entityManager.detach(serviceComponentDesiredStateEntity);
++// serviceComponentDesiredStateEntity.setServiceName(AMBARI_INFRA_NEW_NAME);
++// }
++//
++// if (serviceDesiredStateEntity != null) {
++// clusterServiceEntity.setServiceDesiredStateEntity(null);
++// serviceDesiredStateDAO.remove(serviceDesiredStateEntity);
++// entityManager.detach(serviceDesiredStateEntity);
++// serviceDesiredStateEntity.setServiceName(AMBARI_INFRA_NEW_NAME);
++// }
++//
++// clusterServiceDAO.remove(clusterServiceEntity);
++// entityManager.detach(clusterServiceEntity);
++//
++// clusterServiceEntity.setServiceName(AMBARI_INFRA_NEW_NAME);
++// clusterServiceEntity.setServiceDesiredStateEntity(serviceDesiredStateEntity);
++// clusterServiceDAO.create(clusterServiceEntity);
++//
++// for (ServiceComponentDesiredStateEntity serviceComponentDesiredStateEntity : serviceComponentDesiredStateEntities)
++// serviceComponentDesiredStateDAO.create(serviceComponentDesiredStateEntity);
++// for (HostComponentStateEntity hostComponentStateEntity : hostComponentStateEntities)
++// hostComponentStateDAO.create(hostComponentStateEntity);
++// for (HostComponentDesiredStateEntity hostComponentDesiredStateEntity : hostComponentDesiredStateEntities)
++// hostComponentDesiredStateDAO.create(hostComponentDesiredStateEntity);
}
- AlertDispatchDAO alertDispatchDAO = injector.getInstance(AlertDispatchDAO.class);
- for (AlertGroupEntity alertGroupEntity : alertDispatchDAO.findAllGroups()) {
- if (AMBARI_INFRA_OLD_NAME.equals(alertGroupEntity.getServiceName())) {
- alertGroupEntity.setServiceName(AMBARI_INFRA_NEW_NAME);
- alertGroupEntity.setGroupName(AMBARI_INFRA_NEW_NAME);
- alertDispatchDAO.merge(alertGroupEntity);
+ executeInTransaction(() -> {
+ TypedQuery<ServiceConfigEntity> serviceConfigUpdate = entityManager.createQuery(
+ "UPDATE ServiceConfigEntity SET serviceName = :newServiceName WHERE serviceName = :oldServiceName", ServiceConfigEntity.class);
+ serviceConfigUpdate.setParameter("newServiceName", AMBARI_INFRA_NEW_NAME);
+ serviceConfigUpdate.setParameter("oldServiceName", AMBARI_INFRA_OLD_NAME);
+ serviceConfigUpdate.executeUpdate();
+ });
+
+ executeInTransaction(() -> {
+ for (final Cluster cluster : clusterMap.values()) {
+ TypedQuery<AlertDefinitionEntity> alertDefinitionUpdate = entityManager.createQuery(
+ "UPDATE AlertDefinitionEntity SET serviceName = :newServiceName WHERE serviceName = :oldServiceName AND clusterId = :clusterId", AlertDefinitionEntity.class);
+ alertDefinitionUpdate.setParameter("clusterId", cluster.getClusterId());
+ alertDefinitionUpdate.setParameter("newServiceName", AMBARI_INFRA_NEW_NAME);
+ alertDefinitionUpdate.setParameter("oldServiceName", AMBARI_INFRA_OLD_NAME);
+ alertDefinitionUpdate.executeUpdate();
}
- }
-
- AlertsDAO alertsDAO = injector.getInstance(AlertsDAO.class);
- for (AlertHistoryEntity alertHistoryEntity : alertsDAO.findAll()) {
- if (AMBARI_INFRA_OLD_NAME.equals(alertHistoryEntity.getServiceName())) {
- alertHistoryEntity.setServiceName(AMBARI_INFRA_NEW_NAME);
- alertsDAO.merge(alertHistoryEntity);
- }
- }
+ });
+
+ executeInTransaction(() -> {
+ TypedQuery<AlertGroupEntity> alertGroupUpdate = entityManager.createQuery("UPDATE AlertGroupEntity SET serviceName = :newServiceName, groupName = :newServiceName WHERE serviceName = :oldServiceName", AlertGroupEntity.class);
+ alertGroupUpdate.setParameter("newServiceName", AMBARI_INFRA_NEW_NAME);
+ alertGroupUpdate.setParameter("oldServiceName", AMBARI_INFRA_OLD_NAME);
+ alertGroupUpdate.executeUpdate();
+ });
+
+ executeInTransaction(() -> {
+ TypedQuery<AlertHistoryEntity> alertHistoryUpdate = entityManager.createQuery("UPDATE AlertHistoryEntity SET serviceName = :newServiceName WHERE serviceName = :oldServiceName", AlertHistoryEntity.class);
+ alertHistoryUpdate.setParameter("newServiceName", AMBARI_INFRA_NEW_NAME);
+ alertHistoryUpdate.setParameter("oldServiceName", AMBARI_INFRA_OLD_NAME);
+ alertHistoryUpdate.executeUpdate();
+ });
// Force the clusters object to reload to ensure the renamed service is accounted for
- getEntityManagerProvider().get().getEntityManagerFactory().getCache().evictAll();
+ entityManager.getEntityManagerFactory().getCache().evictAll();
clusters.invalidateAllClusters();
}
diff --cc ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
index 424e652,75d5a7a..cfb786c
--- a/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
@@@ -1414,6 -1412,12 +1414,12 @@@ public class TestHeartbeatHandler
List<Map<String, String>> kcp;
Map<String, String> properties;
+ Cluster cluster = heartbeatTestHelper.getDummyCluster();
+ Service hdfs = addService(cluster, HDFS);
- hdfs.addServiceComponent(DATANODE);
- hdfs.addServiceComponent(NAMENODE);
- hdfs.addServiceComponent(SECONDARY_NAMENODE);
++ hdfs.addServiceComponent(DATANODE, DATANODE);
++ hdfs.addServiceComponent(NAMENODE, NAMENODE);
++ hdfs.addServiceComponent(SECONDARY_NAMENODE, SECONDARY_NAMENODE);
+
kcp = testInjectKeytabSetKeytab("c6403.ambari.apache.org");
Assert.assertNotNull(kcp);
Assert.assertEquals(1, kcp.size());
@@@ -1450,6 -1454,12 +1456,12 @@@
@Test
public void testInjectKeytabNotApplicableHost() throws Exception {
+ Cluster cluster = heartbeatTestHelper.getDummyCluster();
+ Service hdfs = addService(cluster, HDFS);
- hdfs.addServiceComponent(DATANODE);
- hdfs.addServiceComponent(NAMENODE);
- hdfs.addServiceComponent(SECONDARY_NAMENODE);
++ hdfs.addServiceComponent(DATANODE, DATANODE);
++ hdfs.addServiceComponent(NAMENODE, NAMENODE);
++ hdfs.addServiceComponent(SECONDARY_NAMENODE, SECONDARY_NAMENODE);
+
List<Map<String, String>> kcp;
kcp = testInjectKeytabSetKeytab("c6401.ambari.apache.org");
Assert.assertNotNull(kcp);
diff --cc ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelperTest.java
index ba76b80,528e589..65abb4e
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelperTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelperTest.java
@@@ -153,15 -141,15 +153,15 @@@ public class AmbariCustomCommandExecuti
ambariManagementController = injector.getInstance(AmbariManagementController.class);
clusters = injector.getInstance(Clusters.class);
- EasyMock.expect(configHelper.getPropertyValuesWithPropertyType(EasyMock.anyObject(StackId.class),
+ expect(configHelper.getPropertiesWithPropertyType(EasyMock.anyObject(StackId.class),
EasyMock.anyObject(PropertyInfo.PropertyType.class),
EasyMock.anyObject(Cluster.class),
- EasyMock.anyObject(Map.class))).andReturn(Collections.EMPTY_SET);
+ EasyMock.anyObject(Map.class))).andReturn(Collections.emptyMap());
- expect(configHelper.getHostActualConfigs(EasyMock.anyLong())).andReturn(
- new AgentConfigsUpdateEvent(new TreeMap<>())).anyTimes();
+ EasyMock.expect(configHelper.getHostActualConfigs(EasyMock.anyLong())).andReturn(
+ new AgentConfigsUpdateEvent(null, new TreeMap<>())).anyTimes();
- EasyMock.replay(configHelper);
+ replay(configHelper);
StageUtils.setTopologyManager(injector.getInstance(TopologyManager.class));
StageUtils.setConfiguration(injector.getInstance(Configuration.class));
diff --cc ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/AbstractPrepareKerberosServerActionTest.java
index 586b023,47ccef5..4be2680
--- a/ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/AbstractPrepareKerberosServerActionTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/AbstractPrepareKerberosServerActionTest.java
@@@ -130,10 -269,11 +269,11 @@@ public class AbstractPrepareKerberosSer
put(zookeeperService, null);
}};
- expect(kerberosDescriptor.getProperties()).andReturn(descriptorProperties).atLeastOnce();
- expect(kerberosIdentityDataFileWriterFactory.createKerberosIdentityDataFileWriter((File)anyObject())).andReturn(kerberosIdentityDataFileWriter);
+ KerberosIdentityDataFileWriterFactory kerberosIdentityDataFileWriterFactory = injector.getInstance(KerberosIdentityDataFileWriterFactory.class);
+ expect(kerberosIdentityDataFileWriterFactory.createKerberosIdentityDataFileWriter(anyObject(File.class))).andReturn(kerberosIdentityDataFileWriter);
+
// it's important to pass a copy of clusterServices
- expect(cluster.getServices()).andReturn(new HashMap<>(clusterServices)).atLeastOnce();
+ expect(cluster.getServicesByName()).andReturn(new HashMap<>(clusterServices)).atLeastOnce();
expect(serviceComponentHostHDFS.getHostName()).andReturn(hostName).atLeastOnce();
expect(serviceComponentHostHDFS.getServiceName()).andReturn(hdfsService).atLeastOnce();
diff --cc ambari-web/app/assets/test/tests.js
index 078f14c,0be62bf..3311b5b
--- a/ambari-web/app/assets/test/tests.js
+++ b/ambari-web/app/assets/test/tests.js
@@@ -66,8 -66,10 +66,9 @@@ var files =
'test/controllers/main/admin/kerberos/step7_controller_test',
'test/controllers/main/admin/kerberos/step8_controller_test',
'test/controllers/main/admin/service_auto_start_test',
- 'test/controllers/main/admin/stack_and_upgrade_controller_test',
'test/controllers/main/admin/stack_upgrade_history_controller_test',
'test/controllers/main/admin/serviceAccounts_controller_test',
+ 'test/controllers/main/admin/federation/step1_controller_test',
'test/controllers/main/admin/highAvailability_controller_test',
'test/controllers/main/admin/highAvailability/progress_controller_test',
'test/controllers/main/admin/highAvailability/progress_popup_controller_test',
diff --cc ambari-web/app/mixins/wizard/assign_master_components.js
index ecdb9c3,25bf86c..518959c
--- a/ambari-web/app/mixins/wizard/assign_master_components.js
+++ b/ambari-web/app/mixins/wizard/assign_master_components.js
@@@ -1199,17 -1180,16 +1199,17 @@@ App.AssignMasterComponents = Em.Mixin.c
}
this.set('validationInProgress', true);
-
- // load recommendations with partial request
+
this.getRecommendedHosts({
hosts: hostNames,
+ mpack_instances: mpackInstances,
components: this.getCurrentComponentHostMap()
- }).then(function() {
+ }).done(function() {
self.validateSelectedHostComponents({
hosts: hostNames,
+ mpack_instances: mpackInstances,
blueprint: self.get('recommendations')
- }).then(function() {
+ }).always(function() {
if (callback) {
callback();
}