This is an automated email from the ASF dual-hosted git repository.
dimuthuupe pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-mft.git
The following commit(s) were added to refs/heads/master by this push:
new af0ed80 Updating python sdk
af0ed80 is described below
commit af0ed80aee54bb636fa9acab3128d474892ea23f
Author: Dimuthu Wannipurage <[email protected]>
AuthorDate: Sun Oct 16 23:18:46 2022 -0400
Updating python sdk
---
python-sdk/setup.cfg | 2 +-
.../src/airavata_mft_sdk/MFTTransferApi_pb2.py | 80 ++++++++++++++--------
.../airavata_mft_sdk/MFTTransferApi_pb2_grpc.py | 33 +++++++++
.../airavata_mft_sdk/common/StorageCommon_pb2.py | 48 +++++++++++++
.../common/StorageCommon_pb2_grpc.py | 66 ++++++++++++++++++
python-sdk/src/airavata_mft_sdk/common/__init__.py | 0
python-sdk/src/airavata_mft_sdk/generate-stubs.sh | 4 ++
7 files changed, 202 insertions(+), 31 deletions(-)
diff --git a/python-sdk/setup.cfg b/python-sdk/setup.cfg
index 09f6fef..ac5ef85 100644
--- a/python-sdk/setup.cfg
+++ b/python-sdk/setup.cfg
@@ -1,6 +1,6 @@
[metadata]
name = airavata_mft_sdk
-version = 0.0.1-alpha12
+version = 0.0.1-alpha13
author = Airavata MFT Developers
author_email = [email protected]
description = Python SDK for Apache Airavata Managed File Transfers (MFT)
diff --git a/python-sdk/src/airavata_mft_sdk/MFTTransferApi_pb2.py
b/python-sdk/src/airavata_mft_sdk/MFTTransferApi_pb2.py
index 9bca2a5..aac39df 100644
--- a/python-sdk/src/airavata_mft_sdk/MFTTransferApi_pb2.py
+++ b/python-sdk/src/airavata_mft_sdk/MFTTransferApi_pb2.py
@@ -15,7 +15,7 @@ _sym_db = _symbol_database.Default()
import airavata_mft_sdk.CredCommon_pb2 as CredCommon__pb2
-DESCRIPTOR =
_descriptor_pool.Default().AddSerializedFile(b'\n\x14MFTTransferApi.proto\x12#org.apache.airavata.mft.api.service\x1a\x10\x43redCommon.proto\"\x9b\x01\n\x10\x43\x61llbackEndpoint\x12P\n\x04type\x18\x01
\x01(\x0e\x32\x42.org.apache.airavata.mft.api.service.CallbackEndpoint.CallbackType\x12\x10\n\x08\x65ndpoint\x18\x02
\x01(\t\"#\n\x0c\x43\x61llbackType\x12\x08\n\x04HTTP\x10\x00\x12\t\n\x05KAFKA\x10\x01\"\xbc\x04\n\x12TransferApiRequest\x12\x18\n\x10sourceResourceId\x18\x01
\x [...]
+DESCRIPTOR =
_descriptor_pool.Default().AddSerializedFile(b'\n\x14MFTTransferApi.proto\x12#org.apache.airavata.mft.api.service\x1a\x10\x43redCommon.proto\"\x9b\x01\n\x10\x43\x61llbackEndpoint\x12P\n\x04type\x18\x01
\x01(\x0e\x32\x42.org.apache.airavata.mft.api.service.CallbackEndpoint.CallbackType\x12\x10\n\x08\x65ndpoint\x18\x02
\x01(\t\"#\n\x0c\x43\x61llbackType\x12\x08\n\x04HTTP\x10\x00\x12\t\n\x05KAFKA\x10\x01\"\xf3\x03\n\x12TransferApiRequest\x12\x12\n\nsourcePath\x18\x01
\x01(\t\x1 [...]
@@ -23,6 +23,8 @@ _CALLBACKENDPOINT =
DESCRIPTOR.message_types_by_name['CallbackEndpoint']
_TRANSFERAPIREQUEST = DESCRIPTOR.message_types_by_name['TransferApiRequest']
_TRANSFERAPIREQUEST_TARGETAGENTSENTRY =
_TRANSFERAPIREQUEST.nested_types_by_name['TargetAgentsEntry']
_TRANSFERAPIRESPONSE = DESCRIPTOR.message_types_by_name['TransferApiResponse']
+_BATCHTRANSFERAPIREQUEST =
DESCRIPTOR.message_types_by_name['BatchTransferApiRequest']
+_BATCHTRANSFERAPIRESPONSE =
DESCRIPTOR.message_types_by_name['BatchTransferApiResponse']
_HTTPUPLOADAPIREQUEST =
DESCRIPTOR.message_types_by_name['HttpUploadApiRequest']
_HTTPUPLOADAPIRESPONSE =
DESCRIPTOR.message_types_by_name['HttpUploadApiResponse']
_HTTPDOWNLOADAPIREQUEST =
DESCRIPTOR.message_types_by_name['HttpDownloadApiRequest']
@@ -64,6 +66,20 @@ TransferApiResponse =
_reflection.GeneratedProtocolMessageType('TransferApiRespo
})
_sym_db.RegisterMessage(TransferApiResponse)
+BatchTransferApiRequest =
_reflection.GeneratedProtocolMessageType('BatchTransferApiRequest',
(_message.Message,), {
+ 'DESCRIPTOR' : _BATCHTRANSFERAPIREQUEST,
+ '__module__' : 'MFTTransferApi_pb2'
+ #
@@protoc_insertion_point(class_scope:org.apache.airavata.mft.api.service.BatchTransferApiRequest)
+ })
+_sym_db.RegisterMessage(BatchTransferApiRequest)
+
+BatchTransferApiResponse =
_reflection.GeneratedProtocolMessageType('BatchTransferApiResponse',
(_message.Message,), {
+ 'DESCRIPTOR' : _BATCHTRANSFERAPIRESPONSE,
+ '__module__' : 'MFTTransferApi_pb2'
+ #
@@protoc_insertion_point(class_scope:org.apache.airavata.mft.api.service.BatchTransferApiResponse)
+ })
+_sym_db.RegisterMessage(BatchTransferApiResponse)
+
HttpUploadApiRequest =
_reflection.GeneratedProtocolMessageType('HttpUploadApiRequest',
(_message.Message,), {
'DESCRIPTOR' : _HTTPUPLOADAPIREQUEST,
'__module__' : 'MFTTransferApi_pb2'
@@ -153,33 +169,37 @@ if _descriptor._USE_C_DESCRIPTORS == False:
_CALLBACKENDPOINT_CALLBACKTYPE._serialized_start=200
_CALLBACKENDPOINT_CALLBACKTYPE._serialized_end=235
_TRANSFERAPIREQUEST._serialized_start=238
- _TRANSFERAPIREQUEST._serialized_end=810
- _TRANSFERAPIREQUEST_TARGETAGENTSENTRY._serialized_start=759
- _TRANSFERAPIREQUEST_TARGETAGENTSENTRY._serialized_end=810
- _TRANSFERAPIRESPONSE._serialized_start=812
- _TRANSFERAPIRESPONSE._serialized_end=853
- _HTTPUPLOADAPIREQUEST._serialized_start=856
- _HTTPUPLOADAPIREQUEST._serialized_end=1093
- _HTTPUPLOADAPIRESPONSE._serialized_start=1095
- _HTTPUPLOADAPIRESPONSE._serialized_end=1152
- _HTTPDOWNLOADAPIREQUEST._serialized_start=1155
- _HTTPDOWNLOADAPIREQUEST._serialized_end=1374
- _HTTPDOWNLOADAPIRESPONSE._serialized_start=1376
- _HTTPDOWNLOADAPIRESPONSE._serialized_end=1435
- _TRANSFERSTATEAPIREQUEST._serialized_start=1437
- _TRANSFERSTATEAPIREQUEST._serialized_end=1556
- _TRANSFERSTATEAPIRESPONSE._serialized_start=1558
- _TRANSFERSTATEAPIRESPONSE._serialized_end=1664
- _RESOURCEAVAILABILITYREQUEST._serialized_start=1667
- _RESOURCEAVAILABILITYREQUEST._serialized_end=1922
- _RESOURCEAVAILABILITYRESPONSE._serialized_start=1924
- _RESOURCEAVAILABILITYRESPONSE._serialized_end=1973
- _FILEMETADATARESPONSE._serialized_start=1976
- _FILEMETADATARESPONSE._serialized_end=2175
- _DIRECTORYMETADATARESPONSE._serialized_start=2178
- _DIRECTORYMETADATARESPONSE._serialized_end=2528
- _FETCHRESOURCEMETADATAREQUEST._serialized_start=2531
- _FETCHRESOURCEMETADATAREQUEST._serialized_end=2829
- _MFTTRANSFERSERVICE._serialized_start=2832
- _MFTTRANSFERSERVICE._serialized_end=4046
+ _TRANSFERAPIREQUEST._serialized_end=737
+ _TRANSFERAPIREQUEST_TARGETAGENTSENTRY._serialized_start=686
+ _TRANSFERAPIREQUEST_TARGETAGENTSENTRY._serialized_end=737
+ _TRANSFERAPIRESPONSE._serialized_start=739
+ _TRANSFERAPIRESPONSE._serialized_end=780
+ _BATCHTRANSFERAPIREQUEST._serialized_start=782
+ _BATCHTRANSFERAPIREQUEST._serialized_end=890
+ _BATCHTRANSFERAPIRESPONSE._serialized_start=892
+ _BATCHTRANSFERAPIRESPONSE._serialized_end=939
+ _HTTPUPLOADAPIREQUEST._serialized_start=942
+ _HTTPUPLOADAPIREQUEST._serialized_end=1137
+ _HTTPUPLOADAPIRESPONSE._serialized_start=1139
+ _HTTPUPLOADAPIRESPONSE._serialized_end=1196
+ _HTTPDOWNLOADAPIREQUEST._serialized_start=1199
+ _HTTPDOWNLOADAPIREQUEST._serialized_end=1386
+ _HTTPDOWNLOADAPIRESPONSE._serialized_start=1388
+ _HTTPDOWNLOADAPIRESPONSE._serialized_end=1447
+ _TRANSFERSTATEAPIREQUEST._serialized_start=1449
+ _TRANSFERSTATEAPIREQUEST._serialized_end=1568
+ _TRANSFERSTATEAPIRESPONSE._serialized_start=1570
+ _TRANSFERSTATEAPIRESPONSE._serialized_end=1676
+ _RESOURCEAVAILABILITYREQUEST._serialized_start=1679
+ _RESOURCEAVAILABILITYREQUEST._serialized_end=1846
+ _RESOURCEAVAILABILITYRESPONSE._serialized_start=1848
+ _RESOURCEAVAILABILITYRESPONSE._serialized_end=1897
+ _FILEMETADATARESPONSE._serialized_start=1900
+ _FILEMETADATARESPONSE._serialized_end=2099
+ _DIRECTORYMETADATARESPONSE._serialized_start=2102
+ _DIRECTORYMETADATARESPONSE._serialized_end=2452
+ _FETCHRESOURCEMETADATAREQUEST._serialized_start=2455
+ _FETCHRESOURCEMETADATAREQUEST._serialized_end=2646
+ _MFTTRANSFERSERVICE._serialized_start=2649
+ _MFTTRANSFERSERVICE._serialized_end=4012
# @@protoc_insertion_point(module_scope)
diff --git a/python-sdk/src/airavata_mft_sdk/MFTTransferApi_pb2_grpc.py
b/python-sdk/src/airavata_mft_sdk/MFTTransferApi_pb2_grpc.py
index 75e5f71..ff83e45 100644
--- a/python-sdk/src/airavata_mft_sdk/MFTTransferApi_pb2_grpc.py
+++ b/python-sdk/src/airavata_mft_sdk/MFTTransferApi_pb2_grpc.py
@@ -19,6 +19,11 @@ class MFTTransferServiceStub(object):
request_serializer=MFTTransferApi__pb2.TransferApiRequest.SerializeToString,
response_deserializer=MFTTransferApi__pb2.TransferApiResponse.FromString,
)
+ self.submitBatchTransfer = channel.unary_unary(
+
'/org.apache.airavata.mft.api.service.MFTTransferService/submitBatchTransfer',
+
request_serializer=MFTTransferApi__pb2.BatchTransferApiRequest.SerializeToString,
+
response_deserializer=MFTTransferApi__pb2.BatchTransferApiResponse.FromString,
+ )
self.submitHttpUpload = channel.unary_unary(
'/org.apache.airavata.mft.api.service.MFTTransferService/submitHttpUpload',
request_serializer=MFTTransferApi__pb2.HttpUploadApiRequest.SerializeToString,
@@ -65,6 +70,12 @@ class MFTTransferServiceServicer(object):
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
+ def submitBatchTransfer(self, request, context):
+ """Missing associated documentation comment in .proto file."""
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+ context.set_details('Method not implemented!')
+ raise NotImplementedError('Method not implemented!')
+
def submitHttpUpload(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
@@ -115,6 +126,11 @@ def add_MFTTransferServiceServicer_to_server(servicer,
server):
request_deserializer=MFTTransferApi__pb2.TransferApiRequest.FromString,
response_serializer=MFTTransferApi__pb2.TransferApiResponse.SerializeToString,
),
+ 'submitBatchTransfer': grpc.unary_unary_rpc_method_handler(
+ servicer.submitBatchTransfer,
+
request_deserializer=MFTTransferApi__pb2.BatchTransferApiRequest.FromString,
+
response_serializer=MFTTransferApi__pb2.BatchTransferApiResponse.SerializeToString,
+ ),
'submitHttpUpload': grpc.unary_unary_rpc_method_handler(
servicer.submitHttpUpload,
request_deserializer=MFTTransferApi__pb2.HttpUploadApiRequest.FromString,
@@ -177,6 +193,23 @@ class MFTTransferService(object):
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout,
metadata)
+ @staticmethod
+ def submitBatchTransfer(request,
+ target,
+ options=(),
+ channel_credentials=None,
+ call_credentials=None,
+ insecure=False,
+ compression=None,
+ wait_for_ready=None,
+ timeout=None,
+ metadata=None):
+ return grpc.experimental.unary_unary(request, target,
'/org.apache.airavata.mft.api.service.MFTTransferService/submitBatchTransfer',
+ MFTTransferApi__pb2.BatchTransferApiRequest.SerializeToString,
+ MFTTransferApi__pb2.BatchTransferApiResponse.FromString,
+ options, channel_credentials,
+ insecure, call_credentials, compression, wait_for_ready, timeout,
metadata)
+
@staticmethod
def submitHttpUpload(request,
target,
diff --git a/python-sdk/src/airavata_mft_sdk/common/StorageCommon_pb2.py
b/python-sdk/src/airavata_mft_sdk/common/StorageCommon_pb2.py
new file mode 100644
index 0000000..12d769a
--- /dev/null
+++ b/python-sdk/src/airavata_mft_sdk/common/StorageCommon_pb2.py
@@ -0,0 +1,48 @@
+# -*- coding: utf-8 -*-
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: common/StorageCommon.proto
+"""Generated protocol buffer code."""
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import descriptor_pool as _descriptor_pool
+from google.protobuf import message as _message
+from google.protobuf import reflection as _reflection
+from google.protobuf import symbol_database as _symbol_database
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+
+
+DESCRIPTOR =
_descriptor_pool.Default().AddSerializedFile(b'\n\x1a\x63ommon/StorageCommon.proto\x12\x35org.apache.airavata.mft.resource.stubs.storage.common\".\n\x19StorageTypeResolveRequest\x12\x11\n\tstorageId\x18\x01
\x01(\t\"1\n\x1aStorageTypeResolveResponse\x12\x13\n\x0bstorageType\x18\x01
\x01(\t2\xd2\x01\n\x14StorageCommonService\x12\xb9\x01\n\x12resolveStorageType\x12P.org.apache.airavata.mft.resource.stubs.storage.common.StorageTypeResolveRequest\x1aQ.org.apache.airavata.mft.res
[...]
+
+
+
+_STORAGETYPERESOLVEREQUEST =
DESCRIPTOR.message_types_by_name['StorageTypeResolveRequest']
+_STORAGETYPERESOLVERESPONSE =
DESCRIPTOR.message_types_by_name['StorageTypeResolveResponse']
+StorageTypeResolveRequest =
_reflection.GeneratedProtocolMessageType('StorageTypeResolveRequest',
(_message.Message,), {
+ 'DESCRIPTOR' : _STORAGETYPERESOLVEREQUEST,
+ '__module__' : 'common.StorageCommon_pb2'
+ #
@@protoc_insertion_point(class_scope:org.apache.airavata.mft.resource.stubs.storage.common.StorageTypeResolveRequest)
+ })
+_sym_db.RegisterMessage(StorageTypeResolveRequest)
+
+StorageTypeResolveResponse =
_reflection.GeneratedProtocolMessageType('StorageTypeResolveResponse',
(_message.Message,), {
+ 'DESCRIPTOR' : _STORAGETYPERESOLVERESPONSE,
+ '__module__' : 'common.StorageCommon_pb2'
+ #
@@protoc_insertion_point(class_scope:org.apache.airavata.mft.resource.stubs.storage.common.StorageTypeResolveResponse)
+ })
+_sym_db.RegisterMessage(StorageTypeResolveResponse)
+
+_STORAGECOMMONSERVICE = DESCRIPTOR.services_by_name['StorageCommonService']
+if _descriptor._USE_C_DESCRIPTORS == False:
+
+ DESCRIPTOR._options = None
+ DESCRIPTOR._serialized_options = b'P\001'
+ _STORAGETYPERESOLVEREQUEST._serialized_start=85
+ _STORAGETYPERESOLVEREQUEST._serialized_end=131
+ _STORAGETYPERESOLVERESPONSE._serialized_start=133
+ _STORAGETYPERESOLVERESPONSE._serialized_end=182
+ _STORAGECOMMONSERVICE._serialized_start=185
+ _STORAGECOMMONSERVICE._serialized_end=395
+# @@protoc_insertion_point(module_scope)
diff --git a/python-sdk/src/airavata_mft_sdk/common/StorageCommon_pb2_grpc.py
b/python-sdk/src/airavata_mft_sdk/common/StorageCommon_pb2_grpc.py
new file mode 100644
index 0000000..a81835b
--- /dev/null
+++ b/python-sdk/src/airavata_mft_sdk/common/StorageCommon_pb2_grpc.py
@@ -0,0 +1,66 @@
+# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
+"""Client and server classes corresponding to protobuf-defined services."""
+import grpc
+
+from airavata_mft_sdk.common import StorageCommon_pb2 as
common_dot_StorageCommon__pb2
+
+
+class StorageCommonServiceStub(object):
+ """Missing associated documentation comment in .proto file."""
+
+ def __init__(self, channel):
+ """Constructor.
+
+ Args:
+ channel: A grpc.Channel.
+ """
+ self.resolveStorageType = channel.unary_unary(
+
'/org.apache.airavata.mft.resource.stubs.storage.common.StorageCommonService/resolveStorageType',
+
request_serializer=common_dot_StorageCommon__pb2.StorageTypeResolveRequest.SerializeToString,
+
response_deserializer=common_dot_StorageCommon__pb2.StorageTypeResolveResponse.FromString,
+ )
+
+
+class StorageCommonServiceServicer(object):
+ """Missing associated documentation comment in .proto file."""
+
+ def resolveStorageType(self, request, context):
+ """Missing associated documentation comment in .proto file."""
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+ context.set_details('Method not implemented!')
+ raise NotImplementedError('Method not implemented!')
+
+
+def add_StorageCommonServiceServicer_to_server(servicer, server):
+ rpc_method_handlers = {
+ 'resolveStorageType': grpc.unary_unary_rpc_method_handler(
+ servicer.resolveStorageType,
+
request_deserializer=common_dot_StorageCommon__pb2.StorageTypeResolveRequest.FromString,
+
response_serializer=common_dot_StorageCommon__pb2.StorageTypeResolveResponse.SerializeToString,
+ ),
+ }
+ generic_handler = grpc.method_handlers_generic_handler(
+
'org.apache.airavata.mft.resource.stubs.storage.common.StorageCommonService',
rpc_method_handlers)
+ server.add_generic_rpc_handlers((generic_handler,))
+
+
+ # This class is part of an EXPERIMENTAL API.
+class StorageCommonService(object):
+ """Missing associated documentation comment in .proto file."""
+
+ @staticmethod
+ def resolveStorageType(request,
+ target,
+ options=(),
+ channel_credentials=None,
+ call_credentials=None,
+ insecure=False,
+ compression=None,
+ wait_for_ready=None,
+ timeout=None,
+ metadata=None):
+ return grpc.experimental.unary_unary(request, target,
'/org.apache.airavata.mft.resource.stubs.storage.common.StorageCommonService/resolveStorageType',
+
common_dot_StorageCommon__pb2.StorageTypeResolveRequest.SerializeToString,
+
common_dot_StorageCommon__pb2.StorageTypeResolveResponse.FromString,
+ options, channel_credentials,
+ insecure, call_credentials, compression, wait_for_ready, timeout,
metadata)
diff --git a/python-sdk/src/airavata_mft_sdk/common/__init__.py
b/python-sdk/src/airavata_mft_sdk/common/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/python-sdk/src/airavata_mft_sdk/generate-stubs.sh
b/python-sdk/src/airavata_mft_sdk/generate-stubs.sh
index 734043f..7ad1f0e 100755
--- a/python-sdk/src/airavata_mft_sdk/generate-stubs.sh
+++ b/python-sdk/src/airavata_mft_sdk/generate-stubs.sh
@@ -41,6 +41,7 @@ python3 -m grpc_tools.protoc
--proto_path=../../../services/resource-service/stu
../../../services/resource-service/stub/src/main/proto/swift/SwiftStorage.proto
\
../../../services/resource-service/stub/src/main/proto/odata/ODataStorageService.proto
\
../../../services/resource-service/stub/src/main/proto/odata/ODataStorage.proto
\
+
../../../services/resource-service/stub/src/main/proto/common/StorageCommon.proto
\
--python_out=$RESOURCE_DIR --grpc_python_out=$RESOURCE_DIR
@@ -86,6 +87,7 @@ touch s3/__init__.py
touch scp/__init__.py
touch swift/__init__.py
touch odata/__init__.py
+touch common/__init__.py
sed -i 's/from \([^)]*\)pb2/from airavata_mft_sdk.\1pb2/' azure/*.py
@@ -100,6 +102,7 @@ sed -i 's/from \([^)]*\)pb2/from airavata_mft_sdk.\1pb2/'
s3/*.py
sed -i 's/from \([^)]*\)pb2/from airavata_mft_sdk.\1pb2/' scp/*.py
sed -i 's/from \([^)]*\)pb2/from airavata_mft_sdk.\1pb2/' swift/*.py
sed -i 's/from \([^)]*\)pb2/from airavata_mft_sdk.\1pb2/' odata/*.py
+sed -i 's/from \([^)]*\)pb2/from airavata_mft_sdk.\1pb2/' common/*.py
sed -i 's/from \([^)]*\)pb2/from airavata_mft_sdk.\1pb2/' *pb2.py
sed -i 's/from \([^)]*\)pb2/from airavata_mft_sdk.\1pb2/' *pb2_grpc.py
@@ -115,5 +118,6 @@ sed -i 's/^import \([^)]*\)pb2/import
airavata_mft_sdk.\1pb2/' s3/*.py
sed -i 's/^import \([^)]*\)pb2/import airavata_mft_sdk.\1pb2/' scp/*.py
sed -i 's/^import \([^)]*\)pb2/import airavata_mft_sdk.\1pb2/' swift/*.py
sed -i 's/^import \([^)]*\)pb2/import airavata_mft_sdk.\1pb2/' odata/*.py
+sed -i 's/^import \([^)]*\)pb2/import airavata_mft_sdk.\1pb2/' common/*.py
sed -i 's/^import \([^)]*\)pb2/import airavata_mft_sdk.\1pb2/' *pb2.py
sed -i 's/^import \([^)]*\)pb2/import airavata_mft_sdk.\1pb2/' *pb2_grpc.py
\ No newline at end of file