use of com.google.api.services.serviceusage.v1beta1.ServiceUsage in project terra-resource-buffer by DataBiosphere.
the class CreateProjectFlightIntegrationTest method testCreateGoogleProject_createsConsumerOverride.
@Test
public void testCreateGoogleProject_createsConsumerOverride() throws Exception {
FlightManager manager = new FlightManager(bufferDao, new StubSubmissionFlightFactory(LatchBeforeAssertResourceStep.class), stairwayComponent, transactionTemplate);
GcpProjectConfig gcpProjectConfig = newBasicGcpConfig().serviceUsage(new ServiceUsage().bigQuery(new BigQueryQuotas().overrideBigQueryDailyUsageQuota(true).bigQueryDailyUsageQuotaOverrideValueMebibytes(new BigDecimal(CONSUMER_QUOTA_OVERRIDE_VALUE_MEBIBYTES))));
Pool pool = preparePool(bufferDao, gcpProjectConfig);
String flightId = manager.submitCreationFlight(pool).orElseThrow();
ResourceId resourceId = extractResourceIdFromFlightState(blockUntilFlightComplete(stairwayComponent, flightId));
Project project = assertProjectExists(resourceId);
String projectNumber = getProjectNumberFromName(project.getName());
String parent = String.format("projects/%s/services/bigquery.googleapis.com/consumerQuotaMetrics/" + "bigquery.googleapis.com%%2Fquota%%2Fquery%%2Fusage/limits/%%2Fd%%2Fproject", projectNumber);
ServiceUsageCow.Services.ConsumerQuotaMetrics.Limits.ConsumerOverrides.List list = serviceUsageCow.services().consumerQuotaMetrics().limits().consumerOverrides().list(parent);
ListConsumerOverridesResponse response = list.execute();
assertEquals(1, response.getOverrides().size(), "single override expected");
QuotaOverride quotaOverride = response.getOverrides().get(0);
assertEquals(CONSUMER_QUOTA_OVERRIDE_VALUE_MEBIBYTES, quotaOverride.getOverrideValue());
}
use of com.google.api.services.serviceusage.v1beta1.ServiceUsage in project terra-cloud-resource-lib by DataBiosphere.
the class ServiceUsageCowTest method listAndEnableServices.
@Test
public void listAndEnableServices() throws Exception {
ServiceUsageCow serviceUsage = defaultServiceUsage();
Project project = ProjectUtils.executeCreateProject();
String projectName = projectIdToName(project.getProjectId());
String storageServiceName = serviceName(project, STORAGE_SERVICE_ID);
ListServicesResponse response1 = serviceUsage.services().list(projectName).setFilter(ENABLED_FILTER).execute();
assertNull(response1.getServices());
Operation operation = serviceUsage.services().batchEnable(projectName, new BatchEnableServicesRequest().setServiceIds(ImmutableList.of(STORAGE_SERVICE_ID))).execute();
OperationTestUtils.pollAndAssertSuccess(serviceUsage.operations().operationCow(operation), Duration.ofSeconds(5), Duration.ofSeconds(60));
ListServicesResponse response2 = serviceUsage.services().list(projectName).setFilter(ENABLED_FILTER).execute();
List<String> services2 = response2.getServices().stream().map(Service::getName).collect(Collectors.toList());
assertThat(services2, Matchers.hasItem(storageServiceName));
}
use of com.google.api.services.serviceusage.v1beta1.ServiceUsage in project pipeline5 by hartwigmedical.
the class QuotaConstrainedComputeEngineTest method ensuresVmsDontExceedMaxCPUForRegion.
@Test
public void ensuresVmsDontExceedMaxCPUForRegion() throws Exception {
ComputeEngine decorated = mock(ComputeEngine.class);
ServiceUsage serviceUsage = mock(ServiceUsage.class);
ServiceUsage.Services services = mock(ServiceUsage.Services.class);
ServiceUsage.Services.ConsumerQuotaMetrics consumerQuotaMetrics = mock(ServiceUsage.Services.ConsumerQuotaMetrics.class);
ServiceUsage.Services.ConsumerQuotaMetrics.Limits limits = mock(ServiceUsage.Services.ConsumerQuotaMetrics.Limits.class);
ServiceUsage.Services.ConsumerQuotaMetrics.Limits.Get limitsGet = mock(ServiceUsage.Services.ConsumerQuotaMetrics.Limits.Get.class);
when(serviceUsage.services()).thenReturn(services);
when(services.consumerQuotaMetrics()).thenReturn(consumerQuotaMetrics);
when(consumerQuotaMetrics.limits()).thenReturn(limits);
ArgumentCaptor<String> quotaName = ArgumentCaptor.forClass(String.class);
when(limits.get(quotaName.capture())).thenReturn(limitsGet);
ConsumerQuotaLimit limit = new ConsumerQuotaLimit().setQuotaBuckets(List.of(new QuotaBucket().setEffectiveLimit(10L).setDimensions(Map.of(REGION, REGION))));
when(limitsGet.execute()).thenReturn(limit);
VirtualMachineJobDefinition jobDefinition = VirtualMachineJobDefinition.builder().name("test").namespacedResults(ResultsDirectory.defaultDirectory()).startupCommand(BashStartupScript.of("empty")).performanceProfile(VirtualMachinePerformanceProfile.custom(10, 10)).build();
ArgumentCaptor<VirtualMachineJobDefinition> constrained = ArgumentCaptor.forClass(VirtualMachineJobDefinition.class);
when(decorated.submit(any(), constrained.capture(), any())).thenReturn(PipelineStatus.SUCCESS);
QuotaConstrainedComputeEngine victim = new QuotaConstrainedComputeEngine(decorated, serviceUsage, REGION, PROJECT, 0.6);
PipelineStatus result = victim.submit(MockRuntimeBucket.test().getRuntimeBucket(), jobDefinition);
assertThat(result).isEqualTo(PipelineStatus.SUCCESS);
MachineType machineType = constrained.getValue().performanceProfile().machineType();
assertThat(machineType.cpus()).isEqualTo(6);
assertThat(machineType.memoryGB()).isEqualTo(6);
}
use of com.google.api.services.serviceusage.v1beta1.ServiceUsage in project jade-data-repo by DataBiosphere.
the class GoogleResourceService method enableServices.
private void enableServices(GoogleProjectResource projectResource) throws InterruptedException {
BatchEnableServicesRequest batchRequest = new BatchEnableServicesRequest().setServiceIds(projectResource.getServiceIds());
try {
ServiceUsage serviceUsage = serviceUsage();
String projectNumberString = "projects/" + projectResource.getGoogleProjectNumber();
logger.info("trying to get services for {} ({})", projectNumberString, projectResource.getGoogleProjectId());
ServiceUsage.Services.List list = serviceUsage.services().list(projectNumberString).setFilter(ENABLED_FILTER);
ListServicesResponse listServicesResponse = list.execute();
logger.info("found: " + String.join(", ", projectResource.getServiceIds()));
List<String> services = projectResource.getServiceIds().stream().map(s -> String.format("%s/services/%s", projectNumberString, s)).collect(Collectors.toList());
List<Service> serviceList = listServicesResponse.getServices();
List<String> actualServiceNames = Collections.emptyList();
if (serviceList != null) {
actualServiceNames = serviceList.stream().map(s -> s.getName()).collect(Collectors.toList());
}
if (actualServiceNames.containsAll(services)) {
logger.info("project already has the right resources enabled, skipping");
} else {
logger.info("project does not have all resources enabled");
ServiceUsage.Services.BatchEnable batchEnable = serviceUsage.services().batchEnable(projectNumberString, batchRequest);
long timeout = resourceConfiguration.getProjectCreateTimeoutSeconds();
blockUntilServiceOperationComplete(serviceUsage, batchEnable.execute(), timeout);
}
} catch (IOException | GeneralSecurityException e) {
throw new GoogleResourceException("Could not enable services", e);
}
}
Aggregations