/** * Returns a new network identity given network name. The network name must be 1-63 characters * long and comply with RFC1035. Specifically, the name must match the regular expression {@code * [a-z]([-a-z0-9]*[a-z0-9])?} which means the first character must be a lowercase letter, and all * following characters must be a dash, lowercase letter, or digit, except the last character, * which cannot be a dash. * * @see <a href="https://www.ietf.org/rfc/rfc1035.txt">RFC1035</a> */ public static NetworkId of(String network) { return NetworkId.of(null, network); }
@Override NetworkId parse(String... args) throws Exception { String message; if (args.length == 1) { return NetworkId.of(args[0]); } else if (args.length > 1) { message = "Too many arguments."; } else { message = "Missing required network id."; } throw new IllegalArgumentException(message); }
static NetworkId fromUrl(String url) { Matcher matcher = PATTERN.matcher(url); if (!matcher.matches()) { throw new IllegalArgumentException(url + " is not a valid network URL"); } return NetworkId.of(matcher.group(1), matcher.group(2)); } }
@Override NetworkId setProjectId(String projectId) { if (getProject() != null) { return this; } return NetworkId.of(projectId, network); }
@Override public Operation deleteNetwork(String network, OperationOption... options) { return deleteNetwork(NetworkId.of(network)); }
/** Returns a builder for a {@code NetworkInterface} object given the network's name. */ public static Builder newBuilder(String network) { return newBuilder(NetworkId.of(network)); }
@Override NetworkInfo parse(String... args) throws Exception { if (args.length == 2) { return NetworkInfo.of(NetworkId.of(args[0]), StandardNetworkConfiguration.of(args[1])); } else if (args.length > 2) { throw new IllegalArgumentException("Too many arguments."); } else { throw new IllegalArgumentException("Missing required arguments."); } }
@Override SubnetworkInfo parse(String... args) throws Exception { String message; if (args.length == 4) { SubnetworkId subnetwork = SubnetworkId.of(args[0], args[1]); return SubnetworkInfo.of(subnetwork, NetworkId.of(args[2]), args[3]); } else if (args.length > 4) { message = "Too many arguments."; } else { message = "Missing required arguments."; } throw new IllegalArgumentException(message); }
@Test public void testCreateNetwork() { EasyMock.expect(computeRpcMock.createNetwork(NETWORK.toPb(), EMPTY_RPC_OPTIONS)) .andReturn(globalOperation.toPb()); EasyMock.replay(computeRpcMock); compute = options.getService(); NetworkInfo network = NetworkInfo.of(NetworkId.of("network"), StandardNetworkConfiguration.of("192.168.0.0/16")); Operation operation = compute.create(network); assertEquals(globalOperation, operation); }
@Test public void testCreateSubnetwork() { EasyMock.expect( computeRpcMock.createSubnetwork( SUBNETWORK_ID.getRegion(), SUBNETWORK.toPb(), EMPTY_RPC_OPTIONS)) .andReturn(regionOperation.toPb()); EasyMock.replay(computeRpcMock); compute = options.getService(); SubnetworkId subnetworkId = SubnetworkId.of("region", "network"); NetworkId networkId = NetworkId.of("network"); SubnetworkInfo subnetwork = SubnetworkInfo.of(subnetworkId, networkId, "192.168.0.0/16"); Operation operation = compute.create(subnetwork); assertEquals(regionOperation, operation); }
@Test public void testOf() { NetworkId networkId = NetworkId.of(PROJECT, NETWORK); assertEquals(PROJECT, networkId.getProject()); assertEquals(NETWORK, networkId.getNetwork()); assertEquals(URL, networkId.getSelfLink()); networkId = NetworkId.of(NETWORK); assertNull(networkId.getProject()); assertEquals(NETWORK, networkId.getNetwork()); }
@Test public void testMatchesUrl() { assertTrue(NetworkId.matchesUrl(NetworkId.of(PROJECT, NETWORK).getSelfLink())); assertFalse(NetworkId.matchesUrl("notMatchingUrl")); }
@Test public void testSetProjectId() { NetworkInfo networkInfo = NETWORK_INFO.toBuilder().setNetworkId(NetworkId.of("network")).build(); compareNetworkInfo(NETWORK_INFO, networkInfo.setProjectId("project")); }
@Test public void testSetProjectId() { NetworkInterface networkInterface = NetworkInterface.of(NETWORK); compareNetworkInterface( networkInterface, NetworkInterface.of(NetworkId.of("network")).setProjectId("project")); networkInterface = NETWORK_INTERFACE .toBuilder() .setNetwork(NetworkId.of("network")) .setSubnetwork(SubnetworkId.of("region", "subnetwork")) .build(); compareNetworkInterface(NETWORK_INTERFACE, networkInterface.setProjectId("project")); }
@Test public void testCreateInstance() { EasyMock.expect( computeRpcMock.createInstance( INSTANCE_ID.getZone(), INSTANCE.toPb(), EMPTY_RPC_OPTIONS)) .andReturn(zoneOperation.toPb()); EasyMock.replay(computeRpcMock); compute = options.getService(); InstanceInfo instance = InstanceInfo.of( InstanceId.of("zone", "instance"), MachineTypeId.of("zone", "type"), ATTACHED_DISK, NetworkInterface.of(NetworkId.of("network"))); Operation operation = compute.create(instance); assertEquals(zoneOperation, operation); }
@Test public void testToAndFromUrl() { NetworkId networkId = NetworkId.of(PROJECT, NETWORK); compareNetworkId(networkId, NetworkId.fromUrl(networkId.getSelfLink())); thrown.expect(IllegalArgumentException.class); thrown.expectMessage("notMatchingUrl is not a valid network URL"); NetworkId.fromUrl("notMatchingUrl"); }
public static void main(String... args) throws InterruptedException, TimeoutException { Compute compute = ComputeOptions.getDefaultInstance().getService(); ImageId imageId = ImageId.of("debian-cloud", "debian-8-jessie-v20160329"); NetworkId networkId = NetworkId.of("default"); AttachedDisk attachedDisk = AttachedDisk.of(AttachedDisk.CreateDiskConfiguration.of(imageId)); NetworkInterface networkInterface = NetworkInterface.of(networkId); InstanceId instanceId = InstanceId.of("us-central1-a", "instance-name"); MachineTypeId machineTypeId = MachineTypeId.of("us-central1-a", "n1-standard-1"); Operation operation = compute.create(InstanceInfo.of(instanceId, machineTypeId, attachedDisk, networkInterface)); operation = operation.waitFor(); if (operation.getErrors() == null) { // use instance Instance instance = compute.getInstance(instanceId); } } }
@Test public void testSetProjectId() { SubnetworkInfo subnetworkInfo = SUBNETWORK_INFO .toBuilder() .setSubnetworkId(SubnetworkId.of("region", "subnetwork")) .setNetwork(NetworkId.of("network")) .build(); compareSubnetworkInfo(SUBNETWORK_INFO, subnetworkInfo.setProjectId("project")); }
@Test public void testSetProjectId() { InstanceInfo instance = InstanceInfo.of( InstanceId.of("zone", "instance"), MachineTypeId.of("zone", "type"), AttachedDisk.of(AttachedDisk.PersistentDiskConfiguration.of(DiskId.of("zone", "disk"))), NetworkInterface.of(NetworkId.of("project", "network"))); InstanceInfo instanceWithProject = InstanceInfo.of(INSTANCE_ID, MACHINE_TYPE, ATTACHED_DISK, NETWORK_INTERFACE); compareInstanceInfo(instanceWithProject, instance.setProjectId("project")); }