Search in sources :

Example 1 with BatchEnableServicesRequest

use of com.google.api.services.serviceusage.v1.model.BatchEnableServicesRequest in project terra-resource-buffer by DataBiosphere.

the class EnableServicesStep method doStep.

@Override
public StepResult doStep(FlightContext flightContext) throws RetryException {
    // Skip if enable apis is not set or empty.
    if (gcpProjectConfig.getEnabledApis() == null || gcpProjectConfig.getEnabledApis().isEmpty()) {
        return StepResult.getStepResultSuccess();
    }
    String projectId = flightContext.getWorkingMap().get(GOOGLE_PROJECT_ID, String.class);
    try {
        OperationCow<?> operation = serviceUsageCow.operations().operationCow(serviceUsageCow.services().batchEnable(projectIdToName(projectId), new BatchEnableServicesRequest().setServiceIds(gcpProjectConfig.getEnabledApis())).execute());
        pollUntilSuccess(operation, Duration.ofSeconds(5), Duration.ofMinutes(5));
    } catch (IOException | InterruptedException e) {
        logger.info("Error enabling services GCP project, id: {}", projectId, e);
        return new StepResult(StepStatus.STEP_RESULT_FAILURE_RETRY, e);
    }
    return StepResult.getStepResultSuccess();
}
Also used : BatchEnableServicesRequest(com.google.api.services.serviceusage.v1beta1.model.BatchEnableServicesRequest) IOException(java.io.IOException) StepResult(bio.terra.stairway.StepResult)

Example 2 with BatchEnableServicesRequest

use of com.google.api.services.serviceusage.v1.model.BatchEnableServicesRequest 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));
}
Also used : Project(com.google.api.services.cloudresourcemanager.v3.model.Project) ListServicesResponse(com.google.api.services.serviceusage.v1beta1.model.ListServicesResponse) Operation(com.google.api.services.serviceusage.v1beta1.model.Operation) BatchEnableServicesRequest(com.google.api.services.serviceusage.v1beta1.model.BatchEnableServicesRequest) Test(org.junit.jupiter.api.Test)

Example 3 with BatchEnableServicesRequest

use of com.google.api.services.serviceusage.v1.model.BatchEnableServicesRequest in project terra-cloud-resource-lib by DataBiosphere.

the class ServiceUsageUtils method enableServices.

/**
 * Enables batch services for a project.
 *
 * @param projectId: The projectId to enable services on.
 * @param services: Services to be enabled. See {@link BatchEnableServicesRequest}
 */
public static void enableServices(String projectId, List<String> services) throws Exception {
    Operation operation = getServiceUsageCow().services().batchEnable(projectIdToName(projectId), new BatchEnableServicesRequest().setServiceIds(services)).execute();
    OperationTestUtils.pollAndAssertSuccess(serviceUsageCow.operations().operationCow(operation), Duration.ofSeconds(5), Duration.ofSeconds(100));
}
Also used : Operation(com.google.api.services.serviceusage.v1beta1.model.Operation) BatchEnableServicesRequest(com.google.api.services.serviceusage.v1beta1.model.BatchEnableServicesRequest)

Example 4 with BatchEnableServicesRequest

