use of org.platformlayer.ops.pool.ResourcePool in project platformlayer by platformlayer.
the class DirectCloudUtils method getPublicAddressPool4.
public OpsProvider<ResourcePool<InetSocketAddress>> getPublicAddressPool4(final int publicPort, final List<Integer> publicPortGroup) {
OpsProvider<ResourcePool<InetSocketAddress>> pool = new OpsProvider<ResourcePool<InetSocketAddress>>() {
@Override
public ResourcePool<InetSocketAddress> get() throws OpsException {
DirectHost host = OpsContext.get().getInstance(DirectHost.class);
OpsTarget target = OpsContext.get().getInstance(OpsTarget.class);
PlatformLayerKey sharedNetworkKey = getSharedNetworkKey();
// We don't skip here, at the moment.
// We may just need a comma separated list in future...
int skipCount = 0;
if (sharedNetworkKey == null) {
File poolPath = getPoolPath("sockets-ipv4-public");
File resourceDir = new File(poolPath, "all");
File assignedBase = new File(poolPath, "assigned");
File perPortDir = new File(assignedBase, "port" + publicPort);
PoolBuilder<AddressModel> poolBuilder = null;
String ipv4Public = host.ipv4Public;
if (ipv4Public != null) {
poolBuilder = new NetworkPoolBuilder(ipv4Public, skipCount);
}
StaticFilesystemBackedPool<AddressModel> addressPool = new StaticFilesystemBackedPool<AddressModel>(AddressModel.class, poolBuilder, target, resourceDir, perPortDir);
return new AssignPortToAddressPool(addressPool, publicPort);
} else {
throw new UnsupportedOperationException();
// DirectNetwork network = platformLayer.getItem(sharedNetworkKey, DirectNetwork.class);
//
// for (AddressModel net : network.getNetworks()) {
// if (Strings.isNullOrEmpty(net.cidr)) {
// continue;
// }
//
// IpRange cidr = IpRange.parse(net.cidr);
// if (!cidr.isIpv4()) {
// continue;
// }
//
// NetworkPoolBuilder poolBuilder = new NetworkPoolBuilder(net.cidr, skipCount, net);
// PlatformlayerBackedPool<AddressModel> addressPool = new PlatformlayerBackedPool<AddressModel>(
// platformLayer, sharedNetworkKey, AddressModel.class, poolBuilder);
// return new AssignPortToAddressPool(addressPool, publicPort);
// }
//
// log.warn("Unable to find an IPV4 network configured on " + sharedNetworkKey);
// return null;
}
}
};
return pool;
}
Aggregations