From commits-return-20557-apmail-airavata-commits-archive=airavata.apache.org@airavata.apache.org Thu May 9 16:19:57 2019 Return-Path: X-Original-To: apmail-airavata-commits-archive@www.apache.org Delivered-To: apmail-airavata-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [207.244.88.153]) by minotaur.apache.org (Postfix) with SMTP id DC37619A8D for ; Thu, 9 May 2019 16:19:56 +0000 (UTC) Received: (qmail 21128 invoked by uid 500); 9 May 2019 16:19:55 -0000 Delivered-To: apmail-airavata-commits-archive@airavata.apache.org Received: (qmail 21006 invoked by uid 500); 9 May 2019 16:19:55 -0000 Mailing-List: contact commits-help@airavata.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@airavata.apache.org Delivered-To: mailing list commits@airavata.apache.org Received: (qmail 20854 invoked by uid 99); 9 May 2019 16:19:55 -0000 Received: from ec2-52-202-80-70.compute-1.amazonaws.com (HELO gitbox.apache.org) (52.202.80.70) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 09 May 2019 16:19:55 +0000 Received: by gitbox.apache.org (ASF Mail Server at gitbox.apache.org, from userid 33) id 8329D872D3; Thu, 9 May 2019 16:19:55 +0000 (UTC) Date: Thu, 09 May 2019 16:19:59 +0000 To: "commits@airavata.apache.org" Subject: [airavata-django-portal] 04/06: AIRAVATA-3030 Loading directly granted sharings for editing MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit From: machristie@apache.org In-Reply-To: <155741879529.7355.14111152610686824429@gitbox.apache.org> References: <155741879529.7355.14111152610686824429@gitbox.apache.org> X-Git-Host: gitbox.apache.org X-Git-Repo: airavata-django-portal X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Rev: 8e7ad61cf2881ade620bf46d0e0d260050f7cb3f X-Git-NotificationType: diff X-Git-Multimail-Version: 1.5.dev Auto-Submitted: auto-generated Message-Id: <20190509161955.8329D872D3@gitbox.apache.org> This is an automated email from the ASF dual-hosted git repository. machristie pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/airavata-django-portal.git commit 8e7ad61cf2881ade620bf46d0e0d260050f7cb3f Author: Marcus Christie AuthorDate: Thu May 9 12:13:55 2019 -0400 AIRAVATA-3030 Loading directly granted sharings for editing --- airavata/api/Airavata-remote | 14 + airavata/api/Airavata.py | 1122 +++++++++++++++----- airavata/api/sharing/SharingRegistryService-remote | 14 + airavata/api/sharing/SharingRegistryService.py | 562 +++++++++- django_airavata/apps/api/views.py | 66 +- 5 files changed, 1468 insertions(+), 310 deletions(-) diff --git a/airavata/api/Airavata-remote b/airavata/api/Airavata-remote index 9ff7ab4..6957696 100755 --- a/airavata/api/Airavata-remote +++ b/airavata/api/Airavata-remote @@ -189,6 +189,8 @@ if len(sys.argv) <= 1 or sys.argv[1] == '--help': print(' bool revokeSharingOfResourceFromGroups(AuthzToken authzToken, string resourceId, groupPermissionList)') print(' getAllAccessibleUsers(AuthzToken authzToken, string resourceId, ResourcePermissionType permissionType)') print(' getAllAccessibleGroups(AuthzToken authzToken, string resourceId, ResourcePermissionType permissionType)') + print(' getAllDirectlyAccessibleUsers(AuthzToken authzToken, string resourceId, ResourcePermissionType permissionType)') + print(' getAllDirectlyAccessibleGroups(AuthzToken authzToken, string resourceId, ResourcePermissionType permissionType)') print(' bool userHasAccess(AuthzToken authzToken, string resourceId, ResourcePermissionType permissionType)') print(' string createGroupResourceProfile(AuthzToken authzToken, GroupResourceProfile groupResourceProfile)') print(' void updateGroupResourceProfile(AuthzToken authzToken, GroupResourceProfile groupResourceProfile)') @@ -1283,6 +1285,18 @@ elif cmd == 'getAllAccessibleGroups': sys.exit(1) pp.pprint(client.getAllAccessibleGroups(eval(args[0]), args[1], eval(args[2]),)) +elif cmd == 'getAllDirectlyAccessibleUsers': + if len(args) != 3: + print('getAllDirectlyAccessibleUsers requires 3 args') + sys.exit(1) + pp.pprint(client.getAllDirectlyAccessibleUsers(eval(args[0]), args[1], eval(args[2]),)) + +elif cmd == 'getAllDirectlyAccessibleGroups': + if len(args) != 3: + print('getAllDirectlyAccessibleGroups requires 3 args') + sys.exit(1) + pp.pprint(client.getAllDirectlyAccessibleGroups(eval(args[0]), args[1], eval(args[2]),)) + elif cmd == 'userHasAccess': if len(args) != 3: print('userHasAccess requires 3 args') diff --git a/airavata/api/Airavata.py b/airavata/api/Airavata.py index be91e70..b6e7762 100644 --- a/airavata/api/Airavata.py +++ b/airavata/api/Airavata.py @@ -3371,6 +3371,24 @@ class Iface(object): """ pass + def getAllDirectlyAccessibleUsers(self, authzToken, resourceId, permissionType): + """ + Parameters: + - authzToken + - resourceId + - permissionType + """ + pass + + def getAllDirectlyAccessibleGroups(self, authzToken, resourceId, permissionType): + """ + Parameters: + - authzToken + - resourceId + - permissionType + """ + pass + def userHasAccess(self, authzToken, resourceId, permissionType): """ Parameters: @@ -12525,6 +12543,92 @@ class Client(Iface): raise result.ae raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllAccessibleGroups failed: unknown result") + def getAllDirectlyAccessibleUsers(self, authzToken, resourceId, permissionType): + """ + Parameters: + - authzToken + - resourceId + - permissionType + """ + self.send_getAllDirectlyAccessibleUsers(authzToken, resourceId, permissionType) + return self.recv_getAllDirectlyAccessibleUsers() + + def send_getAllDirectlyAccessibleUsers(self, authzToken, resourceId, permissionType): + self._oprot.writeMessageBegin('getAllDirectlyAccessibleUsers', TMessageType.CALL, self._seqid) + args = getAllDirectlyAccessibleUsers_args() + args.authzToken = authzToken + args.resourceId = resourceId + args.permissionType = permissionType + args.write(self._oprot) + self._oprot.writeMessageEnd() + self._oprot.trans.flush() + + def recv_getAllDirectlyAccessibleUsers(self): + iprot = self._iprot + (fname, mtype, rseqid) = iprot.readMessageBegin() + if mtype == TMessageType.EXCEPTION: + x = TApplicationException() + x.read(iprot) + iprot.readMessageEnd() + raise x + result = getAllDirectlyAccessibleUsers_result() + result.read(iprot) + iprot.readMessageEnd() + if result.success is not None: + return result.success + if result.ire is not None: + raise result.ire + if result.ace is not None: + raise result.ace + if result.ase is not None: + raise result.ase + if result.ae is not None: + raise result.ae + raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllDirectlyAccessibleUsers failed: unknown result") + + def getAllDirectlyAccessibleGroups(self, authzToken, resourceId, permissionType): + """ + Parameters: + - authzToken + - resourceId + - permissionType + """ + self.send_getAllDirectlyAccessibleGroups(authzToken, resourceId, permissionType) + return self.recv_getAllDirectlyAccessibleGroups() + + def send_getAllDirectlyAccessibleGroups(self, authzToken, resourceId, permissionType): + self._oprot.writeMessageBegin('getAllDirectlyAccessibleGroups', TMessageType.CALL, self._seqid) + args = getAllDirectlyAccessibleGroups_args() + args.authzToken = authzToken + args.resourceId = resourceId + args.permissionType = permissionType + args.write(self._oprot) + self._oprot.writeMessageEnd() + self._oprot.trans.flush() + + def recv_getAllDirectlyAccessibleGroups(self): + iprot = self._iprot + (fname, mtype, rseqid) = iprot.readMessageBegin() + if mtype == TMessageType.EXCEPTION: + x = TApplicationException() + x.read(iprot) + iprot.readMessageEnd() + raise x + result = getAllDirectlyAccessibleGroups_result() + result.read(iprot) + iprot.readMessageEnd() + if result.success is not None: + return result.success + if result.ire is not None: + raise result.ire + if result.ace is not None: + raise result.ace + if result.ase is not None: + raise result.ase + if result.ae is not None: + raise result.ae + raise TApplicationException(TApplicationException.MISSING_RESULT, "getAllDirectlyAccessibleGroups failed: unknown result") + def userHasAccess(self, authzToken, resourceId, permissionType): """ Parameters: @@ -13734,6 +13838,8 @@ class Processor(Iface, TProcessor): self._processMap["revokeSharingOfResourceFromGroups"] = Processor.process_revokeSharingOfResourceFromGroups self._processMap["getAllAccessibleUsers"] = Processor.process_getAllAccessibleUsers self._processMap["getAllAccessibleGroups"] = Processor.process_getAllAccessibleGroups + self._processMap["getAllDirectlyAccessibleUsers"] = Processor.process_getAllDirectlyAccessibleUsers + self._processMap["getAllDirectlyAccessibleGroups"] = Processor.process_getAllDirectlyAccessibleGroups self._processMap["userHasAccess"] = Processor.process_userHasAccess self._processMap["createGroupResourceProfile"] = Processor.process_createGroupResourceProfile self._processMap["updateGroupResourceProfile"] = Processor.process_updateGroupResourceProfile @@ -18920,6 +19026,68 @@ class Processor(Iface, TProcessor): oprot.writeMessageEnd() oprot.trans.flush() + def process_getAllDirectlyAccessibleUsers(self, seqid, iprot, oprot): + args = getAllDirectlyAccessibleUsers_args() + args.read(iprot) + iprot.readMessageEnd() + result = getAllDirectlyAccessibleUsers_result() + try: + result.success = self._handler.getAllDirectlyAccessibleUsers(args.authzToken, args.resourceId, args.permissionType) + msg_type = TMessageType.REPLY + except (TTransport.TTransportException, KeyboardInterrupt, SystemExit): + raise + except airavata.api.error.ttypes.InvalidRequestException as ire: + msg_type = TMessageType.REPLY + result.ire = ire + except airavata.api.error.ttypes.AiravataClientException as ace: + msg_type = TMessageType.REPLY + result.ace = ace + except airavata.api.error.ttypes.AiravataSystemException as ase: + msg_type = TMessageType.REPLY + result.ase = ase + except airavata.api.error.ttypes.AuthorizationException as ae: + msg_type = TMessageType.REPLY + result.ae = ae + except Exception as ex: + msg_type = TMessageType.EXCEPTION + logging.exception(ex) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') + oprot.writeMessageBegin("getAllDirectlyAccessibleUsers", msg_type, seqid) + result.write(oprot) + oprot.writeMessageEnd() + oprot.trans.flush() + + def process_getAllDirectlyAccessibleGroups(self, seqid, iprot, oprot): + args = getAllDirectlyAccessibleGroups_args() + args.read(iprot) + iprot.readMessageEnd() + result = getAllDirectlyAccessibleGroups_result() + try: + result.success = self._handler.getAllDirectlyAccessibleGroups(args.authzToken, args.resourceId, args.permissionType) + msg_type = TMessageType.REPLY + except (TTransport.TTransportException, KeyboardInterrupt, SystemExit): + raise + except airavata.api.error.ttypes.InvalidRequestException as ire: + msg_type = TMessageType.REPLY + result.ire = ire + except airavata.api.error.ttypes.AiravataClientException as ace: + msg_type = TMessageType.REPLY + result.ace = ace + except airavata.api.error.ttypes.AiravataSystemException as ase: + msg_type = TMessageType.REPLY + result.ase = ase + except airavata.api.error.ttypes.AuthorizationException as ae: + msg_type = TMessageType.REPLY + result.ae = ae + except Exception as ex: + msg_type = TMessageType.EXCEPTION + logging.exception(ex) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') + oprot.writeMessageBegin("getAllDirectlyAccessibleGroups", msg_type, seqid) + result.write(oprot) + oprot.writeMessageEnd() + oprot.trans.flush() + def process_userHasAccess(self, seqid, iprot, oprot): args = userHasAccess_args() args.read(iprot) @@ -50647,19 +50815,394 @@ class deleteUserStoragePreference_result(object): return not (self == other) -class getLatestQueueStatuses_args(object): +class getLatestQueueStatuses_args(object): + """ + Attributes: + - authzToken + """ + + thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1 + ) + + def __init__(self, authzToken=None,): + self.authzToken = authzToken + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec)) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.authzToken = airavata.model.security.ttypes.AuthzToken() + self.authzToken.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) + return + oprot.writeStructBegin('getLatestQueueStatuses_args') + if self.authzToken is not None: + oprot.writeFieldBegin('authzToken', TType.STRUCT, 1) + self.authzToken.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + if self.authzToken is None: + raise TProtocolException(message='Required field authzToken is unset!') + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class getLatestQueueStatuses_result(object): + """ + Attributes: + - success + - ire + - ace + - ase + - ae + """ + + thrift_spec = ( + (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.status.ttypes.QueueStatusModel, airavata.model.status.ttypes.QueueStatusModel.thrift_spec), False), None, ), # 0 + (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1 + (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 2 + (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ), # 3 + (4, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ), # 4 + ) + + def __init__(self, success=None, ire=None, ace=None, ase=None, ae=None,): + self.success = success + self.ire = ire + self.ace = ace + self.ase = ase + self.ae = ae + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec)) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 0: + if ftype == TType.LIST: + self.success = [] + (_etype280, _size277) = iprot.readListBegin() + for _i281 in range(_size277): + _elem282 = airavata.model.status.ttypes.QueueStatusModel() + _elem282.read(iprot) + self.success.append(_elem282) + iprot.readListEnd() + else: + iprot.skip(ftype) + elif fid == 1: + if ftype == TType.STRUCT: + self.ire = airavata.api.error.ttypes.InvalidRequestException() + self.ire.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.ace = airavata.api.error.ttypes.AiravataClientException() + self.ace.read(iprot) + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.STRUCT: + self.ase = airavata.api.error.ttypes.AiravataSystemException() + self.ase.read(iprot) + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.STRUCT: + self.ae = airavata.api.error.ttypes.AuthorizationException() + self.ae.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) + return + oprot.writeStructBegin('getLatestQueueStatuses_result') + if self.success is not None: + oprot.writeFieldBegin('success', TType.LIST, 0) + oprot.writeListBegin(TType.STRUCT, len(self.success)) + for iter283 in self.success: + iter283.write(oprot) + oprot.writeListEnd() + oprot.writeFieldEnd() + if self.ire is not None: + oprot.writeFieldBegin('ire', TType.STRUCT, 1) + self.ire.write(oprot) + oprot.writeFieldEnd() + if self.ace is not None: + oprot.writeFieldBegin('ace', TType.STRUCT, 2) + self.ace.write(oprot) + oprot.writeFieldEnd() + if self.ase is not None: + oprot.writeFieldBegin('ase', TType.STRUCT, 3) + self.ase.write(oprot) + oprot.writeFieldEnd() + if self.ae is not None: + oprot.writeFieldBegin('ae', TType.STRUCT, 4) + self.ae.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class registerDataProduct_args(object): + """ + Attributes: + - authzToken + - dataProductModel + """ + + thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1 + (2, TType.STRUCT, 'dataProductModel', (airavata.model.data.replica.ttypes.DataProductModel, airavata.model.data.replica.ttypes.DataProductModel.thrift_spec), None, ), # 2 + ) + + def __init__(self, authzToken=None, dataProductModel=None,): + self.authzToken = authzToken + self.dataProductModel = dataProductModel + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec)) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.authzToken = airavata.model.security.ttypes.AuthzToken() + self.authzToken.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.dataProductModel = airavata.model.data.replica.ttypes.DataProductModel() + self.dataProductModel.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) + return + oprot.writeStructBegin('registerDataProduct_args') + if self.authzToken is not None: + oprot.writeFieldBegin('authzToken', TType.STRUCT, 1) + self.authzToken.write(oprot) + oprot.writeFieldEnd() + if self.dataProductModel is not None: + oprot.writeFieldBegin('dataProductModel', TType.STRUCT, 2) + self.dataProductModel.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + if self.authzToken is None: + raise TProtocolException(message='Required field authzToken is unset!') + if self.dataProductModel is None: + raise TProtocolException(message='Required field dataProductModel is unset!') + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class registerDataProduct_result(object): + """ + Attributes: + - success + - ire + - ace + - ase + - ae + """ + + thrift_spec = ( + (0, TType.STRING, 'success', 'UTF8', None, ), # 0 + (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1 + (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 2 + (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ), # 3 + (4, TType.STRUCT, 'ae', (airavata.api.error.ttypes.AuthorizationException, airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ), # 4 + ) + + def __init__(self, success=None, ire=None, ace=None, ase=None, ae=None,): + self.success = success + self.ire = ire + self.ace = ace + self.ase = ase + self.ae = ae + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec)) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 0: + if ftype == TType.STRING: + self.success = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + elif fid == 1: + if ftype == TType.STRUCT: + self.ire = airavata.api.error.ttypes.InvalidRequestException() + self.ire.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.ace = airavata.api.error.ttypes.AiravataClientException() + self.ace.read(iprot) + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.STRUCT: + self.ase = airavata.api.error.ttypes.AiravataSystemException() + self.ase.read(iprot) + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.STRUCT: + self.ae = airavata.api.error.ttypes.AuthorizationException() + self.ae.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) + return + oprot.writeStructBegin('registerDataProduct_result') + if self.success is not None: + oprot.writeFieldBegin('success', TType.STRING, 0) + oprot.writeString(self.success.encode('utf-8') if sys.version_info[0] == 2 else self.success) + oprot.writeFieldEnd() + if self.ire is not None: + oprot.writeFieldBegin('ire', TType.STRUCT, 1) + self.ire.write(oprot) + oprot.writeFieldEnd() + if self.ace is not None: + oprot.writeFieldBegin('ace', TType.STRUCT, 2) + self.ace.write(oprot) + oprot.writeFieldEnd() + if self.ase is not None: + oprot.writeFieldBegin('ase', TType.STRUCT, 3) + self.ase.write(oprot) + oprot.writeFieldEnd() + if self.ae is not None: + oprot.writeFieldBegin('ae', TType.STRUCT, 4) + self.ae.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class getDataProduct_args(object): """ Attributes: - authzToken + - dataProductUri """ thrift_spec = ( None, # 0 (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1 + (2, TType.STRING, 'dataProductUri', 'UTF8', None, ), # 2 ) - def __init__(self, authzToken=None,): + def __init__(self, authzToken=None, dataProductUri=None,): self.authzToken = authzToken + self.dataProductUri = dataProductUri def read(self, iprot): if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: @@ -50676,6 +51219,11 @@ class getLatestQueueStatuses_args(object): self.authzToken.read(iprot) else: iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRING: + self.dataProductUri = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) else: iprot.skip(ftype) iprot.readFieldEnd() @@ -50685,17 +51233,23 @@ class getLatestQueueStatuses_args(object): if oprot._fast_encode is not None and self.thrift_spec is not None: oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('getLatestQueueStatuses_args') + oprot.writeStructBegin('getDataProduct_args') if self.authzToken is not None: oprot.writeFieldBegin('authzToken', TType.STRUCT, 1) self.authzToken.write(oprot) oprot.writeFieldEnd() + if self.dataProductUri is not None: + oprot.writeFieldBegin('dataProductUri', TType.STRING, 2) + oprot.writeString(self.dataProductUri.encode('utf-8') if sys.version_info[0] == 2 else self.dataProductUri) + oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() def validate(self): if self.authzToken is None: raise TProtocolException(message='Required field authzToken is unset!') + if self.dataProductUri is None: + raise TProtocolException(message='Required field dataProductUri is unset!') return def __repr__(self): @@ -50710,7 +51264,7 @@ class getLatestQueueStatuses_args(object): return not (self == other) -class getLatestQueueStatuses_result(object): +class getDataProduct_result(object): """ Attributes: - success @@ -50721,7 +51275,7 @@ class getLatestQueueStatuses_result(object): """ thrift_spec = ( - (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.status.ttypes.QueueStatusModel, airavata.model.status.ttypes.QueueStatusModel.thrift_spec), False), None, ), # 0 + (0, TType.STRUCT, 'success', (airavata.model.data.replica.ttypes.DataProductModel, airavata.model.data.replica.ttypes.DataProductModel.thrift_spec), None, ), # 0 (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1 (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 2 (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ), # 3 @@ -50745,14 +51299,9 @@ class getLatestQueueStatuses_result(object): if ftype == TType.STOP: break if fid == 0: - if ftype == TType.LIST: - self.success = [] - (_etype280, _size277) = iprot.readListBegin() - for _i281 in range(_size277): - _elem282 = airavata.model.status.ttypes.QueueStatusModel() - _elem282.read(iprot) - self.success.append(_elem282) - iprot.readListEnd() + if ftype == TType.STRUCT: + self.success = airavata.model.data.replica.ttypes.DataProductModel() + self.success.read(iprot) else: iprot.skip(ftype) elif fid == 1: @@ -50788,13 +51337,10 @@ class getLatestQueueStatuses_result(object): if oprot._fast_encode is not None and self.thrift_spec is not None: oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('getLatestQueueStatuses_result') + oprot.writeStructBegin('getDataProduct_result') if self.success is not None: - oprot.writeFieldBegin('success', TType.LIST, 0) - oprot.writeListBegin(TType.STRUCT, len(self.success)) - for iter283 in self.success: - iter283.write(oprot) - oprot.writeListEnd() + oprot.writeFieldBegin('success', TType.STRUCT, 0) + self.success.write(oprot) oprot.writeFieldEnd() if self.ire is not None: oprot.writeFieldBegin('ire', TType.STRUCT, 1) @@ -50830,22 +51376,22 @@ class getLatestQueueStatuses_result(object): return not (self == other) -class registerDataProduct_args(object): +class registerReplicaLocation_args(object): """ Attributes: - authzToken - - dataProductModel + - replicaLocationModel """ thrift_spec = ( None, # 0 (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1 - (2, TType.STRUCT, 'dataProductModel', (airavata.model.data.replica.ttypes.DataProductModel, airavata.model.data.replica.ttypes.DataProductModel.thrift_spec), None, ), # 2 + (2, TType.STRUCT, 'replicaLocationModel', (airavata.model.data.replica.ttypes.DataReplicaLocationModel, airavata.model.data.replica.ttypes.DataReplicaLocationModel.thrift_spec), None, ), # 2 ) - def __init__(self, authzToken=None, dataProductModel=None,): + def __init__(self, authzToken=None, replicaLocationModel=None,): self.authzToken = authzToken - self.dataProductModel = dataProductModel + self.replicaLocationModel = replicaLocationModel def read(self, iprot): if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: @@ -50864,8 +51410,8 @@ class registerDataProduct_args(object): iprot.skip(ftype) elif fid == 2: if ftype == TType.STRUCT: - self.dataProductModel = airavata.model.data.replica.ttypes.DataProductModel() - self.dataProductModel.read(iprot) + self.replicaLocationModel = airavata.model.data.replica.ttypes.DataReplicaLocationModel() + self.replicaLocationModel.read(iprot) else: iprot.skip(ftype) else: @@ -50877,14 +51423,14 @@ class registerDataProduct_args(object): if oprot._fast_encode is not None and self.thrift_spec is not None: oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('registerDataProduct_args') + oprot.writeStructBegin('registerReplicaLocation_args') if self.authzToken is not None: oprot.writeFieldBegin('authzToken', TType.STRUCT, 1) self.authzToken.write(oprot) oprot.writeFieldEnd() - if self.dataProductModel is not None: - oprot.writeFieldBegin('dataProductModel', TType.STRUCT, 2) - self.dataProductModel.write(oprot) + if self.replicaLocationModel is not None: + oprot.writeFieldBegin('replicaLocationModel', TType.STRUCT, 2) + self.replicaLocationModel.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -50892,8 +51438,8 @@ class registerDataProduct_args(object): def validate(self): if self.authzToken is None: raise TProtocolException(message='Required field authzToken is unset!') - if self.dataProductModel is None: - raise TProtocolException(message='Required field dataProductModel is unset!') + if self.replicaLocationModel is None: + raise TProtocolException(message='Required field replicaLocationModel is unset!') return def __repr__(self): @@ -50908,7 +51454,7 @@ class registerDataProduct_args(object): return not (self == other) -class registerDataProduct_result(object): +class registerReplicaLocation_result(object): """ Attributes: - success @@ -50980,7 +51526,7 @@ class registerDataProduct_result(object): if oprot._fast_encode is not None and self.thrift_spec is not None: oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('registerDataProduct_result') + oprot.writeStructBegin('registerReplicaLocation_result') if self.success is not None: oprot.writeFieldBegin('success', TType.STRING, 0) oprot.writeString(self.success.encode('utf-8') if sys.version_info[0] == 2 else self.success) @@ -51019,22 +51565,22 @@ class registerDataProduct_result(object): return not (self == other) -class getDataProduct_args(object): +class getParentDataProduct_args(object): """ Attributes: - authzToken - - dataProductUri + - productUri """ thrift_spec = ( None, # 0 (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1 - (2, TType.STRING, 'dataProductUri', 'UTF8', None, ), # 2 + (2, TType.STRING, 'productUri', 'UTF8', None, ), # 2 ) - def __init__(self, authzToken=None, dataProductUri=None,): + def __init__(self, authzToken=None, productUri=None,): self.authzToken = authzToken - self.dataProductUri = dataProductUri + self.productUri = productUri def read(self, iprot): if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: @@ -51053,7 +51599,7 @@ class getDataProduct_args(object): iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - self.dataProductUri = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() + self.productUri = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -51065,14 +51611,14 @@ class getDataProduct_args(object): if oprot._fast_encode is not None and self.thrift_spec is not None: oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('getDataProduct_args') + oprot.writeStructBegin('getParentDataProduct_args') if self.authzToken is not None: oprot.writeFieldBegin('authzToken', TType.STRUCT, 1) self.authzToken.write(oprot) oprot.writeFieldEnd() - if self.dataProductUri is not None: - oprot.writeFieldBegin('dataProductUri', TType.STRING, 2) - oprot.writeString(self.dataProductUri.encode('utf-8') if sys.version_info[0] == 2 else self.dataProductUri) + if self.productUri is not None: + oprot.writeFieldBegin('productUri', TType.STRING, 2) + oprot.writeString(self.productUri.encode('utf-8') if sys.version_info[0] == 2 else self.productUri) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -51080,8 +51626,8 @@ class getDataProduct_args(object): def validate(self): if self.authzToken is None: raise TProtocolException(message='Required field authzToken is unset!') - if self.dataProductUri is None: - raise TProtocolException(message='Required field dataProductUri is unset!') + if self.productUri is None: + raise TProtocolException(message='Required field productUri is unset!') return def __repr__(self): @@ -51096,7 +51642,7 @@ class getDataProduct_args(object): return not (self == other) -class getDataProduct_result(object): +class getParentDataProduct_result(object): """ Attributes: - success @@ -51169,7 +51715,7 @@ class getDataProduct_result(object): if oprot._fast_encode is not None and self.thrift_spec is not None: oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('getDataProduct_result') + oprot.writeStructBegin('getParentDataProduct_result') if self.success is not None: oprot.writeFieldBegin('success', TType.STRUCT, 0) self.success.write(oprot) @@ -51208,22 +51754,22 @@ class getDataProduct_result(object): return not (self == other) -class registerReplicaLocation_args(object): +class getChildDataProducts_args(object): """ Attributes: - authzToken - - replicaLocationModel + - productUri """ thrift_spec = ( None, # 0 (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1 - (2, TType.STRUCT, 'replicaLocationModel', (airavata.model.data.replica.ttypes.DataReplicaLocationModel, airavata.model.data.replica.ttypes.DataReplicaLocationModel.thrift_spec), None, ), # 2 + (2, TType.STRING, 'productUri', 'UTF8', None, ), # 2 ) - def __init__(self, authzToken=None, replicaLocationModel=None,): + def __init__(self, authzToken=None, productUri=None,): self.authzToken = authzToken - self.replicaLocationModel = replicaLocationModel + self.productUri = productUri def read(self, iprot): if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: @@ -51241,9 +51787,8 @@ class registerReplicaLocation_args(object): else: iprot.skip(ftype) elif fid == 2: - if ftype == TType.STRUCT: - self.replicaLocationModel = airavata.model.data.replica.ttypes.DataReplicaLocationModel() - self.replicaLocationModel.read(iprot) + if ftype == TType.STRING: + self.productUri = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -51255,14 +51800,14 @@ class registerReplicaLocation_args(object): if oprot._fast_encode is not None and self.thrift_spec is not None: oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('registerReplicaLocation_args') + oprot.writeStructBegin('getChildDataProducts_args') if self.authzToken is not None: oprot.writeFieldBegin('authzToken', TType.STRUCT, 1) self.authzToken.write(oprot) oprot.writeFieldEnd() - if self.replicaLocationModel is not None: - oprot.writeFieldBegin('replicaLocationModel', TType.STRUCT, 2) - self.replicaLocationModel.write(oprot) + if self.productUri is not None: + oprot.writeFieldBegin('productUri', TType.STRING, 2) + oprot.writeString(self.productUri.encode('utf-8') if sys.version_info[0] == 2 else self.productUri) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -51270,8 +51815,8 @@ class registerReplicaLocation_args(object): def validate(self): if self.authzToken is None: raise TProtocolException(message='Required field authzToken is unset!') - if self.replicaLocationModel is None: - raise TProtocolException(message='Required field replicaLocationModel is unset!') + if self.productUri is None: + raise TProtocolException(message='Required field productUri is unset!') return def __repr__(self): @@ -51286,7 +51831,7 @@ class registerReplicaLocation_args(object): return not (self == other) -class registerReplicaLocation_result(object): +class getChildDataProducts_result(object): """ Attributes: - success @@ -51297,7 +51842,7 @@ class registerReplicaLocation_result(object): """ thrift_spec = ( - (0, TType.STRING, 'success', 'UTF8', None, ), # 0 + (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.data.replica.ttypes.DataProductModel, airavata.model.data.replica.ttypes.DataProductModel.thrift_spec), False), None, ), # 0 (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1 (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 2 (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ), # 3 @@ -51321,8 +51866,14 @@ class registerReplicaLocation_result(object): if ftype == TType.STOP: break if fid == 0: - if ftype == TType.STRING: - self.success = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() + if ftype == TType.LIST: + self.success = [] + (_etype287, _size284) = iprot.readListBegin() + for _i288 in range(_size284): + _elem289 = airavata.model.data.replica.ttypes.DataProductModel() + _elem289.read(iprot) + self.success.append(_elem289) + iprot.readListEnd() else: iprot.skip(ftype) elif fid == 1: @@ -51358,10 +51909,13 @@ class registerReplicaLocation_result(object): if oprot._fast_encode is not None and self.thrift_spec is not None: oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('registerReplicaLocation_result') + oprot.writeStructBegin('getChildDataProducts_result') if self.success is not None: - oprot.writeFieldBegin('success', TType.STRING, 0) - oprot.writeString(self.success.encode('utf-8') if sys.version_info[0] == 2 else self.success) + oprot.writeFieldBegin('success', TType.LIST, 0) + oprot.writeListBegin(TType.STRUCT, len(self.success)) + for iter290 in self.success: + iter290.write(oprot) + oprot.writeListEnd() oprot.writeFieldEnd() if self.ire is not None: oprot.writeFieldBegin('ire', TType.STRUCT, 1) @@ -51397,22 +51951,26 @@ class registerReplicaLocation_result(object): return not (self == other) -class getParentDataProduct_args(object): +class shareResourceWithUsers_args(object): """ Attributes: - authzToken - - productUri + - resourceId + - userPermissionList """ thrift_spec = ( None, # 0 (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1 - (2, TType.STRING, 'productUri', 'UTF8', None, ), # 2 + (2, TType.STRING, 'resourceId', 'UTF8', None, ), # 2 + None, # 3 + (4, TType.MAP, 'userPermissionList', (TType.STRING, 'UTF8', TType.I32, None, False), None, ), # 4 ) - def __init__(self, authzToken=None, productUri=None,): + def __init__(self, authzToken=None, resourceId=None, userPermissionList=None,): self.authzToken = authzToken - self.productUri = productUri + self.resourceId = resourceId + self.userPermissionList = userPermissionList def read(self, iprot): if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: @@ -51431,7 +51989,18 @@ class getParentDataProduct_args(object): iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - self.productUri = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() + self.resourceId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.MAP: + self.userPermissionList = {} + (_ktype292, _vtype293, _size291) = iprot.readMapBegin() + for _i295 in range(_size291): + _key296 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() + _val297 = iprot.readI32() + self.userPermissionList[_key296] = _val297 + iprot.readMapEnd() else: iprot.skip(ftype) else: @@ -51443,14 +52012,22 @@ class getParentDataProduct_args(object): if oprot._fast_encode is not None and self.thrift_spec is not None: oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('getParentDataProduct_args') + oprot.writeStructBegin('shareResourceWithUsers_args') if self.authzToken is not None: oprot.writeFieldBegin('authzToken', TType.STRUCT, 1) self.authzToken.write(oprot) oprot.writeFieldEnd() - if self.productUri is not None: - oprot.writeFieldBegin('productUri', TType.STRING, 2) - oprot.writeString(self.productUri.encode('utf-8') if sys.version_info[0] == 2 else self.productUri) + if self.resourceId is not None: + oprot.writeFieldBegin('resourceId', TType.STRING, 2) + oprot.writeString(self.resourceId.encode('utf-8') if sys.version_info[0] == 2 else self.resourceId) + oprot.writeFieldEnd() + if self.userPermissionList is not None: + oprot.writeFieldBegin('userPermissionList', TType.MAP, 4) + oprot.writeMapBegin(TType.STRING, TType.I32, len(self.userPermissionList)) + for kiter298, viter299 in self.userPermissionList.items(): + oprot.writeString(kiter298.encode('utf-8') if sys.version_info[0] == 2 else kiter298) + oprot.writeI32(viter299) + oprot.writeMapEnd() oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -51458,8 +52035,8 @@ class getParentDataProduct_args(object): def validate(self): if self.authzToken is None: raise TProtocolException(message='Required field authzToken is unset!') - if self.productUri is None: - raise TProtocolException(message='Required field productUri is unset!') + if self.resourceId is None: + raise TProtocolException(message='Required field resourceId is unset!') return def __repr__(self): @@ -51474,7 +52051,7 @@ class getParentDataProduct_args(object): return not (self == other) -class getParentDataProduct_result(object): +class shareResourceWithUsers_result(object): """ Attributes: - success @@ -51485,7 +52062,7 @@ class getParentDataProduct_result(object): """ thrift_spec = ( - (0, TType.STRUCT, 'success', (airavata.model.data.replica.ttypes.DataProductModel, airavata.model.data.replica.ttypes.DataProductModel.thrift_spec), None, ), # 0 + (0, TType.BOOL, 'success', None, None, ), # 0 (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1 (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 2 (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ), # 3 @@ -51509,9 +52086,8 @@ class getParentDataProduct_result(object): if ftype == TType.STOP: break if fid == 0: - if ftype == TType.STRUCT: - self.success = airavata.model.data.replica.ttypes.DataProductModel() - self.success.read(iprot) + if ftype == TType.BOOL: + self.success = iprot.readBool() else: iprot.skip(ftype) elif fid == 1: @@ -51547,10 +52123,10 @@ class getParentDataProduct_result(object): if oprot._fast_encode is not None and self.thrift_spec is not None: oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('getParentDataProduct_result') + oprot.writeStructBegin('shareResourceWithUsers_result') if self.success is not None: - oprot.writeFieldBegin('success', TType.STRUCT, 0) - self.success.write(oprot) + oprot.writeFieldBegin('success', TType.BOOL, 0) + oprot.writeBool(self.success) oprot.writeFieldEnd() if self.ire is not None: oprot.writeFieldBegin('ire', TType.STRUCT, 1) @@ -51586,22 +52162,26 @@ class getParentDataProduct_result(object): return not (self == other) -class getChildDataProducts_args(object): +class shareResourceWithGroups_args(object): """ Attributes: - authzToken - - productUri + - resourceId + - groupPermissionList """ thrift_spec = ( None, # 0 (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1 - (2, TType.STRING, 'productUri', 'UTF8', None, ), # 2 + (2, TType.STRING, 'resourceId', 'UTF8', None, ), # 2 + None, # 3 + (4, TType.MAP, 'groupPermissionList', (TType.STRING, 'UTF8', TType.I32, None, False), None, ), # 4 ) - def __init__(self, authzToken=None, productUri=None,): + def __init__(self, authzToken=None, resourceId=None, groupPermissionList=None,): self.authzToken = authzToken - self.productUri = productUri + self.resourceId = resourceId + self.groupPermissionList = groupPermissionList def read(self, iprot): if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: @@ -51620,7 +52200,18 @@ class getChildDataProducts_args(object): iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - self.productUri = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() + self.resourceId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.MAP: + self.groupPermissionList = {} + (_ktype301, _vtype302, _size300) = iprot.readMapBegin() + for _i304 in range(_size300): + _key305 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() + _val306 = iprot.readI32() + self.groupPermissionList[_key305] = _val306 + iprot.readMapEnd() else: iprot.skip(ftype) else: @@ -51632,14 +52223,22 @@ class getChildDataProducts_args(object): if oprot._fast_encode is not None and self.thrift_spec is not None: oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('getChildDataProducts_args') + oprot.writeStructBegin('shareResourceWithGroups_args') if self.authzToken is not None: oprot.writeFieldBegin('authzToken', TType.STRUCT, 1) self.authzToken.write(oprot) oprot.writeFieldEnd() - if self.productUri is not None: - oprot.writeFieldBegin('productUri', TType.STRING, 2) - oprot.writeString(self.productUri.encode('utf-8') if sys.version_info[0] == 2 else self.productUri) + if self.resourceId is not None: + oprot.writeFieldBegin('resourceId', TType.STRING, 2) + oprot.writeString(self.resourceId.encode('utf-8') if sys.version_info[0] == 2 else self.resourceId) + oprot.writeFieldEnd() + if self.groupPermissionList is not None: + oprot.writeFieldBegin('groupPermissionList', TType.MAP, 4) + oprot.writeMapBegin(TType.STRING, TType.I32, len(self.groupPermissionList)) + for kiter307, viter308 in self.groupPermissionList.items(): + oprot.writeString(kiter307.encode('utf-8') if sys.version_info[0] == 2 else kiter307) + oprot.writeI32(viter308) + oprot.writeMapEnd() oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -51647,8 +52246,8 @@ class getChildDataProducts_args(object): def validate(self): if self.authzToken is None: raise TProtocolException(message='Required field authzToken is unset!') - if self.productUri is None: - raise TProtocolException(message='Required field productUri is unset!') + if self.resourceId is None: + raise TProtocolException(message='Required field resourceId is unset!') return def __repr__(self): @@ -51663,7 +52262,7 @@ class getChildDataProducts_args(object): return not (self == other) -class getChildDataProducts_result(object): +class shareResourceWithGroups_result(object): """ Attributes: - success @@ -51674,7 +52273,7 @@ class getChildDataProducts_result(object): """ thrift_spec = ( - (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.data.replica.ttypes.DataProductModel, airavata.model.data.replica.ttypes.DataProductModel.thrift_spec), False), None, ), # 0 + (0, TType.BOOL, 'success', None, None, ), # 0 (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1 (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 2 (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ), # 3 @@ -51698,14 +52297,8 @@ class getChildDataProducts_result(object): if ftype == TType.STOP: break if fid == 0: - if ftype == TType.LIST: - self.success = [] - (_etype287, _size284) = iprot.readListBegin() - for _i288 in range(_size284): - _elem289 = airavata.model.data.replica.ttypes.DataProductModel() - _elem289.read(iprot) - self.success.append(_elem289) - iprot.readListEnd() + if ftype == TType.BOOL: + self.success = iprot.readBool() else: iprot.skip(ftype) elif fid == 1: @@ -51741,13 +52334,10 @@ class getChildDataProducts_result(object): if oprot._fast_encode is not None and self.thrift_spec is not None: oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('getChildDataProducts_result') + oprot.writeStructBegin('shareResourceWithGroups_result') if self.success is not None: - oprot.writeFieldBegin('success', TType.LIST, 0) - oprot.writeListBegin(TType.STRUCT, len(self.success)) - for iter290 in self.success: - iter290.write(oprot) - oprot.writeListEnd() + oprot.writeFieldBegin('success', TType.BOOL, 0) + oprot.writeBool(self.success) oprot.writeFieldEnd() if self.ire is not None: oprot.writeFieldBegin('ire', TType.STRUCT, 1) @@ -51783,7 +52373,7 @@ class getChildDataProducts_result(object): return not (self == other) -class shareResourceWithUsers_args(object): +class revokeSharingOfResourceFromUsers_args(object): """ Attributes: - authzToken @@ -51827,11 +52417,11 @@ class shareResourceWithUsers_args(object): elif fid == 4: if ftype == TType.MAP: self.userPermissionList = {} - (_ktype292, _vtype293, _size291) = iprot.readMapBegin() - for _i295 in range(_size291): - _key296 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() - _val297 = iprot.readI32() - self.userPermissionList[_key296] = _val297 + (_ktype310, _vtype311, _size309) = iprot.readMapBegin() + for _i313 in range(_size309): + _key314 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() + _val315 = iprot.readI32() + self.userPermissionList[_key314] = _val315 iprot.readMapEnd() else: iprot.skip(ftype) @@ -51844,7 +52434,7 @@ class shareResourceWithUsers_args(object): if oprot._fast_encode is not None and self.thrift_spec is not None: oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('shareResourceWithUsers_args') + oprot.writeStructBegin('revokeSharingOfResourceFromUsers_args') if self.authzToken is not None: oprot.writeFieldBegin('authzToken', TType.STRUCT, 1) self.authzToken.write(oprot) @@ -51856,9 +52446,9 @@ class shareResourceWithUsers_args(object): if self.userPermissionList is not None: oprot.writeFieldBegin('userPermissionList', TType.MAP, 4) oprot.writeMapBegin(TType.STRING, TType.I32, len(self.userPermissionList)) - for kiter298, viter299 in self.userPermissionList.items(): - oprot.writeString(kiter298.encode('utf-8') if sys.version_info[0] == 2 else kiter298) - oprot.writeI32(viter299) + for kiter316, viter317 in self.userPermissionList.items(): + oprot.writeString(kiter316.encode('utf-8') if sys.version_info[0] == 2 else kiter316) + oprot.writeI32(viter317) oprot.writeMapEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -51883,7 +52473,7 @@ class shareResourceWithUsers_args(object): return not (self == other) -class shareResourceWithUsers_result(object): +class revokeSharingOfResourceFromUsers_result(object): """ Attributes: - success @@ -51955,7 +52545,7 @@ class shareResourceWithUsers_result(object): if oprot._fast_encode is not None and self.thrift_spec is not None: oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('shareResourceWithUsers_result') + oprot.writeStructBegin('revokeSharingOfResourceFromUsers_result') if self.success is not None: oprot.writeFieldBegin('success', TType.BOOL, 0) oprot.writeBool(self.success) @@ -51994,7 +52584,7 @@ class shareResourceWithUsers_result(object): return not (self == other) -class shareResourceWithGroups_args(object): +class revokeSharingOfResourceFromGroups_args(object): """ Attributes: - authzToken @@ -52038,11 +52628,11 @@ class shareResourceWithGroups_args(object): elif fid == 4: if ftype == TType.MAP: self.groupPermissionList = {} - (_ktype301, _vtype302, _size300) = iprot.readMapBegin() - for _i304 in range(_size300): - _key305 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() - _val306 = iprot.readI32() - self.groupPermissionList[_key305] = _val306 + (_ktype319, _vtype320, _size318) = iprot.readMapBegin() + for _i322 in range(_size318): + _key323 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() + _val324 = iprot.readI32() + self.groupPermissionList[_key323] = _val324 iprot.readMapEnd() else: iprot.skip(ftype) @@ -52055,7 +52645,7 @@ class shareResourceWithGroups_args(object): if oprot._fast_encode is not None and self.thrift_spec is not None: oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('shareResourceWithGroups_args') + oprot.writeStructBegin('revokeSharingOfResourceFromGroups_args') if self.authzToken is not None: oprot.writeFieldBegin('authzToken', TType.STRUCT, 1) self.authzToken.write(oprot) @@ -52067,9 +52657,9 @@ class shareResourceWithGroups_args(object): if self.groupPermissionList is not None: oprot.writeFieldBegin('groupPermissionList', TType.MAP, 4) oprot.writeMapBegin(TType.STRING, TType.I32, len(self.groupPermissionList)) - for kiter307, viter308 in self.groupPermissionList.items(): - oprot.writeString(kiter307.encode('utf-8') if sys.version_info[0] == 2 else kiter307) - oprot.writeI32(viter308) + for kiter325, viter326 in self.groupPermissionList.items(): + oprot.writeString(kiter325.encode('utf-8') if sys.version_info[0] == 2 else kiter325) + oprot.writeI32(viter326) oprot.writeMapEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -52094,7 +52684,7 @@ class shareResourceWithGroups_args(object): return not (self == other) -class shareResourceWithGroups_result(object): +class revokeSharingOfResourceFromGroups_result(object): """ Attributes: - success @@ -52166,7 +52756,7 @@ class shareResourceWithGroups_result(object): if oprot._fast_encode is not None and self.thrift_spec is not None: oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('shareResourceWithGroups_result') + oprot.writeStructBegin('revokeSharingOfResourceFromGroups_result') if self.success is not None: oprot.writeFieldBegin('success', TType.BOOL, 0) oprot.writeBool(self.success) @@ -52205,12 +52795,12 @@ class shareResourceWithGroups_result(object): return not (self == other) -class revokeSharingOfResourceFromUsers_args(object): +class getAllAccessibleUsers_args(object): """ Attributes: - authzToken - resourceId - - userPermissionList + - permissionType """ thrift_spec = ( @@ -52218,13 +52808,13 @@ class revokeSharingOfResourceFromUsers_args(object): (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1 (2, TType.STRING, 'resourceId', 'UTF8', None, ), # 2 None, # 3 - (4, TType.MAP, 'userPermissionList', (TType.STRING, 'UTF8', TType.I32, None, False), None, ), # 4 + (4, TType.I32, 'permissionType', None, None, ), # 4 ) - def __init__(self, authzToken=None, resourceId=None, userPermissionList=None,): + def __init__(self, authzToken=None, resourceId=None, permissionType=None,): self.authzToken = authzToken self.resourceId = resourceId - self.userPermissionList = userPermissionList + self.permissionType = permissionType def read(self, iprot): if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: @@ -52247,14 +52837,8 @@ class revokeSharingOfResourceFromUsers_args(object): else: iprot.skip(ftype) elif fid == 4: - if ftype == TType.MAP: - self.userPermissionList = {} - (_ktype310, _vtype311, _size309) = iprot.readMapBegin() - for _i313 in range(_size309): - _key314 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() - _val315 = iprot.readI32() - self.userPermissionList[_key314] = _val315 - iprot.readMapEnd() + if ftype == TType.I32: + self.permissionType = iprot.readI32() else: iprot.skip(ftype) else: @@ -52266,7 +52850,7 @@ class revokeSharingOfResourceFromUsers_args(object): if oprot._fast_encode is not None and self.thrift_spec is not None: oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('revokeSharingOfResourceFromUsers_args') + oprot.writeStructBegin('getAllAccessibleUsers_args') if self.authzToken is not None: oprot.writeFieldBegin('authzToken', TType.STRUCT, 1) self.authzToken.write(oprot) @@ -52275,13 +52859,9 @@ class revokeSharingOfResourceFromUsers_args(object): oprot.writeFieldBegin('resourceId', TType.STRING, 2) oprot.writeString(self.resourceId.encode('utf-8') if sys.version_info[0] == 2 else self.resourceId) oprot.writeFieldEnd() - if self.userPermissionList is not None: - oprot.writeFieldBegin('userPermissionList', TType.MAP, 4) - oprot.writeMapBegin(TType.STRING, TType.I32, len(self.userPermissionList)) - for kiter316, viter317 in self.userPermissionList.items(): - oprot.writeString(kiter316.encode('utf-8') if sys.version_info[0] == 2 else kiter316) - oprot.writeI32(viter317) - oprot.writeMapEnd() + if self.permissionType is not None: + oprot.writeFieldBegin('permissionType', TType.I32, 4) + oprot.writeI32(self.permissionType) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -52291,6 +52871,8 @@ class revokeSharingOfResourceFromUsers_args(object): raise TProtocolException(message='Required field authzToken is unset!') if self.resourceId is None: raise TProtocolException(message='Required field resourceId is unset!') + if self.permissionType is None: + raise TProtocolException(message='Required field permissionType is unset!') return def __repr__(self): @@ -52305,7 +52887,7 @@ class revokeSharingOfResourceFromUsers_args(object): return not (self == other) -class revokeSharingOfResourceFromUsers_result(object): +class getAllAccessibleUsers_result(object): """ Attributes: - success @@ -52316,7 +52898,7 @@ class revokeSharingOfResourceFromUsers_result(object): """ thrift_spec = ( - (0, TType.BOOL, 'success', None, None, ), # 0 + (0, TType.LIST, 'success', (TType.STRING, 'UTF8', False), None, ), # 0 (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1 (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 2 (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ), # 3 @@ -52340,8 +52922,13 @@ class revokeSharingOfResourceFromUsers_result(object): if ftype == TType.STOP: break if fid == 0: - if ftype == TType.BOOL: - self.success = iprot.readBool() + if ftype == TType.LIST: + self.success = [] + (_etype330, _size327) = iprot.readListBegin() + for _i331 in range(_size327): + _elem332 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() + self.success.append(_elem332) + iprot.readListEnd() else: iprot.skip(ftype) elif fid == 1: @@ -52377,10 +52964,13 @@ class revokeSharingOfResourceFromUsers_result(object): if oprot._fast_encode is not None and self.thrift_spec is not None: oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('revokeSharingOfResourceFromUsers_result') + oprot.writeStructBegin('getAllAccessibleUsers_result') if self.success is not None: - oprot.writeFieldBegin('success', TType.BOOL, 0) - oprot.writeBool(self.success) + oprot.writeFieldBegin('success', TType.LIST, 0) + oprot.writeListBegin(TType.STRING, len(self.success)) + for iter333 in self.success: + oprot.writeString(iter333.encode('utf-8') if sys.version_info[0] == 2 else iter333) + oprot.writeListEnd() oprot.writeFieldEnd() if self.ire is not None: oprot.writeFieldBegin('ire', TType.STRUCT, 1) @@ -52416,12 +53006,12 @@ class revokeSharingOfResourceFromUsers_result(object): return not (self == other) -class revokeSharingOfResourceFromGroups_args(object): +class getAllAccessibleGroups_args(object): """ Attributes: - authzToken - resourceId - - groupPermissionList + - permissionType """ thrift_spec = ( @@ -52429,13 +53019,13 @@ class revokeSharingOfResourceFromGroups_args(object): (1, TType.STRUCT, 'authzToken', (airavata.model.security.ttypes.AuthzToken, airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1 (2, TType.STRING, 'resourceId', 'UTF8', None, ), # 2 None, # 3 - (4, TType.MAP, 'groupPermissionList', (TType.STRING, 'UTF8', TType.I32, None, False), None, ), # 4 + (4, TType.I32, 'permissionType', None, None, ), # 4 ) - def __init__(self, authzToken=None, resourceId=None, groupPermissionList=None,): + def __init__(self, authzToken=None, resourceId=None, permissionType=None,): self.authzToken = authzToken self.resourceId = resourceId - self.groupPermissionList = groupPermissionList + self.permissionType = permissionType def read(self, iprot): if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: @@ -52458,14 +53048,8 @@ class revokeSharingOfResourceFromGroups_args(object): else: iprot.skip(ftype) elif fid == 4: - if ftype == TType.MAP: - self.groupPermissionList = {} - (_ktype319, _vtype320, _size318) = iprot.readMapBegin() - for _i322 in range(_size318): - _key323 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() - _val324 = iprot.readI32() - self.groupPermissionList[_key323] = _val324 - iprot.readMapEnd() + if ftype == TType.I32: + self.permissionType = iprot.readI32() else: iprot.skip(ftype) else: @@ -52477,7 +53061,7 @@ class revokeSharingOfResourceFromGroups_args(object): if oprot._fast_encode is not None and self.thrift_spec is not None: oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('revokeSharingOfResourceFromGroups_args') + oprot.writeStructBegin('getAllAccessibleGroups_args') if self.authzToken is not None: oprot.writeFieldBegin('authzToken', TType.STRUCT, 1) self.authzToken.write(oprot) @@ -52486,13 +53070,9 @@ class revokeSharingOfResourceFromGroups_args(object): oprot.writeFieldBegin('resourceId', TType.STRING, 2) oprot.writeString(self.resourceId.encode('utf-8') if sys.version_info[0] == 2 else self.resourceId) oprot.writeFieldEnd() - if self.groupPermissionList is not None: - oprot.writeFieldBegin('groupPermissionList', TType.MAP, 4) - oprot.writeMapBegin(TType.STRING, TType.I32, len(self.groupPermissionList)) - for kiter325, viter326 in self.groupPermissionList.items(): - oprot.writeString(kiter325.encode('utf-8') if sys.version_info[0] == 2 else kiter325) - oprot.writeI32(viter326) - oprot.writeMapEnd() + if self.permissionType is not None: + oprot.writeFieldBegin('permissionType', TType.I32, 4) + oprot.writeI32(self.permissionType) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -52502,6 +53082,8 @@ class revokeSharingOfResourceFromGroups_args(object): raise TProtocolException(message='Required field authzToken is unset!') if self.resourceId is None: raise TProtocolException(message='Required field resourceId is unset!') + if self.permissionType is None: + raise TProtocolException(message='Required field permissionType is unset!') return def __repr__(self): @@ -52516,7 +53098,7 @@ class revokeSharingOfResourceFromGroups_args(object): return not (self == other) -class revokeSharingOfResourceFromGroups_result(object): +class getAllAccessibleGroups_result(object): """ Attributes: - success @@ -52527,7 +53109,7 @@ class revokeSharingOfResourceFromGroups_result(object): """ thrift_spec = ( - (0, TType.BOOL, 'success', None, None, ), # 0 + (0, TType.LIST, 'success', (TType.STRING, 'UTF8', False), None, ), # 0 (1, TType.STRUCT, 'ire', (airavata.api.error.ttypes.InvalidRequestException, airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1 (2, TType.STRUCT, 'ace', (airavata.api.error.ttypes.AiravataClientException, airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 2 (3, TType.STRUCT, 'ase', (airavata.api.error.ttypes.AiravataSystemException, airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ), # 3 @@ -52551,8 +53133,13 @@ class revokeSharingOfResourceFromGroups_result(object): if ftype == TType.STOP: break if fid == 0: - if ftype == TType.BOOL: - self.success = iprot.readBool() + if ftype == TType.LIST: + self.success = [] + (_etype337, _size334) = iprot.readListBegin() + for _i338 in range(_size334): + _elem339 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() + self.success.append(_elem339) + iprot.readListEnd() else: iprot.skip(ftype) elif fid == 1: @@ -52588,10 +53175,13 @@ class revokeSharingOfResourceFromGroups_result(object): if oprot._fast_encode is not None and self.thrift_spec is not None: oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('revokeSharingOfResourceFromGroups_result') + oprot.writeStructBegin('getAllAccessibleGroups_result') if self.success is not None: - oprot.writeFieldBegin('success', TType.BOOL, 0) - oprot.writeBool(self.success) + oprot.writeFieldBegin('success', TType.LIST, 0) + oprot.writeListBegin(TType.STRING, len(self.success)) + for iter340 in self.success: + oprot.writeString(iter340.encode('utf-8') if sys.version_info[0] == 2 else iter340) + oprot.writeListEnd() oprot.writeFieldEnd() if self.ire is not None: oprot.writeFieldBegin('ire', TType.STRUCT, 1) @@ -52627,7 +53217,7 @@ class revokeSharingOfResourceFromGroups_result(object): return not (self == other) -class getAllAccessibleUsers_args(object): +class getAllDirectlyAccessibleUsers_args(object): """ Attributes: - authzToken @@ -52682,7 +53272,7 @@ class getAllAccessibleUsers_args(object): if oprot._fast_encode is not None and self.thrift_spec is not None: oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('getAllAccessibleUsers_args') + oprot.writeStructBegin('getAllDirectlyAccessibleUsers_args') if self.authzToken is not None: oprot.writeFieldBegin('authzToken', TType.STRUCT, 1) self.authzToken.write(oprot) @@ -52719,7 +53309,7 @@ class getAllAccessibleUsers_args(object): return not (self == other) -class getAllAccessibleUsers_result(object): +class getAllDirectlyAccessibleUsers_result(object): """ Attributes: - success @@ -52756,10 +53346,10 @@ class getAllAccessibleUsers_result(object): if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype330, _size327) = iprot.readListBegin() - for _i331 in range(_size327): - _elem332 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() - self.success.append(_elem332) + (_etype344, _size341) = iprot.readListBegin() + for _i345 in range(_size341): + _elem346 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() + self.success.append(_elem346) iprot.readListEnd() else: iprot.skip(ftype) @@ -52796,12 +53386,12 @@ class getAllAccessibleUsers_result(object): if oprot._fast_encode is not None and self.thrift_spec is not None: oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('getAllAccessibleUsers_result') + oprot.writeStructBegin('getAllDirectlyAccessibleUsers_result') if self.success is not None: oprot.writeFieldBegin('success', TType.LIST, 0) oprot.writeListBegin(TType.STRING, len(self.success)) - for iter333 in self.success: - oprot.writeString(iter333.encode('utf-8') if sys.version_info[0] == 2 else iter333) + for iter347 in self.success: + oprot.writeString(iter347.encode('utf-8') if sys.version_info[0] == 2 else iter347) oprot.writeListEnd() oprot.writeFieldEnd() if self.ire is not None: @@ -52838,7 +53428,7 @@ class getAllAccessibleUsers_result(object): return not (self == other) -class getAllAccessibleGroups_args(object): +class getAllDirectlyAccessibleGroups_args(object): """ Attributes: - authzToken @@ -52893,7 +53483,7 @@ class getAllAccessibleGroups_args(object): if oprot._fast_encode is not None and self.thrift_spec is not None: oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('getAllAccessibleGroups_args') + oprot.writeStructBegin('getAllDirectlyAccessibleGroups_args') if self.authzToken is not None: oprot.writeFieldBegin('authzToken', TType.STRUCT, 1) self.authzToken.write(oprot) @@ -52930,7 +53520,7 @@ class getAllAccessibleGroups_args(object): return not (self == other) -class getAllAccessibleGroups_result(object): +class getAllDirectlyAccessibleGroups_result(object): """ Attributes: - success @@ -52967,10 +53557,10 @@ class getAllAccessibleGroups_result(object): if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype337, _size334) = iprot.readListBegin() - for _i338 in range(_size334): - _elem339 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() - self.success.append(_elem339) + (_etype351, _size348) = iprot.readListBegin() + for _i352 in range(_size348): + _elem353 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() + self.success.append(_elem353) iprot.readListEnd() else: iprot.skip(ftype) @@ -53007,12 +53597,12 @@ class getAllAccessibleGroups_result(object): if oprot._fast_encode is not None and self.thrift_spec is not None: oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('getAllAccessibleGroups_result') + oprot.writeStructBegin('getAllDirectlyAccessibleGroups_result') if self.success is not None: oprot.writeFieldBegin('success', TType.LIST, 0) oprot.writeListBegin(TType.STRING, len(self.success)) - for iter340 in self.success: - oprot.writeString(iter340.encode('utf-8') if sys.version_info[0] == 2 else iter340) + for iter354 in self.success: + oprot.writeString(iter354.encode('utf-8') if sys.version_info[0] == 2 else iter354) oprot.writeListEnd() oprot.writeFieldEnd() if self.ire is not None: @@ -54109,11 +54699,11 @@ class getGroupResourceList_result(object): if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype344, _size341) = iprot.readListBegin() - for _i345 in range(_size341): - _elem346 = airavata.model.appcatalog.groupresourceprofile.ttypes.GroupResourceProfile() - _elem346.read(iprot) - self.success.append(_elem346) + (_etype358, _size355) = iprot.readListBegin() + for _i359 in range(_size355): + _elem360 = airavata.model.appcatalog.groupresourceprofile.ttypes.GroupResourceProfile() + _elem360.read(iprot) + self.success.append(_elem360) iprot.readListEnd() else: iprot.skip(ftype) @@ -54154,8 +54744,8 @@ class getGroupResourceList_result(object): if self.success is not None: oprot.writeFieldBegin('success', TType.LIST, 0) oprot.writeListBegin(TType.STRUCT, len(self.success)) - for iter347 in self.success: - iter347.write(oprot) + for iter361 in self.success: + iter361.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.ire is not None: @@ -55465,11 +56055,11 @@ class getGroupComputeResourcePrefList_result(object): if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype351, _size348) = iprot.readListBegin() - for _i352 in range(_size348): - _elem353 = airavata.model.appcatalog.groupresourceprofile.ttypes.GroupComputeResourcePreference() - _elem353.read(iprot) - self.success.append(_elem353) + (_etype365, _size362) = iprot.readListBegin() + for _i366 in range(_size362): + _elem367 = airavata.model.appcatalog.groupresourceprofile.ttypes.GroupComputeResourcePreference() + _elem367.read(iprot) + self.success.append(_elem367) iprot.readListEnd() else: iprot.skip(ftype) @@ -55510,8 +56100,8 @@ class getGroupComputeResourcePrefList_result(object): if self.success is not None: oprot.writeFieldBegin('success', TType.LIST, 0) oprot.writeListBegin(TType.STRUCT, len(self.success)) - for iter354 in self.success: - iter354.write(oprot) + for iter368 in self.success: + iter368.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.ire is not None: @@ -55662,11 +56252,11 @@ class getGroupBatchQueueResourcePolicyList_result(object): if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype358, _size355) = iprot.readListBegin() - for _i359 in range(_size355): - _elem360 = airavata.model.appcatalog.groupresourceprofile.ttypes.BatchQueueResourcePolicy() - _elem360.read(iprot) - self.success.append(_elem360) + (_etype372, _size369) = iprot.readListBegin() + for _i373 in range(_size369): + _elem374 = airavata.model.appcatalog.groupresourceprofile.ttypes.BatchQueueResourcePolicy() + _elem374.read(iprot) + self.success.append(_elem374) iprot.readListEnd() else: iprot.skip(ftype) @@ -55707,8 +56297,8 @@ class getGroupBatchQueueResourcePolicyList_result(object): if self.success is not None: oprot.writeFieldBegin('success', TType.LIST, 0) oprot.writeListBegin(TType.STRUCT, len(self.success)) - for iter361 in self.success: - iter361.write(oprot) + for iter375 in self.success: + iter375.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.ire is not None: @@ -55859,11 +56449,11 @@ class getGroupComputeResourcePolicyList_result(object): if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype365, _size362) = iprot.readListBegin() - for _i366 in range(_size362): - _elem367 = airavata.model.appcatalog.groupresourceprofile.ttypes.ComputeResourcePolicy() - _elem367.read(iprot) - self.success.append(_elem367) + (_etype379, _size376) = iprot.readListBegin() + for _i380 in range(_size376): + _elem381 = airavata.model.appcatalog.groupresourceprofile.ttypes.ComputeResourcePolicy() + _elem381.read(iprot) + self.success.append(_elem381) iprot.readListEnd() else: iprot.skip(ftype) @@ -55904,8 +56494,8 @@ class getGroupComputeResourcePolicyList_result(object): if self.success is not None: oprot.writeFieldBegin('success', TType.LIST, 0) oprot.writeListBegin(TType.STRUCT, len(self.success)) - for iter368 in self.success: - iter368.write(oprot) + for iter382 in self.success: + iter382.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.ire is not None: @@ -56623,11 +57213,11 @@ class listAllParsers_result(object): if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype372, _size369) = iprot.readListBegin() - for _i373 in range(_size369): - _elem374 = airavata.model.appcatalog.parser.ttypes.Parser() - _elem374.read(iprot) - self.success.append(_elem374) + (_etype386, _size383) = iprot.readListBegin() + for _i387 in range(_size383): + _elem388 = airavata.model.appcatalog.parser.ttypes.Parser() + _elem388.read(iprot) + self.success.append(_elem388) iprot.readListEnd() else: iprot.skip(ftype) @@ -56668,8 +57258,8 @@ class listAllParsers_result(object): if self.success is not None: oprot.writeFieldBegin('success', TType.LIST, 0) oprot.writeListBegin(TType.STRUCT, len(self.success)) - for iter375 in self.success: - iter375.write(oprot) + for iter389 in self.success: + iter389.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.ire is not None: @@ -57239,11 +57829,11 @@ class getParsingTemplatesForExperiment_result(object): if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype379, _size376) = iprot.readListBegin() - for _i380 in range(_size376): - _elem381 = airavata.model.appcatalog.parser.ttypes.ParsingTemplate() - _elem381.read(iprot) - self.success.append(_elem381) + (_etype393, _size390) = iprot.readListBegin() + for _i394 in range(_size390): + _elem395 = airavata.model.appcatalog.parser.ttypes.ParsingTemplate() + _elem395.read(iprot) + self.success.append(_elem395) iprot.readListEnd() else: iprot.skip(ftype) @@ -57284,8 +57874,8 @@ class getParsingTemplatesForExperiment_result(object): if self.success is not None: oprot.writeFieldBegin('success', TType.LIST, 0) oprot.writeListBegin(TType.STRUCT, len(self.success)) - for iter382 in self.success: - iter382.write(oprot) + for iter396 in self.success: + iter396.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.ire is not None: @@ -57827,11 +58417,11 @@ class listAllParsingTemplates_result(object): if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype386, _size383) = iprot.readListBegin() - for _i387 in range(_size383): - _elem388 = airavata.model.appcatalog.parser.ttypes.ParsingTemplate() - _elem388.read(iprot) - self.success.append(_elem388) + (_etype400, _size397) = iprot.readListBegin() + for _i401 in range(_size397): + _elem402 = airavata.model.appcatalog.parser.ttypes.ParsingTemplate() + _elem402.read(iprot) + self.success.append(_elem402) iprot.readListEnd() else: iprot.skip(ftype) @@ -57872,8 +58462,8 @@ class listAllParsingTemplates_result(object): if self.success is not None: oprot.writeFieldBegin('success', TType.LIST, 0) oprot.writeListBegin(TType.STRUCT, len(self.success)) - for iter389 in self.success: - iter389.write(oprot) + for iter403 in self.success: + iter403.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.ire is not None: diff --git a/airavata/api/sharing/SharingRegistryService-remote b/airavata/api/sharing/SharingRegistryService-remote index 4e45a36..4a0427e 100755 --- a/airavata/api/sharing/SharingRegistryService-remote +++ b/airavata/api/sharing/SharingRegistryService-remote @@ -67,7 +67,9 @@ if len(sys.argv) <= 1 or sys.argv[1] == '--help': print(' Entity getEntity(string domainId, string entityId)') print(' searchEntities(string domainId, string userId, filters, i32 offset, i32 limit)') print(' getListOfSharedUsers(string domainId, string entityId, string permissionTypeId)') + print(' getListOfDirectlySharedUsers(string domainId, string entityId, string permissionTypeId)') print(' getListOfSharedGroups(string domainId, string entityId, string permissionTypeId)') + print(' getListOfDirectlySharedGroups(string domainId, string entityId, string permissionTypeId)') print(' string createPermissionType(PermissionType permissionType)') print(' bool updatePermissionType(PermissionType permissionType)') print(' bool isPermissionExists(string dimainId, string permissionId)') @@ -416,12 +418,24 @@ elif cmd == 'getListOfSharedUsers': sys.exit(1) pp.pprint(client.getListOfSharedUsers(args[0], args[1], args[2],)) +elif cmd == 'getListOfDirectlySharedUsers': + if len(args) != 3: + print('getListOfDirectlySharedUsers requires 3 args') + sys.exit(1) + pp.pprint(client.getListOfDirectlySharedUsers(args[0], args[1], args[2],)) + elif cmd == 'getListOfSharedGroups': if len(args) != 3: print('getListOfSharedGroups requires 3 args') sys.exit(1) pp.pprint(client.getListOfSharedGroups(args[0], args[1], args[2],)) +elif cmd == 'getListOfDirectlySharedGroups': + if len(args) != 3: + print('getListOfDirectlySharedGroups requires 3 args') + sys.exit(1) + pp.pprint(client.getListOfDirectlySharedGroups(args[0], args[1], args[2],)) + elif cmd == 'createPermissionType': if len(args) != 1: print('createPermissionType requires 1 args') diff --git a/airavata/api/sharing/SharingRegistryService.py b/airavata/api/sharing/SharingRegistryService.py index dd3c22f..1c4f702 100644 --- a/airavata/api/sharing/SharingRegistryService.py +++ b/airavata/api/sharing/SharingRegistryService.py @@ -454,6 +454,17 @@ class Iface(object): """ pass + def getListOfDirectlySharedUsers(self, domainId, entityId, permissionTypeId): + """ +

