protected ArrayListMultimap<Class<?>, RemoteOperation> buildAndGroupRequestByType(final TEnv env, final TRemote remote, final Set<RemoteProcedure> remoteProcedures) { final ArrayListMultimap<Class<?>, RemoteOperation> requestByType = ArrayListMultimap.create(); for (RemoteProcedure proc: remoteProcedures) { RemoteOperation operation = proc.remoteCallBuild(env, remote); requestByType.put(operation.getClass(), operation); } return requestByType; }
/** * @param perms A map of permissions for a user or users */ public Query setACL(Map<String, Permission> perms) { ListMultimap<String, Permission> permMap = ArrayListMultimap.create(); for (Map.Entry<String, Permission> entry : perms.entrySet()) { permMap.put(entry.getKey(), entry.getValue()); } setAttribute(AccessControlConstants.OP_ATTRIBUTE_ACL, AccessControlUtil.toUsersAndPermissions(permMap).toByteArray()); return this; }
/** * @param perms A map of permissions for a user or users */ public Mutation setACL(Map<String, Permission> perms) { ListMultimap<String, Permission> permMap = ArrayListMultimap.create(); for (Map.Entry<String, Permission> entry : perms.entrySet()) { permMap.put(entry.getKey(), entry.getValue()); } setAttribute(AccessControlConstants.OP_ATTRIBUTE_ACL, AccessControlUtil.toUsersAndPermissions(permMap).toByteArray()); return this; }
@Override public Map<ServerName, List<RegionInfo>> roundRobinAssignment( List<RegionInfo> regions, List<ServerName> servers) throws HBaseIOException { Map<ServerName, List<RegionInfo>> assignments = Maps.newHashMap(); ListMultimap<String,RegionInfo> regionMap = ArrayListMultimap.create(); ListMultimap<String,ServerName> serverMap = ArrayListMultimap.create(); generateGroupMaps(regions, servers, regionMap, serverMap); for(String groupKey : regionMap.keySet()) { if (regionMap.get(groupKey).size() > 0) { Map<ServerName, List<RegionInfo>> result = this.internalBalancer.roundRobinAssignment( regionMap.get(groupKey), serverMap.get(groupKey)); if(result != null) { if(result.containsKey(LoadBalancer.BOGUS_SERVER_NAME) && assignments.containsKey(LoadBalancer.BOGUS_SERVER_NAME)){ assignments.get(LoadBalancer.BOGUS_SERVER_NAME).addAll( result.get(LoadBalancer.BOGUS_SERVER_NAME)); } else { assignments.putAll(result); } } } } return assignments; }
public static ListMultimap<String, Permission> toUsersAndPermissions( AccessControlProtos.UsersAndPermissions proto) { ListMultimap<String, Permission> result = ArrayListMultimap.create(); for (AccessControlProtos.UsersAndPermissions.UserPermissions userPerms: proto.getUserPermissionsList()) { String user = userPerms.getUser().toStringUtf8(); for (AccessControlProtos.Permission perm: userPerms.getPermissionsList()) { result.put(user, toPermission(perm)); } } return result; }
ListMultimap<String,Permission> perms = ArrayListMultimap.create(); if (oldCell != null) { Iterator<Tag> tagIterator = PrivateCellUtil.tagsIterator(oldCell);
ArrayListMultimap<String, ServerName> serversByHostname = ArrayListMultimap.create(); for (ServerName server : servers) { assignments.put(server, new ArrayList<>());
try { Map<ServerName, List<RegionInfo>> assignments = new TreeMap<>(); ListMultimap<String, RegionInfo> groupToRegion = ArrayListMultimap.create(); Set<RegionInfo> misplacedRegions = getMisplacedRegions(regions); for (RegionInfo region : regions.keySet()) {
if (entryName == null) entryName = ACL_GLOBAL_NAME; ListMultimap<String, UserPermission> perms = ArrayListMultimap.create(); Get get = new Get(entryName); get.addFamily(ACL_LIST_FAMILY);
/** * Convert a protobuf UserTablePermissions to a ListMultimap<Username, Permission> * @param proto the proto UsersAndPermissions * @return a ListMultimap with user and its permissions */ public static ListMultimap<String, Permission> toPermission( AccessControlProtos.UsersAndPermissions proto) { ListMultimap<String, Permission> perms = ArrayListMultimap.create(); AccessControlProtos.UsersAndPermissions.UserPermissions userPerm; for (int i = 0; i < proto.getUserPermissionsCount(); i++) { userPerm = proto.getUserPermissions(i); String username = userPerm.getUser().toStringUtf8(); for (int j = 0; j < userPerm.getPermissionsCount(); j++) { perms.put(username, toPermission(userPerm.getPermissions(j))); } } return perms; }
public static ListMultimap<String, Permission> readPermissions(byte[] data, Configuration conf) throws DeserializationException { if (ProtobufUtil.isPBMagicPrefix(data)) { int pblen = ProtobufUtil.lengthOfPBMagic(); try { AccessControlProtos.UsersAndPermissions.Builder builder = AccessControlProtos.UsersAndPermissions.newBuilder(); ProtobufUtil.mergeFrom(builder, data, pblen, data.length - pblen); return AccessControlUtil.toPermission(builder.build()); } catch (IOException e) { throw new DeserializationException(e); } } else { // TODO: We have to re-write non-PB data as PB encoded. Otherwise we will carry old Writables // forever (here and a couple of other places). ListMultimap<String, Permission> perms = ArrayListMultimap.create(); try { DataInput in = new DataInputStream(new ByteArrayInputStream(data)); int length = in.readInt(); for (int i = 0; i < length; i++) { String user = Text.readString(in); perms.putAll(user, readWritableUserPermission(in, conf)); } } catch (IOException | ClassNotFoundException e) { throw new DeserializationException(e); } return perms; } }
/** * Convert a protobuf UserTablePermissions to a ListMultimap<Username, UserPermission> * @param proto the proto UsersAndPermissions * @return a ListMultimap with user and its permissions */ public static ListMultimap<String, UserPermission> toUserPermission( AccessControlProtos.UsersAndPermissions proto) { ListMultimap<String, UserPermission> userPermission = ArrayListMultimap.create(); AccessControlProtos.UsersAndPermissions.UserPermissions userPerm; for (int i = 0; i < proto.getUserPermissionsCount(); i++) { userPerm = proto.getUserPermissions(i); String username = userPerm.getUser().toStringUtf8(); for (int j = 0; j < userPerm.getPermissionsCount(); j++) { userPermission.put(username, new UserPermission(username, toPermission(userPerm.getPermissions(j)))); } } return userPermission; }
ListMultimap<String, UserPermission> perms = ArrayListMultimap.create(); byte[] entry = null; for (Cell kv : row) {
ListMultimap<String, UserPermission> userPermission = ArrayListMultimap.create(); try { DataInput in = new DataInputStream(new ByteArrayInputStream(data));
/** * Parse and filter permission based on the specified column family, column qualifier and user * name. */ private static ListMultimap<String, UserPermission> parsePermissions(byte[] entryName, Result result, byte[] cf, byte[] cq, String user, boolean hasFilterUser) { ListMultimap<String, UserPermission> perms = ArrayListMultimap.create(); if (result != null && result.size() > 0) { for (Cell kv : result.rawCells()) { Pair<String, Permission> permissionsOfUserOnTable = parsePermissionRecord(entryName, kv, cf, cq, hasFilterUser, user); if (permissionsOfUserOnTable != null) { String username = permissionsOfUserOnTable.getFirst(); Permission permission = permissionsOfUserOnTable.getSecond(); perms.put(username, new UserPermission(username, permission)); } } } return perms; }
/** * Convert a shaded protobuf UserTablePermissions to a ListMultimap<String, TablePermission> * where key is username. * @param proto the protobuf UserPermission * @return the converted UserPermission */ public static ListMultimap<String, Permission> toUserTablePermissions( AccessControlProtos.UsersAndPermissions proto) { ListMultimap<String, Permission> perms = ArrayListMultimap.create(); AccessControlProtos.UsersAndPermissions.UserPermissions userPerm; for (int i = 0; i < proto.getUserPermissionsCount(); i++) { userPerm = proto.getUserPermissions(i); for (int j = 0; j < userPerm.getPermissionsCount(); j++) { Permission perm = toPermission(userPerm.getPermissions(j)); perms.put(userPerm.getUser().toStringUtf8(), perm); } } return perms; }
protected ArrayListMultimap<String, ServerAndLoad> reconcile( ArrayListMultimap<String, ServerAndLoad> previousLoad, List<RegionPlan> plans) { ArrayListMultimap<String, ServerAndLoad> result = ArrayListMultimap .create(); result.putAll(previousLoad); if (plans != null) { for (RegionPlan plan : plans) { ServerName source = plan.getSource(); updateLoad(result, source, -1); ServerName destination = plan.getDestination(); updateLoad(result, destination, +1); } } return result; }
protected ArrayListMultimap<String, ServerAndLoad> convertToGroupBasedMap( final Map<ServerName, List<RegionInfo>> serversMap) throws IOException { ArrayListMultimap<String, ServerAndLoad> loadMap = ArrayListMultimap .create(); for (RSGroupInfo gInfo : getMockedGroupInfoManager().listRSGroups()) { Set<Address> groupServers = gInfo.getServers(); for (Address hostPort : groupServers) { ServerName actual = null; for(ServerName entry: servers) { if(entry.getAddress().equals(hostPort)) { actual = entry; break; } } List<RegionInfo> regions = serversMap.get(actual); assertTrue("No load for " + actual, regions != null); loadMap.put(gInfo.getName(), new ServerAndLoad(actual, regions.size())); } } return loadMap; }
private ListMultimap<String, UserPermission> createPermissions() { ListMultimap<String, UserPermission> permissions = ArrayListMultimap.create(); permissions.put("george", new UserPermission("george", TEST_TABLE, Permission.Action.READ)); permissions.put("george", new UserPermission("george", TEST_TABLE, TEST_FAMILY, Permission.Action.WRITE)); permissions.put("george", new UserPermission("george", TEST_TABLE2, Permission.Action.READ)); permissions.put("hubert", new UserPermission("hubert", TEST_TABLE2, Permission.Action.READ, Permission.Action.WRITE)); permissions.put("bruce", new UserPermission("bruce", TEST_NAMESPACE, Permission.Action.READ)); return permissions; }
acl.add(new UserPermission(george.getShortName(), TEST_TABLE, Permission.Action.READ, Permission.Action.WRITE)); ListMultimap<String, UserPermission> multimap = ArrayListMultimap.create(); multimap.putAll(george.getShortName(), acl); byte[] serialized = AccessControlLists.writePermissionsAsBytes(multimap, conf);