blob: e3e24f5973ea1d054ec9a0c966699c2abd9498de [file] [log] [blame]
package org.apache.airavata.mft.command.line.sub.s3.storage;
import org.apache.airavata.mft.api.client.MFTApiClient;
import org.apache.airavata.mft.common.AuthToken;
import org.apache.airavata.mft.credential.stubs.s3.S3Secret;
import org.apache.airavata.mft.credential.stubs.s3.S3SecretCreateRequest;
import org.apache.airavata.mft.resource.service.s3.S3StorageServiceGrpc;
import org.apache.airavata.mft.resource.stubs.s3.storage.S3Storage;
import org.apache.airavata.mft.resource.stubs.s3.storage.S3StorageCreateRequest;
import org.apache.airavata.mft.storage.stubs.storagesecret.StorageSecret;
import org.apache.airavata.mft.storage.stubs.storagesecret.StorageSecretCreateRequest;
import org.apache.airavata.mft.storage.stubs.storagesecret.StorageSecretServiceGrpc;
import picocli.CommandLine;
import java.util.concurrent.Callable;
@CommandLine.Command(name = "add")
public class S3StorageAddSubCommand implements Callable<Integer> {
@CommandLine.Option(names = {"-n", "--name"}, description = "Storage Name")
private String remoteName;
@CommandLine.Option(names = {"-b", "--bucket"}, description = "Bucket Name")
private String bucket;
@CommandLine.Option(names = {"-r", "--region"}, description = "Region")
private String region;
@CommandLine.Option(names = {"-e", "--endpoint"}, description = "S3 API Endpoint")
private String endpoint;
@CommandLine.Option(names = {"-k", "--key"}, description = "Access Key")
private String accessKey;
@CommandLine.Option(names = {"-s", "--secret"}, description = "Access Secret")
private String accessSecret;
@CommandLine.Option(names = {"-t", "--token"}, description = "Session Token", defaultValue = "")
private String sessionToken;
@Override
public Integer call() throws Exception {
AuthToken authToken = AuthToken.newBuilder().build();
MFTApiClient mftApiClient = MFTApiClient.MFTApiClientBuilder.newBuilder().build();
S3Secret s3Secret = mftApiClient.getSecretServiceClient().s3()
.createS3Secret(S3SecretCreateRequest.newBuilder()
.setAccessKey(accessKey)
.setSecretKey(accessSecret)
.setSessionToken(sessionToken)
.setAuthzToken(authToken).build());
S3StorageServiceGrpc.S3StorageServiceBlockingStub s3StorageClient = mftApiClient.getStorageServiceClient().s3();
StorageSecretServiceGrpc.StorageSecretServiceBlockingStub storageSecretClient = mftApiClient.getStorageServiceClient().storageSecret();
S3Storage s3Storage = s3StorageClient.createS3Storage(S3StorageCreateRequest.newBuilder()
.setName(remoteName)
.setEndpoint(endpoint)
.setBucketName(bucket)
.setRegion(region).build());
StorageSecret storageSecret = storageSecretClient.createStorageSecret(StorageSecretCreateRequest.newBuilder()
.setStorageId(s3Storage.getStorageId())
.setSecretId(s3Secret.getSecretId())
.setType(StorageSecret.StorageType.S3).build());
System.out.println("Storage Id " + s3Storage.getStorageId());
return 0;
}
}