public void compareDiskInfo(DiskInfo expected, DiskInfo value) { assertEquals(expected, value); assertEquals(expected.getConfiguration(), value.getConfiguration()); assertEquals(expected.getGeneratedId(), value.getGeneratedId()); assertEquals(expected.getDiskId(), value.getDiskId()); assertEquals(expected.getCreationTimestamp(), value.getCreationTimestamp()); assertEquals(expected.getCreationStatus(), value.getCreationStatus()); assertEquals(expected.getDescription(), value.getDescription()); assertEquals(expected.getLicenses(), value.getLicenses()); assertEquals(expected.getAttachedInstances(), value.getAttachedInstances()); assertEquals(expected.getLastAttachTimestamp(), value.getLastAttachTimestamp()); assertEquals(expected.getLastDetachTimestamp(), value.getLastDetachTimestamp()); assertEquals(expected.hashCode(), value.hashCode()); } }
@Override public DiskInfo apply(Disk pb) { return DiskInfo.fromPb(pb); } };
@Override DiskInfo parse(String... args) throws Exception { if (args.length == 3) { DiskId diskId = parseDiskId(args); return DiskInfo.of(diskId, SnapshotDiskConfiguration.of(SnapshotId.of(args[2]))); } else if (args.length > 3) { throw new IllegalArgumentException("Too many arguments."); } else { throw new IllegalArgumentException("Missing required arguments."); } }
@Test public void testToAndFromPb() { DiskInfo diskInfo = DiskInfo.fromPb(DISK_INFO.toPb()); compareDiskInfo(DISK_INFO, diskInfo); diskInfo = DiskInfo.fromPb(SNAPSHOT_DISK_INFO.toPb()); compareDiskInfo(SNAPSHOT_DISK_INFO, diskInfo); diskInfo = DiskInfo.fromPb(IMAGE_DISK_INFO.toPb()); compareDiskInfo(IMAGE_DISK_INFO, diskInfo); Disk disk = .setType(TYPE.getSelfLink()) .setSizeGb(SIZE_GB); diskInfo = DiskInfo.of(DISK_ID, DISK_CONFIGURATION); compareDiskInfo(diskInfo, DiskInfo.fromPb(disk)); disk = new Disk() .setSourceSnapshotId(SNAPSHOT_ID) .setSourceSnapshot(SNAPSHOT.getSelfLink()); diskInfo = DiskInfo.of(DISK_ID, SNAPSHOT_DISK_CONFIGURATION); compareDiskInfo(diskInfo, DiskInfo.fromPb(disk)); disk = new Disk() .setSourceImageId(IMAGE_ID) .setSourceImage(IMAGE.getSelfLink()); diskInfo = DiskInfo.of(DISK_ID, IMAGE_DISK_CONFIGURATION); compareDiskInfo(diskInfo, DiskInfo.fromPb(disk));
@Override public Disk apply(DiskInfo diskType) { return diskType.toPb(); } };
@Test public void testToBuilderIncomplete() { DiskInfo diskInfo = DiskInfo.of(DISK_ID, DISK_CONFIGURATION); assertEquals(diskInfo, diskInfo.toBuilder().build()); diskInfo = DiskInfo.of(DISK_ID, SNAPSHOT_DISK_CONFIGURATION); assertEquals(diskInfo, diskInfo.toBuilder().build()); diskInfo = DiskInfo.of(DISK_ID, IMAGE_DISK_CONFIGURATION); assertEquals(diskInfo, diskInfo.toBuilder().build()); }
@Override public com.google.api.services.compute.model.Operation call() { return computeRpc.createDisk(disk.getDiskId().getZone(), diskPb, optionsMap); } },
@Override public Operation create(final DiskInfo disk, OperationOption... options) { final com.google.api.services.compute.model.Disk diskPb = disk.setProjectId(getOptions().getProjectId()).toPb(); final Map<ComputeRpc.Option, ?> optionsMap = optionMap(options); try { return Operation.fromPb( this, runWithRetries( new Callable<com.google.api.services.compute.model.Operation>() { @Override public com.google.api.services.compute.model.Operation call() { return computeRpc.createDisk(disk.getDiskId().getZone(), diskPb, optionsMap); } }, getOptions().getRetrySettings(), EXCEPTION_HANDLER, getOptions().getClock())); } catch (RetryHelper.RetryHelperException e) { throw ComputeException.translateAndThrow(e); } }
@Test public void testCreateDisk() { EasyMock.expect(computeRpcMock.createDisk(DISK_ID.getZone(), DISK.toPb(), EMPTY_RPC_OPTIONS)) .andReturn(zoneOperation.toPb()); EasyMock.replay(computeRpcMock); compute = options.getService(); DiskId diskId = DiskId.of("zone", "disk"); DiskTypeId diskTypeId = DiskTypeId.of("zone", "diskType"); DiskInfo disk = DISK.toBuilder() .setDiskId(diskId) .setConfiguration(StandardDiskConfiguration.of(diskTypeId)) .build(); Operation operation = compute.create(disk); assertEquals(zoneOperation, operation); }
DiskInfo diskInfo = DISK_INFO .toBuilder() .setDiskId(DiskId.of(DISK_ID.getZone(), DISK_ID.getDisk())) .setConfiguration(standardDiskConfiguration) .build(); compareDiskInfo(DISK_INFO, diskInfo.setProjectId("project")); SnapshotDiskConfiguration snapshotDiskConfiguration = SNAPSHOT_DISK_CONFIGURATION diskInfo = SNAPSHOT_DISK_INFO .toBuilder() .setDiskId(DiskId.of(DISK_ID.getZone(), DISK_ID.getDisk())) .setConfiguration(snapshotDiskConfiguration) .build(); compareDiskInfo(SNAPSHOT_DISK_INFO, diskInfo.setProjectId("project")); ImageDiskConfiguration imageDiskConfiguration = IMAGE_DISK_CONFIGURATION diskInfo = IMAGE_DISK_INFO .toBuilder() .setDiskId(DiskId.of(DISK_ID.getZone(), DISK_ID.getDisk())) .setConfiguration(imageDiskConfiguration) .build(); compareDiskInfo(IMAGE_DISK_INFO, diskInfo.setProjectId("project"));
@Test public void testToBuilder() { compareDiskInfo(DISK_INFO, DISK_INFO.toBuilder().build()); compareDiskInfo(IMAGE_DISK_INFO, IMAGE_DISK_INFO.toBuilder().build()); compareDiskInfo(SNAPSHOT_DISK_INFO, SNAPSHOT_DISK_INFO.toBuilder().build()); DiskInfo diskInfo = DISK_INFO.toBuilder().setDescription("newDescription").build(); assertEquals("newDescription", diskInfo.getDescription()); diskInfo = diskInfo.toBuilder().setDescription("description").build(); compareDiskInfo(DISK_INFO, diskInfo); }
@Override public final int hashCode() { return Objects.hash(super.hashCode(), options); }
DiskInfo setProjectId(String projectId) { return toBuilder() .setDiskId(diskId.setProjectId(projectId)) .setConfiguration(configuration.setProjectId(projectId)) .build(); }
@Override public DiskInfo build() { return new DiskInfo(this); } }
@Override public void run(Compute compute, DiskInfo disk) throws InterruptedException { Operation operation = compute.create(disk); while (!operation.isDone()) { System.out.printf( "Waiting for operation %s to complete%n", operation.getOperationId().getOperation()); Thread.sleep(1000L); } operation = operation.reload(); if (operation.getErrors() == null) { System.out.printf("Disk %s was created%n", disk.getDiskId()); } else { System.out.printf("Creation of disk %s failed%n", disk.getDiskId()); System.out.printf("Error: %s%n", operation.getErrors()); } }
@Test public void testOf() { DiskInfo diskInfo = DiskInfo.of(DISK_ID, DISK_CONFIGURATION); assertNull(diskInfo.getGeneratedId()); assertEquals(DISK_ID, diskInfo.getDiskId()); assertEquals(DISK_CONFIGURATION, diskInfo.getConfiguration()); assertNull(diskInfo.getCreationTimestamp()); assertNull(diskInfo.getCreationStatus()); assertNull(diskInfo.getDescription()); assertNull(diskInfo.getLicenses()); assertNull(diskInfo.getAttachedInstances()); assertNull(diskInfo.getLastAttachTimestamp()); assertNull(diskInfo.getLastDetachTimestamp()); diskInfo = DiskInfo.of(DISK_ID, IMAGE_DISK_CONFIGURATION); assertNull(diskInfo.getGeneratedId()); assertEquals(DISK_ID, diskInfo.getDiskId()); assertEquals(IMAGE_DISK_CONFIGURATION, diskInfo.getConfiguration()); assertNull(diskInfo.getCreationTimestamp()); assertNull(diskInfo.getCreationStatus()); assertNull(diskInfo.getDescription()); assertNull(diskInfo.getLicenses()); assertNull(diskInfo.getAttachedInstances()); assertNull(diskInfo.getLastAttachTimestamp()); assertNull(diskInfo.getLastDetachTimestamp()); diskInfo = DiskInfo.of(DISK_ID, SNAPSHOT_DISK_CONFIGURATION); assertNull(diskInfo.getGeneratedId()); assertEquals(DISK_ID, diskInfo.getDiskId()); assertEquals(SNAPSHOT_DISK_CONFIGURATION, diskInfo.getConfiguration()); assertNull(diskInfo.getCreationTimestamp()); assertNull(diskInfo.getCreationStatus());
@Override DiskInfo parse(String... args) throws Exception { if (args.length == 3) { DiskId diskId = parseDiskId(args); return DiskInfo.of(diskId, ImageDiskConfiguration.of(ImageId.of(args[2]))); } else if (args.length == 4) { DiskId diskId = parseDiskId(args); return DiskInfo.of(diskId, ImageDiskConfiguration.of(ImageId.of(args[2], args[3]))); } else if (args.length > 4) { throw new IllegalArgumentException("Too many arguments."); } else { throw new IllegalArgumentException("Missing required arguments."); } }
@Test public void testGetDisk() { EasyMock.expect(computeRpcMock.getDisk(DISK_ID.getZone(), DISK_ID.getDisk(), EMPTY_RPC_OPTIONS)) .andReturn(DISK.toPb()); EasyMock.replay(computeRpcMock); compute = options.getService(); Disk disk = compute.getDisk(DISK_ID); assertEquals(new Disk(compute, new DiskInfo.BuilderImpl(DISK)), disk); }
@Test public void testBuilder() { assertEquals(GENERATED_ID, DISK_INFO.getGeneratedId()); assertEquals(DISK_ID, DISK_INFO.getDiskId()); assertEquals(DISK_CONFIGURATION, DISK_INFO.getConfiguration()); assertEquals(CREATION_TIMESTAMP, DISK_INFO.getCreationTimestamp()); assertEquals(CREATION_STATUS, DISK_INFO.getCreationStatus()); assertEquals(DESCRIPTION, DISK_INFO.getDescription()); assertEquals(LICENSES, DISK_INFO.getLicenses()); assertEquals(ATTACHED_INSTANCES, DISK_INFO.getAttachedInstances()); assertEquals(LAST_ATTACH_TIMESTAMP, DISK_INFO.getLastAttachTimestamp()); assertEquals(LAST_DETACH_TIMESTAMP, DISK_INFO.getLastDetachTimestamp()); assertEquals(GENERATED_ID, IMAGE_DISK_INFO.getGeneratedId()); assertEquals(DISK_ID, IMAGE_DISK_INFO.getDiskId()); assertEquals(IMAGE_DISK_CONFIGURATION, IMAGE_DISK_INFO.getConfiguration()); assertEquals(CREATION_TIMESTAMP, IMAGE_DISK_INFO.getCreationTimestamp()); assertEquals(CREATION_STATUS, IMAGE_DISK_INFO.getCreationStatus()); assertEquals(DESCRIPTION, IMAGE_DISK_INFO.getDescription()); assertEquals(LICENSES, IMAGE_DISK_INFO.getLicenses()); assertEquals(ATTACHED_INSTANCES, IMAGE_DISK_INFO.getAttachedInstances()); assertEquals(LAST_ATTACH_TIMESTAMP, IMAGE_DISK_INFO.getLastAttachTimestamp()); assertEquals(LAST_DETACH_TIMESTAMP, IMAGE_DISK_INFO.getLastDetachTimestamp()); assertEquals(GENERATED_ID, SNAPSHOT_DISK_INFO.getGeneratedId()); assertEquals(DISK_ID, SNAPSHOT_DISK_INFO.getDiskId()); assertEquals(SNAPSHOT_DISK_CONFIGURATION, SNAPSHOT_DISK_INFO.getConfiguration()); assertEquals(CREATION_TIMESTAMP, SNAPSHOT_DISK_INFO.getCreationTimestamp()); assertEquals(CREATION_STATUS, SNAPSHOT_DISK_INFO.getCreationStatus()); assertEquals(DESCRIPTION, SNAPSHOT_DISK_INFO.getDescription()); assertEquals(LICENSES, SNAPSHOT_DISK_INFO.getLicenses()); assertEquals(ATTACHED_INSTANCES, SNAPSHOT_DISK_INFO.getAttachedInstances());