use of com.google.api.services.serviceusage.v1.model.BatchEnableServicesRequest 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);
    }
}
Also used : StringUtils(org.apache.commons.lang.StringUtils) Status(com.google.api.services.cloudresourcemanager.model.Status) ServiceUsage(com.google.api.services.serviceusage.v1beta1.ServiceUsage) ListServicesResponse(com.google.api.services.serviceusage.v1beta1.model.ListServicesResponse) LoggerFactory(org.slf4j.LoggerFactory) Autowired(org.springframework.beans.factory.annotation.Autowired) StorageOptions(com.google.cloud.storage.StorageOptions) Binding(com.google.api.services.cloudresourcemanager.model.Binding) GoogleJsonResponseException(com.google.api.client.googleapis.json.GoogleJsonResponseException) GeneralSecurityException(java.security.GeneralSecurityException) InaccessibleBillingAccountException(bio.terra.service.resourcemanagement.exception.InaccessibleBillingAccountException) Map(java.util.Map) Bucket(com.google.cloud.storage.Bucket) Project(com.google.api.services.cloudresourcemanager.model.Project) JacksonFactory(com.google.api.client.json.jackson2.JacksonFactory) BucketInfo(com.google.cloud.storage.BucketInfo) Collection(java.util.Collection) HttpTransport(com.google.api.client.http.HttpTransport) GoogleResourceException(bio.terra.service.resourcemanagement.exception.GoogleResourceException) GoogleNetHttpTransport(com.google.api.client.googleapis.javanet.GoogleNetHttpTransport) UUID(java.util.UUID) BatchEnableServicesRequest(com.google.api.services.serviceusage.v1beta1.model.BatchEnableServicesRequest) Collectors(java.util.stream.Collectors) GcsProjectFactory(bio.terra.service.filedata.google.gcs.GcsProjectFactory) CorruptMetadataException(bio.terra.service.snapshot.exception.CorruptMetadataException) ConfigEnum(bio.terra.service.configuration.ConfigEnum) List(java.util.List) Service(com.google.api.services.serviceusage.v1beta1.model.Service) Environment(org.springframework.core.env.Environment) Storage(com.google.cloud.storage.Storage) ConfigurationService(bio.terra.service.configuration.ConfigurationService) GoogleCredential(com.google.api.client.googleapis.auth.oauth2.GoogleCredential) SetIamPolicyRequest(com.google.api.services.cloudresourcemanager.model.SetIamPolicyRequest) HashMap(java.util.HashMap) GetIamPolicyRequest(com.google.api.services.cloudresourcemanager.model.GetIamPolicyRequest) Value(org.springframework.beans.factory.annotation.Value) CloudResourceManager(com.google.api.services.cloudresourcemanager.CloudResourceManager) ResourceId(com.google.api.services.cloudresourcemanager.model.ResourceId) EnablePermissionsFailedException(bio.terra.service.resourcemanagement.exception.EnablePermissionsFailedException) BillingProfile(bio.terra.service.resourcemanagement.BillingProfile) BucketLockException(bio.terra.service.resourcemanagement.exception.BucketLockException) Logger(org.slf4j.Logger) GcsProject(bio.terra.service.filedata.google.gcs.GcsProject) Policy(com.google.api.services.cloudresourcemanager.model.Policy) ProfileService(bio.terra.service.resourcemanagement.ProfileService) Acl(com.google.cloud.storage.Acl) IOException(java.io.IOException) TimeUnit(java.util.concurrent.TimeUnit) Component(org.springframework.stereotype.Component) JsonFactory(com.google.api.client.json.JsonFactory) StorageException(com.google.cloud.storage.StorageException) Operation(com.google.api.services.cloudresourcemanager.model.Operation) GoogleResourceNotFoundException(bio.terra.service.resourcemanagement.exception.GoogleResourceNotFoundException) StorageClass(com.google.cloud.storage.StorageClass) Collections(java.util.Collections) GeneralSecurityException(java.security.GeneralSecurityException) Service(com.google.api.services.serviceusage.v1beta1.model.Service) ConfigurationService(bio.terra.service.configuration.ConfigurationService) ProfileService(bio.terra.service.resourcemanagement.ProfileService) IOException(java.io.IOException) ListServicesResponse(com.google.api.services.serviceusage.v1beta1.model.ListServicesResponse) ServiceUsage(com.google.api.services.serviceusage.v1beta1.ServiceUsage) BatchEnableServicesRequest(com.google.api.services.serviceusage.v1beta1.model.BatchEnableServicesRequest) GoogleResourceException(bio.terra.service.resourcemanagement.exception.GoogleResourceException)

Aggregations

BatchEnableServicesRequest (com.google.api.services.serviceusage.v1beta1.model.BatchEnableServicesRequest)4 ListServicesResponse (com.google.api.services.serviceusage.v1beta1.model.ListServicesResponse)2 Operation (com.google.api.services.serviceusage.v1beta1.model.Operation)2 IOException (java.io.IOException)2 ConfigEnum (bio.terra.service.configuration.ConfigEnum)1 ConfigurationService (bio.terra.service.configuration.ConfigurationService)1 GcsProject (bio.terra.service.filedata.google.gcs.GcsProject)1 GcsProjectFactory (bio.terra.service.filedata.google.gcs.GcsProjectFactory)1 BillingProfile (bio.terra.service.resourcemanagement.BillingProfile)1 ProfileService (bio.terra.service.resourcemanagement.ProfileService)1 BucketLockException (bio.terra.service.resourcemanagement.exception.BucketLockException)1 EnablePermissionsFailedException (bio.terra.service.resourcemanagement.exception.EnablePermissionsFailedException)1 GoogleResourceException (bio.terra.service.resourcemanagement.exception.GoogleResourceException)1 GoogleResourceNotFoundException (bio.terra.service.resourcemanagement.exception.GoogleResourceNotFoundException)1 InaccessibleBillingAccountException (bio.terra.service.resourcemanagement.exception.InaccessibleBillingAccountException)1 CorruptMetadataException (bio.terra.service.snapshot.exception.CorruptMetadataException)1 StepResult (bio.terra.stairway.StepResult)1 GoogleCredential (com.google.api.client.googleapis.auth.oauth2.GoogleCredential)1 GoogleNetHttpTransport (com.google.api.client.googleapis.javanet.GoogleNetHttpTransport)1 GoogleJsonResponseException (com.google.api.client.googleapis.json.GoogleJsonResponseException)1