You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sw...@apache.org on 2014/08/07 19:27:01 UTC
git commit: AMBARI-6775. Add ability to remove all users from group
by PUT request.
Repository: ambari
Updated Branches:
refs/heads/trunk be6c3bdd7 -> 696c708b9
AMBARI-6775. Add ability to remove all users from group by PUT request.
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/696c708b
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/696c708b
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/696c708b
Branch: refs/heads/trunk
Commit: 696c708b99ad392277741d81d85f40f08e828948
Parents: be6c3bd
Author: Siddharth Wagle <sw...@hortonworks.com>
Authored: Thu Aug 7 10:26:20 2014 -0700
Committer: Siddharth Wagle <sw...@hortonworks.com>
Committed: Thu Aug 7 10:26:20 2014 -0700
----------------------------------------------------------------------
.../AmbariManagementControllerImpl.java | 35 ++++++++++----------
.../AbstractControllerResourceProvider.java | 21 +++++-------
.../internal/MemberResourceProvider.java | 8 +++++
3 files changed, 35 insertions(+), 29 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/696c708b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
----------------------------------------------------------------------
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 69100c7..9d2c5d3 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
@@ -772,28 +772,29 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
}
@Override
+ @SuppressWarnings("unchecked")
public synchronized void updateMembers(Set<MemberRequest> requests) throws AmbariException {
- final Map<String, List<String>> membersPerGroup = new HashMap<String, List<String>>();
- for (MemberRequest request : requests) {
- if (StringUtils.isBlank(request.getGroupName()) || StringUtils.isBlank(request.getUserName())) {
- throw new AmbariException("Both group name and user name must be supplied.");
- }
- if (membersPerGroup.get(request.getGroupName()) == null) {
- membersPerGroup.put(request.getGroupName(), new ArrayList<String>());
+ // validate
+ String groupName = null;
+ for (MemberRequest request: requests) {
+ if (groupName != null && !request.getGroupName().equals(groupName)) {
+ throw new AmbariException("Can't manage members of different groups in one request");
}
- membersPerGroup.get(request.getGroupName()).add(request.getUserName());
+ groupName = request.getGroupName();
}
- for (Entry<String, List<String>> entry: membersPerGroup.entrySet()) {
- final String groupName = entry.getKey();
- final List<String> requiredMembers = entry.getValue();
- final List<String> currentMembers = users.getAllMembers(groupName);
- for (String user: (Collection<String>) CollectionUtils.subtract(currentMembers, requiredMembers)) {
- users.removeMemberFromGroup(groupName, user);
- }
- for (String user: (Collection<String>) CollectionUtils.subtract(requiredMembers, currentMembers)) {
- users.addMemberToGroup(groupName, user);
+ final List<String> requiredMembers = new ArrayList<String>();
+ for (MemberRequest request: requests) {
+ if (request.getUserName() != null) {
+ requiredMembers.add(request.getUserName());
}
}
+ final List<String> currentMembers = users.getAllMembers(groupName);
+ for (String user: (Collection<String>) CollectionUtils.subtract(currentMembers, requiredMembers)) {
+ users.removeMemberFromGroup(groupName, user);
+ }
+ for (String user: (Collection<String>) CollectionUtils.subtract(requiredMembers, currentMembers)) {
+ users.addMemberToGroup(groupName, user);
+ }
}
private Stage createNewStage(long id, Cluster cluster, long requestId, String requestContext, String clusterHostInfo) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/696c708b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProvider.java
index 2de5937..1c8948f 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProvider.java
@@ -183,20 +183,17 @@ public abstract class AbstractControllerResourceProvider extends AbstractResourc
Object result = null;
- if (predicate instanceof ArrayPredicate) {
+ if (predicate instanceof EqualsPredicate) {
+ EqualsPredicate equalsPredicate = (EqualsPredicate) predicate;
+ if (queryParameterId.equals(equalsPredicate.getPropertyId())) {
+ return equalsPredicate.getValue();
+ }
+ } else if (predicate instanceof ArrayPredicate) {
ArrayPredicate arrayPredicate = (ArrayPredicate) predicate;
for (Predicate predicateItem : arrayPredicate.getPredicates()) {
- if (predicateItem instanceof EqualsPredicate) {
- EqualsPredicate equalsPredicate =
- (EqualsPredicate) predicateItem;
- if (queryParameterId.equals(equalsPredicate.getPropertyId())) {
- return equalsPredicate.getValue();
- }
- } else {
- result = getQueryParameterValue(queryParameterId, predicateItem);
- if (result != null) {
- return result;
- }
+ result = getQueryParameterValue(queryParameterId, predicateItem);
+ if (result != null) {
+ return result;
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/696c708b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/MemberResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/MemberResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/MemberResourceProvider.java
index 7017495..0f6b66d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/MemberResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/MemberResourceProvider.java
@@ -18,6 +18,7 @@
package org.apache.ambari.server.controller.internal;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
@@ -36,6 +37,7 @@ import org.apache.ambari.server.controller.spi.ResourceAlreadyExistsException;
import org.apache.ambari.server.controller.spi.SystemException;
import org.apache.ambari.server.controller.spi.UnsupportedPropertyException;
import org.apache.ambari.server.controller.utilities.PropertyHelper;
+
import com.google.inject.assistedinject.Assisted;
import com.google.inject.assistedinject.AssistedInject;
import com.google.inject.persist.Transactional;
@@ -139,6 +141,12 @@ public class MemberResourceProvider extends AbstractControllerResourceProvider {
for (Map<String, Object> propertyMap : request.getProperties()) {
requests.add(getRequest(propertyMap));
}
+ if (requests.isEmpty()) {
+ // request for removing all users from group
+ Map<String, Object> propertyMap = new HashMap<String, Object>();
+ propertyMap.put(MEMBER_GROUP_NAME_PROPERTY_ID, getQueryParameterValue(MEMBER_GROUP_NAME_PROPERTY_ID, predicate));
+ requests.add(getRequest(propertyMap));
+ }
modifyResources(new Command<Void>() {
@Override