Merge pull request #2793 from hiveww/AMBARI-25132-trunk
AMBARI-25132. Cover metric view
diff --git a/ambari-server/pom.xml b/ambari-server/pom.xml
index fd8db02..24b95db 100644
--- a/ambari-server/pom.xml
+++ b/ambari-server/pom.xml
@@ -351,6 +351,18 @@
<exclude>src/test/resources/mpacks_replay.log</exclude>
<exclude>src/test/python/stacks/2.5/HIVE/*.txt</exclude>
<exclude>src/test/python/mpacks/mystack-ambari-mpack-1.0.0.1/stacks/MYSTACK/3.0/services/SERVICEC/dashboards/service-metrics/STORM.txt</exclude>
+ <exclude>src/test/python/uninstall/dashboards/files/metainfo.xml</exclude> <!--exclude symlink-->
+ <exclude>src/test/python/uninstall/dashboards/files/STORM.txt</exclude> <!--exclude symlink-->
+ <exclude>src/test/python/uninstall/dashboards/SERVICEB</exclude> <!--exclude symlink-->
+ <exclude>src/test/python/uninstall/dashboards/SERVICEA</exclude> <!--exclude symlink-->
+ <exclude>src/test/python/uninstall/extensions/SERVICEB</exclude> <!--exclude symlink-->
+ <exclude>src/test/python/uninstall/extensions/SERVICEA</exclude> <!--exclude symlink-->
+ <exclude>src/test/python/uninstall/common-services/SERVICEB</exclude> <!--exclude symlink-->
+ <exclude>src/test/python/uninstall/common-services/SERVICEA</exclude> <!--exclude symlink-->
+ <exclude>src/test/python/uninstall/stacks/2.0/files/metainfo1.xml</exclude> <!--exclude symlink-->
+ <exclude>src/test/python/uninstall/stacks/2.0/files/metainfo2.xml</exclude> <!--exclude symlink-->
+ <exclude>src/test/python/uninstall/stacks/2.0/SERVICEB</exclude> <!--exclude symlink-->
+ <exclude>src/test/python/uninstall/stacks/2.0/SERVICEA</exclude> <!--exclude symlink-->
<exclude>src/test/python/uninstall/dashboards/files/STORM.txt</exclude>
<exclude>src/main/resources/hive-schema-0.10.0.oracle.sql</exclude>
<exclude>src/main/resources/hive-schema-0.12.0.oracle.sql</exclude>
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartbeatProcessor.java b/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartbeatProcessor.java
index 74fcc61..1d17ff2 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartbeatProcessor.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartbeatProcessor.java
@@ -274,10 +274,10 @@
Long clusterId = null;
if (CollectionUtils.isNotEmpty(componentStatuses)) {
calculateHostStatus = true;
- for (ComponentStatus componentStatus : componentStatuses) {
- clusterId = componentStatus.getClusterId();
- break;
- }
+ clusterId = componentStatuses.stream()
+ .findFirst()
+ .map(ComponentStatus::getClusterId)
+ .orElse(null);
}
if (!calculateHostStatus && CollectionUtils.isNotEmpty(reports)) {
@@ -391,15 +391,13 @@
}
if (writeKeytabsStructuredOut != null) {
- if (SET_KEYTAB.equalsIgnoreCase(customCommand)) {
- Map<String, String> keytabs = writeKeytabsStructuredOut.getKeytabs();
- if (keytabs != null) {
- for (Map.Entry<String, String> entry : keytabs.entrySet()) {
- String keytabPath = entry.getValue();
- for (KerberosKeytabPrincipalEntity kkpe: kerberosKeytabPrincipalDAO.findByHostAndKeytab(host.getHostId(), keytabPath)) {
- kkpe.setDistributed(true);
- kerberosKeytabPrincipalDAO.merge(kkpe);
- }
+ Map<String, String> keytabs = writeKeytabsStructuredOut.getKeytabs();
+ if (keytabs != null) {
+ for (Map.Entry<String, String> entry : keytabs.entrySet()) {
+ String keytabPath = entry.getValue();
+ for (KerberosKeytabPrincipalEntity kkpe : kerberosKeytabPrincipalDAO.findByHostAndKeytab(host.getHostId(), keytabPath)) {
+ kkpe.setDistributed(true);
+ kerberosKeytabPrincipalDAO.merge(kkpe);
}
}
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/agent/stomp/AlertDefinitionsHolder.java b/ambari-server/src/main/java/org/apache/ambari/server/agent/stomp/AlertDefinitionsHolder.java
index 308ec84..14b5877 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/agent/stomp/AlertDefinitionsHolder.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/agent/stomp/AlertDefinitionsHolder.java
@@ -152,15 +152,13 @@
LOG.debug("Handled {} of alerts for {} cluster(s) on host with id {}, changed = {}", update.getEventType(), updateClusters.size(), hostId, changed);
break;
case CREATE:
- if (!updateClusters.isEmpty()) {
- if (!Sets.intersection(existingClusters.keySet(), updateClusters.keySet()).isEmpty()) {
- throw new AmbariException("Existing clusters in create");
- }
- mergedClusters.putAll(existingClusters);
- mergedClusters.putAll(updateClusters);
- LOG.debug("Handled {} of alerts for {} cluster(s)", update.getEventType(), updateClusters.size());
- changed = true;
+ if (!Sets.intersection(existingClusters.keySet(), updateClusters.keySet()).isEmpty()) {
+ throw new AmbariException("Existing clusters in create");
}
+ mergedClusters.putAll(existingClusters);
+ mergedClusters.putAll(updateClusters);
+ LOG.debug("Handled {} of alerts for {} cluster(s)", update.getEventType(), updateClusters.size());
+ changed = true;
break;
default:
LOG.warn("Unhandled event type {}", update.getEventType());
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/resources/ExtensionLinkResourceDefinition.java b/ambari-server/src/main/java/org/apache/ambari/server/api/resources/ExtensionLinkResourceDefinition.java
index b52e876..ca72b04 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/resources/ExtensionLinkResourceDefinition.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/resources/ExtensionLinkResourceDefinition.java
@@ -22,7 +22,6 @@
import java.util.Set;
import org.apache.ambari.server.controller.spi.Resource;
-import org.apache.ambari.server.controller.spi.Resource.Type;
/**
* An extension version is like a stack version but it contains custom services. Linking an extension
@@ -31,10 +30,6 @@
*/
public class ExtensionLinkResourceDefinition extends BaseResourceDefinition {
- public ExtensionLinkResourceDefinition(Type resourceType) {
- super(Resource.Type.ExtensionLink);
- }
-
public ExtensionLinkResourceDefinition() {
super(Resource.Type.ExtensionLink);
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/resources/ExtensionResourceDefinition.java b/ambari-server/src/main/java/org/apache/ambari/server/api/resources/ExtensionResourceDefinition.java
index ae2762a..c15b5ad 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/resources/ExtensionResourceDefinition.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/resources/ExtensionResourceDefinition.java
@@ -22,7 +22,6 @@
import java.util.Set;
import org.apache.ambari.server.controller.spi.Resource;
-import org.apache.ambari.server.controller.spi.Resource.Type;
/**
* An extension version is like a stack version but it contains custom services. Linking an extension
@@ -31,10 +30,6 @@
*/
public class ExtensionResourceDefinition extends BaseResourceDefinition {
- public ExtensionResourceDefinition(Type resourceType) {
- super(Resource.Type.Extension);
- }
-
public ExtensionResourceDefinition() {
super(Resource.Type.Extension);
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/resources/MpackResourceDefinition.java b/ambari-server/src/main/java/org/apache/ambari/server/api/resources/MpackResourceDefinition.java
index 3875135..10e8351 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/resources/MpackResourceDefinition.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/resources/MpackResourceDefinition.java
@@ -27,7 +27,6 @@
import org.apache.ambari.server.api.util.TreeNode;
import org.apache.ambari.server.controller.internal.ResourceImpl;
import org.apache.ambari.server.controller.spi.Resource;
-import org.apache.ambari.server.controller.spi.Resource.Type;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -40,10 +39,6 @@
private final static Logger LOG =
LoggerFactory.getLogger(MpackResourceDefinition.class);
- public MpackResourceDefinition(Type resourceType) {
- super(Resource.Type.Mpack);
- }
-
public MpackResourceDefinition() {
super(Resource.Type.Mpack);
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/resources/StackResourceDefinition.java b/ambari-server/src/main/java/org/apache/ambari/server/api/resources/StackResourceDefinition.java
index cdea7da..0b75dad 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/resources/StackResourceDefinition.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/resources/StackResourceDefinition.java
@@ -22,14 +22,9 @@
import java.util.Set;
import org.apache.ambari.server.controller.spi.Resource;
-import org.apache.ambari.server.controller.spi.Resource.Type;
public class StackResourceDefinition extends BaseResourceDefinition {
- public StackResourceDefinition(Type resourceType) {
- super(Resource.Type.Stack);
- }
-
public StackResourceDefinition() {
super(Resource.Type.Stack);
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/checks/PluginChecksLoadedCheck.java b/ambari-server/src/main/java/org/apache/ambari/server/checks/PluginChecksLoadedCheck.java
index 5538919..c342088 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/checks/PluginChecksLoadedCheck.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/checks/PluginChecksLoadedCheck.java
@@ -84,16 +84,13 @@
.map(FailedPluginClassDetail::new)
.collect(Collectors.toSet());
- // check for failure
- if (failedPluginClasses.size() > 0) {
- result.setStatus(UpgradeCheckStatus.WARNING);
- result.getFailedDetail().addAll(failedPluginSimpleClasses);
- result.setFailReason(getFailReason(result, request));
+ result.setStatus(UpgradeCheckStatus.WARNING);
+ result.getFailedDetail().addAll(failedPluginSimpleClasses);
+ result.setFailReason(getFailReason(result, request));
- result.getFailedOn().addAll(failedPluginSimpleClasses.stream()
- .map(detail -> detail.toSimpleString())
- .collect(Collectors.toSet()));
- }
+ result.getFailedOn().addAll(failedPluginSimpleClasses.stream()
+ .map(detail -> detail.toSimpleString())
+ .collect(Collectors.toSet()));
return result;
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java b/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
index 45496c5..a7e078d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
@@ -3942,7 +3942,7 @@
if (dbpasswd != null) {
return dbpasswd;
- } else if (dbpasswd == null && isPasswordAlias) {
+ } else if (isPasswordAlias) {
LOG.error("Can't read db password from keystore. Please, check master key was set correctly.");
throw new RuntimeException("Can't read db password from keystore. Please, check master key was set correctly.");
} else {
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 72454a2..42176d1 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
@@ -3384,11 +3384,9 @@
hostParamsCmd.putAll(ec.getHostLevelParams());
ec.getHostLevelParams().putAll(hostParamsCmd);
- if (null != cluster) {
- // Generate localComponents
- for (ServiceComponentHost sch : cluster.getServiceComponentHosts(scHost.getHostName())) {
- ec.getLocalComponents().add(sch.getServiceComponentName());
- }
+ // Generate localComponents
+ for (ServiceComponentHost sch : cluster.getServiceComponentHosts(scHost.getHostName())) {
+ ec.getLocalComponents().add(sch.getServiceComponentName());
}
return ec;
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 4f4763a..064c05d 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
@@ -2956,17 +2956,15 @@
if (configurations.get(CLUSTER_HOST_INFO) == null) {
Map<String, Set<String>> clusterHostInfo = StageUtils.getClusterHostInfo(cluster);
- if (clusterHostInfo != null) {
- Map<String, String> componentHosts = new HashMap<>();
+ Map<String, String> componentHosts = new HashMap<>();
- clusterHostInfo = StageUtils.substituteHostIndexes(clusterHostInfo);
+ clusterHostInfo = StageUtils.substituteHostIndexes(clusterHostInfo);
- for (Map.Entry<String, Set<String>> entry : clusterHostInfo.entrySet()) {
- componentHosts.put(entry.getKey(), StringUtils.join(entry.getValue(), ","));
- }
-
- configurations.put(CLUSTER_HOST_INFO, componentHosts);
+ for (Map.Entry<String, Set<String>> entry : clusterHostInfo.entrySet()) {
+ componentHosts.put(entry.getKey(), StringUtils.join(entry.getValue(), ","));
}
+
+ configurations.put(CLUSTER_HOST_INFO, componentHosts);
}
configurations.put("principals", principalNames(cluster, configurations));
return configurations;
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/StackServiceRequest.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/StackServiceRequest.java
index fe72a33..9793fc3 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/StackServiceRequest.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/StackServiceRequest.java
@@ -26,15 +26,17 @@
private String credentialStoreEnabled;
public StackServiceRequest(String stackName, String stackVersion,
- String serviceName) {
+ String serviceName) {
this(stackName, stackVersion, serviceName, null, null);
}
public StackServiceRequest(String stackName, String stackVersion,
- String serviceName, String credentialStoreSupported, String credentialStoreEnabled) {
+ String serviceName, String credentialStoreSupported, String credentialStoreEnabled) {
super(stackName, stackVersion);
this.setServiceName(serviceName);
+ this.setCredentialStoreSupported(credentialStoreSupported);
+ this.setCredentialStoreEnabled(credentialStoreEnabled);
}
public String getServiceName() {
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AlertResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AlertResourceProvider.java
index 72fe0ae..206986c 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AlertResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AlertResourceProvider.java
@@ -198,7 +198,7 @@
} else {
// Verify authorization to retrieve the requested data
try {
- Long clusterId = (StringUtils.isEmpty(clusterName)) ? null : getClusterId(clusterName);
+ Long clusterId = getClusterId(clusterName);
String definitionName = (String) propertyMap.get(ALERT_DEFINITION_NAME);
String definitionId = (String) propertyMap.get(ALERT_DEFINITION_ID);
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AlertTargetResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AlertTargetResourceProvider.java
index dc0fd57..be18477 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AlertTargetResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AlertTargetResourceProvider.java
@@ -422,9 +422,14 @@
entity.setNotificationType(notificationType);
}
- String properties = s_gson.toJson(extractProperties(requestMap));
- if (!StringUtils.isEmpty(properties)) {
- entity.setProperties(properties);
+ Map<String, Object> propertiesMap = extractProperties(requestMap);
+
+ if (propertiesMap != null) {
+ String properties = s_gson.toJson(propertiesMap);
+ if (!StringUtils.isEmpty(properties)) {
+ LOG.debug("Updating Alert Target properties map to: " + properties);
+ entity.setProperties(properties);
+ }
}
// a null alert state implies that the key was not set and no update
@@ -533,17 +538,23 @@
private Map<String, Object> extractProperties(Map<String, Object> requestMap) {
Map<String, Object> normalizedMap = new HashMap<>(
requestMap.size());
+ boolean has_properties = false;
for (Entry<String, Object> entry : requestMap.entrySet()) {
String key = entry.getKey();
String propCat = PropertyHelper.getPropertyCategory(key);
if (propCat.equals(ALERT_TARGET_PROPERTIES)) {
+ has_properties = true;
String propKey = PropertyHelper.getPropertyName(key);
normalizedMap.put(propKey, entry.getValue());
}
}
+ if (!has_properties) {
+ normalizedMap = null;
+ }
+
return normalizedMap;
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AmbariServerLDAPConfigurationHandler.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AmbariServerLDAPConfigurationHandler.java
index 7f1a49f..a3c2d1f 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AmbariServerLDAPConfigurationHandler.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AmbariServerLDAPConfigurationHandler.java
@@ -101,9 +101,6 @@
OperationType operationType;
try {
operationType = OperationType.translate(operation);
- if (operationType == null) {
- throw new SystemException(String.format("The requested operation is not supported for this category: %s", categoryName));
- }
} catch (IllegalArgumentException e) {
throw new SystemException(String.format("The requested operation is not supported for this category: %s", categoryName), e);
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AmbariServerStackAdvisorAwareConfigurationHandler.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AmbariServerStackAdvisorAwareConfigurationHandler.java
index 49d5ec9..78e7301 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AmbariServerStackAdvisorAwareConfigurationHandler.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AmbariServerStackAdvisorAwareConfigurationHandler.java
@@ -19,7 +19,6 @@
package org.apache.ambari.server.controller.internal;
import java.util.Collection;
-import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -195,10 +194,6 @@
String configType = configuration.getKey();
Map<String, String> configurationProperties = new HashMap<>(configuration.getValue());
- if (configurationProperties == null) {
- configurationProperties = Collections.emptySortedMap();
- }
-
properties.put("properties", configurationProperties);
requestConfigurations.put(configType, properties);
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessor.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessor.java
index 12ef314..56c0405 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessor.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessor.java
@@ -292,8 +292,6 @@
oozieEnvUpdaters.put("oozie_existing_mysql_host", new SingleHostTopologyUpdater("OOZIE_SERVER"));
oozieEnvUpdaters.put("oozie_existing_oracle_host", new SingleHostTopologyUpdater("OOZIE_SERVER"));
oozieEnvUpdaters.put("oozie_existing_postgresql_host", new SingleHostTopologyUpdater("OOZIE_SERVER"));
- oozieEnvUpdaters.put("oozie_existing_oracle_host", new SingleHostTopologyUpdater("OOZIE_SERVER"));
- oozieEnvUpdaters.put("oozie_existing_postgresql_host", new SingleHostTopologyUpdater("OOZIE_SERVER"));
oozieSiteUpdaters.put("oozie.service.JPAService.jdbc.url", new SingleHostTopologyUpdater("OOZIE_SERVER"));
singleHostTopologyUpdaters.put("oozie-env", oozieEnvUpdaters);
@@ -305,8 +303,6 @@
oozieEnvOriginalValueMap.put("oozie_existing_mysql_host", new OriginalValuePropertyUpdater());
oozieEnvOriginalValueMap.put("oozie_existing_oracle_host", new OriginalValuePropertyUpdater());
oozieEnvOriginalValueMap.put("oozie_existing_postgresql_host", new OriginalValuePropertyUpdater());
- oozieEnvOriginalValueMap.put("oozie_existing_oracle_host", new OriginalValuePropertyUpdater());
- oozieEnvOriginalValueMap.put("oozie_existing_postgresql_host", new OriginalValuePropertyUpdater());
oozieSiteOriginalValueMap.put("oozie.service.JPAService.jdbc.url", new OriginalValuePropertyUpdater());
removePropertyUpdaters.put("oozie-env", oozieEnvOriginalValueMap);
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java
index d223e55..1edb665 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java
@@ -76,7 +76,6 @@
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.inject.Inject;
-import com.google.inject.Injector;
import com.google.inject.assistedinject.Assisted;
import com.google.inject.assistedinject.AssistedInject;
@@ -196,8 +195,7 @@
* @param managementController the management controller
*/
@AssistedInject
- public HostComponentResourceProvider(@Assisted AmbariManagementController managementController,
- Injector injector) {
+ public HostComponentResourceProvider(@Assisted AmbariManagementController managementController) {
super(Resource.Type.HostComponent, propertyIds, keyPropertyIds, managementController);
setRequiredCreateAuthorizations(EnumSet.of(RoleAuthorization.SERVICE_ADD_DELETE_SERVICES,RoleAuthorization.HOST_ADD_DELETE_COMPONENTS));
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 c318775..c57b150 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
@@ -711,9 +711,7 @@
// !!! this call will result in mixed results of cluster and non-cluster. this
// will get fixed in a future iteration, as the host_role_command table does not
// currently have direct cluster affinity, and changing that is a tad destructive.
- requestIds = actionManager.getRequestsByStatus(status,
- maxResults != null ? maxResults : BaseRequest.DEFAULT_PAGE_SIZE,
- ascOrder != null ? ascOrder : false);
+ requestIds = actionManager.getRequestsByStatus(status, maxResults, ascOrder);
}
LOG.debug("List<Long> requestIds = actionManager.getRequestsByStatus = {}", requestIds.size());
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackArtifactResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackArtifactResourceProvider.java
index 5685392..a5263c1 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackArtifactResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackArtifactResourceProvider.java
@@ -496,12 +496,8 @@
Collection<KerberosServiceDescriptor> serviceDescriptors = getServiceDescriptors(stackInfo);
- if (serviceDescriptors != null) {
- serviceDescriptors.forEach(kerberosDescriptor::putService);
- return kerberosDescriptor.toMap();
- } else {
- return null;
- }
+ serviceDescriptors.forEach(kerberosDescriptor::putService);
+ return kerberosDescriptor.toMap();
}
/**
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/RestMetricsPropertyProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/RestMetricsPropertyProvider.java
index e2f0906..896abbe 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/RestMetricsPropertyProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/RestMetricsPropertyProvider.java
@@ -303,15 +303,15 @@
portPropertyName = metricsProperties.get(portPropertyNameInMetricsProperties);
}
String portStr = getPropertyValueByNameAndConfigType(portPropertyName, portConfigType, cluster, hostname);
- if (portStr == null && metricsProperties.containsKey(DEFAULT_PORT_PROPERTY)) {
+ if (portStr == null) {
if (metricsProperties.containsKey(DEFAULT_PORT_PROPERTY)) {
portStr = metricsProperties.get(DEFAULT_PORT_PROPERTY);
} else {
String message = String.format("Can not determine REST port for " +
- "component %s. " +
- "Default REST port property %s is not defined at metrics.json " +
- "file for service, and there is no any other available ways " +
- "to determine port information.",
+ "component %s. " +
+ "Default REST port property %s is not defined at metrics.json " +
+ "file for service, and there is no any other available ways " +
+ "to determine port information.",
componentName, DEFAULT_PORT_PROPERTY);
throw new AmbariException(message);
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/ganglia/GangliaHostPropertyProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/ganglia/GangliaHostPropertyProvider.java
index 7abf7a8..7ae2a7f 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/ganglia/GangliaHostPropertyProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/ganglia/GangliaHostPropertyProvider.java
@@ -45,7 +45,6 @@
GANGLIA_CLUSTER_NAMES.add("HDPResourceManager");
GANGLIA_CLUSTER_NAMES.add("HDPHBaseMaster");
GANGLIA_CLUSTER_NAMES.add("HDPHistoryServer");
- GANGLIA_CLUSTER_NAMES.add("HDPNameNode");
GANGLIA_CLUSTER_NAMES.add("HDPTaskTracker");
GANGLIA_CLUSTER_NAMES.add("HDPHBaseRegionServer");
GANGLIA_CLUSTER_NAMES.add("HDPFlumeServer");
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/ganglia/GangliaReportPropertyProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/ganglia/GangliaReportPropertyProvider.java
index 02ea9f3..e709a8d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/ganglia/GangliaReportPropertyProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/ganglia/GangliaReportPropertyProvider.java
@@ -73,9 +73,8 @@
Set<Resource> keepers = new HashSet<>();
for (Resource resource : resources) {
- if (populateResource(resource, request, predicate)) {
- keepers.add(resource);
- }
+ populateResource(resource, request, predicate);
+ keepers.add(resource);
}
return keepers;
}
@@ -90,17 +89,15 @@
* @param request the request
* @param predicate the predicate
*
- * @return true if the resource was successfully populated with the requested properties
- *
* @throws SystemException if unable to populate the resource
*/
- private boolean populateResource(Resource resource, Request request, Predicate predicate)
+ private void populateResource(Resource resource, Request request, Predicate predicate)
throws SystemException {
Set<String> propertyIds = getPropertyIds();
if (propertyIds.isEmpty()) {
- return true;
+ return;
}
String clusterName = (String) resource.getPropertyValue(clusterNamePropertyId);
@@ -109,12 +106,12 @@
LOG.warn("Attempting to get metrics but the Ganglia server is unknown. Resource=" + resource +
" : Cluster=" + clusterName);
}
- return true;
+ return;
}
setProperties(resource, clusterName, request, getRequestPropertyIds(request, predicate));
- return true;
+ return;
}
private boolean setProperties(Resource resource, String clusterName, Request request, Set<String> ids)
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/AMSReportPropertyProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/AMSReportPropertyProvider.java
index 431f9ba..92bcfbd 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/AMSReportPropertyProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/AMSReportPropertyProvider.java
@@ -102,9 +102,8 @@
Set<Resource> keepers = new HashSet<>();
for (Resource resource : resources) {
- if (populateResource(resource, request, predicate)) {
- keepers.add(resource);
- }
+ populateResource(resource, request, predicate);
+ keepers.add(resource);
}
return keepers;
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/HiveServiceCalculatedState.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/HiveServiceCalculatedState.java
index 52ec0e7..0d6357e 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/HiveServiceCalculatedState.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/HiveServiceCalculatedState.java
@@ -105,10 +105,10 @@
if (nonStartedState == null ||
(hiveServerComponentStarted && webHcatComponentStarted && activeHiveMetastoreComponentCount > 0 &&
- (embeddedMysqlComponentExists ? mysqlComponentStarted : true))) {
+ (!embeddedMysqlComponentExists || mysqlComponentStarted))) {
return State.STARTED;
}
- return nonStartedState == null ? State.INSTALLED : nonStartedState;
+ return nonStartedState;
}
} catch (AmbariException e) {
LOG.error("Can't determine service state.", e);
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/customactions/ActionDefinitionManager.java b/ambari-server/src/main/java/org/apache/ambari/server/customactions/ActionDefinitionManager.java
index dde2647..952bc2b 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/customactions/ActionDefinitionManager.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/customactions/ActionDefinitionManager.java
@@ -89,7 +89,7 @@
|| !customActionDefinitionRoot.exists()
|| !customActionDefinitionRoot.canRead()) {
LOG.warn("Cannot read custom action definitions. " +
- customActionDefinitionRoot == null ? "" : "Check path " + customActionDefinitionRoot.getAbsolutePath());
+ (customActionDefinitionRoot == null ? "" : ("Check path " + customActionDefinitionRoot.getAbsolutePath())));
}
File[] customActionDefinitionFiles
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/UpgradeUpdateListener.java b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/UpgradeUpdateListener.java
index d6dd89b..71ce27c 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/UpgradeUpdateListener.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/UpgradeUpdateListener.java
@@ -20,7 +20,6 @@
import org.apache.ambari.server.EagerSingleton;
import org.apache.ambari.server.events.RequestUpdateEvent;
import org.apache.ambari.server.events.UpgradeUpdateEvent;
-import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
import org.apache.ambari.server.events.publishers.STOMPUpdatePublisher;
import org.apache.ambari.server.orm.dao.HostRoleCommandDAO;
import org.apache.ambari.server.orm.dao.RequestDAO;
@@ -47,7 +46,7 @@
private RequestDAO requestDAO;
@Inject
- public UpgradeUpdateListener(STOMPUpdatePublisher STOMPUpdatePublisher, AmbariEventPublisher ambariEventPublisher) {
+ public UpgradeUpdateListener(STOMPUpdatePublisher STOMPUpdatePublisher) {
STOMPUpdatePublisher.registerAPI(this);
this.STOMPUpdatePublisher = STOMPUpdatePublisher;
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/metrics/system/impl/StompEventsMetricsSource.java b/ambari-server/src/main/java/org/apache/ambari/server/metrics/system/impl/StompEventsMetricsSource.java
index b13a432..42aa778 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/metrics/system/impl/StompEventsMetricsSource.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/metrics/system/impl/StompEventsMetricsSource.java
@@ -64,10 +64,8 @@
@Override
public void run() {
List<SingleMetric> events = getEvents();
- if (!events.isEmpty()) {
- sink.publish(events);
- LOG.debug("********* Published stomp events metrics to sink **********");
- }
+ sink.publish(events);
+ LOG.debug("********* Published stomp events metrics to sink **********");
}
}, interval, interval, TimeUnit.SECONDS);
} catch (Exception e) {
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/notifications/dispatchers/AlertScriptDispatcher.java b/ambari-server/src/main/java/org/apache/ambari/server/notifications/dispatchers/AlertScriptDispatcher.java
index 3a0f0a0..2dfcaa5 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/notifications/dispatchers/AlertScriptDispatcher.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/notifications/dispatchers/AlertScriptDispatcher.java
@@ -414,9 +414,7 @@
try {
return process.exitValue();
} catch (IllegalThreadStateException ex) {
- if (timeRemaining > 0) {
- Thread.sleep(Math.min(timeRemaining, 500));
- }
+ Thread.sleep(Math.min(timeRemaining, 500));
}
long timeElapsed = System.currentTimeMillis() - startTime;
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java
index 4cc8032..328cce6 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java
@@ -1063,9 +1063,7 @@
ScriptRunner scriptRunner = new ScriptRunner(getConnection(), false, false);
scriptRunner.runScript(br);
} finally {
- if (br != null) {
- br.close();
- }
+ br.close();
}
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
index ef63538..8e091da 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
@@ -395,7 +395,7 @@
String leading = stackId.getStackVersion(); // E.g, 2.3
// In some cases during unit tests, the leading can contain 3 digits, so only the major number (first two parts) are needed.
String[] leadingParts = leading.split("\\.");
- if (null != leadingParts && leadingParts.length > 2) {
+ if (leadingParts.length > 2) {
leading = leadingParts[0] + "." + leadingParts[1];
}
return version.startsWith(leading);
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/ScriptRunner.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/ScriptRunner.java
index 7bfaa06..5b5ad91 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/ScriptRunner.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/ScriptRunner.java
@@ -143,9 +143,7 @@
if (trimmedLine.startsWith("--")) {
println(trimmedLine);
} else if (trimmedLine.length() < 1
- || trimmedLine.startsWith("//")) {
- // Do nothing
- } else if (trimmedLine.length() < 1
+ || trimmedLine.startsWith("//")
|| trimmedLine.startsWith("--")) {
// Do nothing
} else if (!fullLineDelimiter
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/security/authentication/kerberos/AmbariKerberosAuthenticationFilter.java b/ambari-server/src/main/java/org/apache/ambari/server/security/authentication/kerberos/AmbariKerberosAuthenticationFilter.java
index bcc65eb..5e34c2e 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/security/authentication/kerberos/AmbariKerberosAuthenticationFilter.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/security/authentication/kerberos/AmbariKerberosAuthenticationFilter.java
@@ -102,15 +102,13 @@
setFailureHandler(new AuthenticationFailureHandler() {
@Override
public void onAuthenticationFailure(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, AuthenticationException e) throws IOException, ServletException {
- if (eventHandler != null) {
- AmbariAuthenticationException cause;
- if (e instanceof AmbariAuthenticationException) {
- cause = (AmbariAuthenticationException) e;
- } else {
- cause = new AmbariAuthenticationException(null, e.getLocalizedMessage(), false, e);
- }
- eventHandler.onUnsuccessfulAuthentication(AmbariKerberosAuthenticationFilter.this, httpServletRequest, httpServletResponse, cause);
+ AmbariAuthenticationException cause;
+ if (e instanceof AmbariAuthenticationException) {
+ cause = (AmbariAuthenticationException) e;
+ } else {
+ cause = new AmbariAuthenticationException(null, e.getLocalizedMessage(), false, e);
}
+ eventHandler.onUnsuccessfulAuthentication(AmbariKerberosAuthenticationFilter.this, httpServletRequest, httpServletResponse, cause);
entryPoint.commence(httpServletRequest, httpServletResponse, e);
}
@@ -119,9 +117,7 @@
setSuccessHandler(new AuthenticationSuccessHandler() {
@Override
public void onAuthenticationSuccess(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Authentication authentication) throws IOException, ServletException {
- if (eventHandler != null) {
- eventHandler.onSuccessfulAuthentication(AmbariKerberosAuthenticationFilter.this, httpServletRequest, httpServletResponse, authentication);
- }
+ eventHandler.onSuccessfulAuthentication(AmbariKerberosAuthenticationFilter.this, httpServletRequest, httpServletResponse, authentication);
}
});
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/AmbariAuthorizationFilter.java b/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/AmbariAuthorizationFilter.java
index 29b3e4f..a6f5967 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/AmbariAuthorizationFilter.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/AmbariAuthorizationFilter.java
@@ -354,7 +354,6 @@
requestURI.matches(API_CLUSTER_CONFIG_GROUPS_ALL_PATTERN) ||
requestURI.matches(API_HOSTS_ALL_PATTERN) ||
requestURI.matches(API_ALERT_TARGETS_ALL_PATTERN) ||
- requestURI.matches(API_PRIVILEGES_ALL_PATTERN) ||
requestURI.matches(API_PERSIST_ALL_PATTERN) ||
requestURI.matches(API_CLUSTERS_UPGRADES_PATTERN);
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/security/encryption/CredentialProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/security/encryption/CredentialProvider.java
index 6ebccbf..75cd5be 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/security/encryption/CredentialProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/security/encryption/CredentialProvider.java
@@ -147,8 +147,7 @@
if (args.length > 2 && !args[2].isEmpty()) {
password = args[2];
}
- if (alias != null && !alias.isEmpty()
- && password != null && !password.isEmpty()) {
+ if (password != null && !password.isEmpty()) {
try {
credentialProvider.addAliasToCredentialStore(alias, password);
} catch (AmbariException e) {
@@ -163,8 +162,7 @@
if (args.length > 2 && !args[2].isEmpty()) {
writeFilePath = args[2];
}
- if (alias != null && !alias.isEmpty() && writeFilePath != null &&
- !writeFilePath.isEmpty()) {
+ if (writeFilePath != null && !writeFilePath.isEmpty()) {
String passwd = "";
try {
char[] retPasswd = credentialProvider.getPasswordForAlias(alias);
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/CreateKeytabFilesServerAction.java b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/CreateKeytabFilesServerAction.java
index ca906b6..02f7616 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/CreateKeytabFilesServerAction.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/CreateKeytabFilesServerAction.java
@@ -351,7 +351,7 @@
if (canCache) {
File cachedKeytabFile = cacheKeytab(principal, keytab);
String previousCachedFilePath = principalEntity.getCachedKeytabPath();
- String cachedKeytabFilePath = ((cachedKeytabFile == null) || !cachedKeytabFile.exists())
+ String cachedKeytabFilePath = (!cachedKeytabFile.exists())
? null
: cachedKeytabFile.getAbsolutePath();
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/UpdateKerberosConfigsServerAction.java b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/UpdateKerberosConfigsServerAction.java
index 2f32312..bf3b20a 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/UpdateKerberosConfigsServerAction.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/UpdateKerberosConfigsServerAction.java
@@ -137,20 +137,18 @@
clusterEnvProperties.put("security_enabled", securityEnabled);
- if (!configTypes.isEmpty()) {
- String configNote = getCommandParameterValue(getCommandParameters(), KerberosServerAction.UPDATE_CONFIGURATION_NOTE);
+ String configNote = getCommandParameterValue(getCommandParameters(), KerberosServerAction.UPDATE_CONFIGURATION_NOTE);
- if((configNote == null) || configNote.isEmpty()) {
- configNote = cluster.getSecurityType() == SecurityType.KERBEROS
- ? "Enabling Kerberos"
- : "Disabling Kerberos";
- }
+ if((configNote == null) || configNote.isEmpty()) {
+ configNote = cluster.getSecurityType() == SecurityType.KERBEROS
+ ? "Enabling Kerberos"
+ : "Disabling Kerberos";
+ }
- for (String configType : configTypes) {
- configHelper.updateConfigType(cluster, cluster.getDesiredStackVersion(), controller,
- configType, propertiesToSet.get(configType), propertiesToRemove.get(configType),
- authenticatedUserName, configNote);
- }
+ for (String configType : configTypes) {
+ configHelper.updateConfigType(cluster, cluster.getDesiredStackVersion(), controller,
+ configType, propertiesToSet.get(configType), propertiesToRemove.get(configType),
+ authenticatedUserName, configNote);
}
} catch (IOException e) {
String message = "Could not update services configs to enable kerberos";
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/ConfigureAction.java b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/ConfigureAction.java
index 3302749..a44f675 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/ConfigureAction.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/ConfigureAction.java
@@ -416,7 +416,7 @@
}
// set all key/value pairs
- if (null != keyValuePairs && !keyValuePairs.isEmpty()) {
+ if (!keyValuePairs.isEmpty()) {
for (ConfigurationKeyValue keyValuePair : keyValuePairs) {
String key = keyValuePair.key;
String value = keyValuePair.value;
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/stack/ExtensionHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/stack/ExtensionHelper.java
index 3a143f4..317df81 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/stack/ExtensionHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/stack/ExtensionHelper.java
@@ -124,8 +124,8 @@
private static void validateServiceDuplication(StackManager stackManager, StackInfo stack, ExtensionInfo extension, Collection<ServiceInfo> services) throws AmbariException {
LOG.debug("Looking for duplicate services");
for (ServiceInfo service : services) {
- LOG.debug("Looking for duplicate service " + service.getName());
if (service != null) {
+ LOG.debug("Looking for duplicate service " + service.getName());
ServiceInfo stackService = null;
try {
stackService = stack.getService(service.getName());
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/stack/ServiceDirectory.java b/ambari-server/src/main/java/org/apache/ambari/server/stack/ServiceDirectory.java
index 7464e61..36cfc28 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/stack/ServiceDirectory.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/stack/ServiceDirectory.java
@@ -446,7 +446,7 @@
roleCommandOrder = new StackRoleCommandOrder(result);
- if (LOG.isDebugEnabled() && rcoFile != null) {
+ if (LOG.isDebugEnabled()) {
LOG.debug("Role Command Order for {}", rcoFile.getAbsolutePath());
roleCommandOrder.printRoleCommandOrder(LOG);
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/stack/upgrade/ClusterGrouping.java b/ambari-server/src/main/java/org/apache/ambari/server/stack/upgrade/ClusterGrouping.java
index dd768be..dd61732 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/stack/upgrade/ClusterGrouping.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/stack/upgrade/ClusterGrouping.java
@@ -106,65 +106,63 @@
List<StageWrapper> results = new ArrayList<>(stageWrappers);
- if (executionStages != null) {
- for (ExecuteStage execution : executionStages) {
- if (null != execution.intendedDirection
- && execution.intendedDirection != upgradeContext.getDirection()) {
+ for (ExecuteStage execution : executionStages) {
+ if (null != execution.intendedDirection
+ && execution.intendedDirection != upgradeContext.getDirection()) {
+ continue;
+ }
+
+ // if there is a condition on the group, evaluate it and skip scheduling
+ // of this group if the condition has not been satisfied
+ if (null != execution.condition && !execution.condition.isSatisfied(upgradeContext)) {
+ LOG.info("Skipping {} while building upgrade orchestration due to {}", execution,
+ execution.condition);
+
+ continue;
+ }
+
+ // only schedule this stage if its service is part of the upgrade
+ if (StringUtils.isNotBlank(execution.service)) {
+ if (!upgradeContext.isServiceSupported(execution.service)) {
continue;
}
+ }
- // if there is a condition on the group, evaluate it and skip scheduling
- // of this group if the condition has not been satisfied
- if (null != execution.condition && !execution.condition.isSatisfied(upgradeContext)) {
- LOG.info("Skipping {} while building upgrade orchestration due to {}", execution,
- execution.condition);
+ // tasks can have their own condition, so check that too
+ if (null != execution.task.condition
+ && !execution.task.condition.isSatisfied(upgradeContext)) {
+ LOG.info("Skipping {} while building upgrade orchestration due to {}", execution,
+ execution.task.condition);
- continue;
- }
+ continue;
+ }
- // only schedule this stage if its service is part of the upgrade
- if (StringUtils.isNotBlank(execution.service)) {
- if (!upgradeContext.isServiceSupported(execution.service)) {
- continue;
- }
- }
+ Task task = execution.task;
- // tasks can have their own condition, so check that too
- if (null != execution.task.condition
- && !execution.task.condition.isSatisfied(upgradeContext)) {
- LOG.info("Skipping {} while building upgrade orchestration due to {}", execution,
- execution.task.condition);
+ StageWrapper wrapper = null;
- continue;
- }
+ switch (task.getType()) {
+ case MANUAL:
+ case SERVER_ACTION:
+ case CONFIGURE:
+ case ADD_COMPONENT:
+ wrapper = getServerActionStageWrapper(upgradeContext, execution);
+ break;
- Task task = execution.task;
+ case EXECUTE:
+ wrapper = getExecuteStageWrapper(upgradeContext, execution);
+ break;
- StageWrapper wrapper = null;
+ case REGENERATE_KEYTABS:
+ wrapper = getRegenerateKeytabsWrapper(upgradeContext, execution);
+ break;
- switch (task.getType()) {
- case MANUAL:
- case SERVER_ACTION:
- case CONFIGURE:
- case ADD_COMPONENT:
- wrapper = getServerActionStageWrapper(upgradeContext, execution);
- break;
+ default:
+ break;
+ }
- case EXECUTE:
- wrapper = getExecuteStageWrapper(upgradeContext, execution);
- break;
-
- case REGENERATE_KEYTABS:
- wrapper = getRegenerateKeytabsWrapper(upgradeContext, execution);
- break;
-
- default:
- break;
- }
-
- if (null != wrapper) {
- results.add(wrapper);
- }
+ if (null != wrapper) {
+ results.add(wrapper);
}
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/stack/upgrade/ColocatedGrouping.java b/ambari-server/src/main/java/org/apache/ambari/server/stack/upgrade/ColocatedGrouping.java
index 56a201b..f90a489 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/stack/upgrade/ColocatedGrouping.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/stack/upgrade/ColocatedGrouping.java
@@ -275,18 +275,16 @@
}
if (!proxy.restart) {
- if (null == wrapper) {
- TaskWrapper[] tasks = proxy.getTasksArray(predicate);
+ TaskWrapper[] tasks = proxy.getTasksArray(predicate);
- if (LOG.isDebugEnabled()) {
- for (TaskWrapper tw : tasks) {
- LOG.debug("{}", tw);
- }
+ if (LOG.isDebugEnabled()) {
+ for (TaskWrapper tw : tasks) {
+ LOG.debug("{}", tw);
}
+ }
- if (ArrayUtils.isNotEmpty(tasks)) {
- wrapper = new StageWrapper(proxy.type, proxy.message, tasks);
- }
+ if (ArrayUtils.isNotEmpty(tasks)) {
+ wrapper = new StageWrapper(proxy.type, proxy.message, tasks);
}
} else {
TaskWrapper[] tasks = proxy.getTasksArray(null);
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/stack/upgrade/ConfigureTask.java b/ambari-server/src/main/java/org/apache/ambari/server/stack/upgrade/ConfigureTask.java
index 57096b6..4ddf36c 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/stack/upgrade/ConfigureTask.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/stack/upgrade/ConfigureTask.java
@@ -235,7 +235,7 @@
//Fetch the replacements that used regex to find a string
replacements.addAll(definition.getRegexReplacements(cluster));
- if( null != replacements && !replacements.isEmpty() ){
+ if( !replacements.isEmpty() ){
List<Replace> allowedReplacements = getValidReplacements(cluster, definition.getConfigType(), replacements);
configParameters.put(ConfigureTask.PARAMETER_REPLACEMENTS, m_gson.toJson(allowedReplacements));
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/stack/upgrade/orchestrate/UpgradeHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/stack/upgrade/orchestrate/UpgradeHelper.java
index 76eab07..508a6db 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/stack/upgrade/orchestrate/UpgradeHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/stack/upgrade/orchestrate/UpgradeHelper.java
@@ -1110,28 +1110,25 @@
}
}
- if (null != newServiceDefaultConfigsByType) {
-
- for (String clusterConfigType : clusterConfigTypes) {
- if (processedClusterConfigTypes.contains(clusterConfigType)) {
- newServiceDefaultConfigsByType.remove(clusterConfigType);
- } else {
- processedClusterConfigTypes.add(clusterConfigType);
- }
-
+ for (String clusterConfigType : clusterConfigTypes) {
+ if (processedClusterConfigTypes.contains(clusterConfigType)) {
+ newServiceDefaultConfigsByType.remove(clusterConfigType);
+ } else {
+ processedClusterConfigTypes.add(clusterConfigType);
}
- Set<String> configTypes = newServiceDefaultConfigsByType.keySet();
- LOG.warn("The upgrade will create the following configurations for stack {}: {}",
- targetStackId, StringUtils.join(configTypes, ','));
-
- String serviceVersionNote = String.format("%s %s %s", direction.getText(true),
- direction.getPreposition(), upgradeContext.getRepositoryVersion().getVersion());
-
- configHelper.createConfigTypes(cluster, targetStackId, controller,
- newServiceDefaultConfigsByType, userName, serviceVersionNote);
- configsChanged = true;
}
+
+ Set<String> configTypes = newServiceDefaultConfigsByType.keySet();
+ LOG.warn("The upgrade will create the following configurations for stack {}: {}",
+ targetStackId, StringUtils.join(configTypes, ','));
+
+ String serviceVersionNote = String.format("%s %s %s", direction.getText(true),
+ direction.getPreposition(), upgradeContext.getRepositoryVersion().getVersion());
+
+ configHelper.createConfigTypes(cluster, targetStackId, controller,
+ newServiceDefaultConfigsByType, userName, serviceVersionNote);
+ configsChanged = true;
}
if (configsChanged) {
m_configHelperProvider.get().updateAgentConfigs(Collections.singleton(cluster.getClusterName()));
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigHelper.java
index 91fe76e..731dab3 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigHelper.java
@@ -274,7 +274,7 @@
Entry<PropertyInfo, String> property = iterator.next();
PropertyInfo propertyInfo = property.getKey();
String propertyValue = property.getValue();
- if (property == null || propertyValue == null || propertyValue.toLowerCase().equals("null") || propertyValue.isEmpty()) {
+ if (propertyValue == null || propertyValue.toLowerCase().equals("null") || propertyValue.isEmpty()) {
LOG.error(String.format("Excluding property %s from %s, because of invalid or empty value!", propertyInfo.getName(), filteredListName));
iterator.remove();
} else {
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigImpl.java
index 3a0cd6d..9da9771 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigImpl.java
@@ -396,10 +396,10 @@
@Transactional
public void save() {
ClusterConfigEntity entity = clusterDAO.findConfig(configId);
- ClusterEntity clusterEntity = clusterDAO.findById(entity.getClusterId());
// if the configuration was found, then update it
if (null != entity) {
+ ClusterEntity clusterEntity = clusterDAO.findById(entity.getClusterId());
LOG.debug("Updating {} version {} with new configurations; a new version will not be created",
getType(), getVersion());
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/alert/AlertDefinitionHash.java b/ambari-server/src/main/java/org/apache/ambari/server/state/alert/AlertDefinitionHash.java
index 539b624..27fe886 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/alert/AlertDefinitionHash.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/alert/AlertDefinitionHash.java
@@ -556,7 +556,7 @@
hostName);
// no definitions found for this host, don't bother hashing
- if( null == definitions || definitions.size() == 0 ) {
+ if(definitions.isEmpty()) {
return NULL_MD5_HASH;
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/addservice/StackAdvisorAdapter.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/addservice/StackAdvisorAdapter.java
index 7504d45..de0a2ac 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/addservice/StackAdvisorAdapter.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/addservice/StackAdvisorAdapter.java
@@ -190,9 +190,7 @@
if (info.getRequest().getRecommendationStrategy().shouldOverrideCustomValues()) {
config = recommendedConfig;
config.setParentConfiguration(userConfig);
- }
- else {
- config = userConfig;
+ } else {
config.setParentConfiguration(recommendedConfig);
recommendedConfig.setParentConfiguration(clusterAndStackConfig);
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/update/HostUpdateHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/update/HostUpdateHelper.java
index 1d9b28f..6efcdee 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/update/HostUpdateHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/update/HostUpdateHelper.java
@@ -512,12 +512,10 @@
Collection<TopologyHostInfoEntity> topologyHostInfoEntities = topologyHostGroupEntity.getTopologyHostInfoEntities();
boolean updatesAvailable = false;
- if (topologyHostGroupEntities != null) {
- for (TopologyHostInfoEntity topologyHostInfoEntity : topologyHostInfoEntities) {
- if (currentHostNames.contains(topologyHostInfoEntity.getFqdn())) {
- topologyHostInfoEntity.setFqdn(hostMapping.get(topologyHostInfoEntity.getFqdn()));
- updatesAvailable = true;
- }
+ for (TopologyHostInfoEntity topologyHostInfoEntity : topologyHostInfoEntities) {
+ if (currentHostNames.contains(topologyHostInfoEntity.getFqdn())) {
+ topologyHostInfoEntity.setFqdn(hostMapping.get(topologyHostInfoEntity.getFqdn()));
+ updatesAvailable = true;
}
}
if (updatesAvailable) {
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog260.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog260.java
index 6bcf8a9..42bde6f 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog260.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog260.java
@@ -751,7 +751,7 @@
// Get the keytab file 'config name'.
String[] splits = keytabDescriptor.getConfiguration().split("/");
- if (splits != null && splits.length == 2) {
+ if (splits.length == 2) {
updateYarnKerberosDescUpdatedList(splits[1]);
LOG.info(" Updated 'yarnKerberosDescUpdatedList' = " + getYarnKerberosDescUpdatedList());
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/utils/HTTPUtils.java b/ambari-server/src/main/java/org/apache/ambari/server/utils/HTTPUtils.java
index 1632c38..6c7ceee 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/utils/HTTPUtils.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/utils/HTTPUtils.java
@@ -63,14 +63,12 @@
rd = new BufferedReader(new InputStreamReader(resultInputStream));
- if (rd != null) {
+ line = rd.readLine();
+ while (line != null) {
+ result += line;
line = rd.readLine();
- while (line != null) {
- result += line;
- line = rd.readLine();
- }
- rd.close();
}
+ rd.close();
} catch (Exception e) {
e.printStackTrace();
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/utils/MpackVersion.java b/ambari-server/src/main/java/org/apache/ambari/server/utils/MpackVersion.java
index 8d24260..7d7b58c 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/utils/MpackVersion.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/utils/MpackVersion.java
@@ -83,9 +83,6 @@
mpackVersion = format(mpackVersion);
}
Matcher versionMatcher = validateMpackVersion(mpackVersion);
- if(versionMatcher == null) {
- throw new IllegalArgumentException("Wrong format for mpack version");
- }
if (versionMatcher.pattern().pattern().equals(VERSION_WITH_BUILD_PATTERN)) {
return new MpackVersion(Integer.parseInt(versionMatcher.group(1)), Integer.parseInt(versionMatcher.group(2)),
Integer.parseInt(versionMatcher.group(3)), 0, Integer.parseInt(versionMatcher.group(4)));
@@ -138,9 +135,6 @@
* */
public static MpackVersion parseStackVersion(String stackVersion) {
Matcher versionMatcher = validateStackVersion(stackVersion);
- if(versionMatcher == null) {
- throw new IllegalArgumentException("Wrong format for mpack version");
- }
if(versionMatcher.pattern().pattern().equals(LEGACY_STACK_VERSION_PATTERN)) {
return new MpackVersion(Integer.parseInt(versionMatcher.group(1)),
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/utils/StageUtils.java b/ambari-server/src/main/java/org/apache/ambari/server/utils/StageUtils.java
index d0351d0..48537d6 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/utils/StageUtils.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/utils/StageUtils.java
@@ -343,18 +343,16 @@
for (String hostName : serviceComponent.getServiceComponentHosts().keySet()) {
- if (roleName != null) {
- SortedSet<Integer> hostsForComponentsHost = hostRolesInfo.get(roleName);
+ SortedSet<Integer> hostsForComponentsHost = hostRolesInfo.get(roleName);
- if (hostsForComponentsHost == null) {
- hostsForComponentsHost = new TreeSet<>();
- hostRolesInfo.put(roleName, hostsForComponentsHost);
- }
-
- int hostIndex = hostsList.indexOf(hostName);
- //Add index of host to current host role
- hostsForComponentsHost.add(hostIndex);
+ if (hostsForComponentsHost == null) {
+ hostsForComponentsHost = new TreeSet<>();
+ hostRolesInfo.put(roleName, hostsForComponentsHost);
}
+
+ int hostIndex = hostsList.indexOf(hostName);
+ //Add index of host to current host role
+ hostsForComponentsHost.add(hostIndex);
}
}
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/view/HttpImpersonatorImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/view/HttpImpersonatorImpl.java
index 7e67891..aa0683d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/view/HttpImpersonatorImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/view/HttpImpersonatorImpl.java
@@ -143,14 +143,12 @@
rd = new BufferedReader(new InputStreamReader(resultInputStream));
- if (rd != null) {
+ line = rd.readLine();
+ while (line != null) {
+ result += line;
line = rd.readLine();
- while (line != null) {
- result += line;
- line = rd.readLine();
- }
- rd.close();
}
+ rd.close();
} catch (Exception e) {
LOG.error("Exception caught processing impersonator request.", e);
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/view/ViewSubResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/view/ViewSubResourceProvider.java
index 5f6201a..ce0e652 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/view/ViewSubResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/view/ViewSubResourceProvider.java
@@ -272,8 +272,7 @@
// get the resource type associated with the given UnsupportedPropertyException
private Resource.Type getResourceType(org.apache.ambari.view.UnsupportedPropertyException e) {
- Resource.Type type = Resource.Type.valueOf(e.getType());
- return type == null ? this.type : type;
+ return Resource.Type.valueOf(e.getType());
}
// discover the property ids for the given bean class
diff --git a/ambari-server/src/main/python/ambari_server/setupMpacks.py b/ambari-server/src/main/python/ambari_server/setupMpacks.py
index b8c0974..640cc2f 100755
--- a/ambari-server/src/main/python/ambari_server/setupMpacks.py
+++ b/ambari-server/src/main/python/ambari_server/setupMpacks.py
@@ -347,11 +347,12 @@
if not replay_mode:
purge_resources = set((v) for k, v in RESOURCE_FRIENDLY_NAMES.iteritems() if k in purge_list)
+ answer = 'yes' if options.silent else 'no'
warn_msg = "CAUTION: You have specified the --purge option with --purge-list={0}. " \
"This will replace all existing {1} currently installed.\n" \
- "Are you absolutely sure you want to perform the purge [yes/no]? (no)".format(
- purge_list, ", ".join(purge_resources))
- okToPurge = get_YN_input(warn_msg, False)
+ "Are you absolutely sure you want to perform the purge [yes/no]? ({2})".format(
+ purge_list, ", ".join(purge_resources), answer)
+ okToPurge = get_YN_input(warn_msg, options.silent, answer)
if not okToPurge:
err = "Management pack installation cancelled by user"
raise FatalException(1, err)
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/api/services/PersistenceManagerImplTest.java b/ambari-server/src/test/java/org/apache/ambari/server/api/services/PersistenceManagerImplTest.java
index 5ad3ead..f7e8501 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/api/services/PersistenceManagerImplTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/api/services/PersistenceManagerImplTest.java
@@ -213,7 +213,7 @@
mapResourceProps1.put(PropertyHelper.getPropertyId("foo", "bar"), "value");
Map<String, Object> mapResourceProps2 = new HashMap<>();
- mapResourceProps1.put("componentId", "id2");
+ mapResourceProps2.put("componentId", "id2");
mapResourceProps2.put(PropertyHelper.getPropertyId("foo", "bar2"), "value2");
NamedPropertySet namedPropSet1 = new NamedPropertySet("", mapResourceProps1);
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
index 4926e87..92b32ef 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
@@ -3399,7 +3399,6 @@
Set<ServiceRequest> reqs = new HashSet<>();
ServiceRequest req1, req2;
try {
- reqs.clear();
req1 = new ServiceRequest(cluster1, serviceName1, repositoryVersion02.getId(),
State.STARTED.toString(), null);
reqs.add(req1);
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AlertTargetResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AlertTargetResourceProviderTest.java
index efedd2b..b20dd9f 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AlertTargetResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AlertTargetResourceProviderTest.java
@@ -1007,6 +1007,53 @@
verify(m_amc, m_dao);
}
+ @Test
+ public void testEnable() throws Exception {
+ Capture<AlertTargetEntity> entityCapture = EasyMock.newCapture();
+ m_dao.create(capture(entityCapture));
+ expectLastCall().times(1);
+
+ AlertTargetEntity target = new AlertTargetEntity();
+ target.setEnabled(false);
+ target.setProperties("{prop1=val1}");
+ expect(m_dao.findTargetById(ALERT_TARGET_ID)).andReturn(target).times(1);
+
+ expect(m_dao.merge(capture(entityCapture))).andReturn(target).once();
+
+ replay(m_amc, m_dao);
+
+ SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator());
+
+ AlertTargetResourceProvider provider = createProvider(m_amc);
+ Map<String, Object> requestProps = getCreationProperties();
+ Request request = PropertyHelper.getCreateRequest(
+ Collections.singleton(requestProps), null);
+ provider.createResources(request);
+
+ // create new properties, and include the ID since we're not going through
+ // a service layer which would add it for us automatically
+ requestProps = new HashMap<>();
+ requestProps.put(AlertTargetResourceProvider.ALERT_TARGET_ID,
+ ALERT_TARGET_ID.toString());
+
+ requestProps.put(AlertTargetResourceProvider.ALERT_TARGET_ENABLED,
+ "true");
+
+ Predicate predicate = new PredicateBuilder().property(
+ AlertTargetResourceProvider.ALERT_TARGET_ID).equals(
+ ALERT_TARGET_ID.toString()).toPredicate();
+
+ request = PropertyHelper.getUpdateRequest(requestProps, null);
+ provider.updateResources(request, predicate);
+
+ assertTrue(entityCapture.hasCaptured());
+
+ AlertTargetEntity entity = entityCapture.getValue();
+ assertTrue("{prop1=val1}".equals(entity.getProperties()));
+ assertTrue(entity.isEnabled());
+ verify(m_amc, m_dao);
+ }
+
/**
* @param amc
* @return
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java
index 26fd36e..965ef71 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java
@@ -113,7 +113,7 @@
ResourceProviderFactory resourceProviderFactory = createNiceMock(ResourceProviderFactory.class);
Injector injector = createNiceMock(Injector.class);
HostComponentResourceProvider hostComponentResourceProvider =
- new HostComponentResourceProvider(managementController, injector);
+ new HostComponentResourceProvider(managementController);
AbstractControllerResourceProvider.init(resourceProviderFactory);
@@ -450,7 +450,7 @@
Injector injector = createNiceMock(Injector.class);
HostComponentResourceProvider provider =
- new HostComponentResourceProvider(managementController, injector);
+ new HostComponentResourceProvider(managementController);
// set expectations
expect(managementController.deleteHostComponents(
@@ -489,7 +489,7 @@
Injector injector = createNiceMock(Injector.class);
HostComponentResourceProvider provider =
- new HostComponentResourceProvider(managementController, injector);
+ new HostComponentResourceProvider(managementController);
Set<String> unsupported = provider.checkPropertyIds(Collections.singleton(PropertyHelper.getPropertyId("HostRoles", "cluster_name")));
Assert.assertTrue(unsupported.isEmpty());
@@ -717,7 +717,7 @@
*/
public TestHostComponentResourceProvider(Set<String> propertyIds, Map<Resource.Type, String> keyPropertyIds,
AmbariManagementController managementController, Injector injector) throws Exception {
- super(managementController, injector);
+ super(managementController);
}
public void setFieldValue(String fieldName, Object fieldValue) throws Exception {
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java
index cc178da..d814ae0 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java
@@ -634,7 +634,7 @@
maintenanceStateHelper, repositoryVersionDAO);
ResourceProvider hostCompResourceProvider = new
- HostComponentResourceProvider(controller, injector);
+ HostComponentResourceProvider(controller);
ResourceProvider configResourceProvider = new ConfigurationResourceProvider(
controller);
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/UpgradeActionTest.java b/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/UpgradeActionTest.java
index d81d00c..38af25f 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/UpgradeActionTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/UpgradeActionTest.java
@@ -618,12 +618,7 @@
// repo 2110 - CURRENT
// repo 2111 - CURRENT (PATCH)
for (HostVersionEntity hostVersion : hostVersions) {
- RepositoryVersionEntity hostRepoVersion = hostVersion.getRepositoryVersion();
- if (repositoryVersion2110.equals(hostRepoVersion)) {
- hostVersion.setState(RepositoryVersionState.CURRENT);
- } else {
- hostVersion.setState(RepositoryVersionState.CURRENT);
- }
+ hostVersion.setState(RepositoryVersionState.CURRENT);
hostVersionDAO.merge(hostVersion);
}
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterDeployWithStartOnlyTest.java b/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterDeployWithStartOnlyTest.java
index 3a98ab0..d91a30d 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterDeployWithStartOnlyTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterDeployWithStartOnlyTest.java
@@ -239,8 +239,7 @@
group1ServiceComponents.put("service1", Arrays.asList("component1", "component3"));
group1ServiceComponents.put("service2", Collections.singleton("component2"));
- group2ServiceComponents.put("service2", Collections.singleton("component3"));
- group2ServiceComponents.put("service2", Collections.singleton("component4"));
+ group2ServiceComponents.put("service2", Arrays.asList("component3", "component4"));
expect(blueprint.getHostGroup("group1")).andReturn(group1).anyTimes();
expect(blueprint.getHostGroup("group2")).andReturn(group2).anyTimes();
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartOnComponentLevelTest.java b/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartOnComponentLevelTest.java
index 46e3ff9..2067620 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartOnComponentLevelTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartOnComponentLevelTest.java
@@ -235,8 +235,7 @@
group1ServiceComponents.put("service1", Arrays.asList("component1", "component3"));
group1ServiceComponents.put("service2", Collections.singleton("component2"));
- group2ServiceComponents.put("service2", Collections.singleton("component3"));
- group2ServiceComponents.put("service2", Collections.singleton("component4"));
+ group2ServiceComponents.put("service2", Arrays.asList("component3", "component4"));
expect(blueprint.getHostGroup("group1")).andReturn(group1).anyTimes();
expect(blueprint.getHostGroup("group2")).andReturn(group2).anyTimes();
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartTest.java b/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartTest.java
index 61face9..59acbe9 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartTest.java
@@ -237,8 +237,7 @@
group1ServiceComponents.put("service1", Arrays.asList("component1", "component3"));
group1ServiceComponents.put("service2", Collections.singleton("component2"));
- group2ServiceComponents.put("service2", Collections.singleton("component3"));
- group2ServiceComponents.put("service2", Collections.singleton("component4"));
+ group2ServiceComponents.put("service2", Arrays.asList("component3", "component4"));
expect(blueprint.getHostGroup("group1")).andReturn(group1).anyTimes();
expect(blueprint.getHostGroup("group2")).andReturn(group2).anyTimes();
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/topology/TopologyManagerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/topology/TopologyManagerTest.java
index cc9e7e9..71e5fb6 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/topology/TopologyManagerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/topology/TopologyManagerTest.java
@@ -244,8 +244,7 @@
group1ServiceComponents.put("service1", Arrays.asList("component1", "component3"));
group1ServiceComponents.put("service2", Collections.singleton("component2"));
- group2ServiceComponents.put("service2", Collections.singleton("component3"));
- group2ServiceComponents.put("service2", Collections.singleton("component4"));
+ group2ServiceComponents.put("service2", Arrays.asList("component3", "component4"));
expect(blueprint.getHostGroup("group1")).andReturn(group1).anyTimes();
expect(blueprint.getHostGroup("group2")).andReturn(group2).anyTimes();
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/topology/addservice/StackAdvisorAdapterTest.java b/ambari-server/src/test/java/org/apache/ambari/server/topology/addservice/StackAdvisorAdapterTest.java
index bd80bda..eacfaaf 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/topology/addservice/StackAdvisorAdapterTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/topology/addservice/StackAdvisorAdapterTest.java
@@ -117,7 +117,7 @@
.put("c7406", ImmutableSet.of("DATANODE", "HDFS_CLIENT", "ZOOKEEPER_CLIENT"))
.build();
- private static final AddServiceInfo.Builder ADD_SERVICE_INFO_BUILDER = new AddServiceInfo.Builder()
+ private final AddServiceInfo.Builder addServiceInfoBuilder = new AddServiceInfo.Builder()
.setClusterName("c1");
@Test
@@ -169,58 +169,6 @@
}
@Test
- public void getLayoutRecommendationInfo() {
- Map<String, Map<String, Set<String>>> newServices = ImmutableMap.of(
- "KAFKA", ImmutableMap.of(
- "KAFKA_BROKER", ImmutableSet.of("c7401")),
- "SPARK2", ImmutableMap.of(
- "SPARK2_JOBHISTORYSERVER", ImmutableSet.of("c7402"),
- "SPARK2_CLIENT", ImmutableSet.of("c7403", "c7404")),
- "OOZIE", ImmutableMap.of(
- "OOZIE_SERVER", ImmutableSet.of("c7401"),
- "OOZIE_CLIENT", ImmutableSet.of("c7403", "c7404")));
-
- AddServiceRequest request = request(ConfigRecommendationStrategy.ALWAYS_APPLY);
- AddServiceInfo info = ADD_SERVICE_INFO_BUILDER
- .setRequest(request)
- .setStack(stack)
- .setConfig(Configuration.newEmpty())
- .setNewServices(newServices)
- .build(); // No LayoutReommendationInfo -> needs to be calculated
-
- LayoutRecommendationInfo layoutRecommendationInfo = adapter.getLayoutRecommendationInfo(info);
- layoutRecommendationInfo.getAllServiceLayouts();
-
- assertEquals(
- ImmutableMap.of(
- "host_group_1", ImmutableSet.of("c7401"),
- "host_group_2", ImmutableSet.of("c7402"),
- "host_group_3", ImmutableSet.of("c7403", "c7404")),
- layoutRecommendationInfo.getHostGroups());
-
- assertEquals(
- ImmutableMap.<String, Map<String, Set<String>>>builder()
- .put("KAFKA", ImmutableMap.of(
- "KAFKA_BROKER", ImmutableSet.of("c7401")))
- .put("SPARK2", ImmutableMap.of(
- "SPARK2_JOBHISTORYSERVER", ImmutableSet.of("c7402"),
- "SPARK2_CLIENT", ImmutableSet.of("c7403", "c7404")))
- .put("OOZIE", ImmutableMap.of(
- "OOZIE_SERVER", ImmutableSet.of("c7401"),
- "OOZIE_CLIENT", ImmutableSet.of("c7403", "c7404")))
- .put("HDFS", ImmutableMap.of(
- "NAMENODE", ImmutableSet.of("c7401"),
- "HDFS_CLIENT", ImmutableSet.of("c7401", "c7402")))
- .put("ZOOKEEPER", ImmutableMap.of(
- "ZOOKEEPER_SERVER", ImmutableSet.of("c7401"),
- "ZOOKEEPER_CLIENT", ImmutableSet.of("c7401", "c7402")))
- .put("MAPREDUCE2", ImmutableMap.of(
- "HISTORYSERVER", ImmutableSet.of("c7401")))
- .build(),
- layoutRecommendationInfo.getAllServiceLayouts());
- }
-
- @Test
public void keepNewServicesOnly() {
Map<String, Map<String, Set<String>>> newServices = ImmutableMap.of(
"KAFKA", emptyMap(),
@@ -368,7 +316,7 @@
"KAFKA",
ImmutableMap.of("KAFKA_BROKER", emptySet()));
- AddServiceInfo info = ADD_SERVICE_INFO_BUILDER
+ AddServiceInfo info = addServiceInfoBuilder
.setStack(stack)
.setConfig(Configuration.newEmpty())
.setNewServices(newServices)
@@ -404,7 +352,7 @@
clusterConfig.setParentConfiguration(stackConfig);
AddServiceRequest request = request(ConfigRecommendationStrategy.ALWAYS_APPLY);
- AddServiceInfo info = ADD_SERVICE_INFO_BUILDER
+ AddServiceInfo info = addServiceInfoBuilder
.setRequest(request)
.setStack(stack)
.setConfig(userConfig)
@@ -459,7 +407,7 @@
LayoutRecommendationInfo layoutRecommendationInfo = new LayoutRecommendationInfo(new HashMap<>(), new HashMap<>()); // contents doesn't matter for the test
AddServiceRequest request = request(ConfigRecommendationStrategy.ALWAYS_APPLY);
- AddServiceInfo info = ADD_SERVICE_INFO_BUILDER
+ AddServiceInfo info = addServiceInfoBuilder
.setRequest(request)
.setStack(stack)
.setConfig(userConfig)
@@ -515,7 +463,7 @@
LayoutRecommendationInfo layoutRecommendationInfo = new LayoutRecommendationInfo(new HashMap<>(), new HashMap<>()); // contents doesn't matter for the test
AddServiceRequest request = request(ConfigRecommendationStrategy.ALWAYS_APPLY_DONT_OVERRIDE_CUSTOM_VALUES);
- AddServiceInfo info = ADD_SERVICE_INFO_BUILDER
+ AddServiceInfo info = addServiceInfoBuilder
.setRequest(request)
.setStack(stack)
.setConfig(userConfig)
@@ -576,7 +524,7 @@
LayoutRecommendationInfo layoutRecommendationInfo = new LayoutRecommendationInfo(new HashMap<>(), new HashMap<>()); // contents doesn't matter for the test
AddServiceRequest request = request(ConfigRecommendationStrategy.NEVER_APPLY);
- AddServiceInfo info = ADD_SERVICE_INFO_BUILDER
+ AddServiceInfo info = addServiceInfoBuilder
.setRequest(request)
.setStack(stack)
.setConfig(userConfig)
@@ -623,7 +571,7 @@
LayoutRecommendationInfo layoutRecommendationInfo = new LayoutRecommendationInfo(new HashMap<>(), new HashMap<>()); // contents doesn't matter for the test
AddServiceRequest request = request(ConfigRecommendationStrategy.ONLY_STACK_DEFAULTS_APPLY);
- AddServiceInfo info = ADD_SERVICE_INFO_BUILDER
+ AddServiceInfo info = addServiceInfoBuilder
.setRequest(request)
.setStack(stack)
.setConfig(userConfig)
@@ -696,6 +644,58 @@
assertEquals(recommendedConfigsForStackDefaults, recommendedConfigs);
}
+ @Test
+ public void getLayoutRecommendationInfo() {
+ Map<String, Map<String, Set<String>>> newServices = ImmutableMap.of(
+ "KAFKA", ImmutableMap.of(
+ "KAFKA_BROKER", ImmutableSet.of("c7401")),
+ "SPARK2", ImmutableMap.of(
+ "SPARK2_JOBHISTORYSERVER", ImmutableSet.of("c7402"),
+ "SPARK2_CLIENT", ImmutableSet.of("c7403", "c7404")),
+ "OOZIE", ImmutableMap.of(
+ "OOZIE_SERVER", ImmutableSet.of("c7401"),
+ "OOZIE_CLIENT", ImmutableSet.of("c7403", "c7404")));
+
+ AddServiceRequest request = request(ConfigRecommendationStrategy.ALWAYS_APPLY);
+ AddServiceInfo info = addServiceInfoBuilder
+ .setRequest(request)
+ .setStack(stack)
+ .setConfig(Configuration.newEmpty())
+ .setNewServices(newServices)
+ .build(); // No LayoutReommendationInfo -> needs to be calculated
+
+ LayoutRecommendationInfo layoutRecommendationInfo = adapter.getLayoutRecommendationInfo(info);
+ layoutRecommendationInfo.getAllServiceLayouts();
+
+ assertEquals(
+ ImmutableMap.of(
+ "host_group_1", ImmutableSet.of("c7401"),
+ "host_group_2", ImmutableSet.of("c7402"),
+ "host_group_3", ImmutableSet.of("c7403", "c7404")),
+ layoutRecommendationInfo.getHostGroups());
+
+ assertEquals(
+ ImmutableMap.<String, Map<String, Set<String>>>builder()
+ .put("KAFKA", ImmutableMap.of(
+ "KAFKA_BROKER", ImmutableSet.of("c7401")))
+ .put("SPARK2", ImmutableMap.of(
+ "SPARK2_JOBHISTORYSERVER", ImmutableSet.of("c7402"),
+ "SPARK2_CLIENT", ImmutableSet.of("c7403", "c7404")))
+ .put("OOZIE", ImmutableMap.of(
+ "OOZIE_SERVER", ImmutableSet.of("c7401"),
+ "OOZIE_CLIENT", ImmutableSet.of("c7403", "c7404")))
+ .put("HDFS", ImmutableMap.of(
+ "NAMENODE", ImmutableSet.of("c7401"),
+ "HDFS_CLIENT", ImmutableSet.of("c7401", "c7402")))
+ .put("ZOOKEEPER", ImmutableMap.of(
+ "ZOOKEEPER_SERVER", ImmutableSet.of("c7401"),
+ "ZOOKEEPER_CLIENT", ImmutableSet.of("c7401", "c7402")))
+ .put("MAPREDUCE2", ImmutableMap.of(
+ "HISTORYSERVER", ImmutableSet.of("c7401")))
+ .build(),
+ layoutRecommendationInfo.getAllServiceLayouts());
+ }
+
private static AddServiceRequest request(ConfigRecommendationStrategy strategy) {
return new AddServiceRequest(null, strategy, null, null, null, null, null, null, null, null, null);
}
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/topology/validators/NameNodeHaValidatorTest.java b/ambari-server/src/test/java/org/apache/ambari/server/topology/validators/NameNodeHaValidatorTest.java
index 54f2648..108a4c5 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/topology/validators/NameNodeHaValidatorTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/topology/validators/NameNodeHaValidatorTest.java
@@ -177,7 +177,6 @@
List<String> nameNodeHosts = ImmutableList.copyOf(hosts).subList(0, 2);
nameNodes.addAll(nameNodeHosts);
- hadoopEnv.put("dfs_ha_initial_namenode_active", nameNodeHosts.get(0));
hadoopEnv.put("dfs_ha_initial_namenode_active", nameNodeHosts.get(1));
validator.validate(clusterTopology);
diff --git a/ambari-web/app/assets/test/tests.js b/ambari-web/app/assets/test/tests.js
index f2fcb49..760a27d 100644
--- a/ambari-web/app/assets/test/tests.js
+++ b/ambari-web/app/assets/test/tests.js
@@ -163,6 +163,8 @@
'test/mappers/alert_instances_mapper_test',
'test/mappers/alert_definitions_mapper_test',
'test/mappers/alert_definition_summary_mapper_test',
+ 'test/mappers/alert_notification_mapper_test',
+ 'test/mappers/cluster_mapper_test',
'test/mappers/server_data_mapper_test',
'test/mappers/hosts_mapper_test',
'test/mappers/service_mapper_test',
@@ -171,8 +173,10 @@
'test/mappers/users_mapper_test',
'test/mappers/stack_mapper_test',
'test/mappers/stack_service_mapper_test',
+ 'test/mappers/stack_version_mapper_test',
'test/mappers/repository_version_mapper_test',
'test/mappers/stack_upgrade_history_mapper_test',
+ 'test/mappers/widget_mapper_test',
'test/mappers/configs/config_groups_mapper_test',
'test/mappers/configs/service_config_version_mapper_test',
'test/mappers/configs/themes_mapper_test',
diff --git a/ambari-web/app/controllers/installer.js b/ambari-web/app/controllers/installer.js
index 82aa615..c3d9cb1 100644
--- a/ambari-web/app/controllers/installer.js
+++ b/ambari-web/app/controllers/installer.js
@@ -890,8 +890,10 @@
if (!verifyBaseUrl) {
dfd.resolve();
}
+ //for redhat satellite/spacewalk the os urls will be empty
+ var useRedhatSatellite = wizardStep1Controller.get('selectedStack.useRedhatSatellite');
selectedStack.get('operatingSystems').forEach(function (os) {
- if (os.get('isSelected') && !os.get('isEmpty')) {
+ if (os.get('isSelected') && (useRedhatSatellite || !os.get('isEmpty'))) {
os.get('repositories').forEach(function (repo) {
if (repo.get('showRepo')) {
repo.setProperties({
diff --git a/ambari-web/app/mappers/alert_notification_mapper.js b/ambari-web/app/mappers/alert_notification_mapper.js
index 8c7f50f..e0ca8d2 100644
--- a/ambari-web/app/mappers/alert_notification_mapper.js
+++ b/ambari-web/app/mappers/alert_notification_mapper.js
@@ -77,7 +77,6 @@
* @private
*/
_setPropertiesToEachModel: function (propertyName, propertiesMap) {
- var modelsMap = this.get('modelsMap');
for (var recordId in propertiesMap) {
if (propertiesMap.hasOwnProperty(recordId)) {
App.AlertNotification.find(recordId).set(propertyName, propertiesMap[recordId]);
diff --git a/ambari-web/app/mappers/quicklinks_mapper.js b/ambari-web/app/mappers/quicklinks_mapper.js
index 6de9b34..05cd5b9 100644
--- a/ambari-web/app/mappers/quicklinks_mapper.js
+++ b/ambari-web/app/mappers/quicklinks_mapper.js
@@ -29,21 +29,5 @@
"name" : "QuickLinkInfo.quicklink_data.QuickLinksConfiguration.name",
"protocol" : "QuickLinkInfo.quicklink_data.QuickLinksConfiguration.configuration.protocol",
"links" : "QuickLinkInfo.quicklink_data.QuickLinksConfiguration.configuration.links"
- },
-
- map: function(json){
- console.time('App.quicklinksMapper execution time');
-
- var result = [];
- var linkResult = [];
-
- json.items.forEach(function(item) {
- var parseResult = this.parseIt(item, this.get('config'));
- console.log("parseResult", parseResult);
- result.push(parseResult);
- }, this);
-
- App.store.safeLoadMany(this.get('model'), result);
- console.timeEnd('App.quicklinksMapper execution time');
}
});
diff --git a/ambari-web/app/mixins/common/widgets/widget_mixin.js b/ambari-web/app/mixins/common/widgets/widget_mixin.js
index 6486856..11ae6bc 100644
--- a/ambari-web/app/mixins/common/widgets/widget_mixin.js
+++ b/ambari-web/app/mixins/common/widgets/widget_mixin.js
@@ -263,7 +263,7 @@
};
if (request.tag) {
- data.selectedHostsParam = '&HostRoles/host_name.in(' + App.HDFSService.find().objectAt(0).get('masterComponentGroups').findProperty('name', request.tag).hosts.join(',') + ')';
+ data.selectedHostsParam = '&HostRoles/host_name.in(' + App.HDFSService.find('HDFS').get('masterComponentGroups').findProperty('name', request.tag).hosts.join(',') + ')';
}
if (metricPaths.length) {
@@ -293,30 +293,15 @@
* @param data
*/
getMetricsSuccessCallback: function (data) {
- var metrics = [];
var atLeastOneMetricPresent = false;
if (this.get('content.metrics')) {
this.get('content.metrics').forEach(function (_metric) {
- var metric_path = _metric.metric_path;
- var isAggregatorFunc = false;
- var metric_data = Em.get(data, metric_path.replace(/\//g, '.'));
+ var metricPath = _metric.metric_path;
+
+ var metric_data = Em.get(data, metricPath.replace(/\//g, '.'));
if (Em.isNone(metric_data)) {
- this.aggregatorFunc.forEach(function (_item) {
- if (metric_path.endsWith(_item) && !isAggregatorFunc) {
- isAggregatorFunc = true;
- var metricBeanProperty = metric_path.split("/").pop();
- var metricBean;
- metric_path = metric_path.substring(0, metric_path.indexOf(metricBeanProperty));
- if (metric_path.endsWith("/")) {
- metric_path = metric_path.slice(0, -1);
- }
- metricBean = Em.get(data, metric_path.replace(/\//g, '.'));
- if (!Em.isNone(metricBean)) {
- metric_data = metricBean[metricBeanProperty];
- }
- }
- }, this);
+ metric_data = this.parseMetricsWithAggregatorFunc(data, metricPath);
}
if (!Em.isNone(metric_data)) {
atLeastOneMetricPresent = true;
@@ -330,6 +315,28 @@
}
}
},
+
+ parseMetricsWithAggregatorFunc: function(data, metric_path) {
+ let isAggregatorFunc = false;
+ let metric = null;
+ this.aggregatorFunc.forEach(function (_item) {
+ if (metric_path.endsWith(_item) && !isAggregatorFunc) {
+ isAggregatorFunc = true;
+ var metricBeanProperty = metric_path.split("/").pop();
+ var metricBean;
+ metric_path = metric_path.substring(0, metric_path.indexOf(metricBeanProperty));
+
+ if (metric_path.endsWith("/")) {
+ metric_path = metric_path.slice(0, -1);
+ }
+ metricBean = Em.get(data, metric_path.replace(/\//g, '.'));
+ if (!Em.isNone(metricBean)) {
+ metric = metricBean[metricBeanProperty];
+ }
+ }
+ }, this);
+ return metric;
+ },
/**
* if no metrics were received from server then disable graph
@@ -377,8 +384,8 @@
* @return {$.ajax}
*/
getHostComponentsMetrics: function (request) {
- request.metric_paths.forEach(function (_metric, index) {
- request.metric_paths[index] = "host_components/" + _metric.metric_path;
+ request.metric_paths = request.metric_paths.map((_metric) => {
+ return "host_components/" + _metric.metric_path;
});
return App.ajax.send({
name: 'widgets.serviceComponent.metrics.get',
@@ -422,7 +429,7 @@
getHostsMetricsSuccessCallback: function (data) {
var metrics = this.get('content.metrics');
data.items.forEach(function (item) {
- metrics.forEach(function (_metric, index) {
+ metrics.forEach(function (_metric) {
const metric = $.extend({}, _metric, true);
metric.hostName = item.Hosts.host_name;
if (!Em.isNone(Em.get(item, _metric.metric_path.replace(/\//g, '.')))) {
@@ -574,7 +581,7 @@
/*
* make call when clicking on "clone icon" on widget
*/
- cloneWidget: function (event) {
+ cloneWidget: function () {
var self = this;
return App.showConfirmationPopup(
function () {
@@ -666,8 +673,7 @@
var mainServiceInfoMetricsController = App.router.get('mainServiceInfoMetricsController');
mainServiceInfoMetricsController.saveWidgetLayout(widgets).done(function() {
mainServiceInfoMetricsController.getActiveWidgetLayout().done(function() {
- var newWidget = App.Widget.find().findProperty('id', id);
- controller.editWidget(newWidget);
+ controller.editWidget(App.Widget.find(id));
});
});
},
@@ -675,7 +681,7 @@
/*
* make call when clicking on "edit icon" on widget
*/
- editWidget: function (event) {
+ editWidget: function () {
var self = this;
var isShared = this.get('content.scope') === 'CLUSTER';
if (!isShared) {
diff --git a/ambari-web/app/models/widget.js b/ambari-web/app/models/widget.js
index 8c76123..64fd566 100644
--- a/ambari-web/app/models/widget.js
+++ b/ambari-web/app/models/widget.js
@@ -45,10 +45,13 @@
tag: DS.attr('string'),
isVisible: DS.attr('boolean', {defaultValue: true}),
/**
+ * This field is not derived from API but needs to be filled in the mapper on the client side
* @type {number}
* @default 0
*/
- defaultOrder: 0, // This field is not derived from API but needs to be filled in the mapper on the client side
+ defaultOrder: DS.attr('number', {
+ defaultValue: 0
+ }),
/**
* @type Em.View
diff --git a/ambari-web/test/helpers.js b/ambari-web/test/helpers.js
index b843189..5327ba2 100644
--- a/ambari-web/test/helpers.js
+++ b/ambari-web/test/helpers.js
@@ -37,11 +37,14 @@
nestedExpect: function (expected, actual) {
expected.forEach(function (group, i) {
Em.keys(group).forEach(function (key) {
- if (Em.isArray(actual[i][key])) {
- expect(group[key]).to.eql(actual[i][key].toArray());
- }
- else {
- expect(group[key]).to.equal(actual[i][key]);
+ var expectedValue = Em.get(group, key),
+ actualValue = Em.get(actual[i], key);
+ if (Em.isArray(actualValue)) {
+ expect(expectedValue).to.eql(actualValue.toArray());
+ } else if (Em.typeOf(actualValue) === 'object') {
+ expect(expectedValue).to.eql(actualValue);
+ } else {
+ expect(expectedValue).to.equal(actualValue);
}
});
});
diff --git a/ambari-web/test/mappers/alert_groups_mapper_test.js b/ambari-web/test/mappers/alert_groups_mapper_test.js
index 60fee6f..7ebf0fd 100644
--- a/ambari-web/test/mappers/alert_groups_mapper_test.js
+++ b/ambari-web/test/mappers/alert_groups_mapper_test.js
@@ -103,6 +103,7 @@
App.store.loadMany.restore();
App.alertGroupsMapper.set('model', App.AlertGroup);
App.cache.previousAlertGroupsMap = {};
+ App.cache.alertNotificationsGroupsMap = {};
});
diff --git a/ambari-web/test/mappers/alert_notification_mapper_test.js b/ambari-web/test/mappers/alert_notification_mapper_test.js
new file mode 100644
index 0000000..0831982
--- /dev/null
+++ b/ambari-web/test/mappers/alert_notification_mapper_test.js
@@ -0,0 +1,429 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var App = require('app');
+var testHelpers = require('test/helpers');
+require('mappers/alert_notification_mapper');
+
+describe('App.alertNotificationMapper', function () {
+ var mapper = App.alertNotificationMapper,
+ model = App.AlertNotification,
+ records = model.find();
+
+ before(function () {
+ records.clear();
+ });
+
+ afterEach(function () {
+ records.clear();
+ });
+
+ describe('#map', function () {
+ var cases = [
+ {
+ previousAlertNotificationsFullMapBefore: null,
+ modelJSONBefore: [],
+ json: {},
+ previousAlertNotificationsFullMapAfter: {},
+ modelContentAfter: [],
+ title: 'no cached items, empty JSON'
+ },
+ {
+ previousAlertNotificationsFullMapBefore: {
+ '1': {}
+ },
+ modelJSONBefore: [],
+ json: {},
+ previousAlertNotificationsFullMapAfter: {
+ '1': {}
+ },
+ modelContentAfter: [],
+ title: 'cached items present, empty JSON passed'
+ },
+ {
+ previousAlertNotificationsFullMapBefore: null,
+ modelJSONBefore: [],
+ json: {
+ items: []
+ },
+ previousAlertNotificationsFullMapAfter: {},
+ modelContentAfter: [],
+ title: 'no cached items, empty records array'
+ },
+ {
+ previousAlertNotificationsFullMapBefore: {
+ '1': {}
+ },
+ modelJSONBefore: [],
+ json: {
+ items: []
+ },
+ previousAlertNotificationsFullMapAfter: {},
+ modelContentAfter: [],
+ title: 'cached items present, empty records array'
+ },
+ {
+ previousAlertNotificationsFullMapBefore: null,
+ modelJSONBefore: [],
+ json: {
+ items: [
+ {
+ AlertTarget: {
+ id: 1,
+ name: 'n1',
+ notification_type: 'SNMP',
+ description: 'd1',
+ global: true,
+ enabled: true,
+ properties: {
+ p: 'v'
+ }
+ }
+ },
+ {
+ AlertTarget: {
+ id: 2,
+ name: 'n2',
+ notification_type: 'EMAIL',
+ description: 'd2',
+ global: false,
+ enabled: false,
+ alert_states: ['OK', 'WARNING', 'CRITICAL', 'UNKNOWN']
+ }
+ }
+ ]
+ },
+ previousAlertNotificationsFullMapAfter: {
+ '1': {
+ id: 1,
+ name: 'n1',
+ type: 'SNMP',
+ description: 'd1',
+ global: true,
+ enabled: true,
+ groups: [1, 2]
+ },
+ '2': {
+ id: 2,
+ name: 'n2',
+ type: 'EMAIL',
+ description: 'd2',
+ global: false,
+ enabled: false
+ }
+ },
+ modelContentAfter: [
+ {
+ id: 1,
+ name: 'n1',
+ type: 'SNMP',
+ description: 'd1',
+ global: true,
+ enabled: true,
+ properties: {
+ p: 'v'
+ }
+ },
+ {
+ id: 2,
+ name: 'n2',
+ type: 'EMAIL',
+ description: 'd2',
+ global: false,
+ enabled: false,
+ alertStates: ['OK', 'WARNING', 'CRITICAL', 'UNKNOWN']
+ }
+ ],
+ title: 'no cached items, non-empty records array'
+ },
+ {
+ previousAlertNotificationsFullMapBefore: {
+ '1': {}
+ },
+ modelJSONBefore: [],
+ json: {
+ items: []
+ },
+ previousAlertNotificationsFullMapAfter: {},
+ modelContentAfter: [],
+ title: 'cached items present, empty records array'
+ },
+ {
+ previousAlertNotificationsFullMapBefore: null,
+ modelJSONBefore: [
+ {
+ id: 3,
+ name: 'n3',
+ type: 'SNMP',
+ description: 'd3',
+ global: false,
+ enabled: true
+ }
+ ],
+ json: {
+ items: [
+ {
+ AlertTarget: {
+ id: 1,
+ name: 'n1',
+ notification_type: 'SNMP',
+ description: 'd1',
+ global: true,
+ enabled: true,
+ properties: {
+ p: 'v'
+ }
+ }
+ },
+ {
+ AlertTarget: {
+ id: 2,
+ name: 'n2',
+ notification_type: 'EMAIL',
+ description: 'd2',
+ global: false,
+ enabled: false,
+ alert_states: ['OK', 'WARNING', 'CRITICAL', 'UNKNOWN']
+ }
+ }
+ ]
+ },
+ previousAlertNotificationsFullMapAfter: {
+ '1': {
+ id: 1,
+ name: 'n1',
+ type: 'SNMP',
+ description: 'd1',
+ global: true,
+ enabled: true,
+ groups: [1, 2]
+ },
+ '2': {
+ id: 2,
+ name: 'n2',
+ type: 'EMAIL',
+ description: 'd2',
+ global: false,
+ enabled: false
+ }
+ },
+ modelContentAfter: [
+ {
+ id: 3,
+ name: 'n3',
+ type: 'SNMP',
+ description: 'd3',
+ global: false,
+ enabled: true
+ },
+ {
+ id: 1,
+ name: 'n1',
+ type: 'SNMP',
+ description: 'd1',
+ global: true,
+ enabled: true,
+ properties: {
+ p: 'v'
+ }
+ },
+ {
+ id: 2,
+ name: 'n2',
+ type: 'EMAIL',
+ description: 'd2',
+ global: false,
+ enabled: false,
+ alertStates: ['OK', 'WARNING', 'CRITICAL', 'UNKNOWN']
+ }
+ ],
+ title: 'previous model records present, no cached items, non-empty records array'
+ },
+ {
+ previousAlertNotificationsFullMapBefore: {
+ '1': {
+ name: 'n1'
+ },
+ '2': {
+ id: 2,
+ name: 'n2',
+ type: 'EMAIL',
+ description: 'd2',
+ global: true,
+ enabled: true
+ }
+ },
+ modelJSONBefore: [
+ {
+ id: 1,
+ name: 'n1',
+ notification_type: 'EMAIL',
+ global: true,
+ enabled: true,
+ properties: {
+ p0: 'v0'
+ }
+ }
+ ],
+ json: {
+ items: [
+ {
+ AlertTarget: {
+ id: 1,
+ name: 'n1',
+ notification_type: 'SNMP',
+ description: 'd1',
+ global: true,
+ enabled: true,
+ properties: {
+ p: 'v'
+ }
+ }
+ },
+ {
+ AlertTarget: {
+ id: 2,
+ name: 'n2',
+ notification_type: 'EMAIL',
+ description: 'd2',
+ global: false,
+ enabled: false,
+ alert_states: ['OK', 'WARNING', 'CRITICAL', 'UNKNOWN']
+ }
+ }
+ ]
+ },
+ previousAlertNotificationsFullMapAfter: {
+ 1: {
+ id: 1,
+ name: 'n1',
+ type: 'SNMP',
+ description: 'd1',
+ global: true,
+ enabled: true,
+ groups: [1, 2]
+ },
+ 2: {
+ id: 2,
+ name: 'n2',
+ type: 'EMAIL',
+ description: 'd2',
+ global: false,
+ enabled: false
+ }
+ },
+ modelContentAfter: [
+ {
+ id: 1,
+ name: 'n1',
+ type: 'SNMP',
+ description: 'd1',
+ global: true,
+ enabled: true,
+ properties: {
+ p: 'v'
+ }
+ },
+ {
+ id: 2,
+ name: 'n2',
+ type: 'EMAIL',
+ description: 'd2',
+ global: false,
+ enabled: false,
+ alertStates: ['OK', 'WARNING', 'CRITICAL', 'UNKNOWN']
+ }
+ ],
+ title: 'update cache and model'
+ }
+ ];
+
+ cases.forEach(function (test) {
+ describe(test.title, function () {
+ before(function () {
+ App.cache.alertNotificationsGroupsMap = {
+ 1: [1, 2]
+ };
+ });
+
+ beforeEach(function () {
+ App.store.safeLoadMany(model, test.modelJSONBefore);
+ App.cache.previousAlertNotificationsFullMap = test.previousAlertNotificationsFullMapBefore;
+ mapper.map(test.json);
+ });
+
+ after(function () {
+ App.cache.previousAlertNotificationsFullMap = {};
+ App.cache.alertNotificationsGroupsMap = {};
+ });
+
+ it('previousAlertNotificationsFullMap', function () {
+ expect(App.cache.previousAlertNotificationsFullMap).to.eql(test.previousAlertNotificationsFullMapAfter);
+ });
+
+ it('records count', function () {
+ expect(records.get('length')).to.equal(test.modelContentAfter.length);
+ });
+
+ it('records', function () {
+ testHelpers.nestedExpect(test.modelContentAfter, records.toArray());
+ });
+ });
+ });
+ });
+
+ describe('#_setPropertiesToEachModel', function () {
+ beforeEach(function () {
+ App.store.safeLoadMany(model, [
+ {
+ id: 1,
+ properties: {
+ p: 'v'
+ }
+ },
+ {
+ id: 2
+ }
+ ]);
+ });
+ it('should set and update specified property', function () {
+ mapper._setPropertiesToEachModel('properties', {
+ '1': {
+ p1: 'v1'
+ },
+ '2': {
+ p2: 'v2'
+ }
+ });
+ testHelpers.nestedExpect([
+ {
+ id: 1,
+ properties: {
+ p1: 'v1'
+ }
+ },
+ {
+ id: 2,
+ properties: {
+ p2: 'v2'
+ }
+ }
+ ], records.toArray());
+ });
+ });
+});
diff --git a/ambari-web/test/mappers/cluster_mapper_test.js b/ambari-web/test/mappers/cluster_mapper_test.js
new file mode 100644
index 0000000..61eced9
--- /dev/null
+++ b/ambari-web/test/mappers/cluster_mapper_test.js
@@ -0,0 +1,97 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var App = require('app');
+var testHelpers = require('test/helpers');
+require('mappers/cluster_mapper');
+
+describe('App.clusterMapper', function () {
+ var records = App.Cluster.find();
+
+ before(function () {
+ records.clear();
+ });
+
+ afterEach(function () {
+ records.clear();
+ });
+
+ describe('#map', function () {
+ it('should load mapped data to model', function () {
+ App.clusterMapper.map({
+ Clusters: {
+ cluster_id: 'c',
+ cluster_name: 'c',
+ stack_name: 'HDP',
+ version: '3.0.0',
+ security_type: 'NONE',
+ total_hosts: 3,
+ credential_store_properties: {
+ p: 'v'
+ },
+ desired_configs: {
+ 'core-site': {
+ tag: 't0'
+ },
+ 'hdfs-site': {
+ tag: 't1',
+ host_overrides: [
+ {
+ host_name: 'h0',
+ tag: 't2'
+ },
+ {
+ host_name: 'h1',
+ tag: 't3'
+ }
+ ]
+ }
+ }
+ }
+ });
+ testHelpers.nestedExpect([
+ {
+ id: 'c',
+ clusterName: 'c',
+ stackName: 'HDP',
+ version: '3.0.0',
+ securityType: 'NONE',
+ totalHosts: 3,
+ credentialStoreProperties: {
+ p: 'v'
+ },
+ desiredConfigs: [
+ App.ConfigSiteTag.create({
+ site: 'core-site',
+ tag: 't0',
+ hostOverrides: {}
+ }),
+ App.ConfigSiteTag.create({
+ site: 'hdfs-site',
+ tag: 't1',
+ hostOverrides: {
+ h0: 't2',
+ h1: 't3'
+ }
+ })
+ ]
+ }
+ ], records.toArray());
+ });
+ });
+});
diff --git a/ambari-web/test/mappers/stack_version_mapper_test.js b/ambari-web/test/mappers/stack_version_mapper_test.js
new file mode 100644
index 0000000..0741bb2
--- /dev/null
+++ b/ambari-web/test/mappers/stack_version_mapper_test.js
@@ -0,0 +1,333 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var App = require('app');
+var testHelpers = require('test/helpers');
+require('mappers/stack_version_mapper');
+
+describe('App.stackVersionMapper', function () {
+ var stackVersionRecords = App.StackVersion.find(),
+ repoVersionRecords = App.RepositoryVersion.find(),
+ clearModels = function () {
+ stackVersionRecords.clear();
+ repoVersionRecords.clear();
+ };
+
+ before(clearModels);
+
+ afterEach(clearModels);
+
+ describe('#map', function () {
+ beforeEach(function () {
+ App.stackVersionMapper.map({
+ items: [
+ {
+ ClusterStackVersions: {
+ id: 1,
+ cluster_name: 'c',
+ stack: 'HDP',
+ version: '3.0',
+ repository_version: 11,
+ state: 'OUT_OF_SYNC',
+ supports_revert: false,
+ host_states: {
+ CURRENT: ['h0, h1'],
+ INSTALLED: ['h2', 'h3'],
+ INSTALLING: ['h4', 'h5'],
+ INSTALL_FAILED: ['h6', 'h7'],
+ NOT_REQUIRED: ['h8', 'h9'],
+ OUT_OF_SYNC: ['h10', 'h11'],
+ UPGRADING: ['h12', 'h13'],
+ UPGRADED: ['h14', 'h15'],
+ UPGRADE_FAILED: ['h16', 'h17']
+ },
+ repository_summary: {
+ services: {
+ ZOOKEEPER: {
+ version: '4.0.0',
+ release_version: '3.0.1.1',
+ upgrade: true
+ }
+ }
+ }
+ },
+ repository_versions: [
+ {
+ RepositoryVersions: {
+ id: 11,
+ repository_version: '3.0.1.1'
+ }
+ }
+ ]
+ },
+ {
+ ClusterStackVersions: {
+ id: 2,
+ cluster_name: 'c',
+ stack: 'HDP',
+ version: '3.0',
+ repository_version: 12,
+ state: 'INSTALL_FAILED',
+ supports_revert: false,
+ host_states: {
+ CURRENT: [],
+ INSTALLED: [],
+ INSTALLING: [],
+ INSTALL_FAILED: [],
+ NOT_REQUIRED: [],
+ OUT_OF_SYNC: [],
+ UPGRADING: [],
+ UPGRADED: [],
+ UPGRADE_FAILED: []
+ },
+ repository_summary: {
+ services: {
+ ZOOKEEPER: {
+ version: '3.8.0',
+ release_version: '3.0.0.0',
+ upgrade: true
+ }
+ }
+ }
+ },
+ repository_versions: [
+ {
+ RepositoryVersions: {
+ id: 12,
+ repository_version: '3.0.0.0'
+ }
+ }
+ ]
+ },
+ {
+ ClusterStackVersions: {
+ id: 3,
+ cluster_name: 'c',
+ stack: 'HDP',
+ version: '3.0',
+ repository_version: 13,
+ state: 'COMPLETED',
+ supports_revert: false,
+ host_states: {
+ CURRENT: [],
+ INSTALLED: [],
+ INSTALLING: [],
+ INSTALL_FAILED: [],
+ NOT_REQUIRED: [],
+ OUT_OF_SYNC: [],
+ UPGRADING: [],
+ UPGRADED: [],
+ UPGRADE_FAILED: []
+ },
+ repository_summary: {
+ services: {
+ ZOOKEEPER: {
+ version: '3.9.0',
+ release_version: '3.0.1.0',
+ upgrade: true
+ }
+ }
+ }
+ },
+ repository_versions: [
+ {
+ RepositoryVersions: {
+ id: 13,
+ repository_version: '3.0.1.0'
+ }
+ }
+ ]
+ },
+ {
+ ClusterStackVersions: {
+ id: 4,
+ cluster_name: 'c',
+ stack: 'HDP',
+ version: '3.0',
+ repository_version: 14,
+ state: 'INSTALLING',
+ supports_revert: true,
+ revert_upgrade_id: 1,
+ host_states: {
+ CURRENT: [],
+ INSTALLED: [],
+ INSTALLING: [],
+ INSTALL_FAILED: [],
+ NOT_REQUIRED: [],
+ OUT_OF_SYNC: [],
+ UPGRADING: [],
+ UPGRADED: [],
+ UPGRADE_FAILED: []
+ },
+ repository_summary: {
+ services: {
+ ZOOKEEPER: {
+ version: '4.1.0',
+ release_version: '3.1.1.0',
+ upgrade: true
+ }
+ }
+ }
+ },
+ repository_versions: [
+ {
+ RepositoryVersions: {
+ id: 14,
+ repository_version: '3.1.1.0'
+ }
+ }
+ ]
+ },
+ {
+ ClusterStackVersions: {
+ id: 5,
+ cluster_name: 'c',
+ stack: 'HDP',
+ version: '3.0',
+ repository_version: 15,
+ state: 'NOT_REQUIRED',
+ supports_revert: false,
+ host_states: {
+ CURRENT: [],
+ INSTALLED: [],
+ INSTALLING: [],
+ INSTALL_FAILED: [],
+ NOT_REQUIRED: [],
+ OUT_OF_SYNC: [],
+ UPGRADING: [],
+ UPGRADED: [],
+ UPGRADE_FAILED: []
+ },
+ repository_summary: {
+ services: {
+ ZOOKEEPER: {
+ version: '3.7.0',
+ release_version: '2.99.99.0',
+ upgrade: true
+ }
+ }
+ }
+ },
+ repository_versions: [
+ {
+ RepositoryVersions: {
+ id: 15,
+ repository_version: '2.99.99.0'
+ }
+ }
+ ]
+ }
+ ]
+ });
+ });
+
+ it('should load sorted and mapped data to App.StackVersion', function () {
+ testHelpers.nestedExpect([
+ {
+ id: 5,
+ clusterName: 'c',
+ stack: 'HDP',
+ version: '3.0',
+ state: 'NOT_REQUIRED',
+ notInstalledHosts: [],
+ installingHosts: [],
+ installedHosts: [],
+ installFailedHosts: [],
+ outOfSyncHosts: [],
+ upgradingHosts: [],
+ upgradedHosts: [],
+ upgradeFailedHosts: [],
+ currentHosts: [],
+ supportsRevert: false
+ },
+ {
+ id: 2,
+ clusterName: 'c',
+ stack: 'HDP',
+ version: '3.0',
+ state: 'INSTALL_FAILED',
+ notInstalledHosts: [],
+ installingHosts: [],
+ installedHosts: [],
+ installFailedHosts: [],
+ outOfSyncHosts: [],
+ upgradingHosts: [],
+ upgradedHosts: [],
+ upgradeFailedHosts: [],
+ currentHosts: [],
+ supportsRevert: false
+ },
+ {
+ id: 3,
+ clusterName: 'c',
+ stack: 'HDP',
+ version: '3.0',
+ state: 'COMPLETED',
+ notInstalledHosts: [],
+ installingHosts: [],
+ installedHosts: [],
+ installFailedHosts: [],
+ outOfSyncHosts: [],
+ upgradingHosts: [],
+ upgradedHosts: [],
+ upgradeFailedHosts: [],
+ currentHosts: [],
+ supportsRevert: false
+ },
+ {
+ id: 1,
+ clusterName: 'c',
+ stack: 'HDP',
+ version: '3.0',
+ state: 'OUT_OF_SYNC',
+ notInstalledHosts: ['h4', 'h5', 'h6', 'h7', 'h10', 'h11'],
+ installingHosts: ['h4', 'h5'],
+ installedHosts: ['h2', 'h3', 'h12', 'h13', 'h14', 'h15', 'h16', 'h17'],
+ installFailedHosts: ['h6', 'h7'],
+ outOfSyncHosts: ['h10', 'h11'],
+ upgradingHosts: ['h12', 'h13'],
+ upgradedHosts: ['h14', 'h15'],
+ upgradeFailedHosts: ['h16', 'h17'],
+ currentHosts: ['h0, h1'],
+ supportsRevert: false
+ },
+ {
+ id: 4,
+ clusterName: 'c',
+ stack: 'HDP',
+ version: '3.0',
+ state: 'INSTALLING',
+ notInstalledHosts: [],
+ installingHosts: [],
+ installedHosts: [],
+ installFailedHosts: [],
+ outOfSyncHosts: [],
+ upgradingHosts: [],
+ upgradedHosts: [],
+ upgradeFailedHosts: [],
+ currentHosts: [],
+ supportsRevert: true
+ },
+ ], stackVersionRecords.toArray());
+ });
+
+ it('should set relations to App.RepositoryVersion', function () {
+ testHelpers.nestedExpect(stackVersionRecords.mapProperty('repositoryVersion'), repoVersionRecords.toArray());
+ })
+ });
+});
diff --git a/ambari-web/test/mappers/widget_mapper_test.js b/ambari-web/test/mappers/widget_mapper_test.js
new file mode 100644
index 0000000..22d3586
--- /dev/null
+++ b/ambari-web/test/mappers/widget_mapper_test.js
@@ -0,0 +1,162 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var App = require('app');
+var testHelpers = require('test/helpers');
+require('mappers/widget_mapper');
+
+describe('App.widgetMapper', function () {
+ var widgetModel = App.Widget,
+ layoutModel = App.WidgetLayout,
+ widgetRecords = widgetModel.find(),
+ layoutRecords = layoutModel.find(),
+ clearData = function () {
+ widgetRecords.clear();
+ layoutRecords.clear();
+ };
+
+ beforeEach(function () {
+ clearData();
+ App.store.safeLoad(layoutModel, {
+ id: 1,
+ section_name: 's0'
+ });
+ App.widgetMapper.map({
+ id: 1,
+ section_name: 's0',
+ widgets: [
+ {
+ WidgetInfo: {
+ id: 11,
+ widget_name: 'wn0',
+ widget_type: 'GRAPH',
+ service_name: 'HDFS',
+ time_created: 1,
+ author: 'a0',
+ properties: '{"graph_type":"LINE","time_range":"1"}',
+ metrics: '[{"name":"m0","metric_path":"p0/m0"},{"name":"m1","metric_path":"p1/m1"}]',
+ values: '[{"name":"n0","value":"v0"},{"name":"n1","value":"v1"}]',
+ description: 'd0',
+ scope: 'CLUSTER',
+ tag: 't0'
+ }
+ },
+ {
+ WidgetInfo: {
+ id: 12,
+ widget_name: 'wn1',
+ widget_type: 'NUMBER',
+ service_name: 'YARN',
+ time_created: 2,
+ author: 'a1',
+ properties: '{"warning_threshold":"1","error_threshold":"2"}',
+ metrics: '[{"name":"m2","metric_path":"p2/m2"},{"name":"m3","metric_path":"p3/m3"}]',
+ values: '[{"name":"n2","value":"v2"},{"name":"n3","value":"v3"}]',
+ description: 'd1',
+ scope: 'CLUSTER',
+ tag: 't1'
+ }
+ }
+ ]
+ });
+ });
+
+ afterEach(clearData);
+
+ describe('#map', function () {
+ it('should load mapped data to App.Widget', function () {
+ testHelpers.nestedExpect([
+ {
+ id: 11,
+ widgetName: 'wn0',
+ widgetType: 'GRAPH',
+ serviceName: 'HDFS',
+ timeCreated: 1,
+ author: 'a0',
+ properties: {
+ graph_type: 'LINE',
+ time_range: '1'
+ },
+ metrics: [
+ {
+ name: 'm0',
+ metric_path: 'p0/m0'
+ }, {
+ name: 'm1',
+ metric_path: 'p1/m1'
+ }
+ ],
+ values: [
+ {
+ name: 'n0',
+ value: 'v0'
+ },
+ {
+ name: 'n1',
+ value: 'v1'
+ }
+ ],
+ description: 'd0',
+ scope: 'CLUSTER',
+ tag: 't0',
+ defaultOrder: 1
+ },
+ {
+ id: 12,
+ widgetName: 'wn1',
+ widgetType: 'NUMBER',
+ serviceName: 'YARN',
+ timeCreated: 2,
+ author: 'a1',
+ properties: {
+ warning_threshold: '1',
+ error_threshold: '2'
+ },
+ metrics: [
+ {
+ name: 'm2',
+ metric_path: 'p2/m2'
+ },
+ {
+ name: 'm3',
+ metric_path: 'p3/m3'
+ }
+ ],
+ values: [
+ {
+ name: 'n2',
+ value: 'v2'
+ },
+ {
+ name: 'n3',
+ value: 'v3'
+ }
+ ],
+ description: 'd1',
+ scope: 'CLUSTER',
+ tag: 't1',
+ defaultOrder: 2
+ }
+ ], widgetRecords.toArray());
+ });
+
+ it('should set relations to App.WidgetLayout', function () {
+ testHelpers.nestedExpect(widgetRecords.mapProperty('layout').uniq(), layoutRecords.toArray());
+ });
+ });
+});
diff --git a/ambari-web/test/mixins/common/widget_mixin_test.js b/ambari-web/test/mixins/common/widget_mixin_test.js
index fb8c5d0..a075100 100644
--- a/ambari-web/test/mixins/common/widget_mixin_test.js
+++ b/ambari-web/test/mixins/common/widget_mixin_test.js
@@ -24,7 +24,13 @@
var mixinObject;
beforeEach(function () {
- mixinObject = mixinClass.create();
+ mixinObject = mixinClass.create({
+ content: Em.Object.create(),
+ controller: Em.Object.create({
+ hideWidget: sinon.spy(),
+ editWidget: sinon.spy()
+ })
+ });
});
afterEach(function () {
@@ -81,10 +87,20 @@
beforeEach(function () {
this.mock = sinon.stub(mixinObject, 'getRequestData');
sinon.stub(App.WidgetLoadAggregator, 'add');
+ sinon.stub(mixinObject, 'getHostsMetrics').returns({
+ complete: Em.clb
+ });
+ sinon.stub(mixinObject, 'getHostComponentsMetrics').returns({
+ complete: Em.clb
+ });
+ sinon.stub(mixinObject, 'onMetricsLoaded');
});
afterEach(function () {
this.mock.restore();
App.WidgetLoadAggregator.add.restore();
+ mixinObject.getHostsMetrics.restore();
+ mixinObject.getHostComponentsMetrics.restore();
+ mixinObject.onMetricsLoaded.restore();
});
it('has host_component_criteria', function () {
this.mock.returns({'key1': {host_component_criteria: 'criteria'}});
@@ -100,6 +116,30 @@
expect(App.WidgetLoadAggregator.add.calledOnce).to.be.true;
});
+
+ it('getHostsMetrics should be called', function () {
+ this.mock.returns({'key1': {
+ host_component_criteria: 'criteria',
+ service_name: 'STACK'
+ }});
+ mixinObject.set('content.widgetType', 'HEATMAP');
+ mixinObject.loadMetrics();
+
+ expect(mixinObject.getHostsMetrics.calledOnce).to.be.true;
+ expect(mixinObject.onMetricsLoaded.calledOnce).to.be.true;
+ });
+
+ it('getHostComponentsMetrics should be called', function () {
+ this.mock.returns({'key1': {
+ host_component_criteria: 'criteria',
+ service_name: 'S1'
+ }});
+ mixinObject.set('content.widgetType', 'HEATMAP');
+ mixinObject.loadMetrics();
+
+ expect(mixinObject.getHostComponentsMetrics.calledOnce).to.be.true;
+ expect(mixinObject.onMetricsLoaded.calledOnce).to.be.true;
+ });
});
describe("#extractExpressions()", function () {
@@ -264,10 +304,37 @@
});
});
});
+
+ describe('#getHostComponentMetricsSuccessCallback', function() {
+ beforeEach(function() {
+ sinon.stub(mixinObject, 'getMetricsSuccessCallback');
+ });
+ afterEach(function() {
+ mixinObject.getMetricsSuccessCallback.restore();
+ });
+
+ it('getMetricsSuccessCallback should be called', function() {
+ mixinObject.getHostComponentMetricsSuccessCallback({items: [{}]});
+ expect(mixinObject.getMetricsSuccessCallback.calledWith({})).to.be.true;
+ });
+ });
describe("#getMetricsSuccessCallback()", function () {
+
+ beforeEach(function() {
+ sinon.stub(mixinObject, 'parseMetricsWithAggregatorFunc').returns(1);
+ });
+ afterEach(function() {
+ mixinObject.parseMetricsWithAggregatorFunc.restore();
+ });
+
it("metric is mapped from provided path", function () {
- var data = {
+ mixinObject.set('content.metrics', [
+ {
+ metric_path: 'metrics/hbase/ipc/IPC/numOpenConnections'
+ }
+ ]);
+ mixinObject.getMetricsSuccessCallback({
metrics: {
"hbase": {
"ipc": {
@@ -277,14 +344,25 @@
}
}
}
- };
+ });
+ expect(mixinObject.get('metrics').findProperty('metric_path', 'metrics/hbase/ipc/IPC/numOpenConnections').data).to.equal(11.5);
+ });
+
+ it("parseMetricsWithAggregatorFunc should be called", function () {
mixinObject.set('content.metrics', [
{
metric_path: 'metrics/hbase/ipc/IPC/numOpenConnections'
}
]);
- mixinObject.getMetricsSuccessCallback(data);
- expect(mixinObject.get('metrics').findProperty('metric_path', 'metrics/hbase/ipc/IPC/numOpenConnections').data).to.equal(11.5);
+ mixinObject.getMetricsSuccessCallback({});
+ expect(mixinObject.parseMetricsWithAggregatorFunc.calledWith({}, 'metrics/hbase/ipc/IPC/numOpenConnections')).to.be.true;
+ });
+ });
+
+ describe('#parseMetricsWithAggregatorFunc', function() {
+
+ it('should return metric value', function() {
+ expect(mixinObject.parseMetricsWithAggregatorFunc({path: {foo: {'._sum': 1}}}, 'path/foo/._sum')).to.equal(1);
});
});
@@ -377,10 +455,19 @@
describe("#getHostComponentMetrics()", function () {
beforeEach(function () {
- sinon.stub(mixinObject, 'computeHostComponentCriteria').returns('criteria')
+ sinon.stub(mixinObject, 'computeHostComponentCriteria').returns('criteria');
+ sinon.stub(App.HDFSService, 'find').returns(Em.Object.create({
+ masterComponentGroups: [
+ {
+ name: 'tag1',
+ hosts: ['host1', 'host2']
+ }
+ ]
+ }));
});
afterEach(function () {
mixinObject.computeHostComponentCriteria.restore();
+ App.HDFSService.find.restore();
});
it("valid request is sent", function () {
var request = {
@@ -399,7 +486,8 @@
"context": {}
}
],
- host_component_criteria: 'c1'
+ host_component_criteria: 'c1',
+ tag: 'tag1'
};
mixinObject.getHostComponentMetrics(request);
var args = testHelpers.findAjaxRequest('name', 'widgets.hostComponent.metrics.get');
@@ -408,7 +496,8 @@
expect(args[0].data).to.be.eql({
componentName: 'C1',
metricPaths: 'w1,w2',
- hostComponentCriteria: 'criteria'
+ hostComponentCriteria: 'criteria',
+ selectedHostsParam: '&HostRoles/host_name.in(host1,host2)'
});
});
});
@@ -501,20 +590,74 @@
describe("#postWidgetDefinition()", function () {
beforeEach(function () {
- sinon.stub(mixinObject, 'collectWidgetData').returns({});
+ sinon.stub(mixinObject, 'collectWidgetData').returns({
+ WidgetInfo: {
+ widget_name: 'widget1'
+ }
+ });
});
afterEach(function () {
mixinObject.collectWidgetData.restore();
});
- it("valid request is sent", function () {
- mixinObject.postWidgetDefinition();
- var args = testHelpers.findAjaxRequest('name', 'widgets.wizard.add');
- expect(args[0]).exists;
- expect(args[0].sender).to.be.eql(mixinObject);
- expect(args[0].data).to.be.eql({
- data: {}
+ it("Request for clone widget should be sent", function () {
+ mixinObject.postWidgetDefinition(true, true);
+ expect(testHelpers.findAjaxRequest('name', 'widgets.wizard.add')[0]).to.be.eql({
+ name: 'widgets.wizard.add',
+ sender: mixinObject,
+ data: {
+ data: {
+ WidgetInfo: {
+ widget_name: 'widget1(Copy)',
+ scope: 'USER'
+ }
+ }
+ },
+ success: 'editNewClonedWidget'
});
});
+
+ it("Request for new widget should be sent", function () {
+ mixinObject.postWidgetDefinition(false, false);
+ expect(testHelpers.findAjaxRequest('name', 'widgets.wizard.add')[0]).to.be.eql({
+ name: 'widgets.wizard.add',
+ sender: mixinObject,
+ data: {
+ data: {
+ WidgetInfo: {
+ widget_name: 'widget1'
+ }
+ }
+ },
+ success: 'postWidgetDefinitionSuccessCallback'
+ });
+ });
+ });
+
+ describe('#postWidgetDefinitionSuccessCallback', function() {
+ var mock = {
+ saveWidgetLayout: sinon.stub().returns({done: Em.clb}),
+ updateActiveLayout: sinon.spy()
+ };
+ beforeEach(function() {
+ sinon.stub(App.router, 'get').returns(mock);
+ mixinObject.set('content.layout', {widgets: []});
+ mixinObject.postWidgetDefinitionSuccessCallback({resources: [{WidgetInfo: {id: 1}}]});
+ });
+ afterEach(function() {
+ App.router.get.restore();
+ });
+
+ it('saveWidgetLayout should be called', function() {
+ expect(mock.saveWidgetLayout.calledWith([
+ Em.Object.create({
+ id: 1
+ })
+ ])).to.be.true;
+ });
+
+ it('updateActiveLayout should be called', function() {
+ expect(mock.updateActiveLayout.called).to.be.true;
+ });
});
describe('#getMetricsErrorCallback()', function () {
@@ -674,6 +817,312 @@
});
});
+
+ describe('#beforeRender', function() {
+ beforeEach(function() {
+ sinon.stub(mixinObject, 'loadMetrics');
+ });
+ afterEach(function() {
+ mixinObject.loadMetrics.restore();
+ });
+
+ it('loadMetrics should be called', function() {
+ mixinObject.beforeRender();
+ expect(mixinObject.loadMetrics.calledOnce).to.be.true
+; });
+ });
+
+ describe('#computeHostComponentCriteria', function() {
+
+ it('should return params', function() {
+ var request = {
+ host_component_criteria: 'host_components/param'
+ };
+ expect(mixinObject.computeHostComponentCriteria(request)).to.be.equal('¶m');
+ });
+ });
+
+ describe('#getHostComponentsMetrics', function() {
+
+ it('App.ajax.send should be called', function() {
+ mixinObject.getHostComponentsMetrics({
+ service_name: 'S1',
+ component_name: 'C1',
+ metric_paths: [{metric_path: 'key1'}, {metric_path: 'key2'}]
+ });
+ expect(testHelpers.findAjaxRequest('name', 'widgets.serviceComponent.metrics.get')[0].data).to.be.eql({
+ serviceName: 'S1',
+ componentName: 'C1',
+ metricPaths: 'host_components/key1,host_components/key2'
+ })
+ });
+ });
+
+ describe('#getHostComponentsMetricsSuccessCallback', function() {
+
+ it('should set metrics', function() {
+ var data = {
+ host_components: [
+ {
+ HostRoles: {
+ host_name: 'host1'
+ },
+ path: {
+ foo: 1
+ }
+ }
+ ]
+ };
+ mixinObject.set('content.metrics', [
+ {
+ metric_path: 'path/foo'
+ }
+ ]);
+ mixinObject.set('metrics', []);
+ mixinObject.getHostComponentsMetricsSuccessCallback(data);
+ expect(JSON.stringify(mixinObject.get('metrics'))).to.be.eql(JSON.stringify([
+ {
+ metric_path: 'path/foo',
+ hostName: 'host1',
+ data: 1
+ }
+ ]));
+ });
+ });
+
+ describe('#getHostsMetrics', function() {
+
+ it('App.ajax.send should be called', function() {
+ mixinObject.getHostsMetrics({
+ metric_paths: [{metric_path: 'key1'}, {metric_path: 'key2'}]
+ });
+ expect(testHelpers.findAjaxRequest('name', 'widgets.hosts.metrics.get')[0].data).to.be.eql({
+ metricPaths: 'key1,key2'
+ })
+ });
+ });
+
+ describe('#getHostComponentsMetricsSuccessCallback', function() {
+
+ it('should set metrics', function() {
+ var data = {
+ items: [
+ {
+ Hosts: {
+ host_name: 'host1'
+ },
+ path: {
+ foo: 1
+ }
+ }
+ ]
+ };
+ mixinObject.set('content.metrics', [
+ {
+ metric_path: 'path/foo'
+ }
+ ]);
+ mixinObject.set('metrics', []);
+ mixinObject.getHostsMetricsSuccessCallback(data);
+ expect(JSON.stringify(mixinObject.get('metrics'))).to.be.eql(JSON.stringify([
+ {
+ metric_path: 'path/foo',
+ hostName: 'host1',
+ data: 1
+ }
+ ]));
+ });
+ });
+
+
+ describe('#onMetricsLoaded', function() {
+ beforeEach(function() {
+ sinon.stub(mixinObject, 'drawWidget');
+ });
+ afterEach(function() {
+ mixinObject.drawWidget.restore();
+ });
+
+ it('drwaWidget should be called', function() {
+ mixinObject.onMetricsLoaded();
+ expect(mixinObject.drawWidget.calledOnce).to.be.true;
+ });
+
+ it('isLoaded should be true', function() {
+ mixinObject.onMetricsLoaded();
+ expect(mixinObject.get('isLoaded')).to.be.true;
+ });
+ });
+
+ describe('#drawWidget', function() {
+ beforeEach(function() {
+ sinon.stub(mixinObject, 'calculateValues');
+ mixinObject.set('isLoaded', true);
+ mixinObject.set('content.values', [{computedValue: 1}]);
+ mixinObject.drawWidget();
+ });
+ afterEach(function() {
+ mixinObject.calculateValues.restore();
+ });
+
+ it('calculateValues should be called', function() {
+ expect(mixinObject.calculateValues.calledOnce).to.be.true;
+ });
+
+ it('value should be set', function() {
+ expect(mixinObject.get('value')).to.equal(1);
+ });
+ });
+
+ describe('#hideWidget', function() {
+
+ it('hideWidget should be called', function() {
+ mixinObject.hideWidget({contexts: [1, 'layout1']});
+ expect(mixinObject.get('controller').hideWidget.calledWith({
+ context: Em.Object.create({
+ id: 1,
+ nsLayout: 'layout1'
+ })
+ })).to.be.true;
+ });
+ });
+
+ describe('#collectWidgetData', function() {
+
+ it('should return widget data', function() {
+ mixinObject.set('content', Em.Object.create({
+ widgetName: 'name1',
+ widgetType: 'type1',
+ widgetDescription: 'desc',
+ scope: 'HOST',
+ values: [1],
+ properties: [{}],
+ metrics: [
+ {
+ name: 'metric1',
+ service_name: 'S1',
+ component_name: 'C1',
+ host_component_criteria: 'criteria1',
+ metric_path: 'path/foo',
+ tag: 'tag1'
+ }
+ ]
+ }));
+ expect(mixinObject.collectWidgetData()).to.be.eql({
+ WidgetInfo: {
+ widget_name: 'name1',
+ widget_type: 'type1',
+ description: 'desc',
+ scope: 'HOST',
+ "metrics": [
+ {
+ "name": 'metric1',
+ "service_name": 'S1',
+ "component_name": 'C1',
+ "host_component_criteria": 'criteria1',
+ "metric_path": 'path/foo'
+ }
+ ],
+ values: [1],
+ properties: [{}],
+ tag: 'tag1'
+ }
+ });
+ });
+ });
+
+ describe('#editNewClonedWidget', function() {
+ var mock = {
+ saveWidgetLayout: sinon.stub().returns({done: Em.clb}),
+ getActiveWidgetLayout: sinon.stub().returns({done: Em.clb})
+ };
+ beforeEach(function() {
+ sinon.stub(App.router, 'get').returns(mock);
+ mixinObject.set('content.layout', {widgets: []});
+ mixinObject.editNewClonedWidget({resources:[{WidgetInfo: {id: 1}}]});
+ });
+ afterEach(function() {
+ App.router.get.restore();
+ });
+
+ it('saveWidgetLayout should be called', function() {
+ expect(mock.saveWidgetLayout.calledWith([
+ Em.Object.create({
+ id: 1
+ })
+ ])).to.be.true;
+ });
+
+ it('getActiveWidgetLayout should be called', function() {
+ expect(mock.getActiveWidgetLayout.called).to.be.true;
+ });
+
+ it('editWidget should be called', function() {
+ expect(mixinObject.get('controller').editWidget.called).to.be.true;
+ });
+ });
+
+ describe('#editWidget', function() {
+
+ it('controller.editWidget should be called', function() {
+ mixinObject.set('content', Em.Object.create({
+ scope: 'SERVICE'
+ }));
+ mixinObject.editWidget();
+ expect(mixinObject.get('controller').editWidget.calledWith(Em.Object.create({
+ scope: 'SERVICE'
+ }))).to.be.true;
+ });
+
+ it('App.ModalPopup.show should be called', function() {
+ mixinObject.set('content', Em.Object.create({
+ scope: 'CLUSTER'
+ }));
+ mixinObject.editWidget();
+ expect(App.ModalPopup.show.called).to.be.true;
+ });
+ });
+});
+
+describe('App.WidgetPreviewMixin', function() {
+ var widgetPreview;
+
+ beforeEach(function() {
+ widgetPreview = Em.Object.create({
+ drawWidget: sinon.spy(),
+ loadMetrics: Em.K,
+ controller: Em.Object.create(),
+ content: Em.Object.create()
+ }, App.WidgetPreviewMixin);
+ });
+
+ describe('#loadMetrics', function() {
+
+ it('widget properties should be set', function() {
+ widgetPreview.get('controller').setProperties({
+ widgetValues: [1],
+ widgetProperties: [{}],
+ widgetName: 'widget1',
+ widgetMetrics: [{}]
+ });
+ widgetPreview.loadMetrics();
+ expect(widgetPreview.get('content')).to.be.eql(Em.Object.create({
+ 'id': 1,
+ 'values': [1],
+ 'properties': [{}],
+ 'widgetName': 'widget1',
+ 'metrics': [{}]
+ }));
+ });
+ });
+
+ describe('#onMetricsLoaded', function() {
+
+ it('drawWidget should be called', function() {
+ widgetPreview.onMetricsLoaded();
+ expect(widgetPreview.drawWidget.calledOnce).to.be.true;
+ });
+ });
});
diff --git a/contrib/views/utils/src/main/java/org/apache/ambari/view/utils/UserLocal.java b/contrib/views/utils/src/main/java/org/apache/ambari/view/utils/UserLocal.java
index 41c60ab..db2cd39 100644
--- a/contrib/views/utils/src/main/java/org/apache/ambari/view/utils/UserLocal.java
+++ b/contrib/views/utils/src/main/java/org/apache/ambari/view/utils/UserLocal.java
@@ -110,11 +110,9 @@
}
else {
try {
- if (!instances.containsKey(key)) {
- T initValue = initialValue(context);
- LOG.info("Obtained initial value : {} for key : {}",initValue,key);
- instances.put(key, initValue);
- }
+ T initValue = initialValue(context);
+ LOG.info("Obtained initial value : {} for key : {}",initValue,key);
+ instances.put(key, initValue);
}finally{
lock.unlock();
}