blob: 689ab6a0adb17531384924a5534415cecdbcc569 [file] [log] [blame]
package org.apache.airavata.mft.command.line.sub.swift;
import org.apache.airavata.mft.api.client.MFTApiClient;
import org.apache.airavata.mft.common.AuthToken;
import org.apache.airavata.mft.credential.stubs.swift.SwiftPasswordSecret;
import org.apache.airavata.mft.credential.stubs.swift.SwiftSecret;
import org.apache.airavata.mft.credential.stubs.swift.SwiftSecretCreateRequest;
import org.apache.airavata.mft.resource.stubs.swift.storage.SwiftStorage;
import org.apache.airavata.mft.resource.stubs.swift.storage.SwiftStorageCreateRequest;
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 SwiftAddSubCommand implements Callable<Integer> {
@CommandLine.Option(names = {"-n", "--name"}, description = "Storage Name")
private String remoteName;
@CommandLine.Option(names = {"-c", "--container"}, description = "Swift Container Name")
private String container;
@CommandLine.Option(names = {"-e", "--endpoint"}, description = "Endpoint Name")
private String endpoint;
@CommandLine.Option(names = {"-r", "--region"}, description = "Region")
private String region;
@CommandLine.Option(names = {"-v", "--keystoneversion"}, description = "Keystone Version")
private int keystoneVersion;
@CommandLine.Option(names = {"-u", "--user"}, description = "User Name (Password Credentials")
private String userName;
@CommandLine.Option(names = {"-p", "--password"}, description = "Password (Password Credentials")
private String password;
@CommandLine.Option(names = {"-pid", "--projectId"}, description = "Project Id (Password Credentials")
private String projectId;
@CommandLine.Option(names = {"-d", "--domainId"}, description = "Domain Id (Password Credentials")
private String domainId;
@Override
public Integer call() throws Exception {
AuthToken authToken = AuthToken.newBuilder().build();
MFTApiClient mftApiClient = MFTApiClient.MFTApiClientBuilder.newBuilder().build();
SwiftSecret swiftSecret = mftApiClient.getSecretServiceClient().swift().createSwiftSecret(SwiftSecretCreateRequest.newBuilder()
.setAuthzToken(authToken).setPasswordSecret(SwiftPasswordSecret.newBuilder()
.setUserName(userName)
.setPassword(password)
.setProjectId(projectId)
.setDomainId(domainId).build()).build());
System.out.println("Created the swift secret " + swiftSecret.getSecretId());
SwiftStorage swiftStorage = mftApiClient.getStorageServiceClient().swift().createSwiftStorage(SwiftStorageCreateRequest.newBuilder()
.setName(remoteName)
.setContainer(container)
.setEndpoint(endpoint)
.setKeystoneVersion(keystoneVersion)
.setRegion(region).build());
System.out.println("Created swift storage " + swiftStorage.getStorageId());
StorageSecretServiceGrpc.StorageSecretServiceBlockingStub storageSecretClient = mftApiClient.getStorageServiceClient().storageSecret();
StorageSecret storageSecret = storageSecretClient.createStorageSecret(StorageSecretCreateRequest.newBuilder()
.setStorageId(swiftStorage.getStorageId())
.setSecretId(swiftSecret.getSecretId())
.setType(StorageSecret.StorageType.SWIFT).build());
System.out.println("Successfully added Swift remote endpoint");
return 0;
}
}