/** * Sets the metadata for this instance, fingerprint value is taken from this instance's {@code * tags().fingerprint()}. * * @return a zone operation if the set request was issued correctly, {@code null} if the instance * was not found * @throws ComputeException upon failure */ public Operation setMetadata(Map<String, String> metadata, OperationOption... options) { return setMetadata(getMetadata().toBuilder().setValues(metadata).build(), options); }
@Override public void run(Compute compute, Tuple<InstanceId, Map<String, String>> instanceAndMetadata) throws InterruptedException { InstanceId instanceId = instanceAndMetadata.x(); Map<String, String> metadata = instanceAndMetadata.y(); Instance instance = compute.getInstance(instanceId); if (instance == null) { System.out.printf("Instance %s does not exist%n", instanceId); return; } Operation operation = instance.setMetadata(metadata); 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("Metadata set for instance %s%n", instanceId); } else { System.out.printf("Attempt to set metadata for instance %s failed%n", instanceId); System.out.printf("Error: %s%n", operation.getErrors()); } }
@Test public void testSetMetadataFromMap_Null() throws Exception { initializeExpectedInstance(2); expect(compute.getOptions()).andReturn(mockOptions); Map<String, String> metadataMap = ImmutableMap.of("k", "v"); Metadata metadata = Metadata.newBuilder().setValues(metadataMap).setFingerprint("fingerprint").build(); expect(compute.setMetadata(INSTANCE_ID, metadata)).andReturn(null); replay(compute); initializeInstance(); assertNull(instance.setMetadata(metadataMap)); }
@Test public void testSetMetadata_Null() throws Exception { initializeExpectedInstance(2); expect(compute.getOptions()).andReturn(mockOptions); Metadata metadata = Metadata.newBuilder().add("k", "v").setFingerprint("fingerprint").build(); expect(compute.setMetadata(INSTANCE_ID, metadata)).andReturn(null); replay(compute); initializeInstance(); assertNull(instance.setMetadata(metadata)); }
@Test public void testSetMetadataFromMap() throws Exception { initializeExpectedInstance(2); expect(compute.getOptions()).andReturn(mockOptions); Operation operation = new Operation.Builder(serviceMockReturnsOptions) .setOperationId(ZoneOperationId.of("project", "op")) .build(); Map<String, String> metadataMap = ImmutableMap.of("k", "v"); Metadata metadata = Metadata.newBuilder().setValues(metadataMap).setFingerprint("fingerprint").build(); expect(compute.setMetadata(INSTANCE_ID, metadata)).andReturn(operation); replay(compute); initializeInstance(); assertSame(operation, instance.setMetadata(metadataMap)); }
@Test public void testSetMetadata() throws Exception { initializeExpectedInstance(2); expect(compute.getOptions()).andReturn(mockOptions); Operation operation = new Operation.Builder(serviceMockReturnsOptions) .setOperationId(ZoneOperationId.of("project", "op")) .build(); Metadata metadata = Metadata.newBuilder().add("k", "v").setFingerprint("fingerprint").build(); expect(compute.setMetadata(INSTANCE_ID, metadata)).andReturn(operation); replay(compute); initializeInstance(); assertSame(operation, instance.setMetadata(metadata)); }
@Test public void testSetMetadataFromMapWithOptions() throws Exception { initializeExpectedInstance(2); expect(compute.getOptions()).andReturn(mockOptions); Operation operation = new Operation.Builder(serviceMockReturnsOptions) .setOperationId(ZoneOperationId.of("project", "op")) .build(); Map<String, String> metadataMap = ImmutableMap.of("k", "v"); Metadata metadata = Metadata.newBuilder().setValues(metadataMap).setFingerprint("fingerprint").build(); expect(compute.setMetadata(INSTANCE_ID, metadata, Compute.OperationOption.fields())) .andReturn(operation); replay(compute); initializeInstance(); assertSame(operation, instance.setMetadata(metadataMap, Compute.OperationOption.fields())); }
@Test public void testSetMetadataWithOptions() throws Exception { initializeExpectedInstance(2); expect(compute.getOptions()).andReturn(mockOptions); Operation operation = new Operation.Builder(serviceMockReturnsOptions) .setOperationId(ZoneOperationId.of("project", "op")) .build(); Metadata metadata = Metadata.newBuilder().add("k", "v").setFingerprint("fingerprint").build(); expect(compute.setMetadata(INSTANCE_ID, metadata, Compute.OperationOption.fields())) .andReturn(operation); replay(compute); initializeInstance(); assertSame(operation, instance.setMetadata(metadata, Compute.OperationOption.fields())); }
operation = remoteInstance.setMetadata(metadata); operation.waitFor(); remoteInstance = compute.getInstance(instanceId);