Search in sources :

Example 1 with ServiceAccountKey

use of com.google.api.services.iam.v1.model.ServiceAccountKey in project google-cloud-intellij by GoogleCloudPlatform.

the class CloudApiManager method createServiceAccountKey.

/**
 * Using the supplied {@link ServiceAccount}, this creates and returns a new {@link
 * ServiceAccountKey}.
 */
private static ServiceAccountKey createServiceAccountKey(CredentialedUser user, ServiceAccount serviceAccount) throws IOException {
    Iam iam = GoogleApiClientFactory.getInstance().getIamClient(user.getCredential());
    CreateServiceAccountKeyRequest keyRequest = new CreateServiceAccountKeyRequest();
    return iam.projects().serviceAccounts().keys().create(serviceAccount.getName(), keyRequest).execute();
}
Also used : Iam(com.google.api.services.iam.v1.Iam) CreateServiceAccountKeyRequest(com.google.api.services.iam.v1.model.CreateServiceAccountKeyRequest)

Example 2 with ServiceAccountKey

use of com.google.api.services.iam.v1.model.ServiceAccountKey in project google-cloud-intellij by GoogleCloudPlatform.

the class CloudApiManagerTest method setupFakeServiceAccountKey.

private void setupFakeServiceAccountKey() {
    serviceAccountKey = new ServiceAccountKey();
    serviceAccountKey.setPrivateKeyData("data");
}
Also used : ServiceAccountKey(com.google.api.services.iam.v1.model.ServiceAccountKey)

Example 3 with ServiceAccountKey

use of com.google.api.services.iam.v1.model.ServiceAccountKey in project google-cloud-intellij by GoogleCloudPlatform.

the class CloudApiManager method createServiceAccountAndDownloadKey.

/**
 * Creates a new {@link ServiceAccount}, adds the supplied set of {@link Role roles} to it, and
 * creates and downloads the service account private key to the user's file system.
 *
 * @param roles the set of {@link Role} to add to the new service account
 * @param name the name of the new service account to be created
 * @param downloadDir the {@link Path} of the download directory of the service account private
 *     key json file
 * @param cloudProject the current {@link CloudProject}
 * @param project the current {@link Project}
 */
static void createServiceAccountAndDownloadKey(Set<Role> roles, String name, Path downloadDir, CloudProject cloudProject, Project project) {
    Optional<CredentialedUser> user = Services.getLoginService().getLoggedInUser(cloudProject.googleUsername());
    if (!user.isPresent()) {
        LOG.error("Cannot enable APIs: logged in user not found.");
        return;
    }
    ProgressIndicator progress = ServiceManager.getService(ProgressManager.class).getProgressIndicator();
    try {
        int numSteps = roles.isEmpty() ? 3 : 4;
        double step = 0;
        updateProgress(progress, GctBundle.message("cloud.apis.service.account.create.account.progress.message", name), step / numSteps);
        step++;
        ServiceAccount serviceAccount = createServiceAccount(user.get(), name, cloudProject);
        if (!roles.isEmpty()) {
            updateProgress(progress, GctBundle.message("cloud.apis.service.account.add.roles.progress.message"), step / numSteps);
            step++;
            addRolesToServiceAccount(user.get(), serviceAccount, roles, cloudProject);
        }
        updateProgress(progress, GctBundle.message("cloud.apis.service.account.create.key.progress.message"), step / numSteps);
        step++;
        ServiceAccountKey serviceAccountKey = createServiceAccountKey(user.get(), serviceAccount);
        updateProgress(progress, GctBundle.message("cloud.apis.service.account.download.key.progress.message"), step / numSteps);
        Path keyPath = writeServiceAccountKey(serviceAccountKey, downloadDir, cloudProject);
        notifyServiceAccountCreated(project, name, keyPath);
    } catch (IOException e) {
        LOG.warn("Exception occurred attempting to create service account on GCP and download its key", e);
        notifyServiceAccountError(project, name, e.toString());
    }
}
Also used : Path(java.nio.file.Path) ServiceAccount(com.google.api.services.iam.v1.model.ServiceAccount) ProgressIndicator(com.intellij.openapi.progress.ProgressIndicator) ProgressManager(com.intellij.openapi.progress.ProgressManager) CredentialedUser(com.google.cloud.tools.intellij.login.CredentialedUser) IOException(java.io.IOException) ServiceAccountKey(com.google.api.services.iam.v1.model.ServiceAccountKey)

Aggregations

ServiceAccountKey (com.google.api.services.iam.v1.model.ServiceAccountKey)2 Iam (com.google.api.services.iam.v1.Iam)1 CreateServiceAccountKeyRequest (com.google.api.services.iam.v1.model.CreateServiceAccountKeyRequest)1 ServiceAccount (com.google.api.services.iam.v1.model.ServiceAccount)1 CredentialedUser (com.google.cloud.tools.intellij.login.CredentialedUser)1 ProgressIndicator (com.intellij.openapi.progress.ProgressIndicator)1 ProgressManager (com.intellij.openapi.progress.ProgressManager)1 IOException (java.io.IOException)1 Path (java.nio.file.Path)1