/** * Sets the tags 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 setTags(Iterable<String> tags, OperationOption... options) { return setTags(getTags().toBuilder().setValues(tags).build(), options); }
@Override public void run(Compute compute, Tuple<InstanceId, List<String>> instanceAndTags) throws InterruptedException { InstanceId instanceId = instanceAndTags.x(); List<String> tags = instanceAndTags.y(); Instance instance = compute.getInstance(instanceId); if (instance == null) { System.out.printf("Instance %s does not exist%n", instanceId); return; } Operation operation = instance.setTags(tags); 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("Tags set for instance %s%n", instanceId); } else { System.out.printf("Attempt to set tags for instance %s failed%n", instanceId); System.out.printf("Error: %s%n", operation.getErrors()); } }
@Test public void testSetTagsFromList_Null() throws Exception { initializeExpectedInstance(2); expect(compute.getOptions()).andReturn(mockOptions); List<String> tagList = ImmutableList.of("v1", "v2"); Tags tags = Tags.newBuilder().setValues(tagList).setFingerprint("fingerprint").build(); expect(compute.setTags(INSTANCE_ID, tags)).andReturn(null); replay(compute); initializeInstance(); assertNull(instance.setTags(tagList)); }
@Test public void testSetTags_Null() throws Exception { initializeExpectedInstance(2); expect(compute.getOptions()).andReturn(mockOptions); Tags tags = Tags.newBuilder().setValues("v1", "v2").setFingerprint("fingerprint").build(); expect(compute.setTags(INSTANCE_ID, tags)).andReturn(null); replay(compute); initializeInstance(); assertNull(instance.setTags(tags)); }
@Test public void testSetTagsFromList() throws Exception { initializeExpectedInstance(2); expect(compute.getOptions()).andReturn(mockOptions); Operation operation = new Operation.Builder(serviceMockReturnsOptions) .setOperationId(ZoneOperationId.of("project", "op")) .build(); List<String> tagList = ImmutableList.of("v1", "v2"); Tags tags = Tags.newBuilder().setValues(tagList).setFingerprint("fingerprint").build(); expect(compute.setTags(INSTANCE_ID, tags)).andReturn(operation); replay(compute); initializeInstance(); assertSame(operation, instance.setTags(tagList)); }
@Test public void testSetTags() throws Exception { initializeExpectedInstance(2); expect(compute.getOptions()).andReturn(mockOptions); Operation operation = new Operation.Builder(serviceMockReturnsOptions) .setOperationId(ZoneOperationId.of("project", "op")) .build(); Tags tags = Tags.newBuilder().setValues("v1", "v2").setFingerprint("fingerprint").build(); expect(compute.setTags(INSTANCE_ID, tags)).andReturn(operation); replay(compute); initializeInstance(); assertSame(operation, instance.setTags(tags)); }
@Test public void testSetTagsFromListWithOptions() throws Exception { initializeExpectedInstance(2); expect(compute.getOptions()).andReturn(mockOptions); Operation operation = new Operation.Builder(serviceMockReturnsOptions) .setOperationId(ZoneOperationId.of("project", "op")) .build(); List<String> tagList = ImmutableList.of("v1", "v2"); Tags tags = Tags.newBuilder().setValues(tagList).setFingerprint("fingerprint").build(); expect(compute.setTags(INSTANCE_ID, tags, Compute.OperationOption.fields())) .andReturn(operation); replay(compute); initializeInstance(); assertSame(operation, instance.setTags(tagList, Compute.OperationOption.fields())); }
@Test public void testSetTagsWithOptions() throws Exception { initializeExpectedInstance(2); expect(compute.getOptions()).andReturn(mockOptions); Operation operation = new Operation.Builder(serviceMockReturnsOptions) .setOperationId(ZoneOperationId.of("project", "op")) .build(); Tags tags = Tags.newBuilder().setValues("v1", "v2").setFingerprint("fingerprint").build(); expect(compute.setTags(INSTANCE_ID, tags, Compute.OperationOption.fields())) .andReturn(operation); replay(compute); initializeInstance(); assertSame(operation, instance.setTags(tags, Compute.OperationOption.fields())); }
operation = remoteInstance.setTags(tags); operation.waitFor(); remoteInstance = compute.getInstance(instanceId);