List of usage examples for com.google.common.collect Range closed
public static <C extends Comparable<?>> Range<C> closed(C lower, C upper)
From source file:com.eucalyptus.compute.vpc.VpcManager.java
public CreateVpcResponseType createVpc(final CreateVpcType request) throws EucalyptusCloudException { final CreateVpcResponseType reply = request.getReply(); final Context ctx = Contexts.lookup(); final UserFullName userFullName = ctx.getUserFullName(); final boolean createDefault = ctx.isAdministrator() && request.getCidrBlock().matches("[0-9]{12}"); if (!Cidr.parse().apply(request.getCidrBlock()).transform(Cidr.prefix()) .transform(Functions.forPredicate(Range.closed(16, 28))).or(createDefault)) { throw new ClientComputeException("InvalidVpcRange", "Cidr range invalid: " + request.getCidrBlock()); }//from ww w. j av a 2 s .c o m final Supplier<Vpc> allocator = new Supplier<Vpc>() { @Override public Vpc get() { try { final String vpcCidr; final AccountFullName vpcAccountFullName; final UserFullName vpcOwnerFullName; Vpc vpc = null; RouteTable routeTable = null; NetworkAcl networkAcl = null; if (createDefault) { final UserPrincipal user = Accounts.lookupPrincipalByAccountNumber(request.getCidrBlock()); vpcCidr = Vpcs.DEFAULT_VPC_CIDR; vpcAccountFullName = AccountFullName.getInstance(user.getAccountNumber()); vpcOwnerFullName = UserFullName.getInstance(user); // check for existing vpc try { vpc = vpcs.lookupDefault(vpcAccountFullName, Functions.<Vpc>identity()); routeTable = routeTables.lookupMain(vpc.getDisplayName(), Functions.<RouteTable>identity()); networkAcl = networkAcls.lookupDefault(vpc.getDisplayName(), Functions.<NetworkAcl>identity()); } catch (final VpcMetadataNotFoundException e) { // so create it } } else { vpcCidr = request.getCidrBlock(); vpcAccountFullName = userFullName.asAccountFullName(); vpcOwnerFullName = userFullName; } if (vpc == null) { DhcpOptionSet options; try { options = dhcpOptionSets.lookupByExample( DhcpOptionSet.exampleDefault(vpcAccountFullName), vpcAccountFullName, "default", Predicates.alwaysTrue(), Functions.<DhcpOptionSet>identity()); } catch (VpcMetadataNotFoundException e) { options = dhcpOptionSets.save(DhcpOptionSet.createDefault(vpcOwnerFullName, Identifier.dopt.generate(), VmInstances.INSTANCE_SUBDOMAIN)); } vpc = vpcs.save(Vpc.create(vpcOwnerFullName, Identifier.vpc.generate(), options, vpcCidr, createDefault)); routeTable = routeTables.save(RouteTable.create(vpcOwnerFullName, vpc, Identifier.rtb.generate(), vpc.getCidr(), true)); networkAcl = networkAcls .save(NetworkAcl.create(vpcOwnerFullName, vpc, Identifier.acl.generate(), true)); final NetworkGroup group = NetworkGroup.create(vpcOwnerFullName, vpc, ResourceIdentifiers.generateString(NetworkGroup.ID_PREFIX), NetworkGroups.defaultNetworkName(), "default VPC security group"); final Collection<NetworkPeer> peers = Lists.newArrayList(NetworkPeer .create(group.getOwnerAccountNumber(), group.getName(), group.getGroupId())); group.addNetworkRules(Lists.newArrayList( NetworkRule.create(null/*protocol name*/, -1, null/*low port*/, null/*high port*/, peers, null/*cidrs*/ ), NetworkRule.createEgress(null/*protocol name*/, -1, null/*low port*/, null/*high port*/, null/*peers*/, Collections.singleton("0.0.0.0/0")))); securityGroups.save(group); } if (createDefault && routeTable != null && networkAcl != null) { // ensure there is an internet gateway for the vpc and a route in place InternetGateway internetGateway; try { internetGateway = internetGateways.lookupByVpc(vpcAccountFullName, vpc.getDisplayName(), Functions.<InternetGateway>identity()); } catch (final VpcMetadataNotFoundException e) { internetGateway = internetGateways .save(InternetGateway.create(vpcOwnerFullName, Identifier.igw.generate())); internetGateway.setVpc(vpc); } final Optional<Route> defaultRoute = Iterables.tryFind(routeTable.getRoutes(), CollectionUtils.propertyPredicate("0.0.0.0/0", RouteTables.RouteFilterStringFunctions.DESTINATION_CIDR)); if (!defaultRoute.isPresent()) { routeTable.getRoutes().add(Route.create(routeTable, Route.RouteOrigin.CreateRouteTable, "0.0.0.0/0", internetGateway)); routeTable.updateTimeStamps(); // ensure version of table increments also } // ensure there is a default subnet in each availability zone final Set<String> cidrsInUse = Sets.newHashSet(); final Set<String> zonesWithoutSubnets = Sets.newTreeSet(); for (final String zone : Iterables.transform(Clusters.getInstance().listValues(), CloudMetadatas.toDisplayName())) { try { cidrsInUse.add(subnets.lookupDefault(vpcAccountFullName, zone, Subnets.FilterStringFunctions.CIDR)); } catch (final VpcMetadataNotFoundException e) { zonesWithoutSubnets.add(zone); } } final List<String> subnetCidrs = Lists.newArrayList( Iterables.transform(Cidr.parseUnsafe().apply(Vpcs.DEFAULT_VPC_CIDR).split(16), Functions.toStringFunction())); subnetCidrs.removeAll(cidrsInUse); for (final String zone : zonesWithoutSubnets) { final Subnet subnet = subnets.save(Subnet.create(vpcOwnerFullName, vpc, networkAcl, Identifier.subnet.generate(), subnetCidrs.remove(0), zone)); subnet.setDefaultForAz(true); subnet.setMapPublicIpOnLaunch(true); } } return vpc; } catch (Exception ex) { throw new RuntimeException(ex); } } }; reply.setVpc(allocate(allocator, Vpc.class, VpcType.class)); invalidate(reply.getVpc().getVpcId()); return reply; }
From source file:org.apache.bookkeeper.mledger.impl.ManagedCursorImpl.java
boolean hasMoreEntries(PositionImpl position) { PositionImpl lastPositionInLedger = ledger.getLastPosition(); if (position.compareTo(lastPositionInLedger) <= 0) { return getNumberOfEntries(Range.closed(position, lastPositionInLedger)) > 0; }//from w ww. j a v a 2s . com return false; }
From source file:org.apache.bookkeeper.mledger.impl.ManagedCursorImpl.java
/** * Given a list of entries, filter out the entries that have already been individually deleted. * * @param entries//from w w w . ja v a2 s . com * a list of entries * @return a list of entries not containing deleted messages */ List<Entry> filterReadEntries(List<Entry> entries) { lock.readLock().lock(); try { Range<PositionImpl> entriesRange = Range.closed((PositionImpl) entries.get(0).getPosition(), (PositionImpl) entries.get(entries.size() - 1).getPosition()); if (log.isDebugEnabled()) { log.debug("[{}] [{}] Filtering entries {} - alreadyDeleted: {}", ledger.getName(), name, entriesRange, individualDeletedMessages); } if (individualDeletedMessages.isEmpty() || !entriesRange.isConnected(individualDeletedMessages.span())) { // There are no individually deleted messages in this entry list, no need to perform filtering if (log.isDebugEnabled()) { log.debug("[{}] [{}] No filtering needed for entries {}", ledger.getName(), name, entriesRange); } return entries; } else { // Remove from the entry list all the entries that were already marked for deletion return Lists.newArrayList(Collections2.filter(entries, entry -> { boolean includeEntry = !individualDeletedMessages.contains((PositionImpl) entry.getPosition()); if (!includeEntry) { if (log.isDebugEnabled()) { log.debug("[{}] [{}] Filtering entry at {} - already deleted", ledger.getName(), name, entry.getPosition()); } entry.release(); } return includeEntry; })); } } finally { lock.readLock().unlock(); } }
From source file:com.eucalyptus.compute.vpc.VpcManager.java
public ReplaceNetworkAclEntryResponseType replaceNetworkAclEntry(final ReplaceNetworkAclEntryType request) throws EucalyptusCloudException { final ReplaceNetworkAclEntryResponseType reply = request.getReply(); final Context ctx = Contexts.lookup(); final AccountFullName accountFullName = ctx.getUserFullName().asAccountFullName(); final String networkAclId = Identifier.acl.normalize(request.getNetworkAclId()); final String cidr = request.getCidrBlock(); final Optional<Cidr> cidrOptional = Cidr.parse().apply(cidr); if (!cidrOptional.isPresent()) { throw new ClientComputeException("InvalidParameterValue", "Cidr invalid: " + cidr); }/* ww w .j av a 2s .c o m*/ final Optional<Integer> protocolOptional = protocolNumber(request.getProtocol()); if (!protocolOptional.isPresent()) { throw new ClientComputeException("InvalidParameterValue", "Protocol invalid: " + request.getProtocol()); } if (!Range.closed(1, 32766).apply(request.getRuleNumber())) { throw new ClientComputeException("InvalidParameterValue", "Rule number invalid: " + request.getRuleNumber()); } try { networkAcls.updateByExample(NetworkAcl.exampleWithName(accountFullName, networkAclId), accountFullName, request.getNetworkAclId(), new Callback<NetworkAcl>() { @Override public void fire(final NetworkAcl networkAcl) { if (RestrictedTypes.filterPrivileged().apply(networkAcl)) try { final List<NetworkAclEntry> entries = networkAcl.getEntries(); final Optional<NetworkAclEntry> oldEntry = Iterables.tryFind(entries, entryPredicate(request.getEgress(), request.getRuleNumber())); if (!oldEntry.isPresent()) { throw new ClientComputeException("InvalidNetworkAclEntry.NotFound", "Entry not found for rule number: " + request.getRuleNumber()); } final NetworkAclEntry entry; switch (protocolOptional.get()) { case 1: entry = NetworkAclEntry.createIcmpEntry(networkAcl, request.getRuleNumber(), Enums.valueOfFunction(NetworkAclEntry.RuleAction.class) .apply(request.getRuleAction()), request.getEgress(), cidr, request.getIcmpTypeCode().getCode(), request.getIcmpTypeCode().getType()); break; case 6: case 17: entry = NetworkAclEntry.createTcpUdpEntry(networkAcl, request.getRuleNumber(), protocolOptional.get(), Enums.valueOfFunction(NetworkAclEntry.RuleAction.class) .apply(request.getRuleAction()), request.getEgress(), cidr, request.getPortRange().getFrom(), request.getPortRange().getTo()); break; default: entry = NetworkAclEntry .createEntry(networkAcl, request.getRuleNumber(), protocolOptional.get(), Enums.valueOfFunction(NetworkAclEntry.RuleAction.class) .apply(request.getRuleAction()), request.getEgress(), cidr); } entries.set(entries.indexOf(oldEntry.get()), entry); networkAcl.updateTimeStamps(); // ensure version of table increments also } catch (Exception e) { throw Exceptions.toUndeclared(e); } else { throw Exceptions.toUndeclared(new ClientUnauthorizedComputeException( "Not authorized to replace network ACL entry")); } } }); invalidate(networkAclId); } catch (Exception e) { throw handleException(e); } return reply; }
From source file:com.eucalyptus.compute.vpc.VpcManager.java
private static Optional<Integer> protocolNumber(final String protocol) { switch (Objects.toString(protocol, "-1").toLowerCase()) { case "tcp": case "6": return Optional.of(6); case "udp": case "17": return Optional.of(17); case "icmp": case "1": return Optional.of(1); default:/*from w ww . j a va2 s. c o m*/ return Iterables.tryFind(Optional.fromNullable(Ints.tryParse(protocol)).asSet(), Range.closed(-1, 255)); } }