use of com.google.api.services.serviceusage.v1beta1.model.Service in project terra-resource-buffer by DataBiosphere.
the class CreateConsumerDefinedQuotaForBigQueryDailyUsageStep method doStep.
/**
* Apply a Consumer Quota Override for the BigQuery Query Usage Quota.
*/
@Override
public StepResult doStep(FlightContext context) throws InterruptedException, RetryException {
Optional<Long> overrideValue = GoogleProjectConfigUtils.bigQueryDailyUsageOverrideValueMebibytes(gcpProjectConfig);
if (overrideValue.isEmpty()) {
// Do not apply any quota override
return StepResult.getStepResultSuccess();
}
long projectNumber = Optional.ofNullable(context.getWorkingMap().get(GOOGLE_PROJECT_NUMBER, Long.class)).orElseThrow();
QuotaOverride overridePerProjectPerDay = buildQuotaOverride(projectNumber, overrideValue.get());
// parent format and other details obtained by hitting the endpoint
// https://serviceusage.googleapis.com/v1beta1/projects/${PROJECT_NUMBER}/services/bigquery.googleapis.com/consumerQuotaMetrics
String parent = String.format("projects/%d/services/bigquery.googleapis.com/consumerQuotaMetrics/" + "bigquery.googleapis.com%%2Fquota%%2Fquery%%2Fusage/limits/%%2Fd%%2Fproject", projectNumber);
try {
// We are decreasing the quota by more than 10%, so we must tell Service Usage to bypass the
// check with the force flag.
Operation createOperation = serviceUsageCow.services().consumerQuotaMetrics().limits().consumerOverrides().create(parent, overridePerProjectPerDay).setForce(true).execute();
OperationCow<Operation> operationCow = serviceUsageCow.operations().operationCow(createOperation);
pollUntilSuccess(operationCow, Duration.ofSeconds(3), Duration.ofMinutes(5));
} catch (IOException e) {
throw new RetryException(e);
}
return StepResult.getStepResultSuccess();
}
use of com.google.api.services.serviceusage.v1beta1.model.Service 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.model.Service 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