use of com.google.api.services.compute.model.Operation in project pipeline5 by hartwigmedical.
the class GoogleComputeEngineTest method setUp.
@Before
public void setUp() throws Exception {
images = mock(Compute.Images.class);
imagesFromFamily = mock(Compute.Images.GetFromFamily.class);
when(imagesFromFamily.execute()).thenReturn(new Image());
when(images.getFromFamily(ARGUMENTS.project(), VirtualMachineJobDefinition.STANDARD_IMAGE)).thenReturn(imagesFromFamily);
final ArgumentCaptor<Instance> instanceArgumentCaptor = ArgumentCaptor.forClass(Instance.class);
Operation insertOperation = mock(Operation.class);
when(insertOperation.getName()).thenReturn("insert");
final Compute.Instances instances = mock(Compute.Instances.class);
lifecycleManager = mock(InstanceLifecycleManager.class);
instance = mock(Instance.class);
when(lifecycleManager.newInstance()).thenReturn(instance);
when(lifecycleManager.deleteOldInstancesAndStart(instanceArgumentCaptor.capture(), any(), any())).thenReturn(insertOperation);
when(instance.getName()).thenReturn(INSTANCE_NAME);
Compute.Instances.Stop stop = mock(Compute.Instances.Stop.class);
Operation stopOperation = mock(Operation.class);
when(stopOperation.getName()).thenReturn("stop");
when(stopOperation.getStatus()).thenReturn(DONE);
when(stop.execute()).thenReturn(stopOperation);
when(instances.stop(ARGUMENTS.project(), FIRST_ZONE_NAME, INSTANCE_NAME)).thenReturn(stop);
Compute.Instances.Delete delete = mock(Compute.Instances.Delete.class);
Operation deleteOperation = mock(Operation.class);
when(deleteOperation.getName()).thenReturn("delete");
when(deleteOperation.getStatus()).thenReturn(DONE);
when(delete.execute()).thenReturn(stopOperation);
when(instances.delete(ARGUMENTS.project(), FIRST_ZONE_NAME, INSTANCE_NAME)).thenReturn(delete);
Compute.Instances.List list = mock(Compute.Instances.List.class);
InstanceList instanceList = mock(InstanceList.class);
Instance one = mock(Instance.class);
Instance two = mock(Instance.class);
Instance three = mock(Instance.class);
when(one.getName()).thenReturn("vm-1");
when(two.getName()).thenReturn("vm-2");
when(three.getName()).thenReturn("vm-3");
List<Instance> existingInstances = Arrays.asList(one, two, three);
when(instances.list(any(), any())).thenReturn(list);
when(list.execute()).thenReturn(instanceList);
when(instanceList.getItems()).thenReturn(existingInstances);
final Compute.ZoneOperations zoneOperations = mock(Compute.ZoneOperations.class);
final Compute.ZoneOperations.Get zoneOpGet = mock(Compute.ZoneOperations.Get.class);
Operation zoneOpGetOperation = mock(Operation.class);
when(zoneOpGetOperation.getStatus()).thenReturn(DONE);
when(zoneOpGet.execute()).thenReturn(zoneOpGetOperation);
when(zoneOperations.get(ARGUMENTS.project(), FIRST_ZONE_NAME, "insert")).thenReturn(zoneOpGet);
when(zoneOperations.get(ARGUMENTS.project(), FIRST_ZONE_NAME, "stop")).thenReturn(zoneOpGet);
compute = mock(Compute.class);
when(compute.images()).thenReturn(images);
when(compute.instances()).thenReturn(instances);
when(compute.zoneOperations()).thenReturn(zoneOperations);
Compute.Zones zones = mock(Compute.Zones.class);
Compute.Zones.List zonesList = mock(Compute.Zones.List.class);
when(zonesList.execute()).thenReturn(new ZoneList().setItems(Lists.newArrayList(zone(FIRST_ZONE_NAME), zone(SECOND_ZONE_NAME))));
when(zones.list(ARGUMENTS.project())).thenReturn(zonesList);
when(compute.zones()).thenReturn(zones);
bucketWatcher = mock(BucketCompletionWatcher.class);
victim = new GoogleComputeEngine(ARGUMENTS, compute, z -> {
}, lifecycleManager, bucketWatcher, Labels.of(Arguments.testDefaults(), TestInputs.defaultSomaticRunMetadata()));
runtimeBucket = MockRuntimeBucket.test();
jobDefinition = VirtualMachineJobDefinition.builder().name("test").namespacedResults(RESULTS_DIRECTORY).startupCommand(BashStartupScript.of(runtimeBucket.getRuntimeBucket().name())).build();
}
use of com.google.api.services.compute.model.Operation in project pipeline5 by hartwigmedical.
the class GoogleComputeEngineTest method triesMultipleZonesWhenResourcesExhausted.
@Test
public void triesMultipleZonesWhenResourcesExhausted() {
Operation resourcesExhausted = new Operation().setStatus("DONE").setName("insert").setError(new Operation.Error().setErrors(Collections.singletonList(new Operation.Error.Errors().setCode(GoogleComputeEngine.ZONE_EXHAUSTED_ERROR_CODE))));
when(lifecycleManager.deleteOldInstancesAndStart(instance, FIRST_ZONE_NAME, INSTANCE_NAME)).thenReturn(resourcesExhausted, mock(Operation.class));
when(bucketWatcher.currentState(any(), any())).thenReturn(State.STILL_WAITING, State.STILL_WAITING, State.SUCCESS);
victim.submit(runtimeBucket.getRuntimeBucket(), jobDefinition);
verify(lifecycleManager).deleteOldInstancesAndStart(instance, SECOND_ZONE_NAME, INSTANCE_NAME);
}
use of com.google.api.services.compute.model.Operation in project pipeline5 by hartwigmedical.
the class GoogleComputeEngineTest method triesMultipleZonesWhenUnsupportedOperation.
@Test
public void triesMultipleZonesWhenUnsupportedOperation() {
Operation resourcesExhausted = new Operation().setStatus("DONE").setName("insert").setError(new Operation.Error().setErrors(Collections.singletonList(new Operation.Error.Errors().setCode(GoogleComputeEngine.UNSUPPORTED_OPERATION_ERROR_CODE))));
when(lifecycleManager.deleteOldInstancesAndStart(instance, FIRST_ZONE_NAME, INSTANCE_NAME)).thenReturn(resourcesExhausted, mock(Operation.class));
when(bucketWatcher.currentState(any(), any())).thenReturn(State.STILL_WAITING, State.STILL_WAITING, State.SUCCESS);
victim.submit(runtimeBucket.getRuntimeBucket(), jobDefinition);
verify(lifecycleManager).deleteOldInstancesAndStart(instance, SECOND_ZONE_NAME, INSTANCE_NAME);
}
use of com.google.api.services.compute.model.Operation in project pipeline5 by hartwigmedical.
the class InstanceLifecycleManagerTest method shouldStop.
@Test
public void shouldStop() throws Exception {
Compute.Instances.Stop stop = mock(Compute.Instances.Stop.class);
Operation stopOperation = mock(Operation.class);
String stopOperationName = "stoperation";
when(instances.stop(ARGUMENTS.project(), zoneOne, vmName)).thenReturn(stop);
when(stop.execute()).thenReturn(stopOperation);
when(stopOperation.getName()).thenReturn(stopOperationName);
when(stopOperation.getStatus()).thenReturn(DONE_STATUS);
Compute.ZoneOperations zoneOperations = mock(Compute.ZoneOperations.class);
Compute.ZoneOperations.Get zoneOpsGet = mock(Compute.ZoneOperations.Get.class);
Operation statusOperation = mock(Operation.class);
when(compute.zoneOperations()).thenReturn(zoneOperations);
when(zoneOperations.get(ARGUMENTS.project(), zoneOne, stopOperationName)).thenReturn(zoneOpsGet);
when(zoneOpsGet.execute()).thenReturn(statusOperation);
when(statusOperation.getStatus()).thenReturn(DONE_STATUS);
victim.stop(zoneOne, vmName);
verify(stop).execute();
}
use of com.google.api.services.compute.model.Operation in project terra-resource-buffer by DataBiosphere.
the class CreateNetworkStep method doStep.
@Override
public StepResult doStep(FlightContext flightContext) throws RetryException {
String projectId = flightContext.getWorkingMap().get(GOOGLE_PROJECT_ID, String.class);
try {
Network network = new Network().setName(GoogleUtils.NETWORK_NAME).setAutoCreateSubnetworks(false);
// Skip this steps if network already exists. This may happen when previous step's polling
// times out, while network is created before next retry.
Optional<Operation> insertOperation = createResourceAndIgnoreConflict(() -> computeCow.networks().insert(projectId, network).execute());
if (insertOperation.isPresent()) {
OperationCow<?> operation = computeCow.globalOperations().operationCow(projectId, insertOperation.get());
pollUntilSuccess(operation, Duration.ofSeconds(3), Duration.ofMinutes(5));
}
} catch (IOException | InterruptedException e) {
logger.info("Error when creating network", e);
return new StepResult(StepStatus.STEP_RESULT_FAILURE_RETRY, e);
}
return StepResult.getStepResultSuccess();
}
Aggregations