You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by jo...@apache.org on 2014/09/10 15:03:47 UTC
[35/39] git commit: Revert "AMBARI-7218. rename host group deletes
configs (dlysnichenko)"
Revert "AMBARI-7218. rename host group deletes configs (dlysnichenko)"
This reverts commit 9ce44c953de1154883887538c5979e5d9036a30c.
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/22b1df06
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/22b1df06
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/22b1df06
Branch: refs/heads/branch-alerts-dev
Commit: 22b1df06454e32753864ea3a622d9cd5b8d921fa
Parents: 9cf27bf
Author: Lisnichenko Dmitro <dl...@hortonworks.com>
Authored: Wed Sep 10 13:13:46 2014 +0300
Committer: Lisnichenko Dmitro <dl...@hortonworks.com>
Committed: Wed Sep 10 13:13:46 2014 +0300
----------------------------------------------------------------------
.../internal/ConfigGroupResourceProvider.java | 136 +++++++------------
.../ConfigGroupResourceProviderTest.java | 130 ------------------
2 files changed, 49 insertions(+), 217 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/22b1df06/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProvider.java
index 52df317..6e13d9c 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProvider.java
@@ -383,36 +383,6 @@ public class ConfigGroupResourceProvider extends
cluster.deleteConfigGroup(request.getId());
}
- private void basicRequestValidation(ConfigGroupRequest request) {
- if (request.getId() == null
- || request.getClusterName() == null
- || request.getClusterName().isEmpty()
- || request.getGroupName() == null
- || request.getGroupName().isEmpty()) {
- LOG.debug("Received a config group request with request id = " +
- request.getId() + ", cluster name = " +
- request.getClusterName() + ", group name = " + request.getGroupName());
- throw new IllegalArgumentException("Request id, " +
- "cluster name and " +
- "group name have to be provided.");
- }
- }
-
- private void validateRenameRequest(ConfigGroupRequest request) {
- if (request.getTag() != null
- || (request.getHosts() != null && ! request.getHosts().isEmpty())
- || request.getDescription() != null
- || request.getServiceConfigVersionNote() != null
- || (request.getConfigs()!=null && ! request.getConfigs().isEmpty())) {
- throw new IllegalArgumentException("Request with id " +
- request.getId() +
- " seems to be a config group rename request. " +
- "Renaming config group can not be combined with other " +
- "operations, so hosts, configs, description, service config version note " +
- "request fields should not be populated.");
- }
- }
-
private void validateRequest(ConfigGroupRequest request) {
if (request.getClusterName() == null
|| request.getClusterName().isEmpty()
@@ -534,87 +504,79 @@ public class ConfigGroupResourceProvider extends
Clusters clusters = getManagementController().getClusters();
for (ConfigGroupRequest request : requests) {
- basicRequestValidation(request);
Cluster cluster;
try {
cluster = clusters.getCluster(request.getClusterName());
} catch (ClusterNotFoundException e) {
throw new ParentObjectNotFoundException(
- String.format(
- "The cluster %s does not exist, can not update a config group",
- request.getClusterName()), e);
+ "Attempted to add a config group to a cluster which doesn't exist", e);
}
+ if (request.getId() == null) {
+ throw new AmbariException("Config group Id is a required parameter.");
+ }
+
+ validateRequest(request);
+
// Find config group
- Map<Long, ConfigGroup> configGroups = cluster.getConfigGroups();
- ConfigGroup configGroup = configGroups.get(request.getId());
+ ConfigGroup configGroup = cluster.getConfigGroups().get(request.getId());
if (configGroup == null) {
throw new AmbariException("Config group not found"
+ ", clusterName = " + request.getClusterName()
+ ", groupId = " + request.getId());
}
+ String serviceName = configGroup.getServiceName();
+ String requestServiceName = cluster.getServiceForConfigTypes(request.getConfigs().keySet());
+ if (serviceName != null && requestServiceName !=null && !StringUtils.equals(serviceName, requestServiceName)) {
+ throw new IllegalArgumentException("Config group " + configGroup.getId() +
+ " is mapped to service " + serviceName + ", " +
+ "but request contain configs from service " + requestServiceName);
+ } else if (serviceName == null && requestServiceName != null) {
+ configGroup.setServiceName(requestServiceName);
+ serviceName = requestServiceName;
+ }
- if (! configGroup.getName().equals(request.getGroupName())) {
- // Looks like user tries to rename a config group
- validateRenameRequest(request);
- configGroup.setName(request.getGroupName());
- persist(configGroup);
- } else { // Any other action
- validateRequest(request);
- String serviceName = configGroup.getServiceName();
- String requestServiceName = cluster.getServiceForConfigTypes(request.getConfigs().keySet());
- if (serviceName != null && requestServiceName !=null && !StringUtils.equals(serviceName, requestServiceName)) {
- throw new IllegalArgumentException("Config group " + configGroup.getId() +
- " is mapped to service " + serviceName + ", " +
- "but request contain configs from service " + requestServiceName);
- } else if (serviceName == null && requestServiceName != null) {
- configGroup.setServiceName(requestServiceName);
- serviceName = requestServiceName;
- }
-
- // Update hosts
- Map<String, Host> hosts = new HashMap<String, Host>();
- if (request.getHosts() != null && !request.getHosts().isEmpty()) {
- for (String hostname : request.getHosts()) {
- Host host = clusters.getHost(hostname);
- if (host == null) {
- throw new HostNotFoundException(hostname);
- }
- hosts.put(hostname, host);
+ // Update hosts
+ Map<String, Host> hosts = new HashMap<String, Host>();
+ if (request.getHosts() != null && !request.getHosts().isEmpty()) {
+ for (String hostname : request.getHosts()) {
+ Host host = clusters.getHost(hostname);
+ if (host == null) {
+ throw new HostNotFoundException(hostname);
}
+ hosts.put(hostname, host);
}
+ }
+
+ verifyHostList(cluster, hosts, request);
- verifyHostList(cluster, hosts, request);
+ configGroup.setHosts(hosts);
- configGroup.setHosts(hosts);
+ // Update Configs
+ configGroup.setConfigurations(request.getConfigs());
- // Update Configs
- configGroup.setConfigurations(request.getConfigs());
- // Save
- configGroup.setName(request.getGroupName());
- configGroup.setDescription(request.getDescription());
- configGroup.setTag(request.getTag());
+ // Save
+ configGroup.setName(request.getGroupName());
+ configGroup.setDescription(request.getDescription());
+ configGroup.setTag(request.getTag());
- persist(configGroup);
- if (serviceName != null) {
- cluster.createServiceConfigVersion(serviceName, getManagementController().getAuthName(), null, configGroup);
- } else {
- LOG.warn("Could not determine service name for config group {}, service config version not created",
- configGroup.getId());
- }
+ configLogger.info("Persisting updated Config group"
+ + ", clusterName = " + configGroup.getClusterName()
+ + ", id = " + configGroup.getId()
+ + ", tag = " + configGroup.getTag()
+ + ", user = " + getManagementController().getAuthName());
+
+ configGroup.persist();
+ if (serviceName != null) {
+ cluster.createServiceConfigVersion(serviceName, getManagementController().getAuthName(), null, configGroup);
+ } else {
+ LOG.warn("Could not determine service name for config group {}, service config version not created",
+ configGroup.getId());
}
}
- getManagementController().getConfigHelper().invalidateStaleConfigsCache();
- }
- private void persist(ConfigGroup configGroup) {
- configLogger.info("Persisting updated Config group"
- + ", clusterName = " + configGroup.getClusterName()
- + ", id = " + configGroup.getId()
- + ", tag = " + configGroup.getTag()
- + ", user = " + getManagementController().getAuthName());
- configGroup.persist();
+ getManagementController().getConfigHelper().invalidateStaleConfigsCache();
}
@SuppressWarnings("unchecked")
http://git-wip-us.apache.org/repos/asf/ambari/blob/22b1df06/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProviderTest.java
index 116e435..4194979 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProviderTest.java
@@ -49,7 +49,6 @@ import java.util.Set;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNotNull;
import static junit.framework.Assert.assertTrue;
-import static junit.framework.Assert.fail;
import static org.easymock.EasyMock.anyObject;
import static org.easymock.EasyMock.capture;
import static org.easymock.EasyMock.createMock;
@@ -57,7 +56,6 @@ import static org.easymock.EasyMock.createNiceMock;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.expectLastCall;
import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.reset;
import static org.easymock.EasyMock.verify;
public class ConfigGroupResourceProviderTest {
@@ -307,134 +305,6 @@ public class ConfigGroupResourceProviderTest {
configGroup, response, configGroupResponse, configHelper);
}
- @Test
- public void testUpdateConfigGroup_renameGroup() throws Exception {
- AmbariManagementController managementController = createMock(AmbariManagementController.class);
- RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
- ConfigHelper configHelper = createNiceMock(ConfigHelper.class);
- Clusters clusters = createNiceMock(Clusters.class);
- Cluster cluster = createNiceMock(Cluster.class);
- Host h1 = createNiceMock(Host.class);
- Host h2 = createNiceMock(Host.class);
- final ConfigGroup configGroup = createNiceMock(ConfigGroup.class);
- ConfigGroupResponse configGroupResponse = createNiceMock
- (ConfigGroupResponse.class);
-
- expect(managementController.getClusters()).andReturn(clusters).anyTimes();
- expect(managementController.getAuthName()).andReturn("admin").anyTimes();
- expect(clusters.getCluster("Cluster100")).andReturn(cluster).anyTimes();
-
- expect(configGroup.getName()).andReturn("originalGroupName").anyTimes();
- expect(configGroup.getId()).andReturn(25L).anyTimes();
- expect(configGroup.convertToResponse()).andReturn(configGroupResponse).anyTimes();
- expect(configGroupResponse.getClusterName()).andReturn("Cluster100").anyTimes();
- expect(configGroupResponse.getId()).andReturn(25L).anyTimes();
-
- replay(configGroup);
-
- expect(cluster.getConfigGroups()).andStubAnswer(new IAnswer<Map<Long, ConfigGroup>>() {
- @Override
- public Map<Long, ConfigGroup> answer() throws Throwable {
- Map<Long, ConfigGroup> configGroupMap = new HashMap<Long, ConfigGroup>();
- configGroupMap.put(configGroup.getId(), configGroup);
- return configGroupMap;
- }
- });
-
-
- expect(managementController.getConfigHelper()).andReturn(configHelper).once();
- configHelper.invalidateStaleConfigsCache();
- expectLastCall().once();
-
- replay(managementController, clusters, cluster,
- response, configGroupResponse, configHelper);
-
- ResourceProvider provider = getConfigGroupResourceProvider
- (managementController);
-
- String newGroupName = "newGroupName";
- /*
- * Check rename request validation
- */
- Map<String, Object> properties = new LinkedHashMap<String, Object>();
-
- Set<Map<String, Object>> hostSet = new HashSet<Map<String, Object>>();
- Map<String, Object> host1 = new HashMap<String, Object>();
- host1.put(ConfigGroupResourceProvider.CONFIGGROUP_HOSTNAME_PROPERTY_ID, "h1");
- hostSet.add(host1);
- Map<String, Object> host2 = new HashMap<String, Object>();
- host2.put(ConfigGroupResourceProvider.CONFIGGROUP_HOSTNAME_PROPERTY_ID, "h2");
- hostSet.add(host2);
-
- Set<Map<String, Object>> configSet = new HashSet<Map<String, Object>>();
- Map<String, String> configMap = new HashMap<String, String>();
- Map<String, Object> configs = new HashMap<String, Object>();
- configs.put("type", "core-site");
- configs.put("tag", "version100");
- configMap.put("key1", "value1");
- configs.put("properties", configMap);
- configSet.add(configs);
-
- properties.put(ConfigGroupResourceProvider
- .CONFIGGROUP_CLUSTER_NAME_PROPERTY_ID, "Cluster100");
- properties.put(ConfigGroupResourceProvider.CONFIGGROUP_NAME_PROPERTY_ID,
- newGroupName);
- properties.put(ConfigGroupResourceProvider.CONFIGGROUP_TAG_PROPERTY_ID,
- "tag-1");
- properties.put(ConfigGroupResourceProvider.CONFIGGROUP_HOSTS_PROPERTY_ID,
- hostSet );
- properties.put(ConfigGroupResourceProvider.CONFIGGROUP_CONFIGS_PROPERTY_ID,
- configSet);
-
- Map<String, String> mapRequestProps = new HashMap<String, String>();
- mapRequestProps.put("context", "Called from a test");
-
- Request request = PropertyHelper.getUpdateRequest(properties, mapRequestProps);
-
- Predicate predicate = new PredicateBuilder().property
- (ConfigGroupResourceProvider.CONFIGGROUP_CLUSTER_NAME_PROPERTY_ID).equals
- ("Cluster100").and().
- property(ConfigGroupResourceProvider.CONFIGGROUP_ID_PROPERTY_ID).equals
- (25L).toPredicate();
-
- try {
- provider.updateResources(request, predicate);
- fail("Should throw IllegalArgumentException");
- } catch (IllegalArgumentException e) {
- // expected
- }
-
- verify(configGroup);
-
- /*
- * Check execution of rename request
- */
- reset(configGroup);
- expect(configGroup.getName()).andReturn("originalGroupName").anyTimes();
- expect(configGroup.getId()).andReturn(25L).anyTimes();
-
- expect(configGroup.convertToResponse()).andReturn(configGroupResponse).anyTimes();
-
- configGroup.setName(newGroupName);
- expectLastCall().once();
- replay(configGroup);
-
- reset(cluster);
- Map<Long, ConfigGroup> configGroupMap = new HashMap<Long, ConfigGroup>();
- configGroupMap.put(configGroup.getId(), configGroup);
- expect(cluster.getConfigGroups()).andReturn(configGroupMap).anyTimes();
- replay(cluster);
-
- properties = new LinkedHashMap<String, Object>();
- properties.put(ConfigGroupResourceProvider
- .CONFIGGROUP_CLUSTER_NAME_PROPERTY_ID, "Cluster100");
- properties.put(ConfigGroupResourceProvider.CONFIGGROUP_NAME_PROPERTY_ID,
- newGroupName);
- request = PropertyHelper.getUpdateRequest(properties, mapRequestProps);
- provider.updateResources(request, predicate);
- verify(configGroup);
- }
-
@SuppressWarnings("unchecked")
@Test
public void testGetConfigGroup() throws Exception {