API method to get a list of shared users given the entity id where the sharing type is directly applied

+ + Parameters: + - domainId + - entityId + - permissionTypeId + """ + pass + def getListOfSharedGroups(self, domainId, entityId, permissionTypeId): """

API method to get a list of shared groups given the entity id

@@ -465,6 +476,17 @@ class Iface(object): """ pass + def getListOfDirectlySharedGroups(self, domainId, entityId, permissionTypeId): + """ +

API method to get a list of directly shared groups given the entity id where the sharing type is directly applied

+ + Parameters: + - domainId + - entityId + - permissionTypeId + """ + pass + def createPermissionType(self, permissionType): """

API method to create permission type

@@ -2204,6 +2226,45 @@ class Client(Iface): raise result.sre raise TApplicationException(TApplicationException.MISSING_RESULT, "getListOfSharedUsers failed: unknown result") + def getListOfDirectlySharedUsers(self, domainId, entityId, permissionTypeId): + """ +

API method to get a list of shared users given the entity id where the sharing type is directly applied

+ + Parameters: + - domainId + - entityId + - permissionTypeId + """ + self.send_getListOfDirectlySharedUsers(domainId, entityId, permissionTypeId) + return self.recv_getListOfDirectlySharedUsers() + + def send_getListOfDirectlySharedUsers(self, domainId, entityId, permissionTypeId): + self._oprot.writeMessageBegin('getListOfDirectlySharedUsers', TMessageType.CALL, self._seqid) + args = getListOfDirectlySharedUsers_args() + args.domainId = domainId + args.entityId = entityId + args.permissionTypeId = permissionTypeId + args.write(self._oprot) + self._oprot.writeMessageEnd() + self._oprot.trans.flush() + + def recv_getListOfDirectlySharedUsers(self): + iprot = self._iprot + (fname, mtype, rseqid) = iprot.readMessageBegin() + if mtype == TMessageType.EXCEPTION: + x = TApplicationException() + x.read(iprot) + iprot.readMessageEnd() + raise x + result = getListOfDirectlySharedUsers_result() + result.read(iprot) + iprot.readMessageEnd() + if result.success is not None: + return result.success + if result.sre is not None: + raise result.sre + raise TApplicationException(TApplicationException.MISSING_RESULT, "getListOfDirectlySharedUsers failed: unknown result") + def getListOfSharedGroups(self, domainId, entityId, permissionTypeId): """

API method to get a list of shared groups given the entity id

@@ -2243,6 +2304,45 @@ class Client(Iface): raise result.sre raise TApplicationException(TApplicationException.MISSING_RESULT, "getListOfSharedGroups failed: unknown result") + def getListOfDirectlySharedGroups(self, domainId, entityId, permissionTypeId): + """ +

