You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sm...@apache.org on 2016/02/27 01:45:24 UTC
ambari git commit: AMBARI-15194: Auto-start services - Create default
settings for auto start
Repository: ambari
Updated Branches:
refs/heads/trunk 3a5fc0261 -> 27710808b
AMBARI-15194: Auto-start services - Create default settings for auto start
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/27710808
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/27710808
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/27710808
Branch: refs/heads/trunk
Commit: 27710808bf4a83cf1c5d981270df57f187ecbd5b
Parents: 3a5fc02
Author: Nahappan Somasundaram <ns...@hortonworks.com>
Authored: Thu Feb 25 16:20:34 2016 -0800
Committer: Nahappan Somasundaram <ns...@hortonworks.com>
Committed: Fri Feb 26 16:45:18 2016 -0800
----------------------------------------------------------------------
.../StackServiceComponentRequest.java | 26 ++++++++++++++++++
.../StackServiceComponentResponse.java | 24 ++++++++++++++++
.../internal/ComponentResourceProvider.java | 18 ++++++++++++
.../StackServiceComponentResourceProvider.java | 9 +++++-
.../ambari/server/stack/ComponentModule.java | 2 ++
.../ambari/server/state/ComponentInfo.java | 29 ++++++++++++++++++++
.../src/main/resources/properties.json | 1 +
.../internal/ComponentResourceProviderTest.java | 4 +++
8 files changed, 112 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/27710808/ambari-server/src/main/java/org/apache/ambari/server/controller/StackServiceComponentRequest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/StackServiceComponentRequest.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/StackServiceComponentRequest.java
index c994a86..9e4a9a2 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/StackServiceComponentRequest.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/StackServiceComponentRequest.java
@@ -23,10 +23,18 @@ public class StackServiceComponentRequest extends StackServiceRequest {
private String componentName;
+ private String recoveryEnabled;
+
public StackServiceComponentRequest(String stackName, String stackVersion,
String serviceName, String componentName) {
+ this(stackName, stackVersion, serviceName, componentName, null);
+ }
+
+ public StackServiceComponentRequest(String stackName, String stackVersion,
+ String serviceName, String componentName, String recoveryEnabled) {
super(stackName, stackVersion, serviceName);
setComponentName(componentName);
+ setRecoveryEnabled(recoveryEnabled);
}
public String getComponentName() {
@@ -37,4 +45,22 @@ public class StackServiceComponentRequest extends StackServiceRequest {
this.componentName = componentName;
}
+ /**
+ * Get whether auto start is enabled. If value is null,
+ * auto start value was not specified.
+ *
+ * @return null, "true", "false"
+ */
+ public String getRecoveryEnabled() {
+ return recoveryEnabled;
+ }
+
+ /**
+ * Set whether auto start is enabled. Null indicates unspecified.
+ *
+ * @param recoveryEnabled null, "true", "false"
+ */
+ public void setRecoveryEnabled(String recoveryEnabled) {
+ this.recoveryEnabled = recoveryEnabled;
+ }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/27710808/ambari-server/src/main/java/org/apache/ambari/server/controller/StackServiceComponentResponse.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/StackServiceComponentResponse.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/StackServiceComponentResponse.java
index d15d618..cfd4e7b 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/StackServiceComponentResponse.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/StackServiceComponentResponse.java
@@ -90,6 +90,11 @@ public class StackServiceComponentResponse {
*/
private List<String> customCommands;
+ /**
+ * Enabled for auto start or not.
+ */
+ private boolean recoveryEnabled;
+
/**
* Constructor.
@@ -106,6 +111,7 @@ public class StackServiceComponentResponse {
cardinality = component.getCardinality();
versionAdvertised = component.isVersionAdvertised();
autoDeploy = component.getAutoDeploy();
+ recoveryEnabled = component.isRecoveryEnabled();
// the custom command names defined for this component
List<CustomCommandDefinition> definitions = component.getCustomCommands();
@@ -301,6 +307,24 @@ public class StackServiceComponentResponse {
this.versionAdvertised = versionAdvertised;
}
+ /**
+ * Get whether auto start is enabled.
+ *
+ * @return True or false.
+ */
+ public boolean isRecoveryEnabled() {
+ return recoveryEnabled;
+ }
+
+ /**
+ * Set whether auto start is enabled.
+ *
+ * @param recoveryEnabled True or false.
+ */
+ public void setRecoveryEnabled(boolean recoveryEnabled) {
+ this.recoveryEnabled = recoveryEnabled;
+ }
+
/**
* Get auto deploy information.
http://git-wip-us.apache.org/repos/asf/ambari/blob/27710808/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ComponentResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ComponentResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ComponentResourceProvider.java
index 0e97e1e..03d74a7 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ComponentResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ComponentResourceProvider.java
@@ -352,6 +352,24 @@ public class ComponentResourceProvider extends AbstractControllerResourceProvide
sc.setDesiredState(s.getDesiredState());
}
+ /**
+ * If request does not have recovery_enabled field,
+ * then get the default from the stack definition.
+ */
+ if (StringUtils.isNotEmpty(request.getRecoveryEnabled())) {
+ boolean recoveryEnabled = Boolean.parseBoolean(request.getRecoveryEnabled());
+ sc.setRecoveryEnabled(recoveryEnabled);
+ } else {
+ StackId stackId = s.getDesiredStackVersion();
+ ComponentInfo componentInfo = ambariMetaInfo.getComponent(stackId.getStackName(),
+ stackId.getStackVersion(), s.getName(), request.getComponentName());
+ if (componentInfo == null) {
+ throw new AmbariException("Could not get component information from stack definition: Stack=" +
+ stackId.toString() + ", Service=" + s.getName() + ", Component=" + request.getComponentName());
+ }
+ sc.setRecoveryEnabled(componentInfo.isRecoveryEnabled());
+ }
+
s.addServiceComponent(sc);
sc.persist();
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/27710808/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackServiceComponentResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackServiceComponentResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackServiceComponentResourceProvider.java
index bf5ad67..70945ba 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackServiceComponentResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackServiceComponentResourceProvider.java
@@ -65,6 +65,9 @@ public class StackServiceComponentResourceProvider extends
private static final String CUSTOM_COMMANDS_PROPERTY_ID = PropertyHelper.getPropertyId(
"StackServiceComponents", "custom_commands");
+ private static final String RECOVERY_ENABLED = PropertyHelper.getPropertyId(
+ "StackServiceComponents", "recovery_enabled");
+
private static final String AUTO_DEPLOY_ENABLED_ID = PropertyHelper.getPropertyId(
"auto_deploy", "enabled");
@@ -141,6 +144,9 @@ public class StackServiceComponentResourceProvider extends
setResourceProperty(resource, ADVERTISE_VERSION_ID,
response.isVersionAdvertised(), requestedIds);
+ setResourceProperty(resource, RECOVERY_ENABLED,
+ response.isRecoveryEnabled(), requestedIds);
+
setResourceProperty(resource, CUSTOM_COMMANDS_PROPERTY_ID,
response.getCustomCommands(), requestedIds);
@@ -165,7 +171,8 @@ public class StackServiceComponentResourceProvider extends
(String) properties.get(STACK_NAME_PROPERTY_ID),
(String) properties.get(STACK_VERSION_PROPERTY_ID),
(String) properties.get(SERVICE_NAME_PROPERTY_ID),
- (String) properties.get(COMPONENT_NAME_PROPERTY_ID));
+ (String) properties.get(COMPONENT_NAME_PROPERTY_ID),
+ (String) properties.get(RECOVERY_ENABLED));
}
@Override
http://git-wip-us.apache.org/repos/asf/ambari/blob/27710808/ambari-server/src/main/java/org/apache/ambari/server/stack/ComponentModule.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/stack/ComponentModule.java b/ambari-server/src/main/java/org/apache/ambari/server/stack/ComponentModule.java
index 18c6ef3..a122dc6 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/stack/ComponentModule.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/stack/ComponentModule.java
@@ -88,6 +88,8 @@ public class ComponentModule extends BaseModule<ComponentModule, ComponentInfo>
componentInfo.setAutoDeploy(parentInfo.getAutoDeploy());
}
+ componentInfo.setRecoveryEnabled(parentInfo.isRecoveryEnabled());
+
mergeComponentDependencies(parentInfo.getDependencies(),
componentInfo.getDependencies());
http://git-wip-us.apache.org/repos/asf/ambari/blob/27710808/ambari-server/src/main/java/org/apache/ambari/server/state/ComponentInfo.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/ComponentInfo.java b/ambari-server/src/main/java/org/apache/ambari/server/state/ComponentInfo.java
index fd68060..94c8053 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/ComponentInfo.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/ComponentInfo.java
@@ -90,6 +90,10 @@ public class ComponentInfo {
@XmlElement(name="auto-deploy")
private AutoDeployInfo autoDeploy;
+ @XmlElements(@XmlElement(name = "recovery_enabled"))
+ private Boolean recoveryEnabled = null;
+
+
private String timelineAppid;
public ComponentInfo() {
@@ -146,6 +150,10 @@ public class ComponentInfo {
return "MASTER".equals(category);
}
+ public boolean isSlave() {
+ return "SLAVE".equals(category);
+ }
+
public boolean isDeleted() {
return deleted;
}
@@ -247,6 +255,27 @@ public class ComponentInfo {
return versionAdvertised;
}
+ public void setRecoveryEnabled(boolean recoveryEnabled) {
+ this.recoveryEnabled = recoveryEnabled;
+ }
+
+ public boolean isRecoveryEnabled() {
+ /**
+ * If recovery_enabled was not provided, then use defaults:
+ * Slave components: recovery_enabled = true
+ * Master components: recovery_enabled = false
+ * All others: recovery_enabled = false
+ */
+ if (recoveryEnabled == null) {
+ if (isSlave()) {
+ recoveryEnabled = true;
+ } else {
+ recoveryEnabled = false;
+ }
+ }
+ return recoveryEnabled;
+ }
+
public List<String> getClientsToUpdateConfigs() {
return clientsToUpdateConfigs;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/27710808/ambari-server/src/main/resources/properties.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/properties.json b/ambari-server/src/main/resources/properties.json
index 0fc9766..01c15f2 100644
--- a/ambari-server/src/main/resources/properties.json
+++ b/ambari-server/src/main/resources/properties.json
@@ -243,6 +243,7 @@
"StackServiceComponents/is_master",
"StackServiceComponents/cardinality",
"StackServiceComponents/custom_commands",
+ "StackServiceComponents/recovery_enabled",
"auto_deploy/enabled",
"auto_deploy/location",
"_"
http://git-wip-us.apache.org/repos/asf/ambari/blob/27710808/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java
index c624cfd..042c5d4 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java
@@ -126,6 +126,7 @@ public class ComponentResourceProviderTest {
ServiceComponentFactory serviceComponentFactory = createNiceMock(ServiceComponentFactory.class);
ServiceComponent serviceComponent = createNiceMock(ServiceComponent.class);
StackId stackId = createNiceMock(StackId.class);
+ ComponentInfo componentInfo = createNiceMock(ComponentInfo.class);
expect(managementController.getClusters()).andReturn(clusters);
expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo);
@@ -143,6 +144,9 @@ public class ComponentResourceProviderTest {
expect(ambariMetaInfo.isValidServiceComponent("HDP", "99", "Service100", "Component100")).andReturn(true).anyTimes();
+ expect(componentInfo.isRecoveryEnabled()).andReturn(true).anyTimes();
+ expect(ambariMetaInfo.getComponent("HDP", "99", "Service100", "Component100")).andReturn(componentInfo).anyTimes();
+
expect(serviceComponentFactory.createNew(service, "Component100")).andReturn(serviceComponent);
// replay