@Test public void testOf() { DiskImageConfiguration configuration = DiskImageConfiguration.of(SOURCE_DISK); assertEquals(ImageConfiguration.Type.DISK, configuration.getType()); assertNull(configuration.getSourceDiskId()); assertNull(configuration.getSourceType()); assertNull(configuration.getArchiveSizeBytes()); assertEquals(SOURCE_DISK, configuration.getSourceDisk()); }
@Test public void testToAndFromPb() { assertTrue(ImageConfiguration.fromPb(CONFIGURATION.toPb()) instanceof DiskImageConfiguration); compareDiskImageConfiguration( CONFIGURATION, ImageConfiguration.<DiskImageConfiguration>fromPb(CONFIGURATION.toPb())); DiskImageConfiguration configuration = DiskImageConfiguration.of(SOURCE_DISK); compareDiskImageConfiguration( configuration, DiskImageConfiguration.fromPb(configuration.toPb())); }
/** Creates a {@code DiskImageConfiguration} object. */ @Override public DiskImageConfiguration build() { return new DiskImageConfiguration(this); } }
private void compareDiskImageConfiguration( DiskImageConfiguration expected, DiskImageConfiguration value) { assertEquals(expected, value); assertEquals(expected.getType(), value.getType()); assertEquals(expected.getArchiveSizeBytes(), value.getArchiveSizeBytes()); assertEquals(expected.getSourceDisk(), value.getSourceDisk()); assertEquals(expected.getSourceDiskId(), value.getSourceDiskId()); assertEquals(expected.getSourceType(), value.getSourceType()); assertEquals(expected.hashCode(), value.hashCode()); } }
@Override ImageInfo parse(String... args) throws Exception { String message; if (args.length == 3) { String image = args[0]; String zone = args[1]; String disk = args[2]; return ImageInfo.of(ImageId.of(image), DiskImageConfiguration.of(DiskId.of(zone, disk))); } else if (args.length > 3) { message = "Too many arguments."; } else { message = "Missing required arguments."; } throw new IllegalArgumentException(message); }
operation.waitFor(); Disk remoteDisk = compute.getDisk(diskId); ImageInfo imageInfo = ImageInfo.of(imageId, DiskImageConfiguration.of(diskId)); operation = compute.create(imageInfo); operation.waitFor(); assertTrue(image.getConfiguration() instanceof DiskImageConfiguration); DiskImageConfiguration remoteConfiguration = image.getConfiguration(); assertEquals(ImageConfiguration.Type.DISK, remoteConfiguration.getType()); assertEquals(diskName, remoteConfiguration.getSourceDisk().getDisk()); assertNull(image.getStatus()); assertNull(image.getDiskSizeGb()); assertTrue(image.getConfiguration() instanceof DiskImageConfiguration); remoteConfiguration = image.getConfiguration(); assertEquals(ImageConfiguration.Type.DISK, remoteConfiguration.getType()); assertEquals(diskName, remoteConfiguration.getSourceDisk().getDisk()); assertEquals(100L, (long) image.getDiskSizeGb()); assertNotNull(image.getStatus());
@Test public void testToBuilder() { compareDiskImageConfiguration(CONFIGURATION, CONFIGURATION.toBuilder().build()); DiskId newDisk = DiskId.of("newProject", "newZone", "newDisk"); String newDiskId = "newDiskId"; DiskImageConfiguration configuration = CONFIGURATION.toBuilder().setSourceDisk(newDisk).setSourceDiskId(newDiskId).build(); assertEquals(newDisk, configuration.getSourceDisk()); assertEquals(newDiskId, configuration.getSourceDiskId()); configuration = configuration .toBuilder() .setSourceDiskId(SOURCE_DISK_ID) .setSourceDisk(SOURCE_DISK) .build(); compareDiskImageConfiguration(CONFIGURATION, configuration); }
@Test public void testSetProjectId() { DiskImageConfiguration configuration = CONFIGURATION.toBuilder().setSourceDisk(DiskId.of("zone", "disk")).build(); compareDiskImageConfiguration(CONFIGURATION, configuration.setProjectId("project")); }
@Override DiskImageConfiguration setProjectId(String projectId) { if (sourceDisk.getProject() != null) { return this; } return toBuilder().setSourceDisk(sourceDisk.setProjectId(projectId)).build(); }
@SuppressWarnings("unchecked") static <T extends ImageConfiguration> T fromPb(Image imagePb) { if (imagePb.getSourceDisk() != null) { return (T) DiskImageConfiguration.fromPb(imagePb); } return (T) StorageImageConfiguration.fromPb(imagePb); } }
@Override public final int hashCode() { return Objects.hash(baseHashCode(), sourceDisk, sourceDiskId); }
@Override public final boolean equals(Object obj) { return obj == this || obj != null && obj.getClass().equals(DiskImageConfiguration.class) && baseEquals((DiskImageConfiguration) obj); }
/** * Creates an image for this disk given the image's name. * * @return a global operation if the image creation was successfully requested * @throws ComputeException upon failure */ public Operation createImage(String image, OperationOption... options) { ImageInfo imageInfo = ImageInfo.of(ImageId.of(image), DiskImageConfiguration.of(getDiskId())); return compute.create(imageInfo, options); }
@Test public void testSetProjectId() { ImageInfo imageInfo = DISK_IMAGE .toBuilder() .setImageId(ImageId.of("image")) .setConfiguration( DISK_CONFIGURATION.toBuilder().setSourceDisk(DiskId.of("zone", "disk")).build()) .build(); compareImageInfo(DISK_IMAGE, imageInfo.setProjectId("project")); }
/** * Creates an image for this disk given the image's name and description. * * @return a global operation if the image creation was successfully requested * @throws ComputeException upon failure */ public Operation createImage(String image, String description, OperationOption... options) { ImageInfo imageInfo = ImageInfo.newBuilder(ImageId.of(image), DiskImageConfiguration.of(getDiskId())) .setDescription(description) .build(); return compute.create(imageInfo, options); }
@Test public void testBuilder() { assertEquals(SOURCE_TYPE, CONFIGURATION.getSourceType()); assertEquals(SOURCE_DISK, CONFIGURATION.getSourceDisk()); assertEquals(SOURCE_DISK_ID, CONFIGURATION.getSourceDiskId()); assertEquals(ARCHIVE_SIZE_BYTES, CONFIGURATION.getArchiveSizeBytes()); assertEquals(ImageConfiguration.Type.DISK, CONFIGURATION.getType()); }
@Test public void testCreateImage() { initializeExpectedDisk(4); expect(compute.getOptions()).andReturn(mockOptions); Operation operation = new Operation.Builder(serviceMockReturnsOptions) .setOperationId(GlobalOperationId.of("project", "op")) .build(); ImageId imageId = ImageId.of(IMAGE.getImage()); ImageInfo image = ImageInfo.of(imageId, DiskImageConfiguration.of(DISK_ID)); expect(compute.create(image)).andReturn(operation); replay(compute); initializeDisk(); assertSame(operation, disk.createImage(IMAGE.getImage())); }
@Test public void testCreateImageWithOptions() { initializeExpectedDisk(4); expect(compute.getOptions()).andReturn(mockOptions); Operation operation = new Operation.Builder(serviceMockReturnsOptions) .setOperationId(GlobalOperationId.of("project", "op")) .build(); ImageId imageId = ImageId.of(IMAGE.getImage()); ImageInfo image = ImageInfo.of(imageId, DiskImageConfiguration.of(DISK_ID)); expect(compute.create(image, Compute.OperationOption.fields())).andReturn(operation); replay(compute); initializeDisk(); assertSame(operation, disk.createImage(IMAGE.getImage(), Compute.OperationOption.fields())); }
@Test public void testCreateImageWithDescription() { initializeExpectedDisk(4); expect(compute.getOptions()).andReturn(mockOptions); Operation operation = new Operation.Builder(serviceMockReturnsOptions) .setOperationId(GlobalOperationId.of("project", "op")) .build(); ImageId imageId = ImageId.of(IMAGE.getImage()); ImageInfo image = ImageInfo.newBuilder(imageId, DiskImageConfiguration.of(DISK_ID)) .setDescription("description") .build(); expect(compute.create(image)).andReturn(operation); replay(compute); initializeDisk(); assertSame(operation, disk.createImage(IMAGE.getImage(), "description")); }