API method to get a list of directly shared groups given the entity id where the sharing type is directly applied

+ + Parameters: + - domainId + - entityId + - permissionTypeId + """ + self.send_getListOfDirectlySharedGroups(domainId, entityId, permissionTypeId) + return self.recv_getListOfDirectlySharedGroups() + + def send_getListOfDirectlySharedGroups(self, domainId, entityId, permissionTypeId): + self._oprot.writeMessageBegin('getListOfDirectlySharedGroups', TMessageType.CALL, self._seqid) + args = getListOfDirectlySharedGroups_args() + args.domainId = domainId + args.entityId = entityId + args.permissionTypeId = permissionTypeId + args.write(self._oprot) + self._oprot.writeMessageEnd() + self._oprot.trans.flush() + + def recv_getListOfDirectlySharedGroups(self): + iprot = self._iprot + (fname, mtype, rseqid) = iprot.readMessageBegin() + if mtype == TMessageType.EXCEPTION: + x = TApplicationException() + x.read(iprot) + iprot.readMessageEnd() + raise x + result = getListOfDirectlySharedGroups_result() + result.read(iprot) + iprot.readMessageEnd() + if result.success is not None: + return result.success + if result.sre is not None: + raise result.sre + raise TApplicationException(TApplicationException.MISSING_RESULT, "getListOfDirectlySharedGroups failed: unknown result") + def createPermissionType(self, permissionType): """

