DImuthuUpe commented on a change in pull request #6:
URL: https://github.com/apache/airavata-mft/pull/6#discussion_r411819553



##########
File path: api-gateway/.mvn/wrapper/MavenWrapperDownloader.java
##########
@@ -0,0 +1,118 @@
+/*

Review comment:
       Is this an auto generated file? What is the purpose of this?

##########
File path: api-gateway/.mvn/wrapper/maven-wrapper.properties
##########
@@ -0,0 +1,2 @@
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip

Review comment:
       Remove this as this is not related to the PR

##########
File path: api-gateway/.gitignore
##########
@@ -0,0 +1,31 @@
+HELP.md

Review comment:
       What is the purpose of this api-gateway directory?

##########
File path: services/resource-service/server/pom.xml
##########
@@ -47,7 +47,7 @@
         <dependency>
             <groupId>org.apache.airavata</groupId>
             <artifactId>registry-api-stubs</artifactId>
-            <version>0.19-SNAPSHOT</version>

Review comment:
       Bring 0.19-SNAPSHOT back. You should build latest mft-integration branch 
of airavata repo locally to get this dependency version

##########
File path: api-gateway/pom.xml
##########
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>

Review comment:
       Remove this as this is not related to the PR

##########
File path: api-gateway/mvnw
##########
@@ -0,0 +1,322 @@
+#!/bin/sh

Review comment:
       Remove this as this is not related to the PR

##########
File path: api-gateway/mvnw.cmd
##########
@@ -0,0 +1,182 @@
+@REM 
----------------------------------------------------------------------------

Review comment:
       Remove this as this is not related to the PR

##########
File path: 
api-gateway/src/main/java/com/example/apigateway/ApiGatewayApplication.java
##########
@@ -0,0 +1,13 @@
+package com.example.apigateway;

Review comment:
       Remove this as this is not related to the PR

##########
File path: transport/gcp-transport/mvnw.cmd
##########
@@ -0,0 +1,182 @@
+@REM 
----------------------------------------------------------------------------

Review comment:
       Remove this file

##########
File path: api-gateway/src/main/java/com/example/apigateway/controller.java
##########
@@ -0,0 +1,123 @@
+package com.example.apigateway;

Review comment:
       Remove this as this is not related to the PR

##########
File path: services/resource-service/server/src/main/resources/resources.json
##########
@@ -5,18 +5,18 @@
     "resourcePath": "/tmp/1mb.txt",
     "scpStorage" : {
       "storageId": "remote-ssh-storage",
-      "host": "149.165.156.124",
+      "host": "149.165.171.139",
       "port": 22,
       "user": "root"
     }
   },
   {
     "type": "SCP",
     "resourceId":  "remote-ssh-resource2",
-    "resourcePath": "/tmp/10mb.txt",
+    "resourcePath": "/tmp/KAMA20200408_003653_V06",
     "scpStorage" : {
       "storageId": "remote-ssh-storage",
-      "host": "149.165.156.124",

Review comment:
       Bring original value back

##########
File path: services/resource-service/server/src/main/resources/resources.json
##########
@@ -5,18 +5,18 @@
     "resourcePath": "/tmp/1mb.txt",
     "scpStorage" : {
       "storageId": "remote-ssh-storage",
-      "host": "149.165.156.124",

Review comment:
       Bring original value back

##########
File path: 
transport/gcp-transport/src/main/java/org/apache/airavata/mft/transport/gcp/GCSMetadataCollector.java
##########
@@ -0,0 +1,96 @@
+package org.apache.airavata.mft.transport.gcp;
+
+import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
+import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
+import com.google.api.client.http.HttpTransport;
+import com.google.api.client.json.JsonFactory;
+import com.google.api.client.json.jackson2.JacksonFactory;
+import com.google.api.services.storage.Storage;
+import com.google.api.services.storage.StorageScopes;
+import com.google.api.services.storage.model.StorageObject;
+
+import org.apache.airavata.mft.core.ResourceMetadata;
+import org.apache.airavata.mft.core.api.MetadataCollector;
+import org.apache.airavata.mft.resource.client.ResourceServiceClient;
+import org.apache.airavata.mft.resource.service.*;
+import org.apache.airavata.mft.secret.client.SecretServiceClient;
+import org.apache.airavata.mft.secret.service.*;
+
+import java.io.FileInputStream;
+import java.math.BigInteger;
+import java.util.Base64;
+import java.util.Collection;
+
+public class GCSMetadataCollector implements MetadataCollector{
+
+    private String resourceServiceHost;
+    private int resourceServicePort;
+    private String secretServiceHost;
+    private int secretServicePort;
+    boolean initialized = false;
+
+    @Override
+    public void init(String resourceServiceHost, int resourceServicePort, 
String secretServiceHost, int secretServicePort) {
+        this.resourceServiceHost = resourceServiceHost;
+        this.resourceServicePort = resourceServicePort;
+        this.secretServiceHost = secretServiceHost;
+        this.secretServicePort = secretServicePort;
+        this.initialized = true;
+    }
+
+    private void checkInitialized() {
+        if (!initialized) {
+            throw new IllegalStateException("GCS Metadata Collector is not 
initialized");
+        }
+    }
+
+    @Override
+    public ResourceMetadata getGetResourceMetadata(String resourceId, String 
credentialToken) throws Exception {
+        checkInitialized();
+        ResourceServiceGrpc.ResourceServiceBlockingStub resourceClient = 
ResourceServiceClient.buildClient(resourceServiceHost, resourceServicePort);
+        GCSResource gcsResource = 
resourceClient.getGCSResource(GCSResourceGetRequest.newBuilder().setResourceId(resourceId).build());
+
+        SecretServiceGrpc.SecretServiceBlockingStub secretClient = 
SecretServiceClient.buildClient(secretServiceHost, secretServicePort);
+        GCSSecret gcsSecret = 
secretClient.getGCSSecret(GCSSecretGetRequest.newBuilder().setSecretId(credentialToken).build());
+
+        HttpTransport transport = GoogleNetHttpTransport.newTrustedTransport();
+        JsonFactory jsonFactory = new JacksonFactory();
+        GoogleCredential credential = GoogleCredential.fromStream(new 
FileInputStream(gcsSecret.getJsonCredentialsFilePath()),transport,jsonFactory);
+        if (credential.createScopedRequired()) {
+            Collection<String> scopes = StorageScopes.all();
+            credential = credential.createScoped(scopes);
+        }
+
+        Storage storage=new Storage.Builder(transport, jsonFactory, 
credential).build();
+
+        ResourceMetadata metadata = new ResourceMetadata();
+        StorageObject gcsMetadata = 
storage.objects().get(gcsResource.getBucketName(),gcsResource.getResourcePath()).execute();
+        metadata.setResourceSize(gcsMetadata.getSize().longValue());
+        String md5Sum=String.format("%032x", new BigInteger(1, 
Base64.getDecoder().decode(gcsMetadata.getMd5Hash())));

Review comment:
       Spaces around =

##########
File path: 
api-gateway/src/test/java/com/example/apigateway/ApiGatewayApplicationTests.java
##########
@@ -0,0 +1,13 @@
+package com.example.apigateway;

Review comment:
       Remove this as this is not related to the PR

##########
File path: services/secret-service/server/pom.xml
##########
@@ -66,7 +66,7 @@
         <dependency>
             <groupId>org.apache.airavata</groupId>
             <artifactId>airavata-data-models</artifactId>
-            <version>0.19-SNAPSHOT</version>

Review comment:
       Bring original value back

##########
File path: 
services/secret-service/server/src/main/java/org/apache/airavata/mft/secret/server/backend/file/FileBasedSecretBackend.java
##########
@@ -170,4 +170,46 @@ public boolean updateAzureSecret(AzureSecretUpdateRequest 
request) throws Except
     public boolean deleteAzureSecret(AzureSecretDeleteRequest request) throws 
Exception {
         throw new UnsupportedOperationException("Operation is not supported in 
backend");
     }
+
+    @Override
+    public Optional<GCSSecret> getGCSSecret(GCSSecretGetRequest request) 
throws Exception {
+        JSONParser jsonParser = new JSONParser();
+        InputStream inputStream = 
FileBasedSecretBackend.class.getClassLoader().getResourceAsStream(secretFile);
+
+        try (InputStreamReader reader = new InputStreamReader(inputStream)) {
+            Object obj = jsonParser.parse(reader);
+
+            JSONArray resourceList = (JSONArray) obj;
+
+            List<GCSSecret> gcsSecrets = (List<GCSSecret>) 
resourceList.stream()
+                    .filter(resource -> "GCS".equals(((JSONObject) 
resource).get("type").toString()))
+                    .map(resource -> {
+                        JSONObject r = (JSONObject) resource;
+
+                        GCSSecret gcsSecret = GCSSecret.newBuilder()
+                                .setSecretId(r.get("secretId").toString())
+                                
.setJsonCredentialsFilePath(r.get("jsonCredentialsFilePath").toString()).build();

Review comment:
       We can't expect the JSON file path available in agent running location. 
This makes very hard to make the agent stateless. You should serialize json 
into the secret itself

##########
File path: services/resource-service/server/src/main/resources/resources.json
##########
@@ -5,18 +5,18 @@
     "resourcePath": "/tmp/1mb.txt",
     "scpStorage" : {
       "storageId": "remote-ssh-storage",
-      "host": "149.165.156.124",
+      "host": "149.165.171.139",
       "port": 22,
       "user": "root"
     }
   },
   {
     "type": "SCP",
     "resourceId":  "remote-ssh-resource2",
-    "resourcePath": "/tmp/10mb.txt",

Review comment:
       Bring original value back

##########
File path: 
transport/gcp-transport/src/main/java/org/apache/airavata/mft/transport/gcp/GCSMetadataCollector.java
##########
@@ -0,0 +1,96 @@
+package org.apache.airavata.mft.transport.gcp;
+
+import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
+import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
+import com.google.api.client.http.HttpTransport;
+import com.google.api.client.json.JsonFactory;
+import com.google.api.client.json.jackson2.JacksonFactory;
+import com.google.api.services.storage.Storage;
+import com.google.api.services.storage.StorageScopes;
+import com.google.api.services.storage.model.StorageObject;
+
+import org.apache.airavata.mft.core.ResourceMetadata;
+import org.apache.airavata.mft.core.api.MetadataCollector;
+import org.apache.airavata.mft.resource.client.ResourceServiceClient;
+import org.apache.airavata.mft.resource.service.*;
+import org.apache.airavata.mft.secret.client.SecretServiceClient;
+import org.apache.airavata.mft.secret.service.*;
+
+import java.io.FileInputStream;
+import java.math.BigInteger;
+import java.util.Base64;
+import java.util.Collection;
+
+public class GCSMetadataCollector implements MetadataCollector{
+
+    private String resourceServiceHost;
+    private int resourceServicePort;
+    private String secretServiceHost;
+    private int secretServicePort;
+    boolean initialized = false;
+
+    @Override
+    public void init(String resourceServiceHost, int resourceServicePort, 
String secretServiceHost, int secretServicePort) {
+        this.resourceServiceHost = resourceServiceHost;
+        this.resourceServicePort = resourceServicePort;
+        this.secretServiceHost = secretServiceHost;
+        this.secretServicePort = secretServicePort;
+        this.initialized = true;
+    }
+
+    private void checkInitialized() {
+        if (!initialized) {
+            throw new IllegalStateException("GCS Metadata Collector is not 
initialized");
+        }
+    }
+
+    @Override
+    public ResourceMetadata getGetResourceMetadata(String resourceId, String 
credentialToken) throws Exception {
+        checkInitialized();
+        ResourceServiceGrpc.ResourceServiceBlockingStub resourceClient = 
ResourceServiceClient.buildClient(resourceServiceHost, resourceServicePort);
+        GCSResource gcsResource = 
resourceClient.getGCSResource(GCSResourceGetRequest.newBuilder().setResourceId(resourceId).build());
+
+        SecretServiceGrpc.SecretServiceBlockingStub secretClient = 
SecretServiceClient.buildClient(secretServiceHost, secretServicePort);
+        GCSSecret gcsSecret = 
secretClient.getGCSSecret(GCSSecretGetRequest.newBuilder().setSecretId(credentialToken).build());
+
+        HttpTransport transport = GoogleNetHttpTransport.newTrustedTransport();
+        JsonFactory jsonFactory = new JacksonFactory();
+        GoogleCredential credential = GoogleCredential.fromStream(new 
FileInputStream(gcsSecret.getJsonCredentialsFilePath()),transport,jsonFactory);
+        if (credential.createScopedRequired()) {
+            Collection<String> scopes = StorageScopes.all();
+            credential = credential.createScoped(scopes);
+        }
+
+        Storage storage=new Storage.Builder(transport, jsonFactory, 
credential).build();

Review comment:
       keep spaces around =

##########
File path: transport/gcp-transport/mvnw
##########
@@ -0,0 +1,310 @@
+#!/bin/sh

Review comment:
       Remove this file

##########
File path: 
transport/gcp-transport/src/main/java/org/apache/airavata/mft/transport/gcp/GCSMetadataCollector.java
##########
@@ -0,0 +1,96 @@
+package org.apache.airavata.mft.transport.gcp;
+
+import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
+import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
+import com.google.api.client.http.HttpTransport;
+import com.google.api.client.json.JsonFactory;
+import com.google.api.client.json.jackson2.JacksonFactory;
+import com.google.api.services.storage.Storage;
+import com.google.api.services.storage.StorageScopes;
+import com.google.api.services.storage.model.StorageObject;
+
+import org.apache.airavata.mft.core.ResourceMetadata;
+import org.apache.airavata.mft.core.api.MetadataCollector;
+import org.apache.airavata.mft.resource.client.ResourceServiceClient;
+import org.apache.airavata.mft.resource.service.*;
+import org.apache.airavata.mft.secret.client.SecretServiceClient;
+import org.apache.airavata.mft.secret.service.*;
+
+import java.io.FileInputStream;
+import java.math.BigInteger;
+import java.util.Base64;
+import java.util.Collection;
+
+public class GCSMetadataCollector implements MetadataCollector{
+
+    private String resourceServiceHost;
+    private int resourceServicePort;
+    private String secretServiceHost;
+    private int secretServicePort;
+    boolean initialized = false;
+
+    @Override
+    public void init(String resourceServiceHost, int resourceServicePort, 
String secretServiceHost, int secretServicePort) {
+        this.resourceServiceHost = resourceServiceHost;
+        this.resourceServicePort = resourceServicePort;
+        this.secretServiceHost = secretServiceHost;
+        this.secretServicePort = secretServicePort;
+        this.initialized = true;
+    }
+
+    private void checkInitialized() {
+        if (!initialized) {
+            throw new IllegalStateException("GCS Metadata Collector is not 
initialized");
+        }
+    }
+
+    @Override
+    public ResourceMetadata getGetResourceMetadata(String resourceId, String 
credentialToken) throws Exception {
+        checkInitialized();
+        ResourceServiceGrpc.ResourceServiceBlockingStub resourceClient = 
ResourceServiceClient.buildClient(resourceServiceHost, resourceServicePort);
+        GCSResource gcsResource = 
resourceClient.getGCSResource(GCSResourceGetRequest.newBuilder().setResourceId(resourceId).build());
+
+        SecretServiceGrpc.SecretServiceBlockingStub secretClient = 
SecretServiceClient.buildClient(secretServiceHost, secretServicePort);
+        GCSSecret gcsSecret = 
secretClient.getGCSSecret(GCSSecretGetRequest.newBuilder().setSecretId(credentialToken).build());
+
+        HttpTransport transport = GoogleNetHttpTransport.newTrustedTransport();
+        JsonFactory jsonFactory = new JacksonFactory();
+        GoogleCredential credential = GoogleCredential.fromStream(new 
FileInputStream(gcsSecret.getJsonCredentialsFilePath()),transport,jsonFactory);
+        if (credential.createScopedRequired()) {
+            Collection<String> scopes = StorageScopes.all();
+            credential = credential.createScoped(scopes);
+        }
+
+        Storage storage=new Storage.Builder(transport, jsonFactory, 
credential).build();
+
+        ResourceMetadata metadata = new ResourceMetadata();
+        StorageObject gcsMetadata = 
storage.objects().get(gcsResource.getBucketName(),gcsResource.getResourcePath()).execute();
+        metadata.setResourceSize(gcsMetadata.getSize().longValue());
+        String md5Sum=String.format("%032x", new BigInteger(1, 
Base64.getDecoder().decode(gcsMetadata.getMd5Hash())));
+        metadata.setMd5sum(md5Sum);
+        
metadata.setUpdateTime(gcsMetadata.getTimeStorageClassUpdated().getValue());
+        metadata.setCreatedTime(gcsMetadata.getTimeCreated().getValue());
+        return metadata;
+    }
+
+    @Override
+    public Boolean isAvailable(String resourceId, String credentialToken) 
throws Exception {
+        checkInitialized();
+        ResourceServiceGrpc.ResourceServiceBlockingStub resourceClient = 
ResourceServiceClient.buildClient(resourceServiceHost, resourceServicePort);
+        GCSResource gcsResource = 
resourceClient.getGCSResource(GCSResourceGetRequest.newBuilder().setResourceId(resourceId).build());
+
+        SecretServiceGrpc.SecretServiceBlockingStub secretClient = 
SecretServiceClient.buildClient(secretServiceHost, secretServicePort);
+        GCSSecret gcsSecret = 
secretClient.getGCSSecret(GCSSecretGetRequest.newBuilder().setSecretId(credentialToken).build());
+
+        HttpTransport transport = GoogleNetHttpTransport.newTrustedTransport();
+        JsonFactory jsonFactory = new JacksonFactory();
+        GoogleCredential credential = GoogleCredential.fromStream(new 
FileInputStream(gcsSecret.getJsonCredentialsFilePath()),transport,jsonFactory);
+        if (credential.createScopedRequired()) {
+            Collection<String> scopes = StorageScopes.all();
+            credential = credential.createScoped(scopes);
+        }
+
+        Storage storage=new Storage.Builder(transport, jsonFactory, 
credential).build();

Review comment:
       Spaces around =

##########
File path: 
transport/gcp-transport/src/main/java/org/apache/airavata/mft/transport/gcp/GCSMetadataCollector.java
##########
@@ -0,0 +1,96 @@
+package org.apache.airavata.mft.transport.gcp;
+
+import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
+import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
+import com.google.api.client.http.HttpTransport;
+import com.google.api.client.json.JsonFactory;
+import com.google.api.client.json.jackson2.JacksonFactory;
+import com.google.api.services.storage.Storage;
+import com.google.api.services.storage.StorageScopes;
+import com.google.api.services.storage.model.StorageObject;
+
+import org.apache.airavata.mft.core.ResourceMetadata;
+import org.apache.airavata.mft.core.api.MetadataCollector;
+import org.apache.airavata.mft.resource.client.ResourceServiceClient;
+import org.apache.airavata.mft.resource.service.*;
+import org.apache.airavata.mft.secret.client.SecretServiceClient;
+import org.apache.airavata.mft.secret.service.*;
+
+import java.io.FileInputStream;
+import java.math.BigInteger;
+import java.util.Base64;
+import java.util.Collection;
+
+public class GCSMetadataCollector implements MetadataCollector{
+
+    private String resourceServiceHost;
+    private int resourceServicePort;
+    private String secretServiceHost;
+    private int secretServicePort;
+    boolean initialized = false;
+
+    @Override
+    public void init(String resourceServiceHost, int resourceServicePort, 
String secretServiceHost, int secretServicePort) {
+        this.resourceServiceHost = resourceServiceHost;
+        this.resourceServicePort = resourceServicePort;
+        this.secretServiceHost = secretServiceHost;
+        this.secretServicePort = secretServicePort;
+        this.initialized = true;
+    }
+
+    private void checkInitialized() {
+        if (!initialized) {
+            throw new IllegalStateException("GCS Metadata Collector is not 
initialized");
+        }
+    }
+
+    @Override
+    public ResourceMetadata getGetResourceMetadata(String resourceId, String 
credentialToken) throws Exception {
+        checkInitialized();
+        ResourceServiceGrpc.ResourceServiceBlockingStub resourceClient = 
ResourceServiceClient.buildClient(resourceServiceHost, resourceServicePort);
+        GCSResource gcsResource = 
resourceClient.getGCSResource(GCSResourceGetRequest.newBuilder().setResourceId(resourceId).build());
+
+        SecretServiceGrpc.SecretServiceBlockingStub secretClient = 
SecretServiceClient.buildClient(secretServiceHost, secretServicePort);
+        GCSSecret gcsSecret = 
secretClient.getGCSSecret(GCSSecretGetRequest.newBuilder().setSecretId(credentialToken).build());
+
+        HttpTransport transport = GoogleNetHttpTransport.newTrustedTransport();
+        JsonFactory jsonFactory = new JacksonFactory();
+        GoogleCredential credential = GoogleCredential.fromStream(new 
FileInputStream(gcsSecret.getJsonCredentialsFilePath()),transport,jsonFactory);

Review comment:
       Read the credential form a string input stream and load the json content 
from the secret instead of a file

##########
File path: services/secret-service/server/pom.xml
##########
@@ -47,7 +47,7 @@
         <dependency>
             <groupId>org.apache.airavata</groupId>
             <artifactId>airavata-credential-store-stubs</artifactId>
-            <version>0.19-SNAPSHOT</version>

Review comment:
       Bring original value back

##########
File path: services/resource-service/server/src/main/resources/resources.json
##########
@@ -29,14 +29,20 @@
   {
     "type": "S3",
     "resourceId": "s3-file",
-    "resourcePath": "new-file.txt",

Review comment:
       Bring original values back

##########
File path: 
transport/gcp-transport/src/main/java/org/apache/airavata/mft/transport/gcp/GCSReceiver.java
##########
@@ -0,0 +1,72 @@
+package org.apache.airavata.mft.transport.gcp;
+
+import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
+import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
+import com.google.api.client.http.HttpTransport;
+import com.google.api.client.json.JsonFactory;
+import com.google.api.client.json.jackson2.JacksonFactory;
+import com.google.api.services.storage.Storage;
+import com.google.api.services.storage.StorageScopes;
+
+import org.apache.airavata.mft.core.ConnectorContext;
+import org.apache.airavata.mft.core.api.Connector;
+import org.apache.airavata.mft.resource.client.ResourceServiceClient;
+import org.apache.airavata.mft.resource.service.ResourceServiceGrpc;
+import org.apache.airavata.mft.resource.service.GCSResource;
+import org.apache.airavata.mft.resource.service.GCSResourceGetRequest;
+import org.apache.airavata.mft.secret.client.SecretServiceClient;
+import org.apache.airavata.mft.secret.service.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.*;
+import java.util.Collection;
+
+
+public class GCSReceiver implements Connector{
+
+    private static final Logger logger = 
LoggerFactory.getLogger(GCSReceiver.class);
+
+    private GCSResource gcsResource;
+    private Storage storage;
+
+    @Override
+    public void init(String resourceId, String credentialToken, String 
resourceServiceHost, int resourceServicePort, String secretServiceHost, int 
secretServicePort) throws Exception {
+        ResourceServiceGrpc.ResourceServiceBlockingStub resourceClient = 
ResourceServiceClient.buildClient(resourceServiceHost, resourceServicePort);
+        this.gcsResource = 
resourceClient.getGCSResource(GCSResourceGetRequest.newBuilder().setResourceId(resourceId).build());
+
+        SecretServiceGrpc.SecretServiceBlockingStub secretClient = 
SecretServiceClient.buildClient(secretServiceHost, secretServicePort);
+        GCSSecret gcsSecret = 
secretClient.getGCSSecret(GCSSecretGetRequest.newBuilder().setSecretId(credentialToken).build());
+        HttpTransport transport = GoogleNetHttpTransport.newTrustedTransport();
+        JsonFactory jsonFactory = new JacksonFactory();
+        GoogleCredential credential = GoogleCredential.fromStream(new 
FileInputStream(gcsSecret.getJsonCredentialsFilePath()));
+        if (credential.createScopedRequired()) {
+            Collection<String> scopes = StorageScopes.all();
+            credential = credential.createScoped(scopes);
+        }
+        storage=new Storage.Builder(transport, jsonFactory, 
credential).build();

Review comment:
       Spaces around =

##########
File path: 
transport/gcp-transport/src/main/java/org/apache/airavata/mft/transport/gcp/GCSSender.java
##########
@@ -0,0 +1,82 @@
+package org.apache.airavata.mft.transport.gcp;
+
+import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
+import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
+import com.google.api.client.http.HttpTransport;
+import com.google.api.client.http.InputStreamContent;
+import com.google.api.client.json.JsonFactory;
+import com.google.api.client.json.jackson2.JacksonFactory;
+import com.google.api.services.storage.StorageScopes;
+import com.google.api.services.storage.model.ObjectAccessControl;
+import com.google.api.services.storage.model.StorageObject;
+import com.google.api.services.storage.Storage;
+import com.google.api.services.storage.Storage.Objects.Insert;
+
+import org.apache.airavata.mft.secret.service.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.apache.airavata.mft.core.ConnectorContext;
+import org.apache.airavata.mft.core.api.Connector;
+import org.apache.airavata.mft.resource.client.ResourceServiceClient;
+import org.apache.airavata.mft.resource.service.ResourceServiceGrpc;
+import org.apache.airavata.mft.secret.client.SecretServiceClient;
+import org.apache.airavata.mft.resource.service.GCSResource;
+import org.apache.airavata.mft.resource.service.GCSResourceGetRequest;
+
+import java.io.FileInputStream;
+import java.util.Arrays;
+import java.util.Collection;
+
+
+public class GCSSender implements Connector{
+
+    private static final Logger logger = 
LoggerFactory.getLogger(GCSSender.class);
+
+    private GCSResource gcsResource;
+    private Storage storage;
+    @Override
+    public void init(String resourceId, String credentialToken, String 
resourceServiceHost, int resourceServicePort, String secretServiceHost, int 
secretServicePort) throws Exception {
+
+        ResourceServiceGrpc.ResourceServiceBlockingStub resourceClient = 
ResourceServiceClient.buildClient(resourceServiceHost, resourceServicePort);
+        this.gcsResource = 
resourceClient.getGCSResource(GCSResourceGetRequest.newBuilder().setResourceId(resourceId).build());
+
+        SecretServiceGrpc.SecretServiceBlockingStub secretClient = 
SecretServiceClient.buildClient(secretServiceHost, secretServicePort);
+        GCSSecret gcsSecret = 
secretClient.getGCSSecret(GCSSecretGetRequest.newBuilder().setSecretId(credentialToken).build());
+
+        HttpTransport transport = GoogleNetHttpTransport.newTrustedTransport();
+        JsonFactory jsonFactory = new JacksonFactory();
+        GoogleCredential credential = GoogleCredential.fromStream(new 
FileInputStream(gcsSecret.getJsonCredentialsFilePath()));
+        if (credential.createScopedRequired()) {
+            Collection<String> scopes = StorageScopes.all();
+            credential = credential.createScoped(scopes);
+        }
+
+        storage=new Storage.Builder(transport, jsonFactory, 
credential).build();

Review comment:
       Spaces around =




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to