Repository: airavata Updated Branches: refs/heads/develop 400e24d63 -> 177a2484d
http://git-wip-us.apache.org/repos/asf/airavata/blob/177a2484/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py index a0f94d9..bdf30b5 100644 --- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py +++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata.py @@ -799,6 +799,50 @@ class Iface: """ pass + def getExperimentByAdmin(self, authzToken, airavataExperimentId): + """ + * + * Get Experiment by an admin user + * + * Used by an admin user to fetch previously created experiment metadata. + * + * @param airavataExperimentId + * The unique identifier of the requested experiment. This ID is returned during the create experiment step. + * + * @return ExperimentModel + * This method will return the previously stored experiment metadata. + * + * @throws org.apache.airavata.model.error.InvalidRequestException + * For any incorrect forming of the request itself. + * + * @throws org.apache.airavata.model.error.ExperimentNotFoundException + * If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown. + * + * @throws org.apache.airavata.model.error.AiravataClientException + * The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve: + * + * UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative + * step, then Airavata Registry will not have a provenance area setup. The client has to follow + * gateway registration steps and retry this request. + * + * AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined. + * For now this is a place holder. + * + * INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake + * is implemented, the authorization will be more substantial. + * + * @throws org.apache.airavata.model.error.AiravataSystemException + * This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client + * rather an Airavata Administrator will be notified to take corrective action. + * + * + + Parameters: + - authzToken + - airavataExperimentId + """ + pass + def getDetailedExperimentTree(self, authzToken, airavataExperimentId): """ @@ -1139,6 +1183,59 @@ class Iface: """ pass + def cloneExperimentByAdmin(self, authzToken, existingExperimentID, newExperimentName, newExperimentProjectId): + """ + + Clone an Existing Experiment by an admin user + Existing specified experiment is cloned and a new name is provided. A copy of the experiment configuration is made and is persisted with new metadata. + The client has to subsequently update this configuration if needed and launch the cloned experiment. + + @param newExperimentName + experiment name that should be used in the cloned experiment + + @param updatedExperiment + Once an experiment is cloned, to disambiguate, the users are suggested to provide new metadata. This will again require + the basic experiment metadata like the name and description, intended user, the gateway identifier and if the experiment + should be shared public by default. + @param newExperimentProjectId + The project in which to create the cloned experiment. This is optional and if null the experiment will be created + in the same project as the existing experiment. + + @return + The server-side generated.airavata.registry.core.experiment.globally unique identifier (Experiment ID) for the newly cloned experiment. + + @throws org.apache.airavata.model.error.InvalidRequestException + For any incorrect forming of the request itself. + + @throws org.apache.airavata.model.error.ExperimentNotFoundException + If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown. + + @throws org.apache.airavata.model.error.AiravataClientException + The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve: + + UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative + step, then Airavata Registry will not have a provenance area setup. The client has to follow + gateway registration steps and retry this request. + + AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined. + For now this is a place holder. + + INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake + is implemented, the authorization will be more substantial. + + @throws org.apache.airavata.model.error.AiravataSystemException + This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client + rather an Airavata Administrator will be notified to take corrective action. + + + Parameters: + - authzToken + - existingExperimentID + - newExperimentName + - newExperimentProjectId + """ + pass + def terminateExperiment(self, authzToken, airavataExperimentId, gatewayId): """ @@ -5390,6 +5487,85 @@ class Client(Iface): raise result.ae raise TApplicationException(TApplicationException.MISSING_RESULT, "getExperiment failed: unknown result") + def getExperimentByAdmin(self, authzToken, airavataExperimentId): + """ + * + * Get Experiment by an admin user + * + * Used by an admin user to fetch previously created experiment metadata. + * + * @param airavataExperimentId + * The unique identifier of the requested experiment. This ID is returned during the create experiment step. + * + * @return ExperimentModel + * This method will return the previously stored experiment metadata. + * + * @throws org.apache.airavata.model.error.InvalidRequestException + * For any incorrect forming of the request itself. + * + * @throws org.apache.airavata.model.error.ExperimentNotFoundException + * If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown. + * + * @throws org.apache.airavata.model.error.AiravataClientException + * The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve: + * + * UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative + * step, then Airavata Registry will not have a provenance area setup. The client has to follow + * gateway registration steps and retry this request. + * + * AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined. + * For now this is a place holder. + * + * INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake + * is implemented, the authorization will be more substantial. + * + * @throws org.apache.airavata.model.error.AiravataSystemException + * This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client + * rather an Airavata Administrator will be notified to take corrective action. + * + * + + Parameters: + - authzToken + - airavataExperimentId + """ + self.send_getExperimentByAdmin(authzToken, airavataExperimentId) + return self.recv_getExperimentByAdmin() + + def send_getExperimentByAdmin(self, authzToken, airavataExperimentId): + self._oprot.writeMessageBegin('getExperimentByAdmin', TMessageType.CALL, self._seqid) + args = getExperimentByAdmin_args() + args.authzToken = authzToken + args.airavataExperimentId = airavataExperimentId + args.write(self._oprot) + self._oprot.writeMessageEnd() + self._oprot.trans.flush() + + def recv_getExperimentByAdmin(self): + iprot = self._iprot + (fname, mtype, rseqid) = iprot.readMessageBegin() + if mtype == TMessageType.EXCEPTION: + x = TApplicationException() + x.read(iprot) + iprot.readMessageEnd() + raise x + result = getExperimentByAdmin_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.enf is not None: + raise result.enf + 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, "getExperimentByAdmin failed: unknown result") + def getDetailedExperimentTree(self, authzToken, airavataExperimentId): """ @@ -6134,6 +6310,98 @@ class Client(Iface): raise result.pnfe raise TApplicationException(TApplicationException.MISSING_RESULT, "cloneExperiment failed: unknown result") + def cloneExperimentByAdmin(self, authzToken, existingExperimentID, newExperimentName, newExperimentProjectId): + """ + + Clone an Existing Experiment by an admin user + Existing specified experiment is cloned and a new name is provided. A copy of the experiment configuration is made and is persisted with new metadata. + The client has to subsequently update this configuration if needed and launch the cloned experiment. + + @param newExperimentName + experiment name that should be used in the cloned experiment + + @param updatedExperiment + Once an experiment is cloned, to disambiguate, the users are suggested to provide new metadata. This will again require + the basic experiment metadata like the name and description, intended user, the gateway identifier and if the experiment + should be shared public by default. + @param newExperimentProjectId + The project in which to create the cloned experiment. This is optional and if null the experiment will be created + in the same project as the existing experiment. + + @return + The server-side generated.airavata.registry.core.experiment.globally unique identifier (Experiment ID) for the newly cloned experiment. + + @throws org.apache.airavata.model.error.InvalidRequestException + For any incorrect forming of the request itself. + + @throws org.apache.airavata.model.error.ExperimentNotFoundException + If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown. + + @throws org.apache.airavata.model.error.AiravataClientException + The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve: + + UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative + step, then Airavata Registry will not have a provenance area setup. The client has to follow + gateway registration steps and retry this request. + + AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined. + For now this is a place holder. + + INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake + is implemented, the authorization will be more substantial. + + @throws org.apache.airavata.model.error.AiravataSystemException + This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client + rather an Airavata Administrator will be notified to take corrective action. + + + Parameters: + - authzToken + - existingExperimentID + - newExperimentName + - newExperimentProjectId + """ + self.send_cloneExperimentByAdmin(authzToken, existingExperimentID, newExperimentName, newExperimentProjectId) + return self.recv_cloneExperimentByAdmin() + + def send_cloneExperimentByAdmin(self, authzToken, existingExperimentID, newExperimentName, newExperimentProjectId): + self._oprot.writeMessageBegin('cloneExperimentByAdmin', TMessageType.CALL, self._seqid) + args = cloneExperimentByAdmin_args() + args.authzToken = authzToken + args.existingExperimentID = existingExperimentID + args.newExperimentName = newExperimentName + args.newExperimentProjectId = newExperimentProjectId + args.write(self._oprot) + self._oprot.writeMessageEnd() + self._oprot.trans.flush() + + def recv_cloneExperimentByAdmin(self): + iprot = self._iprot + (fname, mtype, rseqid) = iprot.readMessageBegin() + if mtype == TMessageType.EXCEPTION: + x = TApplicationException() + x.read(iprot) + iprot.readMessageEnd() + raise x + result = cloneExperimentByAdmin_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.enf is not None: + raise result.enf + 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 + if result.pnfe is not None: + raise result.pnfe + raise TApplicationException(TApplicationException.MISSING_RESULT, "cloneExperimentByAdmin failed: unknown result") + def terminateExperiment(self, authzToken, airavataExperimentId, gatewayId): """ @@ -12412,6 +12680,7 @@ class Processor(Iface, TProcessor): self._processMap["createExperiment"] = Processor.process_createExperiment self._processMap["deleteExperiment"] = Processor.process_deleteExperiment self._processMap["getExperiment"] = Processor.process_getExperiment + self._processMap["getExperimentByAdmin"] = Processor.process_getExperimentByAdmin self._processMap["getDetailedExperimentTree"] = Processor.process_getDetailedExperimentTree self._processMap["updateExperiment"] = Processor.process_updateExperiment self._processMap["updateExperimentConfiguration"] = Processor.process_updateExperimentConfiguration @@ -12424,6 +12693,7 @@ class Processor(Iface, TProcessor): self._processMap["getJobStatuses"] = Processor.process_getJobStatuses self._processMap["getJobDetails"] = Processor.process_getJobDetails self._processMap["cloneExperiment"] = Processor.process_cloneExperiment + self._processMap["cloneExperimentByAdmin"] = Processor.process_cloneExperimentByAdmin self._processMap["terminateExperiment"] = Processor.process_terminateExperiment self._processMap["registerApplicationModule"] = Processor.process_registerApplicationModule self._processMap["getApplicationModule"] = Processor.process_getApplicationModule @@ -13691,13 +13961,13 @@ class Processor(Iface, TProcessor): oprot.writeMessageEnd() oprot.trans.flush() - def process_getDetailedExperimentTree(self, seqid, iprot, oprot): - args = getDetailedExperimentTree_args() + def process_getExperimentByAdmin(self, seqid, iprot, oprot): + args = getExperimentByAdmin_args() args.read(iprot) iprot.readMessageEnd() - result = getDetailedExperimentTree_result() + result = getExperimentByAdmin_result() try: - result.success = self._handler.getDetailedExperimentTree(args.authzToken, args.airavataExperimentId) + result.success = self._handler.getExperimentByAdmin(args.authzToken, args.airavataExperimentId) msg_type = TMessageType.REPLY except (TTransport.TTransportException, KeyboardInterrupt, SystemExit): raise @@ -13720,18 +13990,18 @@ class Processor(Iface, TProcessor): msg_type = TMessageType.EXCEPTION logging.exception(ex) result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') - oprot.writeMessageBegin("getDetailedExperimentTree", msg_type, seqid) + oprot.writeMessageBegin("getExperimentByAdmin", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() oprot.trans.flush() - def process_updateExperiment(self, seqid, iprot, oprot): - args = updateExperiment_args() + def process_getDetailedExperimentTree(self, seqid, iprot, oprot): + args = getDetailedExperimentTree_args() args.read(iprot) iprot.readMessageEnd() - result = updateExperiment_result() + result = getDetailedExperimentTree_result() try: - self._handler.updateExperiment(args.authzToken, args.airavataExperimentId, args.experiment) + result.success = self._handler.getDetailedExperimentTree(args.authzToken, args.airavataExperimentId) msg_type = TMessageType.REPLY except (TTransport.TTransportException, KeyboardInterrupt, SystemExit): raise @@ -13754,7 +14024,41 @@ class Processor(Iface, TProcessor): msg_type = TMessageType.EXCEPTION logging.exception(ex) result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') - oprot.writeMessageBegin("updateExperiment", msg_type, seqid) + oprot.writeMessageBegin("getDetailedExperimentTree", msg_type, seqid) + result.write(oprot) + oprot.writeMessageEnd() + oprot.trans.flush() + + def process_updateExperiment(self, seqid, iprot, oprot): + args = updateExperiment_args() + args.read(iprot) + iprot.readMessageEnd() + result = updateExperiment_result() + try: + self._handler.updateExperiment(args.authzToken, args.airavataExperimentId, args.experiment) + msg_type = TMessageType.REPLY + except (TTransport.TTransportException, KeyboardInterrupt, SystemExit): + raise + except apache.airavata.api.error.ttypes.InvalidRequestException as ire: + msg_type = TMessageType.REPLY + result.ire = ire + except apache.airavata.api.error.ttypes.ExperimentNotFoundException as enf: + msg_type = TMessageType.REPLY + result.enf = enf + except apache.airavata.api.error.ttypes.AiravataClientException as ace: + msg_type = TMessageType.REPLY + result.ace = ace + except apache.airavata.api.error.ttypes.AiravataSystemException as ase: + msg_type = TMessageType.REPLY + result.ase = ase + except apache.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("updateExperiment", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() oprot.trans.flush() @@ -14078,6 +14382,43 @@ class Processor(Iface, TProcessor): oprot.writeMessageEnd() oprot.trans.flush() + def process_cloneExperimentByAdmin(self, seqid, iprot, oprot): + args = cloneExperimentByAdmin_args() + args.read(iprot) + iprot.readMessageEnd() + result = cloneExperimentByAdmin_result() + try: + result.success = self._handler.cloneExperimentByAdmin(args.authzToken, args.existingExperimentID, args.newExperimentName, args.newExperimentProjectId) + msg_type = TMessageType.REPLY + except (TTransport.TTransportException, KeyboardInterrupt, SystemExit): + raise + except apache.airavata.api.error.ttypes.InvalidRequestException as ire: + msg_type = TMessageType.REPLY + result.ire = ire + except apache.airavata.api.error.ttypes.ExperimentNotFoundException as enf: + msg_type = TMessageType.REPLY + result.enf = enf + except apache.airavata.api.error.ttypes.AiravataClientException as ace: + msg_type = TMessageType.REPLY + result.ace = ace + except apache.airavata.api.error.ttypes.AiravataSystemException as ase: + msg_type = TMessageType.REPLY + result.ase = ase + except apache.airavata.api.error.ttypes.AuthorizationException as ae: + msg_type = TMessageType.REPLY + result.ae = ae + except apache.airavata.api.error.ttypes.ProjectNotFoundException as pnfe: + msg_type = TMessageType.REPLY + result.pnfe = pnfe + except Exception as ex: + msg_type = TMessageType.EXCEPTION + logging.exception(ex) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') + oprot.writeMessageBegin("cloneExperimentByAdmin", msg_type, seqid) + result.write(oprot) + oprot.writeMessageEnd() + oprot.trans.flush() + def process_terminateExperiment(self, seqid, iprot, oprot): args = terminateExperiment_args() args.read(iprot) @@ -25849,7 +26190,7 @@ class getExperiment_result: def __ne__(self, other): return not (self == other) -class getDetailedExperimentTree_args: +class getExperimentByAdmin_args: """ Attributes: - authzToken @@ -25895,7 +26236,7 @@ class getDetailedExperimentTree_args: if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None: oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('getDetailedExperimentTree_args') + oprot.writeStructBegin('getExperimentByAdmin_args') if self.authzToken is not None: oprot.writeFieldBegin('authzToken', TType.STRUCT, 1) self.authzToken.write(oprot) @@ -25932,7 +26273,7 @@ class getDetailedExperimentTree_args: def __ne__(self, other): return not (self == other) -class getDetailedExperimentTree_result: +class getExperimentByAdmin_result: """ Attributes: - success @@ -26014,7 +26355,7 @@ class getDetailedExperimentTree_result: if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None: oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('getDetailedExperimentTree_result') + oprot.writeStructBegin('getExperimentByAdmin_result') if self.success is not None: oprot.writeFieldBegin('success', TType.STRUCT, 0) self.success.write(oprot) @@ -26067,25 +26408,22 @@ class getDetailedExperimentTree_result: def __ne__(self, other): return not (self == other) -class updateExperiment_args: +class getDetailedExperimentTree_args: """ Attributes: - authzToken - airavataExperimentId - - experiment """ thrift_spec = ( None, # 0 (1, TType.STRUCT, 'authzToken', (apache.airavata.model.security.ttypes.AuthzToken, apache.airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1 (2, TType.STRING, 'airavataExperimentId', None, None, ), # 2 - (3, TType.STRUCT, 'experiment', (apache.airavata.model.experiment.ttypes.ExperimentModel, apache.airavata.model.experiment.ttypes.ExperimentModel.thrift_spec), None, ), # 3 ) - def __init__(self, authzToken=None, airavataExperimentId=None, experiment=None,): + def __init__(self, authzToken=None, airavataExperimentId=None,): self.authzToken = authzToken self.airavataExperimentId = airavataExperimentId - self.experiment = experiment def read(self, iprot): if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None: @@ -26107,12 +26445,6 @@ class updateExperiment_args: self.airavataExperimentId = iprot.readString() else: iprot.skip(ftype) - elif fid == 3: - if ftype == TType.STRUCT: - self.experiment = apache.airavata.model.experiment.ttypes.ExperimentModel() - self.experiment.read(iprot) - else: - iprot.skip(ftype) else: iprot.skip(ftype) iprot.readFieldEnd() @@ -26122,7 +26454,7 @@ class updateExperiment_args: if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None: oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('updateExperiment_args') + oprot.writeStructBegin('getDetailedExperimentTree_args') if self.authzToken is not None: oprot.writeFieldBegin('authzToken', TType.STRUCT, 1) self.authzToken.write(oprot) @@ -26131,10 +26463,6 @@ class updateExperiment_args: oprot.writeFieldBegin('airavataExperimentId', TType.STRING, 2) oprot.writeString(self.airavataExperimentId) oprot.writeFieldEnd() - if self.experiment is not None: - oprot.writeFieldBegin('experiment', TType.STRUCT, 3) - self.experiment.write(oprot) - oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -26143,8 +26471,6 @@ class updateExperiment_args: raise TProtocol.TProtocolException(message='Required field authzToken is unset!') if self.airavataExperimentId is None: raise TProtocol.TProtocolException(message='Required field airavataExperimentId is unset!') - if self.experiment is None: - raise TProtocol.TProtocolException(message='Required field experiment is unset!') return @@ -26152,7 +26478,6 @@ class updateExperiment_args: value = 17 value = (value * 31) ^ hash(self.authzToken) value = (value * 31) ^ hash(self.airavataExperimentId) - value = (value * 31) ^ hash(self.experiment) return value def __repr__(self): @@ -26166,9 +26491,10 @@ class updateExperiment_args: def __ne__(self, other): return not (self == other) -class updateExperiment_result: +class getDetailedExperimentTree_result: """ Attributes: + - success - ire - enf - ace @@ -26177,7 +26503,7 @@ class updateExperiment_result: """ thrift_spec = ( - None, # 0 + (0, TType.STRUCT, 'success', (apache.airavata.model.experiment.ttypes.ExperimentModel, apache.airavata.model.experiment.ttypes.ExperimentModel.thrift_spec), None, ), # 0 (1, TType.STRUCT, 'ire', (apache.airavata.api.error.ttypes.InvalidRequestException, apache.airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1 (2, TType.STRUCT, 'enf', (apache.airavata.api.error.ttypes.ExperimentNotFoundException, apache.airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ), # 2 (3, TType.STRUCT, 'ace', (apache.airavata.api.error.ttypes.AiravataClientException, apache.airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 3 @@ -26185,7 +26511,8 @@ class updateExperiment_result: (5, TType.STRUCT, 'ae', (apache.airavata.api.error.ttypes.AuthorizationException, apache.airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ), # 5 ) - def __init__(self, ire=None, enf=None, ace=None, ase=None, ae=None,): + def __init__(self, success=None, ire=None, enf=None, ace=None, ase=None, ae=None,): + self.success = success self.ire = ire self.enf = enf self.ace = ace @@ -26201,7 +26528,13 @@ class updateExperiment_result: (fname, ftype, fid) = iprot.readFieldBegin() if ftype == TType.STOP: break - if fid == 1: + if fid == 0: + if ftype == TType.STRUCT: + self.success = apache.airavata.model.experiment.ttypes.ExperimentModel() + self.success.read(iprot) + else: + iprot.skip(ftype) + elif fid == 1: if ftype == TType.STRUCT: self.ire = apache.airavata.api.error.ttypes.InvalidRequestException() self.ire.read(iprot) @@ -26240,7 +26573,11 @@ class updateExperiment_result: if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None: oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('updateExperiment_result') + oprot.writeStructBegin('getDetailedExperimentTree_result') + if self.success is not None: + oprot.writeFieldBegin('success', TType.STRUCT, 0) + self.success.write(oprot) + oprot.writeFieldEnd() if self.ire is not None: oprot.writeFieldBegin('ire', TType.STRUCT, 1) self.ire.write(oprot) @@ -26270,6 +26607,7 @@ class updateExperiment_result: def __hash__(self): value = 17 + value = (value * 31) ^ hash(self.success) value = (value * 31) ^ hash(self.ire) value = (value * 31) ^ hash(self.enf) value = (value * 31) ^ hash(self.ace) @@ -26288,25 +26626,25 @@ class updateExperiment_result: def __ne__(self, other): return not (self == other) -class updateExperimentConfiguration_args: +class updateExperiment_args: """ Attributes: - authzToken - airavataExperimentId - - userConfiguration + - experiment """ thrift_spec = ( None, # 0 (1, TType.STRUCT, 'authzToken', (apache.airavata.model.security.ttypes.AuthzToken, apache.airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1 (2, TType.STRING, 'airavataExperimentId', None, None, ), # 2 - (3, TType.STRUCT, 'userConfiguration', (apache.airavata.model.experiment.ttypes.UserConfigurationDataModel, apache.airavata.model.experiment.ttypes.UserConfigurationDataModel.thrift_spec), None, ), # 3 + (3, TType.STRUCT, 'experiment', (apache.airavata.model.experiment.ttypes.ExperimentModel, apache.airavata.model.experiment.ttypes.ExperimentModel.thrift_spec), None, ), # 3 ) - def __init__(self, authzToken=None, airavataExperimentId=None, userConfiguration=None,): + def __init__(self, authzToken=None, airavataExperimentId=None, experiment=None,): self.authzToken = authzToken self.airavataExperimentId = airavataExperimentId - self.userConfiguration = userConfiguration + self.experiment = experiment def read(self, iprot): if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None: @@ -26330,8 +26668,8 @@ class updateExperimentConfiguration_args: iprot.skip(ftype) elif fid == 3: if ftype == TType.STRUCT: - self.userConfiguration = apache.airavata.model.experiment.ttypes.UserConfigurationDataModel() - self.userConfiguration.read(iprot) + self.experiment = apache.airavata.model.experiment.ttypes.ExperimentModel() + self.experiment.read(iprot) else: iprot.skip(ftype) else: @@ -26343,7 +26681,7 @@ class updateExperimentConfiguration_args: if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None: oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('updateExperimentConfiguration_args') + oprot.writeStructBegin('updateExperiment_args') if self.authzToken is not None: oprot.writeFieldBegin('authzToken', TType.STRUCT, 1) self.authzToken.write(oprot) @@ -26352,9 +26690,9 @@ class updateExperimentConfiguration_args: oprot.writeFieldBegin('airavataExperimentId', TType.STRING, 2) oprot.writeString(self.airavataExperimentId) oprot.writeFieldEnd() - if self.userConfiguration is not None: - oprot.writeFieldBegin('userConfiguration', TType.STRUCT, 3) - self.userConfiguration.write(oprot) + if self.experiment is not None: + oprot.writeFieldBegin('experiment', TType.STRUCT, 3) + self.experiment.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -26364,8 +26702,8 @@ class updateExperimentConfiguration_args: raise TProtocol.TProtocolException(message='Required field authzToken is unset!') if self.airavataExperimentId is None: raise TProtocol.TProtocolException(message='Required field airavataExperimentId is unset!') - if self.userConfiguration is None: - raise TProtocol.TProtocolException(message='Required field userConfiguration is unset!') + if self.experiment is None: + raise TProtocol.TProtocolException(message='Required field experiment is unset!') return @@ -26373,7 +26711,7 @@ class updateExperimentConfiguration_args: value = 17 value = (value * 31) ^ hash(self.authzToken) value = (value * 31) ^ hash(self.airavataExperimentId) - value = (value * 31) ^ hash(self.userConfiguration) + value = (value * 31) ^ hash(self.experiment) return value def __repr__(self): @@ -26387,18 +26725,30 @@ class updateExperimentConfiguration_args: def __ne__(self, other): return not (self == other) -class updateExperimentConfiguration_result: +class updateExperiment_result: """ Attributes: + - ire + - enf + - ace + - ase - ae """ thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'ae', (apache.airavata.api.error.ttypes.AuthorizationException, apache.airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ), # 1 + (1, TType.STRUCT, 'ire', (apache.airavata.api.error.ttypes.InvalidRequestException, apache.airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1 + (2, TType.STRUCT, 'enf', (apache.airavata.api.error.ttypes.ExperimentNotFoundException, apache.airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ), # 2 + (3, TType.STRUCT, 'ace', (apache.airavata.api.error.ttypes.AiravataClientException, apache.airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 3 + (4, TType.STRUCT, 'ase', (apache.airavata.api.error.ttypes.AiravataSystemException, apache.airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ), # 4 + (5, TType.STRUCT, 'ae', (apache.airavata.api.error.ttypes.AuthorizationException, apache.airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ), # 5 ) - def __init__(self, ae=None,): + def __init__(self, ire=None, enf=None, ace=None, ase=None, ae=None,): + self.ire = ire + self.enf = enf + self.ace = ace + self.ase = ase self.ae = ae def read(self, iprot): @@ -26412,6 +26762,30 @@ class updateExperimentConfiguration_result: break if fid == 1: if ftype == TType.STRUCT: + self.ire = apache.airavata.api.error.ttypes.InvalidRequestException() + self.ire.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.enf = apache.airavata.api.error.ttypes.ExperimentNotFoundException() + self.enf.read(iprot) + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.STRUCT: + self.ace = apache.airavata.api.error.ttypes.AiravataClientException() + self.ace.read(iprot) + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.STRUCT: + self.ase = apache.airavata.api.error.ttypes.AiravataSystemException() + self.ase.read(iprot) + else: + iprot.skip(ftype) + elif fid == 5: + if ftype == TType.STRUCT: self.ae = apache.airavata.api.error.ttypes.AuthorizationException() self.ae.read(iprot) else: @@ -26425,9 +26799,25 @@ class updateExperimentConfiguration_result: if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None: oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('updateExperimentConfiguration_result') + oprot.writeStructBegin('updateExperiment_result') + if self.ire is not None: + oprot.writeFieldBegin('ire', TType.STRUCT, 1) + self.ire.write(oprot) + oprot.writeFieldEnd() + if self.enf is not None: + oprot.writeFieldBegin('enf', TType.STRUCT, 2) + self.enf.write(oprot) + oprot.writeFieldEnd() + if self.ace is not None: + oprot.writeFieldBegin('ace', TType.STRUCT, 3) + self.ace.write(oprot) + oprot.writeFieldEnd() + if self.ase is not None: + oprot.writeFieldBegin('ase', TType.STRUCT, 4) + self.ase.write(oprot) + oprot.writeFieldEnd() if self.ae is not None: - oprot.writeFieldBegin('ae', TType.STRUCT, 1) + oprot.writeFieldBegin('ae', TType.STRUCT, 5) self.ae.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -26439,6 +26829,10 @@ class updateExperimentConfiguration_result: def __hash__(self): value = 17 + value = (value * 31) ^ hash(self.ire) + value = (value * 31) ^ hash(self.enf) + value = (value * 31) ^ hash(self.ace) + value = (value * 31) ^ hash(self.ase) value = (value * 31) ^ hash(self.ae) return value @@ -26453,25 +26847,25 @@ class updateExperimentConfiguration_result: def __ne__(self, other): return not (self == other) -class updateResourceScheduleing_args: +class updateExperimentConfiguration_args: """ Attributes: - authzToken - airavataExperimentId - - resourceScheduling + - userConfiguration """ thrift_spec = ( None, # 0 (1, TType.STRUCT, 'authzToken', (apache.airavata.model.security.ttypes.AuthzToken, apache.airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1 (2, TType.STRING, 'airavataExperimentId', None, None, ), # 2 - (3, TType.STRUCT, 'resourceScheduling', (apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel, apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel.thrift_spec), None, ), # 3 + (3, TType.STRUCT, 'userConfiguration', (apache.airavata.model.experiment.ttypes.UserConfigurationDataModel, apache.airavata.model.experiment.ttypes.UserConfigurationDataModel.thrift_spec), None, ), # 3 ) - def __init__(self, authzToken=None, airavataExperimentId=None, resourceScheduling=None,): + def __init__(self, authzToken=None, airavataExperimentId=None, userConfiguration=None,): self.authzToken = authzToken self.airavataExperimentId = airavataExperimentId - self.resourceScheduling = resourceScheduling + self.userConfiguration = userConfiguration def read(self, iprot): if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None: @@ -26495,8 +26889,8 @@ class updateResourceScheduleing_args: iprot.skip(ftype) elif fid == 3: if ftype == TType.STRUCT: - self.resourceScheduling = apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel() - self.resourceScheduling.read(iprot) + self.userConfiguration = apache.airavata.model.experiment.ttypes.UserConfigurationDataModel() + self.userConfiguration.read(iprot) else: iprot.skip(ftype) else: @@ -26508,7 +26902,7 @@ class updateResourceScheduleing_args: if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None: oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('updateResourceScheduleing_args') + oprot.writeStructBegin('updateExperimentConfiguration_args') if self.authzToken is not None: oprot.writeFieldBegin('authzToken', TType.STRUCT, 1) self.authzToken.write(oprot) @@ -26517,9 +26911,9 @@ class updateResourceScheduleing_args: oprot.writeFieldBegin('airavataExperimentId', TType.STRING, 2) oprot.writeString(self.airavataExperimentId) oprot.writeFieldEnd() - if self.resourceScheduling is not None: - oprot.writeFieldBegin('resourceScheduling', TType.STRUCT, 3) - self.resourceScheduling.write(oprot) + if self.userConfiguration is not None: + oprot.writeFieldBegin('userConfiguration', TType.STRUCT, 3) + self.userConfiguration.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -26529,8 +26923,8 @@ class updateResourceScheduleing_args: raise TProtocol.TProtocolException(message='Required field authzToken is unset!') if self.airavataExperimentId is None: raise TProtocol.TProtocolException(message='Required field airavataExperimentId is unset!') - if self.resourceScheduling is None: - raise TProtocol.TProtocolException(message='Required field resourceScheduling is unset!') + if self.userConfiguration is None: + raise TProtocol.TProtocolException(message='Required field userConfiguration is unset!') return @@ -26538,7 +26932,7 @@ class updateResourceScheduleing_args: value = 17 value = (value * 31) ^ hash(self.authzToken) value = (value * 31) ^ hash(self.airavataExperimentId) - value = (value * 31) ^ hash(self.resourceScheduling) + value = (value * 31) ^ hash(self.userConfiguration) return value def __repr__(self): @@ -26552,7 +26946,7 @@ class updateResourceScheduleing_args: def __ne__(self, other): return not (self == other) -class updateResourceScheduleing_result: +class updateExperimentConfiguration_result: """ Attributes: - ae @@ -26590,7 +26984,7 @@ class updateResourceScheduleing_result: if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None: oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('updateResourceScheduleing_result') + oprot.writeStructBegin('updateExperimentConfiguration_result') if self.ae is not None: oprot.writeFieldBegin('ae', TType.STRUCT, 1) self.ae.write(oprot) @@ -26618,22 +27012,25 @@ class updateResourceScheduleing_result: def __ne__(self, other): return not (self == other) -class validateExperiment_args: +class updateResourceScheduleing_args: """ Attributes: - authzToken - airavataExperimentId + - resourceScheduling """ thrift_spec = ( None, # 0 (1, TType.STRUCT, 'authzToken', (apache.airavata.model.security.ttypes.AuthzToken, apache.airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1 (2, TType.STRING, 'airavataExperimentId', None, None, ), # 2 + (3, TType.STRUCT, 'resourceScheduling', (apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel, apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel.thrift_spec), None, ), # 3 ) - def __init__(self, authzToken=None, airavataExperimentId=None,): + def __init__(self, authzToken=None, airavataExperimentId=None, resourceScheduling=None,): self.authzToken = authzToken self.airavataExperimentId = airavataExperimentId + self.resourceScheduling = resourceScheduling def read(self, iprot): if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None: @@ -26655,6 +27052,12 @@ class validateExperiment_args: self.airavataExperimentId = iprot.readString() else: iprot.skip(ftype) + elif fid == 3: + if ftype == TType.STRUCT: + self.resourceScheduling = apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel() + self.resourceScheduling.read(iprot) + else: + iprot.skip(ftype) else: iprot.skip(ftype) iprot.readFieldEnd() @@ -26664,7 +27067,163 @@ class validateExperiment_args: if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None: oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec))) return - oprot.writeStructBegin('validateExperiment_args') + oprot.writeStructBegin('updateResourceScheduleing_args') + if self.authzToken is not None: + oprot.writeFieldBegin('authzToken', TType.STRUCT, 1) + self.authzToken.write(oprot) + oprot.writeFieldEnd() + if self.airavataExperimentId is not None: + oprot.writeFieldBegin('airavataExperimentId', TType.STRING, 2) + oprot.writeString(self.airavataExperimentId) + oprot.writeFieldEnd() + if self.resourceScheduling is not None: + oprot.writeFieldBegin('resourceScheduling', TType.STRUCT, 3) + self.resourceScheduling.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + if self.authzToken is None: + raise TProtocol.TProtocolException(message='Required field authzToken is unset!') + if self.airavataExperimentId is None: + raise TProtocol.TProtocolException(message='Required field airavataExperimentId is unset!') + if self.resourceScheduling is None: + raise TProtocol.TProtocolException(message='Required field resourceScheduling is unset!') + return + + + def __hash__(self): + value = 17 + value = (value * 31) ^ hash(self.authzToken) + value = (value * 31) ^ hash(self.airavataExperimentId) + value = (value * 31) ^ hash(self.resourceScheduling) + return value + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.iteritems()] + 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 updateResourceScheduleing_result: + """ + Attributes: + - ae + """ + + thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'ae', (apache.airavata.api.error.ttypes.AuthorizationException, apache.airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ), # 1 + ) + + def __init__(self, ae=None,): + self.ae = ae + + def read(self, iprot): + if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None: + fastbinary.decode_binary(self, iprot.trans, (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.ae = apache.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.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None: + oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec))) + return + oprot.writeStructBegin('updateResourceScheduleing_result') + if self.ae is not None: + oprot.writeFieldBegin('ae', TType.STRUCT, 1) + self.ae.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + + def __hash__(self): + value = 17 + value = (value * 31) ^ hash(self.ae) + return value + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.iteritems()] + 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 validateExperiment_args: + """ + Attributes: + - authzToken + - airavataExperimentId + """ + + thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'authzToken', (apache.airavata.model.security.ttypes.AuthzToken, apache.airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1 + (2, TType.STRING, 'airavataExperimentId', None, None, ), # 2 + ) + + def __init__(self, authzToken=None, airavataExperimentId=None,): + self.authzToken = authzToken + self.airavataExperimentId = airavataExperimentId + + def read(self, iprot): + if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None: + fastbinary.decode_binary(self, iprot.trans, (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 = apache.airavata.model.security.ttypes.AuthzToken() + self.authzToken.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRING: + self.airavataExperimentId = iprot.readString() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None: + oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec))) + return + oprot.writeStructBegin('validateExperiment_args') if self.authzToken is not None: oprot.writeFieldBegin('authzToken', TType.STRUCT, 1) self.authzToken.write(oprot) @@ -28434,6 +28993,261 @@ class cloneExperiment_result: def __ne__(self, other): return not (self == other) +class cloneExperimentByAdmin_args: + """ + Attributes: + - authzToken + - existingExperimentID + - newExperimentName + - newExperimentProjectId + """ + + thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'authzToken', (apache.airavata.model.security.ttypes.AuthzToken, apache.airavata.model.security.ttypes.AuthzToken.thrift_spec), None, ), # 1 + (2, TType.STRING, 'existingExperimentID', None, None, ), # 2 + (3, TType.STRING, 'newExperimentName', None, None, ), # 3 + (4, TType.STRING, 'newExperimentProjectId', None, None, ), # 4 + ) + + def __init__(self, authzToken=None, existingExperimentID=None, newExperimentName=None, newExperimentProjectId=None,): + self.authzToken = authzToken + self.existingExperimentID = existingExperimentID + self.newExperimentName = newExperimentName + self.newExperimentProjectId = newExperimentProjectId + + def read(self, iprot): + if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None: + fastbinary.decode_binary(self, iprot.trans, (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 = apache.airavata.model.security.ttypes.AuthzToken() + self.authzToken.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRING: + self.existingExperimentID = iprot.readString() + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.STRING: + self.newExperimentName = iprot.readString() + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.STRING: + self.newExperimentProjectId = iprot.readString() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None: + oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec))) + return + oprot.writeStructBegin('cloneExperimentByAdmin_args') + if self.authzToken is not None: + oprot.writeFieldBegin('authzToken', TType.STRUCT, 1) + self.authzToken.write(oprot) + oprot.writeFieldEnd() + if self.existingExperimentID is not None: + oprot.writeFieldBegin('existingExperimentID', TType.STRING, 2) + oprot.writeString(self.existingExperimentID) + oprot.writeFieldEnd() + if self.newExperimentName is not None: + oprot.writeFieldBegin('newExperimentName', TType.STRING, 3) + oprot.writeString(self.newExperimentName) + oprot.writeFieldEnd() + if self.newExperimentProjectId is not None: + oprot.writeFieldBegin('newExperimentProjectId', TType.STRING, 4) + oprot.writeString(self.newExperimentProjectId) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + if self.authzToken is None: + raise TProtocol.TProtocolException(message='Required field authzToken is unset!') + return + + + def __hash__(self): + value = 17 + value = (value * 31) ^ hash(self.authzToken) + value = (value * 31) ^ hash(self.existingExperimentID) + value = (value * 31) ^ hash(self.newExperimentName) + value = (value * 31) ^ hash(self.newExperimentProjectId) + return value + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.iteritems()] + 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 cloneExperimentByAdmin_result: + """ + Attributes: + - success + - ire + - enf + - ace + - ase + - ae + - pnfe + """ + + thrift_spec = ( + (0, TType.STRING, 'success', None, None, ), # 0 + (1, TType.STRUCT, 'ire', (apache.airavata.api.error.ttypes.InvalidRequestException, apache.airavata.api.error.ttypes.InvalidRequestException.thrift_spec), None, ), # 1 + (2, TType.STRUCT, 'enf', (apache.airavata.api.error.ttypes.ExperimentNotFoundException, apache.airavata.api.error.ttypes.ExperimentNotFoundException.thrift_spec), None, ), # 2 + (3, TType.STRUCT, 'ace', (apache.airavata.api.error.ttypes.AiravataClientException, apache.airavata.api.error.ttypes.AiravataClientException.thrift_spec), None, ), # 3 + (4, TType.STRUCT, 'ase', (apache.airavata.api.error.ttypes.AiravataSystemException, apache.airavata.api.error.ttypes.AiravataSystemException.thrift_spec), None, ), # 4 + (5, TType.STRUCT, 'ae', (apache.airavata.api.error.ttypes.AuthorizationException, apache.airavata.api.error.ttypes.AuthorizationException.thrift_spec), None, ), # 5 + (6, TType.STRUCT, 'pnfe', (apache.airavata.api.error.ttypes.ProjectNotFoundException, apache.airavata.api.error.ttypes.ProjectNotFoundException.thrift_spec), None, ), # 6 + ) + + def __init__(self, success=None, ire=None, enf=None, ace=None, ase=None, ae=None, pnfe=None,): + self.success = success + self.ire = ire + self.enf = enf + self.ace = ace + self.ase = ase + self.ae = ae + self.pnfe = pnfe + + def read(self, iprot): + if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None: + fastbinary.decode_binary(self, iprot.trans, (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() + else: + iprot.skip(ftype) + elif fid == 1: + if ftype == TType.STRUCT: + self.ire = apache.airavata.api.error.ttypes.InvalidRequestException() + self.ire.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.enf = apache.airavata.api.error.ttypes.ExperimentNotFoundException() + self.enf.read(iprot) + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.STRUCT: + self.ace = apache.airavata.api.error.ttypes.AiravataClientException() + self.ace.read(iprot) + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.STRUCT: + self.ase = apache.airavata.api.error.ttypes.AiravataSystemException() + self.ase.read(iprot) + else: + iprot.skip(ftype) + elif fid == 5: + if ftype == TType.STRUCT: + self.ae = apache.airavata.api.error.ttypes.AuthorizationException() + self.ae.read(iprot) + else: + iprot.skip(ftype) + elif fid == 6: + if ftype == TType.STRUCT: + self.pnfe = apache.airavata.api.error.ttypes.ProjectNotFoundException() + self.pnfe.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None: + oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec))) + return + oprot.writeStructBegin('cloneExperimentByAdmin_result') + if self.success is not None: + oprot.writeFieldBegin('success', TType.STRING, 0) + oprot.writeString(self.success) + oprot.writeFieldEnd() + if self.ire is not None: + oprot.writeFieldBegin('ire', TType.STRUCT, 1) + self.ire.write(oprot) + oprot.writeFieldEnd() + if self.enf is not None: + oprot.writeFieldBegin('enf', TType.STRUCT, 2) + self.enf.write(oprot) + oprot.writeFieldEnd() + if self.ace is not None: + oprot.writeFieldBegin('ace', TType.STRUCT, 3) + self.ace.write(oprot) + oprot.writeFieldEnd() + if self.ase is not None: + oprot.writeFieldBegin('ase', TType.STRUCT, 4) + self.ase.write(oprot) + oprot.writeFieldEnd() + if self.ae is not None: + oprot.writeFieldBegin('ae', TType.STRUCT, 5) + self.ae.write(oprot) + oprot.writeFieldEnd() + if self.pnfe is not None: + oprot.writeFieldBegin('pnfe', TType.STRUCT, 6) + self.pnfe.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + + def __hash__(self): + value = 17 + value = (value * 31) ^ hash(self.success) + value = (value * 31) ^ hash(self.ire) + value = (value * 31) ^ hash(self.enf) + value = (value * 31) ^ hash(self.ace) + value = (value * 31) ^ hash(self.ase) + value = (value * 31) ^ hash(self.ae) + value = (value * 31) ^ hash(self.pnfe) + return value + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.iteritems()] + 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 terminateExperiment_args: """ Attributes: http://git-wip-us.apache.org/repos/asf/airavata/blob/177a2484/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/group/ttypes.py ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/group/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/group/ttypes.py index 661c390..996700b 100644 --- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/group/ttypes.py +++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/group/ttypes.py @@ -41,15 +41,18 @@ class ResourceType: class ResourcePermissionType: WRITE = 0 READ = 1 + OWNER = 2 _VALUES_TO_NAMES = { 0: "WRITE", 1: "READ", + 2: "OWNER", } _NAMES_TO_VALUES = { "WRITE": 0, "READ": 1, + "OWNER": 2, } http://git-wip-us.apache.org/repos/asf/airavata/blob/177a2484/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/group/ResourcePermissionType.java ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/group/ResourcePermissionType.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/group/ResourcePermissionType.java index b355864..558ed59 100644 --- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/group/ResourcePermissionType.java +++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/group/ResourcePermissionType.java @@ -30,7 +30,8 @@ import org.apache.thrift.TEnum; public enum ResourcePermissionType implements org.apache.thrift.TEnum { WRITE(0), - READ(1); + READ(1), + OWNER(2); private final int value; @@ -55,6 +56,8 @@ public enum ResourcePermissionType implements org.apache.thrift.TEnum { return WRITE; case 1: return READ; + case 2: + return OWNER; default: return null; } http://git-wip-us.apache.org/repos/asf/airavata/blob/177a2484/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/UserRepository.java ---------------------------------------------------------------------- diff --git a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/UserRepository.java b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/UserRepository.java index 8501d94..b3ae341 100644 --- a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/UserRepository.java +++ b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/UserRepository.java @@ -48,6 +48,9 @@ public class UserRepository extends AbstractRepository<User, UserEntity, UserPK> query += "u." + DBConstants.UserTable.DOMAIN_ID + " = '" + domainId + "' AND "; query += "s." + DBConstants.SharingTable.ENTITY_ID + " = '" + entityId + "' AND "; query += "s." + DBConstants.SharingTable.PERMISSION_TYPE_ID + " = '" + permissionTypeId + "'"; + if(permissionTypeId.equals((new PermissionTypeRepository()).getOwnerPermissionTypeIdForDomain(domainId))){ + query += "AND s." + DBConstants.SharingTable.SHARING_TYPE + " LIKE 'DIRECT_%'"; + } query += " ORDER BY s.createdTime DESC"; return select(query, 0, -1); } http://git-wip-us.apache.org/repos/asf/airavata/blob/177a2484/modules/sharing-registry/sharing-registry-server/src/test/java/org/apache/airavata/sharing/registry/SharingRegistryServerHandlerTest.java ---------------------------------------------------------------------- diff --git a/modules/sharing-registry/sharing-registry-server/src/test/java/org/apache/airavata/sharing/registry/SharingRegistryServerHandlerTest.java b/modules/sharing-registry/sharing-registry-server/src/test/java/org/apache/airavata/sharing/registry/SharingRegistryServerHandlerTest.java index d11e744..80cb1d4 100644 --- a/modules/sharing-registry/sharing-registry-server/src/test/java/org/apache/airavata/sharing/registry/SharingRegistryServerHandlerTest.java +++ b/modules/sharing-registry/sharing-registry-server/src/test/java/org/apache/airavata/sharing/registry/SharingRegistryServerHandlerTest.java @@ -272,6 +272,8 @@ public class SharingRegistryServerHandlerTest { Assert.assertNotNull(sharingRegistryServerHandler.getListOfSharedUsers(domainId, entityId1, permissionTypeId1)); Assert.assertNotNull(sharingRegistryServerHandler.getListOfSharedGroups(domainId, entityId1, permissionTypeId1)); + Assert.assertTrue(sharingRegistryServerHandler.getListOfSharedUsers(domainId, entityId1, "OWNER").size()==1); + // sharingRegistryServerHandler.revokeEntitySharingFromUsers(entityId1, Arrays.asList(userId2), permissionTypeId1); // sharingRegistryServerHandler.revokeEntitySharingFromGroups(entityId3, Arrays.asList(groupId2), permissionTypeId1); } http://git-wip-us.apache.org/repos/asf/airavata/blob/177a2484/thrift-interface-descriptions/data-models/user-group-models/group_manager_cpi.thrift ---------------------------------------------------------------------- diff --git a/thrift-interface-descriptions/data-models/user-group-models/group_manager_cpi.thrift b/thrift-interface-descriptions/data-models/user-group-models/group_manager_cpi.thrift deleted file mode 100644 index 5b17fcd..0000000 --- a/thrift-interface-descriptions/data-models/user-group-models/group_manager_cpi.thrift +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ - -include "./group_manager_model.thrift" - -namespace java org.apache.airavata.group.cpi - -service GroupManagerService { - - /** - * Resources related API methods - **/ - string registerResource(group_manager_model.Resource resource); - - bool updateResource(group_manager_model.Resource resource); - - bool deleteResource(string resourceId); - - group_manager_model.Resource getResource(string resourceId); - - - /** - * Users related API methods - **/ - bool registerUser(group_manager_model.User user); - - bool updateUser(group_manager_model.User user); - - bool deleteUser(string grouperUserId); - - group_manager_model.User getUser(string grouperUserId); - - bool assignUserToGroup(string grouperUserId, string groupId); - - bool removeUserFromGroup(string grouperUserId, string groupId); - - list<group_manager_model.GroupMembership> getAllGroupMembershipsForUser(string grouperUserId); - - - /** - * Groups related API methods - **/ - string registerGroup(group_manager_model.Group group); - - bool updateGroup(group_manager_model.Group group); - - bool deleteGroup(string groupId); - - group_manager_model.Group getGroup(string groupdId); - - bool addGroupToGroup(string parentGroupId, string childGroupId); - - bool removeGroupFromGroup(string parentGroupId, string childGroupId); - - list<group_manager_model.GroupMembership> getAllMembersForTheGroup(string groupId); - - - /** - * Grant Revoke Permissions API methods - **/ - bool grantPermissions(string subjectId, group_manager_model.SubjectType subjectType, string resourceId, - list<group_manager_model.ResourcePermissionType> grantPermissions, bool recursively) - - bool revokePermissions(string subjectId, group_manager_model.SubjectType subjectType, string resourceId, - list<group_manager_model.ResourcePermissionType> revokePermissiones,bool recursively) - - bool revokeAllPermissions(string subjectId, group_manager_model.SubjectType subjectType, string resourceId, bool recursively) - - - /** - * Browse and Search Related API method - **/ - list<group_manager_model.Resource> getAccessibleResourcesForUser(string grouperUserId, group_manager_model.ResourceType resourceType, - list<group_manager_model.ResourcePermissionType> permissions, i32 offset, i32 limit) - - list<group_manager_model.Resource> searcgAccessibleResourcesForUser(string grouperUserId, group_manager_model.ResourceType resourceType, - list<group_manager_model.ResourcePermissionType> permissions, map<string,string> filters, i32 offset, i32 limit) -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/177a2484/thrift-interface-descriptions/data-models/user-group-models/group_manager_model.thrift ---------------------------------------------------------------------- diff --git a/thrift-interface-descriptions/data-models/user-group-models/group_manager_model.thrift b/thrift-interface-descriptions/data-models/user-group-models/group_manager_model.thrift index b288840..2bc3b2f 100644 --- a/thrift-interface-descriptions/data-models/user-group-models/group_manager_model.thrift +++ b/thrift-interface-descriptions/data-models/user-group-models/group_manager_model.thrift @@ -35,7 +35,8 @@ enum ResourceType { enum ResourcePermissionType { WRITE, - READ + READ, + OWNER } struct GroupModel{