API method to create permission type

@@ -2722,7 +2822,9 @@ class Processor(Iface, TProcessor): self._processMap["getEntity"] = Processor.process_getEntity self._processMap["searchEntities"] = Processor.process_searchEntities self._processMap["getListOfSharedUsers"] = Processor.process_getListOfSharedUsers + self._processMap["getListOfDirectlySharedUsers"] = Processor.process_getListOfDirectlySharedUsers self._processMap["getListOfSharedGroups"] = Processor.process_getListOfSharedGroups + self._processMap["getListOfDirectlySharedGroups"] = Processor.process_getListOfDirectlySharedGroups self._processMap["createPermissionType"] = Processor.process_createPermissionType self._processMap["updatePermissionType"] = Processor.process_updatePermissionType self._processMap["isPermissionExists"] = Processor.process_isPermissionExists @@ -3702,6 +3804,28 @@ class Processor(Iface, TProcessor): oprot.writeMessageEnd() oprot.trans.flush() + def process_getListOfDirectlySharedUsers(self, seqid, iprot, oprot): + args = getListOfDirectlySharedUsers_args() + args.read(iprot) + iprot.readMessageEnd() + result = getListOfDirectlySharedUsers_result() + try: + result.success = self._handler.getListOfDirectlySharedUsers(args.domainId, args.entityId, args.permissionTypeId) + msg_type = TMessageType.REPLY + except (TTransport.TTransportException, KeyboardInterrupt, SystemExit): + raise + except airavata.model.sharing.ttypes.SharingRegistryException as sre: + msg_type = TMessageType.REPLY + result.sre = sre + except Exception as ex: + msg_type = TMessageType.EXCEPTION + logging.exception(ex) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') + oprot.writeMessageBegin("getListOfDirectlySharedUsers", msg_type, seqid) + result.write(oprot) + oprot.writeMessageEnd() + oprot.trans.flush() + def process_getListOfSharedGroups(self, seqid, iprot, oprot): args = getListOfSharedGroups_args() args.read(iprot) @@ -3724,6 +3848,28 @@ class Processor(Iface, TProcessor): oprot.writeMessageEnd() oprot.trans.flush() + def process_getListOfDirectlySharedGroups(self, seqid, iprot, oprot): + args = getListOfDirectlySharedGroups_args() + args.read(iprot) + iprot.readMessageEnd() + result = getListOfDirectlySharedGroups_result() + try: + result.success = self._handler.getListOfDirectlySharedGroups(args.domainId, args.entityId, args.permissionTypeId) + msg_type = TMessageType.REPLY + except (TTransport.TTransportException, KeyboardInterrupt, SystemExit): + raise + except airavata.model.sharing.ttypes.SharingRegistryException as sre: + msg_type = TMessageType.REPLY + result.sre = sre + except Exception as ex: + msg_type = TMessageType.EXCEPTION + logging.exception(ex) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') + oprot.writeMessageBegin("getListOfDirectlySharedGroups", msg_type, seqid) + result.write(oprot) + oprot.writeMessageEnd() + oprot.trans.flush() + def process_createPermissionType(self, seqid, iprot, oprot): args = createPermissionType_args() args.read(iprot) @@ -10603,7 +10749,7 @@ class getListOfSharedUsers_result(object): return not (self == other) -class getListOfSharedGroups_args(object): +class getListOfDirectlySharedUsers_args(object): """ Attributes: - domainId @@ -10656,7 +10802,7 @@ class getListOfSharedGroups_args(object): if oprot._fast_encode is not None and self.thrift_spec is not None: oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('getListOfSharedGroups_args') + oprot.writeStructBegin('getListOfDirectlySharedUsers_args') if self.domainId is not None: oprot.writeFieldBegin('domainId', TType.STRING, 1) oprot.writeString(self.domainId.encode('utf-8') if sys.version_info[0] == 2 else self.domainId) @@ -10693,7 +10839,7 @@ class getListOfSharedGroups_args(object): return not (self == other) -class getListOfSharedGroups_result(object): +class getListOfDirectlySharedUsers_result(object): """ Attributes: - success @@ -10701,7 +10847,7 @@ class getListOfSharedGroups_result(object): """ thrift_spec = ( - (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.sharing.ttypes.UserGroup, airavata.model.sharing.ttypes.UserGroup.thrift_spec), False), None, ), # 0 + (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.sharing.ttypes.User, airavata.model.sharing.ttypes.User.thrift_spec), False), None, ), # 0 (1, TType.STRUCT, 'sre', (airavata.model.sharing.ttypes.SharingRegistryException, airavata.model.sharing.ttypes.SharingRegistryException.thrift_spec), None, ), # 1 ) @@ -10723,7 +10869,7 @@ class getListOfSharedGroups_result(object): self.success = [] (_etype108, _size105) = iprot.readListBegin() for _i109 in range(_size105): - _elem110 = airavata.model.sharing.ttypes.UserGroup() + _elem110 = airavata.model.sharing.ttypes.User() _elem110.read(iprot) self.success.append(_elem110) iprot.readListEnd() @@ -10744,7 +10890,7 @@ class getListOfSharedGroups_result(object): if oprot._fast_encode is not None and self.thrift_spec is not None: oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('getListOfSharedGroups_result') + oprot.writeStructBegin('getListOfDirectlySharedUsers_result') if self.success is not None: oprot.writeFieldBegin('success', TType.LIST, 0) oprot.writeListBegin(TType.STRUCT, len(self.success)) @@ -10774,6 +10920,348 @@ class getListOfSharedGroups_result(object): return not (self == other) +class getListOfSharedGroups_args(object): + """ + Attributes: + - domainId + - entityId + - permissionTypeId + """ + + thrift_spec = ( + None, # 0 + (1, TType.STRING, 'domainId', 'UTF8', None, ), # 1 + (2, TType.STRING, 'entityId', 'UTF8', None, ), # 2 + (3, TType.STRING, 'permissionTypeId', 'UTF8', None, ), # 3 + ) + + def __init__(self, domainId=None, entityId=None, permissionTypeId=None,): + self.domainId = domainId + self.entityId = entityId + self.permissionTypeId = permissionTypeId + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec)) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRING: + self.domainId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRING: + self.entityId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.STRING: + self.permissionTypeId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) + return + oprot.writeStructBegin('getListOfSharedGroups_args') + if self.domainId is not None: + oprot.writeFieldBegin('domainId', TType.STRING, 1) + oprot.writeString(self.domainId.encode('utf-8') if sys.version_info[0] == 2 else self.domainId) + oprot.writeFieldEnd() + if self.entityId is not None: + oprot.writeFieldBegin('entityId', TType.STRING, 2) + oprot.writeString(self.entityId.encode('utf-8') if sys.version_info[0] == 2 else self.entityId) + oprot.writeFieldEnd() + if self.permissionTypeId is not None: + oprot.writeFieldBegin('permissionTypeId', TType.STRING, 3) + oprot.writeString(self.permissionTypeId.encode('utf-8') if sys.version_info[0] == 2 else self.permissionTypeId) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + if self.domainId is None: + raise TProtocolException(message='Required field domainId is unset!') + if self.entityId is None: + raise TProtocolException(message='Required field entityId is unset!') + if self.permissionTypeId is None: + raise TProtocolException(message='Required field permissionTypeId is unset!') + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class getListOfSharedGroups_result(object): + """ + Attributes: + - success + - sre + """ + + thrift_spec = ( + (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.sharing.ttypes.UserGroup, airavata.model.sharing.ttypes.UserGroup.thrift_spec), False), None, ), # 0 + (1, TType.STRUCT, 'sre', (airavata.model.sharing.ttypes.SharingRegistryException, airavata.model.sharing.ttypes.SharingRegistryException.thrift_spec), None, ), # 1 + ) + + def __init__(self, success=None, sre=None,): + self.success = success + self.sre = sre + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec)) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 0: + if ftype == TType.LIST: + self.success = [] + (_etype115, _size112) = iprot.readListBegin() + for _i116 in range(_size112): + _elem117 = airavata.model.sharing.ttypes.UserGroup() + _elem117.read(iprot) + self.success.append(_elem117) + iprot.readListEnd() + else: + iprot.skip(ftype) + elif fid == 1: + if ftype == TType.STRUCT: + self.sre = airavata.model.sharing.ttypes.SharingRegistryException() + self.sre.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) + return + oprot.writeStructBegin('getListOfSharedGroups_result') + if self.success is not None: + oprot.writeFieldBegin('success', TType.LIST, 0) + oprot.writeListBegin(TType.STRUCT, len(self.success)) + for iter118 in self.success: + iter118.write(oprot) + oprot.writeListEnd() + oprot.writeFieldEnd() + if self.sre is not None: + oprot.writeFieldBegin('sre', TType.STRUCT, 1) + self.sre.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class getListOfDirectlySharedGroups_args(object): + """ + Attributes: + - domainId + - entityId + - permissionTypeId + """ + + thrift_spec = ( + None, # 0 + (1, TType.STRING, 'domainId', 'UTF8', None, ), # 1 + (2, TType.STRING, 'entityId', 'UTF8', None, ), # 2 + (3, TType.STRING, 'permissionTypeId', 'UTF8', None, ), # 3 + ) + + def __init__(self, domainId=None, entityId=None, permissionTypeId=None,): + self.domainId = domainId + self.entityId = entityId + self.permissionTypeId = permissionTypeId + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec)) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRING: + self.domainId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRING: + self.entityId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.STRING: + self.permissionTypeId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) + return + oprot.writeStructBegin('getListOfDirectlySharedGroups_args') + if self.domainId is not None: + oprot.writeFieldBegin('domainId', TType.STRING, 1) + oprot.writeString(self.domainId.encode('utf-8') if sys.version_info[0] == 2 else self.domainId) + oprot.writeFieldEnd() + if self.entityId is not None: + oprot.writeFieldBegin('entityId', TType.STRING, 2) + oprot.writeString(self.entityId.encode('utf-8') if sys.version_info[0] == 2 else self.entityId) + oprot.writeFieldEnd() + if self.permissionTypeId is not None: + oprot.writeFieldBegin('permissionTypeId', TType.STRING, 3) + oprot.writeString(self.permissionTypeId.encode('utf-8') if sys.version_info[0] == 2 else self.permissionTypeId) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + if self.domainId is None: + raise TProtocolException(message='Required field domainId is unset!') + if self.entityId is None: + raise TProtocolException(message='Required field entityId is unset!') + if self.permissionTypeId is None: + raise TProtocolException(message='Required field permissionTypeId is unset!') + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class getListOfDirectlySharedGroups_result(object): + """ + Attributes: + - success + - sre + """ + + thrift_spec = ( + (0, TType.LIST, 'success', (TType.STRUCT, (airavata.model.sharing.ttypes.UserGroup, airavata.model.sharing.ttypes.UserGroup.thrift_spec), False), None, ), # 0 + (1, TType.STRUCT, 'sre', (airavata.model.sharing.ttypes.SharingRegistryException, airavata.model.sharing.ttypes.SharingRegistryException.thrift_spec), None, ), # 1 + ) + + def __init__(self, success=None, sre=None,): + self.success = success + self.sre = sre + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec)) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 0: + if ftype == TType.LIST: + self.success = [] + (_etype122, _size119) = iprot.readListBegin() + for _i123 in range(_size119): + _elem124 = airavata.model.sharing.ttypes.UserGroup() + _elem124.read(iprot) + self.success.append(_elem124) + iprot.readListEnd() + else: + iprot.skip(ftype) + elif fid == 1: + if ftype == TType.STRUCT: + self.sre = airavata.model.sharing.ttypes.SharingRegistryException() + self.sre.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec))) + return + oprot.writeStructBegin('getListOfDirectlySharedGroups_result') + if self.success is not None: + oprot.writeFieldBegin('success', TType.LIST, 0) + oprot.writeListBegin(TType.STRUCT, len(self.success)) + for iter125 in self.success: + iter125.write(oprot) + oprot.writeListEnd() + oprot.writeFieldEnd() + if self.sre is not None: + oprot.writeFieldBegin('sre', TType.STRUCT, 1) + self.sre.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + class createPermissionType_args(object): """ Attributes: @@ -11620,11 +12108,11 @@ class getPermissionTypes_result(object): if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype115, _size112) = iprot.readListBegin() - for _i116 in range(_size112): - _elem117 = airavata.model.sharing.ttypes.PermissionType() - _elem117.read(iprot) - self.success.append(_elem117) + (_etype129, _size126) = iprot.readListBegin() + for _i130 in range(_size126): + _elem131 = airavata.model.sharing.ttypes.PermissionType() + _elem131.read(iprot) + self.success.append(_elem131) iprot.readListEnd() else: iprot.skip(ftype) @@ -11647,8 +12135,8 @@ class getPermissionTypes_result(object): if self.success is not None: oprot.writeFieldBegin('success', TType.LIST, 0) oprot.writeListBegin(TType.STRUCT, len(self.success)) - for iter118 in self.success: - iter118.write(oprot) + for iter132 in self.success: + iter132.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.sre is not None: @@ -11721,10 +12209,10 @@ class shareEntityWithUsers_args(object): elif fid == 3: if ftype == TType.LIST: self.userList = [] - (_etype122, _size119) = iprot.readListBegin() - for _i123 in range(_size119): - _elem124 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() - self.userList.append(_elem124) + (_etype136, _size133) = iprot.readListBegin() + for _i137 in range(_size133): + _elem138 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() + self.userList.append(_elem138) iprot.readListEnd() else: iprot.skip(ftype) @@ -11759,8 +12247,8 @@ class shareEntityWithUsers_args(object): if self.userList is not None: oprot.writeFieldBegin('userList', TType.LIST, 3) oprot.writeListBegin(TType.STRING, len(self.userList)) - for iter125 in self.userList: - oprot.writeString(iter125.encode('utf-8') if sys.version_info[0] == 2 else iter125) + for iter139 in self.userList: + oprot.writeString(iter139.encode('utf-8') if sys.version_info[0] == 2 else iter139) oprot.writeListEnd() oprot.writeFieldEnd() if self.permissionTypeId is not None: @@ -11916,10 +12404,10 @@ class revokeEntitySharingFromUsers_args(object): elif fid == 3: if ftype == TType.LIST: self.userList = [] - (_etype129, _size126) = iprot.readListBegin() - for _i130 in range(_size126): - _elem131 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() - self.userList.append(_elem131) + (_etype143, _size140) = iprot.readListBegin() + for _i144 in range(_size140): + _elem145 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() + self.userList.append(_elem145) iprot.readListEnd() else: iprot.skip(ftype) @@ -11949,8 +12437,8 @@ class revokeEntitySharingFromUsers_args(object): if self.userList is not None: oprot.writeFieldBegin('userList', TType.LIST, 3) oprot.writeListBegin(TType.STRING, len(self.userList)) - for iter132 in self.userList: - oprot.writeString(iter132.encode('utf-8') if sys.version_info[0] == 2 else iter132) + for iter146 in self.userList: + oprot.writeString(iter146.encode('utf-8') if sys.version_info[0] == 2 else iter146) oprot.writeListEnd() oprot.writeFieldEnd() if self.permissionTypeId is not None: @@ -12103,10 +12591,10 @@ class shareEntityWithGroups_args(object): elif fid == 3: if ftype == TType.LIST: self.groupList = [] - (_etype136, _size133) = iprot.readListBegin() - for _i137 in range(_size133): - _elem138 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() - self.groupList.append(_elem138) + (_etype150, _size147) = iprot.readListBegin() + for _i151 in range(_size147): + _elem152 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() + self.groupList.append(_elem152) iprot.readListEnd() else: iprot.skip(ftype) @@ -12141,8 +12629,8 @@ class shareEntityWithGroups_args(object): if self.groupList is not None: oprot.writeFieldBegin('groupList', TType.LIST, 3) oprot.writeListBegin(TType.STRING, len(self.groupList)) - for iter139 in self.groupList: - oprot.writeString(iter139.encode('utf-8') if sys.version_info[0] == 2 else iter139) + for iter153 in self.groupList: + oprot.writeString(iter153.encode('utf-8') if sys.version_info[0] == 2 else iter153) oprot.writeListEnd() oprot.writeFieldEnd() if self.permissionTypeId is not None: @@ -12298,10 +12786,10 @@ class revokeEntitySharingFromGroups_args(object): elif fid == 3: if ftype == TType.LIST: self.groupList = [] - (_etype143, _size140) = iprot.readListBegin() - for _i144 in range(_size140): - _elem145 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() - self.groupList.append(_elem145) + (_etype157, _size154) = iprot.readListBegin() + for _i158 in range(_size154): + _elem159 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString() + self.groupList.append(_elem159) iprot.readListEnd() else: iprot.skip(ftype) @@ -12331,8 +12819,8 @@ class revokeEntitySharingFromGroups_args(object): if self.groupList is not None: oprot.writeFieldBegin('groupList', TType.LIST, 3) oprot.writeListBegin(TType.STRING, len(self.groupList)) - for iter146 in self.groupList: - oprot.writeString(iter146.encode('utf-8') if sys.version_info[0] == 2 else iter146) + for iter160 in self.groupList: + oprot.writeString(iter160.encode('utf-8') if sys.version_info[0] == 2 else iter160) oprot.writeListEnd() oprot.writeFieldEnd() if self.permissionTypeId is not None: diff --git a/django_airavata/apps/api/views.py b/django_airavata/apps/api/views.py index 40874fe..85c7869 100644 --- a/django_airavata/apps/api/views.py +++ b/django_airavata/apps/api/views.py @@ -903,17 +903,19 @@ class SharedEntityViewSet(mixins.RetrieveModelMixin, def get_instance(self, lookup_value): users = {} + # Only load *directly* granted permissions since these are the only + # ones that can be edited # Load accessible users in order of permission precedence: users that # have WRITE permission should also have READ - users.update(self._load_accessible_users( + users.update(self._load_directly_accessible_users( lookup_value, ResourcePermissionType.READ)) - users.update(self._load_accessible_users( + users.update(self._load_directly_accessible_users( lookup_value, ResourcePermissionType.WRITE)) - owner_ids = self._load_accessible_users(lookup_value, - ResourcePermissionType.OWNER) + owner_ids = self._load_directly_accessible_users( + lookup_value, ResourcePermissionType.OWNER) # Assume that there is one and only one DIRECT owner (there may be one # or more INDIRECT cascading owners, which would the owners of the - # ancestor entities, but getAllAccessibleUsers does not return + # ancestor entities, but getAllDirectlyAccessibleUsers does not return # indirectly cascading owners) owner_id = list(owner_ids.keys())[0] # Remove owner from the users list @@ -923,9 +925,9 @@ class SharedEntityViewSet(mixins.RetrieveModelMixin, user_list.append({'user': self._load_user_profile(user_id), 'permissionType': users[user_id]}) groups = {} - groups.update(self._load_accessible_groups( + groups.update(self._load_directly_accessible_groups( lookup_value, ResourcePermissionType.READ)) - groups.update(self._load_accessible_groups( + groups.update(self._load_directly_accessible_groups( lookup_value, ResourcePermissionType.WRITE)) group_list = [] for group_id in groups: @@ -941,6 +943,11 @@ class SharedEntityViewSet(mixins.RetrieveModelMixin, self.authz_token, entity_id, permission_type) return {user_id: permission_type for user_id in users} + def _load_directly_accessible_users(self, entity_id, permission_type): + users = self.request.airavata_client.getAllDirectlyAccessibleUsers( + self.authz_token, entity_id, permission_type) + return {user_id: permission_type for user_id in users} + def _load_user_profile(self, user_id): user_profile_client = self.request.profile_service['user_profile'] username = user_id[0:user_id.rindex('@')] @@ -953,6 +960,11 @@ class SharedEntityViewSet(mixins.RetrieveModelMixin, self.authz_token, entity_id, permission_type) return {group_id: permission_type for group_id in groups} + def _load_directly_accessible_groups(self, entity_id, permission_type): + groups = self.request.airavata_client.getAllDirectlyAccessibleGroups( + self.authz_token, entity_id, permission_type) + return {group_id: permission_type for group_id in groups} + def _load_group(self, group_id): group_manager_client = self.request.profile_service['group_manager'] return group_manager_client.getGroup(self.authz_token, group_id) @@ -1036,6 +1048,46 @@ class SharedEntityViewSet(mixins.RetrieveModelMixin, self.perform_update(merged_serializer) return Response(merged_serializer.data) + @detail_route(methods=['get']) + def all(self, request, entity_id=None): + """Load direct plus indirectly (inherited) shared permissions.""" + users = {} + # Load accessible users in order of permission precedence: users that + # have WRITE permission should also have READ + users.update(self._load_accessible_users( + entity_id, ResourcePermissionType.READ)) + users.update(self._load_accessible_users( + entity_id, ResourcePermissionType.WRITE)) + owner_ids = self._load_accessible_users( + entity_id, ResourcePermissionType.OWNER) + # Assume that there is one and only one DIRECT owner (there may be one + # or more INDIRECT cascading owners, which would the owners of the + # ancestor entities, but getAllAccessibleUsers does not return + # indirectly cascading owners) + owner_id = list(owner_ids.keys())[0] + # Remove owner from the users list + del users[owner_id] + user_list = [] + for user_id in users: + user_list.append({'user': self._load_user_profile(user_id), + 'permissionType': users[user_id]}) + groups = {} + groups.update(self._load_accessible_groups( + entity_id, ResourcePermissionType.READ)) + groups.update(self._load_accessible_groups( + entity_id, ResourcePermissionType.WRITE)) + group_list = [] + for group_id in groups: + group_list.append({'group': self._load_group(group_id), + 'permissionType': groups[group_id]}) + shared_entity = {'entityId': entity_id, + 'userPermissions': user_list, + 'groupPermissions': group_list, + 'owner': self._load_user_profile(owner_id)} + serializer = self.serializer_class( + shared_entity, context={'request': request}) + return Response(serializer.data) + class CredentialSummaryViewSet(APIBackedViewSet): serializer_class = serializers.CredentialSummarySerializer