You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ma...@apache.org on 2019/11/15 19:54:53 UTC
[airavata] branch develop updated (adb4408 -> a675926)
This is an automated email from the ASF dual-hosted git repository.
machristie pushed a change to branch develop
in repository https://gitbox.apache.org/repos/asf/airavata.git.
from adb4408 Merge remote-tracking branch 'origin/master' into develop
add cd54deb Adding Delta gateway to production
add 1ecbef9 Adding Delta gateway to production
add 07740da Added delta gateway host server to the list
add 000ac9b Updated the vars.yml for Delta gateway
add 672f23d Updated the vars.yml for Delta gateway
add 1ba1ef2 Updated the vault.yml for Delta gateway
add 10a843d Updated the vault.yml for Delta gateway
add 058c090 increaased the file size for Distant reader
add c33ed35 Ansible: fixing Delta configuration
add 050f4b8 AIRAVATA-3274 Run webserver setup only once per server
add 91a575e Ansible: fixing delta config
add 74020d8 Added the SSH key for gateway storage
add 0383e92 enabled SSL certification
add 8326c08 Added CILogon to Delta gateway
add 1813951 Added CILogon to Delta gateway
new b07d1d0 AIRAVATA-3268 Add overrideFilename to app input model
new a675926 Merge branch 'airavata-3268' into develop
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../lib/airavata/model/application/io/ttypes.py | 16 ++-
.../resources/lib/airavata/model/group/ttypes.py | 3 +
.../resources/lib/airavata/model/sharing/ttypes.py | 15 ++-
.../model/application/io/InputDataObjectType.java | 115 ++++++++++++++++++++-
dev-tools/ansible/django.yml | 19 ++--
.../scigap/production/host_vars/delta/vars.yml | 55 ++++++++++
.../scigap/production/host_vars/delta/vault.yml | 15 +++
.../production/host_vars/distantreader/vars.yml | 1 +
.../ansible/inventories/scigap/production/hosts | 4 +
.../init/03-appcatalog-migrations.sql | 3 +
.../init/04-expcatalog-migrations.sql | 4 +
.../appcatalog/ApplicationInputEntity.java | 11 ++
.../entities/expcatalog/ExperimentInputEntity.java | 13 ++-
.../entities/expcatalog/ProcessInputEntity.java | 13 ++-
.../src/main/resources/appcatalog-derby.sql | 1 +
.../src/main/resources/appcatalog-mysql.sql | 1 +
.../src/main/resources/expcatalog-derby.sql | 2 +
.../src/main/resources/expcatalog-mysql.sql | 2 +
.../expcatalog/ExperimentRepositoryTest.java | 4 +
.../DeltaScripts/appCatalog_schema_delta.sql | 3 +
.../experimentCatalog_schema_delta.sql | 4 +
.../application_io_models.thrift | 5 +-
22 files changed, 294 insertions(+), 15 deletions(-)
create mode 100644 dev-tools/ansible/inventories/scigap/production/host_vars/delta/vars.yml
create mode 100644 dev-tools/ansible/inventories/scigap/production/host_vars/delta/vault.yml
create mode 100644 modules/ide-integration/src/main/resources/database_scripts/init/03-appcatalog-migrations.sql
create mode 100644 modules/ide-integration/src/main/resources/database_scripts/init/04-expcatalog-migrations.sql
[airavata] 02/02: Merge branch 'airavata-3268' into develop
Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
machristie pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/airavata.git
commit a67592603a4c23319d6ac861cbad5b31d86907db
Merge: adb4408 b07d1d0
Author: Marcus Christie <ma...@iu.edu>
AuthorDate: Fri Nov 15 14:54:09 2019 -0500
Merge branch 'airavata-3268' into develop
.../lib/airavata/model/application/io/ttypes.py | 16 ++-
.../resources/lib/airavata/model/group/ttypes.py | 3 +
.../resources/lib/airavata/model/sharing/ttypes.py | 15 ++-
.../model/application/io/InputDataObjectType.java | 115 ++++++++++++++++++++-
dev-tools/ansible/django.yml | 19 ++--
.../scigap/production/host_vars/delta/vars.yml | 55 ++++++++++
.../scigap/production/host_vars/delta/vault.yml | 15 +++
.../production/host_vars/distantreader/vars.yml | 1 +
.../ansible/inventories/scigap/production/hosts | 4 +
.../init/03-appcatalog-migrations.sql | 3 +
.../init/04-expcatalog-migrations.sql | 4 +
.../appcatalog/ApplicationInputEntity.java | 11 ++
.../entities/expcatalog/ExperimentInputEntity.java | 13 ++-
.../entities/expcatalog/ProcessInputEntity.java | 13 ++-
.../src/main/resources/appcatalog-derby.sql | 1 +
.../src/main/resources/appcatalog-mysql.sql | 1 +
.../src/main/resources/expcatalog-derby.sql | 2 +
.../src/main/resources/expcatalog-mysql.sql | 2 +
.../expcatalog/ExperimentRepositoryTest.java | 4 +
.../DeltaScripts/appCatalog_schema_delta.sql | 3 +
.../experimentCatalog_schema_delta.sql | 4 +
.../application_io_models.thrift | 5 +-
22 files changed, 294 insertions(+), 15 deletions(-)
[airavata] 01/02: AIRAVATA-3268 Add overrideFilename to app input
model
Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
machristie pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/airavata.git
commit b07d1d03df3fc68097ba49a41baf0559b688fc95
Author: Marcus Christie <ma...@iu.edu>
AuthorDate: Fri Nov 15 14:52:42 2019 -0500
AIRAVATA-3268 Add overrideFilename to app input model
---
.../lib/airavata/model/application/io/ttypes.py | 16 ++-
.../resources/lib/airavata/model/group/ttypes.py | 3 +
.../resources/lib/airavata/model/sharing/ttypes.py | 15 ++-
.../model/application/io/InputDataObjectType.java | 115 ++++++++++++++++++++-
.../init/03-appcatalog-migrations.sql | 3 +
.../init/04-expcatalog-migrations.sql | 4 +
.../appcatalog/ApplicationInputEntity.java | 11 ++
.../entities/expcatalog/ExperimentInputEntity.java | 13 ++-
.../entities/expcatalog/ProcessInputEntity.java | 13 ++-
.../src/main/resources/appcatalog-derby.sql | 1 +
.../src/main/resources/appcatalog-mysql.sql | 1 +
.../src/main/resources/expcatalog-derby.sql | 2 +
.../src/main/resources/expcatalog-mysql.sql | 2 +
.../expcatalog/ExperimentRepositoryTest.java | 4 +
.../DeltaScripts/appCatalog_schema_delta.sql | 3 +
.../experimentCatalog_schema_delta.sql | 4 +
.../application_io_models.thrift | 5 +-
17 files changed, 206 insertions(+), 9 deletions(-)
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/airavata/model/application/io/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/airavata/model/application/io/ttypes.py
index 8c9017a..17f1760 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/airavata/model/application/io/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/airavata/model/application/io/ttypes.py
@@ -74,6 +74,8 @@ class InputDataObjectType(object):
metaData:
Any metadat. This is typically ignore by Airavata and is used by gateways for application configuration.
+ overrideFilename:
+ Rename input file to given value when staging to compute resource.
Attributes:
- name
@@ -89,6 +91,7 @@ class InputDataObjectType(object):
- dataStaged
- storageResourceId
- isReadOnly
+ - overrideFilename
"""
thrift_spec = (
@@ -106,9 +109,10 @@ class InputDataObjectType(object):
(11, TType.BOOL, 'dataStaged', None, None, ), # 11
(12, TType.STRING, 'storageResourceId', 'UTF8', None, ), # 12
(13, TType.BOOL, 'isReadOnly', None, None, ), # 13
+ (14, TType.STRING, 'overrideFilename', 'UTF8', None, ), # 14
)
- def __init__(self, name=None, value=None, type=None, applicationArgument=None, standardInput=None, userFriendlyDescription=None, metaData=None, inputOrder=None, isRequired=None, requiredToAddedToCommandLine=None, dataStaged=None, storageResourceId=None, isReadOnly=None,):
+ def __init__(self, name=None, value=None, type=None, applicationArgument=None, standardInput=None, userFriendlyDescription=None, metaData=None, inputOrder=None, isRequired=None, requiredToAddedToCommandLine=None, dataStaged=None, storageResourceId=None, isReadOnly=None, overrideFilename=None,):
self.name = name
self.value = value
self.type = type
@@ -122,6 +126,7 @@ class InputDataObjectType(object):
self.dataStaged = dataStaged
self.storageResourceId = storageResourceId
self.isReadOnly = isReadOnly
+ self.overrideFilename = overrideFilename
def read(self, iprot):
if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -197,6 +202,11 @@ class InputDataObjectType(object):
self.isReadOnly = iprot.readBool()
else:
iprot.skip(ftype)
+ elif fid == 14:
+ if ftype == TType.STRING:
+ self.overrideFilename = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+ else:
+ iprot.skip(ftype)
else:
iprot.skip(ftype)
iprot.readFieldEnd()
@@ -259,6 +269,10 @@ class InputDataObjectType(object):
oprot.writeFieldBegin('isReadOnly', TType.BOOL, 13)
oprot.writeBool(self.isReadOnly)
oprot.writeFieldEnd()
+ if self.overrideFilename is not None:
+ oprot.writeFieldBegin('overrideFilename', TType.STRING, 14)
+ oprot.writeString(self.overrideFilename.encode('utf-8') if sys.version_info[0] == 2 else self.overrideFilename)
+ oprot.writeFieldEnd()
oprot.writeFieldStop()
oprot.writeStructEnd()
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/airavata/model/group/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/airavata/model/group/ttypes.py
index 3be6af0..8bce444 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/airavata/model/group/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/airavata/model/group/ttypes.py
@@ -48,17 +48,20 @@ class ResourcePermissionType(object):
WRITE = 0
READ = 1
OWNER = 2
+ MANAGE_SHARING = 3
_VALUES_TO_NAMES = {
0: "WRITE",
1: "READ",
2: "OWNER",
+ 3: "MANAGE_SHARING",
}
_NAMES_TO_VALUES = {
"WRITE": 0,
"READ": 1,
"OWNER": 2,
+ "MANAGE_SHARING": 3,
}
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/airavata/model/sharing/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/airavata/model/sharing/ttypes.py
index 1f2f0e9..661367f 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/airavata/model/sharing/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/airavata/model/sharing/ttypes.py
@@ -190,6 +190,7 @@ class Domain(object):
<li>description : A short description for the domain</li>
<li>createdTime : Will be set by the system</li>
<li>updatedTime : Will be set by the system</li>
+ <li>initialUserGroupId : New users will automatically be added to this group</li>
Attributes:
@@ -198,6 +199,7 @@ class Domain(object):
- description
- createdTime
- updatedTime
+ - initialUserGroupId
"""
thrift_spec = (
@@ -207,14 +209,16 @@ class Domain(object):
(3, TType.STRING, 'description', 'UTF8', None, ), # 3
(4, TType.I64, 'createdTime', None, None, ), # 4
(5, TType.I64, 'updatedTime', None, None, ), # 5
+ (6, TType.STRING, 'initialUserGroupId', 'UTF8', None, ), # 6
)
- def __init__(self, domainId=thrift_spec[1][4], name=None, description=None, createdTime=None, updatedTime=None,):
+ def __init__(self, domainId=thrift_spec[1][4], name=None, description=None, createdTime=None, updatedTime=None, initialUserGroupId=None,):
self.domainId = domainId
self.name = name
self.description = description
self.createdTime = createdTime
self.updatedTime = updatedTime
+ self.initialUserGroupId = initialUserGroupId
def read(self, iprot):
if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
@@ -250,6 +254,11 @@ class Domain(object):
self.updatedTime = iprot.readI64()
else:
iprot.skip(ftype)
+ elif fid == 6:
+ if ftype == TType.STRING:
+ self.initialUserGroupId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+ else:
+ iprot.skip(ftype)
else:
iprot.skip(ftype)
iprot.readFieldEnd()
@@ -280,6 +289,10 @@ class Domain(object):
oprot.writeFieldBegin('updatedTime', TType.I64, 5)
oprot.writeI64(self.updatedTime)
oprot.writeFieldEnd()
+ if self.initialUserGroupId is not None:
+ oprot.writeFieldBegin('initialUserGroupId', TType.STRING, 6)
+ oprot.writeString(self.initialUserGroupId.encode('utf-8') if sys.version_info[0] == 2 else self.initialUserGroupId)
+ oprot.writeFieldEnd()
oprot.writeFieldStop()
oprot.writeStructEnd()
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/InputDataObjectType.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/InputDataObjectType.java
index 48f45d8..3157f7c 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/InputDataObjectType.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/InputDataObjectType.java
@@ -49,6 +49,8 @@ package org.apache.airavata.model.application.io;
* metaData:
* Any metadat. This is typically ignore by Airavata and is used by gateways for application configuration.
*
+ * overrideFilename:
+ * Rename input file to given value when staging to compute resource.
*/
@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.10.0)")
public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObjectType, InputDataObjectType._Fields>, java.io.Serializable, Cloneable, Comparable<InputDataObjectType> {
@@ -67,6 +69,7 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
private static final org.apache.thrift.protocol.TField DATA_STAGED_FIELD_DESC = new org.apache.thrift.protocol.TField("dataStaged", org.apache.thrift.protocol.TType.BOOL, (short)11);
private static final org.apache.thrift.protocol.TField STORAGE_RESOURCE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("storageResourceId", org.apache.thrift.protocol.TType.STRING, (short)12);
private static final org.apache.thrift.protocol.TField IS_READ_ONLY_FIELD_DESC = new org.apache.thrift.protocol.TField("isReadOnly", org.apache.thrift.protocol.TType.BOOL, (short)13);
+ private static final org.apache.thrift.protocol.TField OVERRIDE_FILENAME_FIELD_DESC = new org.apache.thrift.protocol.TField("overrideFilename", org.apache.thrift.protocol.TType.STRING, (short)14);
private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new InputDataObjectTypeStandardSchemeFactory();
private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new InputDataObjectTypeTupleSchemeFactory();
@@ -84,6 +87,7 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
private boolean dataStaged; // optional
private java.lang.String storageResourceId; // optional
private boolean isReadOnly; // optional
+ private java.lang.String overrideFilename; // optional
/** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -103,7 +107,8 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
REQUIRED_TO_ADDED_TO_COMMAND_LINE((short)10, "requiredToAddedToCommandLine"),
DATA_STAGED((short)11, "dataStaged"),
STORAGE_RESOURCE_ID((short)12, "storageResourceId"),
- IS_READ_ONLY((short)13, "isReadOnly");
+ IS_READ_ONLY((short)13, "isReadOnly"),
+ OVERRIDE_FILENAME((short)14, "overrideFilename");
private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
@@ -144,6 +149,8 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
return STORAGE_RESOURCE_ID;
case 13: // IS_READ_ONLY
return IS_READ_ONLY;
+ case 14: // OVERRIDE_FILENAME
+ return OVERRIDE_FILENAME;
default:
return null;
}
@@ -191,7 +198,7 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
private static final int __DATASTAGED_ISSET_ID = 4;
private static final int __ISREADONLY_ISSET_ID = 5;
private byte __isset_bitfield = 0;
- private static final _Fields optionals[] = {_Fields.VALUE,_Fields.TYPE,_Fields.APPLICATION_ARGUMENT,_Fields.STANDARD_INPUT,_Fields.USER_FRIENDLY_DESCRIPTION,_Fields.META_DATA,_Fields.INPUT_ORDER,_Fields.IS_REQUIRED,_Fields.REQUIRED_TO_ADDED_TO_COMMAND_LINE,_Fields.DATA_STAGED,_Fields.STORAGE_RESOURCE_ID,_Fields.IS_READ_ONLY};
+ private static final _Fields optionals[] = {_Fields.VALUE,_Fields.TYPE,_Fields.APPLICATION_ARGUMENT,_Fields.STANDARD_INPUT,_Fields.USER_FRIENDLY_DESCRIPTION,_Fields.META_DATA,_Fields.INPUT_ORDER,_Fields.IS_REQUIRED,_Fields.REQUIRED_TO_ADDED_TO_COMMAND_LINE,_Fields.DATA_STAGED,_Fields.STORAGE_RESOURCE_ID,_Fields.IS_READ_ONLY,_Fields.OVERRIDE_FILENAME};
public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
static {
java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
@@ -221,6 +228,8 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
tmpMap.put(_Fields.IS_READ_ONLY, new org.apache.thrift.meta_data.FieldMetaData("isReadOnly", org.apache.thrift.TFieldRequirementType.OPTIONAL,
new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+ tmpMap.put(_Fields.OVERRIDE_FILENAME, new org.apache.thrift.meta_data.FieldMetaData("overrideFilename", org.apache.thrift.TFieldRequirementType.OPTIONAL,
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(InputDataObjectType.class, metaDataMap);
}
@@ -267,6 +276,9 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
this.storageResourceId = other.storageResourceId;
}
this.isReadOnly = other.isReadOnly;
+ if (other.isSetOverrideFilename()) {
+ this.overrideFilename = other.overrideFilename;
+ }
}
public InputDataObjectType deepCopy() {
@@ -294,6 +306,7 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
this.storageResourceId = null;
setIsReadOnlyIsSet(false);
this.isReadOnly = false;
+ this.overrideFilename = null;
}
public java.lang.String getName() {
@@ -597,6 +610,29 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
__isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __ISREADONLY_ISSET_ID, value);
}
+ public java.lang.String getOverrideFilename() {
+ return this.overrideFilename;
+ }
+
+ public void setOverrideFilename(java.lang.String overrideFilename) {
+ this.overrideFilename = overrideFilename;
+ }
+
+ public void unsetOverrideFilename() {
+ this.overrideFilename = null;
+ }
+
+ /** Returns true if field overrideFilename is set (has been assigned a value) and false otherwise */
+ public boolean isSetOverrideFilename() {
+ return this.overrideFilename != null;
+ }
+
+ public void setOverrideFilenameIsSet(boolean value) {
+ if (!value) {
+ this.overrideFilename = null;
+ }
+ }
+
public void setFieldValue(_Fields field, java.lang.Object value) {
switch (field) {
case NAME:
@@ -703,6 +739,14 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
}
break;
+ case OVERRIDE_FILENAME:
+ if (value == null) {
+ unsetOverrideFilename();
+ } else {
+ setOverrideFilename((java.lang.String)value);
+ }
+ break;
+
}
}
@@ -747,6 +791,9 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
case IS_READ_ONLY:
return isIsReadOnly();
+ case OVERRIDE_FILENAME:
+ return getOverrideFilename();
+
}
throw new java.lang.IllegalStateException();
}
@@ -784,6 +831,8 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
return isSetStorageResourceId();
case IS_READ_ONLY:
return isSetIsReadOnly();
+ case OVERRIDE_FILENAME:
+ return isSetOverrideFilename();
}
throw new java.lang.IllegalStateException();
}
@@ -920,6 +969,15 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
return false;
}
+ boolean this_present_overrideFilename = true && this.isSetOverrideFilename();
+ boolean that_present_overrideFilename = true && that.isSetOverrideFilename();
+ if (this_present_overrideFilename || that_present_overrideFilename) {
+ if (!(this_present_overrideFilename && that_present_overrideFilename))
+ return false;
+ if (!this.overrideFilename.equals(that.overrideFilename))
+ return false;
+ }
+
return true;
}
@@ -979,6 +1037,10 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
if (isSetIsReadOnly())
hashCode = hashCode * 8191 + ((isReadOnly) ? 131071 : 524287);
+ hashCode = hashCode * 8191 + ((isSetOverrideFilename()) ? 131071 : 524287);
+ if (isSetOverrideFilename())
+ hashCode = hashCode * 8191 + overrideFilename.hashCode();
+
return hashCode;
}
@@ -1120,6 +1182,16 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
return lastComparison;
}
}
+ lastComparison = java.lang.Boolean.valueOf(isSetOverrideFilename()).compareTo(other.isSetOverrideFilename());
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ if (isSetOverrideFilename()) {
+ lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.overrideFilename, other.overrideFilename);
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ }
return 0;
}
@@ -1243,6 +1315,16 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
sb.append(this.isReadOnly);
first = false;
}
+ if (isSetOverrideFilename()) {
+ if (!first) sb.append(", ");
+ sb.append("overrideFilename:");
+ if (this.overrideFilename == null) {
+ sb.append("null");
+ } else {
+ sb.append(this.overrideFilename);
+ }
+ first = false;
+ }
sb.append(")");
return sb.toString();
}
@@ -1396,6 +1478,14 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
}
break;
+ case 14: // OVERRIDE_FILENAME
+ if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+ struct.overrideFilename = iprot.readString();
+ struct.setOverrideFilenameIsSet(true);
+ } else {
+ org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+ }
+ break;
default:
org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
}
@@ -1486,6 +1576,13 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
oprot.writeBool(struct.isReadOnly);
oprot.writeFieldEnd();
}
+ if (struct.overrideFilename != null) {
+ if (struct.isSetOverrideFilename()) {
+ oprot.writeFieldBegin(OVERRIDE_FILENAME_FIELD_DESC);
+ oprot.writeString(struct.overrideFilename);
+ oprot.writeFieldEnd();
+ }
+ }
oprot.writeFieldStop();
oprot.writeStructEnd();
}
@@ -1541,7 +1638,10 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
if (struct.isSetIsReadOnly()) {
optionals.set(11);
}
- oprot.writeBitSet(optionals, 12);
+ if (struct.isSetOverrideFilename()) {
+ optionals.set(12);
+ }
+ oprot.writeBitSet(optionals, 13);
if (struct.isSetValue()) {
oprot.writeString(struct.value);
}
@@ -1578,6 +1678,9 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
if (struct.isSetIsReadOnly()) {
oprot.writeBool(struct.isReadOnly);
}
+ if (struct.isSetOverrideFilename()) {
+ oprot.writeString(struct.overrideFilename);
+ }
}
@Override
@@ -1585,7 +1688,7 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
struct.name = iprot.readString();
struct.setNameIsSet(true);
- java.util.BitSet incoming = iprot.readBitSet(12);
+ java.util.BitSet incoming = iprot.readBitSet(13);
if (incoming.get(0)) {
struct.value = iprot.readString();
struct.setValueIsSet(true);
@@ -1634,6 +1737,10 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
struct.isReadOnly = iprot.readBool();
struct.setIsReadOnlyIsSet(true);
}
+ if (incoming.get(12)) {
+ struct.overrideFilename = iprot.readString();
+ struct.setOverrideFilenameIsSet(true);
+ }
}
}
diff --git a/modules/ide-integration/src/main/resources/database_scripts/init/03-appcatalog-migrations.sql b/modules/ide-integration/src/main/resources/database_scripts/init/03-appcatalog-migrations.sql
new file mode 100644
index 0000000..4022bf3
--- /dev/null
+++ b/modules/ide-integration/src/main/resources/database_scripts/init/03-appcatalog-migrations.sql
@@ -0,0 +1,3 @@
+use app_catalog;
+
+ALTER TABLE APPLICATION_INPUT ADD COLUMN OVERRIDE_FILENAME VARCHAR(255);
diff --git a/modules/ide-integration/src/main/resources/database_scripts/init/04-expcatalog-migrations.sql b/modules/ide-integration/src/main/resources/database_scripts/init/04-expcatalog-migrations.sql
new file mode 100644
index 0000000..067e449
--- /dev/null
+++ b/modules/ide-integration/src/main/resources/database_scripts/init/04-expcatalog-migrations.sql
@@ -0,0 +1,4 @@
+use experiment_catalog;
+
+ALTER TABLE EXPERIMENT_INPUT ADD COLUMN OVERRIDE_FILENAME VARCHAR(255);
+ALTER TABLE PROCESS_INPUT ADD COLUMN OVERRIDE_FILENAME VARCHAR(255);
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/entities/appcatalog/ApplicationInputEntity.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/entities/appcatalog/ApplicationInputEntity.java
index d9db823..6061a9a 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/entities/appcatalog/ApplicationInputEntity.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/entities/appcatalog/ApplicationInputEntity.java
@@ -79,6 +79,9 @@ public class ApplicationInputEntity implements Serializable {
@Column(name = "IS_READ_ONLY")
private boolean isReadOnly;
+ @Column(name = "OVERRIDE_FILENAME")
+ private String overrideFilename;
+
@ManyToOne(targetEntity = ApplicationInterfaceEntity.class)
@JoinColumn(name = "INTERFACE_ID", nullable = false, updatable = false)
@ForeignKey(deleteAction = ForeignKeyAction.CASCADE)
@@ -192,6 +195,14 @@ public class ApplicationInputEntity implements Serializable {
this.isReadOnly = isReadOnly;
}
+ public String getOverrideFilename() {
+ return overrideFilename;
+ }
+
+ public void setOverrideFilename(String overrideFilename) {
+ this.overrideFilename = overrideFilename;
+ }
+
public ApplicationInterfaceEntity getApplicationInterface() {
return applicationInterface;
}
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentInputEntity.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentInputEntity.java
index 33ad224..b934a0d 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentInputEntity.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentInputEntity.java
@@ -80,6 +80,9 @@ public class ExperimentInputEntity implements Serializable {
@Column(name = "IS_READ_ONLY")
private boolean isReadOnly;
+ @Column(name = "OVERRIDE_FILENAME")
+ private String overrideFilename;
+
@ManyToOne(targetEntity = ExperimentEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "EXPERIMENT_ID", referencedColumnName = "EXPERIMENT_ID")
private ExperimentEntity experiment;
@@ -204,4 +207,12 @@ public class ExperimentInputEntity implements Serializable {
public void setIsReadOnly(boolean isReadOnly) {
this.isReadOnly = isReadOnly;
}
-}
\ No newline at end of file
+
+ public String getOverrideFilename() {
+ return overrideFilename;
+ }
+
+ public void setOverrideFilename(String overrideFilename) {
+ this.overrideFilename = overrideFilename;
+ }
+}
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputEntity.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputEntity.java
index 8c3e7de..ae31c6e 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputEntity.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputEntity.java
@@ -80,6 +80,9 @@ public class ProcessInputEntity implements Serializable {
@Column(name = "IS_READ_ONLY")
private boolean isReadOnly;
+ @Column(name = "OVERRIDE_FILENAME")
+ private String overrideFilename;
+
@ManyToOne(targetEntity = ProcessEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "PROCESS_ID", referencedColumnName = "PROCESS_ID")
private ProcessEntity process;
@@ -199,6 +202,14 @@ public class ProcessInputEntity implements Serializable {
isReadOnly = readOnly;
}
+ public String getOverrideFilename() {
+ return overrideFilename;
+ }
+
+ public void setOverrideFilename(String overrideFilename) {
+ this.overrideFilename = overrideFilename;
+ }
+
public ProcessEntity getProcess() {
return process;
}
@@ -206,4 +217,4 @@ public class ProcessInputEntity implements Serializable {
public void setProcess(ProcessEntity process) {
this.process = process;
}
-}
\ No newline at end of file
+}
diff --git a/modules/registry/registry-core/src/main/resources/appcatalog-derby.sql b/modules/registry/registry-core/src/main/resources/appcatalog-derby.sql
index 4bb49a0..69470a7 100644
--- a/modules/registry/registry-core/src/main/resources/appcatalog-derby.sql
+++ b/modules/registry/registry-core/src/main/resources/appcatalog-derby.sql
@@ -327,6 +327,7 @@ CREATE TABLE APPLICATION_INPUT
REQUIRED_TO_COMMANDLINE SMALLINT,
DATA_STAGED SMALLINT,
IS_READ_ONLY SMALLINT,
+ OVERRIDE_FILENAME VARCHAR(255),
PRIMARY KEY(INTERFACE_ID,INPUT_KEY),
FOREIGN KEY (INTERFACE_ID) REFERENCES APPLICATION_INTERFACE(INTERFACE_ID) ON DELETE CASCADE
);
diff --git a/modules/registry/registry-core/src/main/resources/appcatalog-mysql.sql b/modules/registry/registry-core/src/main/resources/appcatalog-mysql.sql
index b24c433..1de758b 100644
--- a/modules/registry/registry-core/src/main/resources/appcatalog-mysql.sql
+++ b/modules/registry/registry-core/src/main/resources/appcatalog-mysql.sql
@@ -320,6 +320,7 @@ CREATE TABLE APPLICATION_INPUT
REQUIRED_TO_COMMANDLINE SMALLINT,
DATA_STAGED SMALLINT,
IS_READ_ONLY SMALLINT,
+ OVERRIDE_FILENAME VARCHAR(255),
PRIMARY KEY(INTERFACE_ID,INPUT_KEY),
FOREIGN KEY (INTERFACE_ID) REFERENCES APPLICATION_INTERFACE(INTERFACE_ID) ON DELETE CASCADE
)ENGINE=InnoDB DEFAULT CHARSET=latin1;
diff --git a/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql b/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
index 64ab519..85f12f1 100644
--- a/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
+++ b/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
@@ -130,6 +130,7 @@ CREATE TABLE EXPERIMENT_INPUT
DATA_STAGED SMALLINT,
STORAGE_RESOURCE_ID varchar(255),
IS_READ_ONLY SMALLINT,
+ OVERRIDE_FILENAME VARCHAR(255),
PRIMARY KEY(EXPERIMENT_ID,INPUT_NAME),
FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
);
@@ -257,6 +258,7 @@ CREATE TABLE PROCESS_INPUT
DATA_STAGED SMALLINT,
STORAGE_RESOURCE_ID varchar(255),
IS_READ_ONLY SMALLINT,
+ OVERRIDE_FILENAME VARCHAR(255),
PRIMARY KEY(PROCESS_ID,INPUT_NAME),
FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
);
diff --git a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
index 598deeb..7e8bf7d 100644
--- a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
+++ b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
@@ -130,6 +130,7 @@ CREATE TABLE EXPERIMENT_INPUT
DATA_STAGED tinyint(1),
STORAGE_RESOURCE_ID varchar(255),
IS_READ_ONLY tinyint(1),
+ OVERRIDE_FILENAME VARCHAR(255),
PRIMARY KEY(EXPERIMENT_ID,INPUT_NAME),
FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
)ENGINE=InnoDB DEFAULT CHARSET=latin1;
@@ -259,6 +260,7 @@ CREATE TABLE PROCESS_INPUT
DATA_STAGED tinyint(1),
STORAGE_RESOURCE_ID varchar(255),
IS_READ_ONLY tinyint(1),
+ OVERRIDE_FILENAME VARCHAR(255),
PRIMARY KEY(PROCESS_ID,INPUT_NAME),
FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
)ENGINE=InnoDB DEFAULT CHARSET=latin1;
diff --git a/modules/registry/registry-core/src/test/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepositoryTest.java b/modules/registry/registry-core/src/test/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepositoryTest.java
index 0f9b623..bca0ce0 100644
--- a/modules/registry/registry-core/src/test/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepositoryTest.java
+++ b/modules/registry/registry-core/src/test/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepositoryTest.java
@@ -176,6 +176,7 @@ public class ExperimentRepositoryTest extends TestBase {
input1.setStorageResourceId("storageResourceId");
input1.setUserFriendlyDescription("First argument");
input1.setValue("value1");
+ input1.setOverrideFilename("gaussian.com");
experimentModel.addToExperimentInputs(input1);
String experimentId = experimentRepository.addExperiment(experimentModel);
@@ -197,6 +198,7 @@ public class ExperimentRepositoryTest extends TestBase {
assertEquals("storageResourceId", retrievedInput1.getStorageResourceId());
assertEquals("First argument", retrievedInput1.getUserFriendlyDescription());
assertEquals("value1", retrievedInput1.getValue());
+ assertEquals("gaussian.com", retrievedInput1.getOverrideFilename());
// Update values of the input
retrievedInput1.setIsRequired(false);
@@ -211,6 +213,7 @@ public class ExperimentRepositoryTest extends TestBase {
retrievedInput1.setStorageResourceId("storageResourceId2");
retrievedInput1.setUserFriendlyDescription("First argument~");
retrievedInput1.setValue("value1a");
+ retrievedInput1.setOverrideFilename("gaussian.com-updated");
experimentRepository.updateExperiment(retrievedExperimentModel, experimentId);
@@ -229,6 +232,7 @@ public class ExperimentRepositoryTest extends TestBase {
assertEquals("storageResourceId2", retrievedInput1.getStorageResourceId());
assertEquals("First argument~", retrievedInput1.getUserFriendlyDescription());
assertEquals("value1a", retrievedInput1.getValue());
+ assertEquals("gaussian.com-updated", retrievedInput1.getOverrideFilename());
experimentRepository.removeExperiment(experimentId);
assertFalse(experimentRepository.isExperimentExist(experimentId));
diff --git a/modules/registry/release-migration-scripts/0.18-0.19/DeltaScripts/appCatalog_schema_delta.sql b/modules/registry/release-migration-scripts/0.18-0.19/DeltaScripts/appCatalog_schema_delta.sql
index 438df23..dcbbe11 100644
--- a/modules/registry/release-migration-scripts/0.18-0.19/DeltaScripts/appCatalog_schema_delta.sql
+++ b/modules/registry/release-migration-scripts/0.18-0.19/DeltaScripts/appCatalog_schema_delta.sql
@@ -478,3 +478,6 @@ ALTER TABLE `UNICORE_DATAMOVEMENT` DROP IF EXISTS `SECURITY_PROTOCOL`;
-- AIRAVATA-3029: Add METADATA to APPLICATION_OUTPUT
ALTER TABLE `APPLICATION_OUTPUT` ADD COLUMN IF NOT EXISTS METADATA VARCHAR(4096);
+
+-- AIRAVATA-3268: add overrideFilename to APPLICATION_INPUT
+ALTER TABLE APPLICATION_INPUT ADD COLUMN IF NOT EXISTS OVERRIDE_FILENAME VARCHAR(255);
diff --git a/modules/registry/release-migration-scripts/0.18-0.19/DeltaScripts/experimentCatalog_schema_delta.sql b/modules/registry/release-migration-scripts/0.18-0.19/DeltaScripts/experimentCatalog_schema_delta.sql
index 5823d9c..7a97d50 100644
--- a/modules/registry/release-migration-scripts/0.18-0.19/DeltaScripts/experimentCatalog_schema_delta.sql
+++ b/modules/registry/release-migration-scripts/0.18-0.19/DeltaScripts/experimentCatalog_schema_delta.sql
@@ -114,3 +114,7 @@ set g.OAUTH_CLIENT_ID = pg.OAUTH_CLIENT_ID,
where
g.OAUTH_CLIENT_ID is null
or g.OAUTH_CLIENT_SECRET is null;
+
+-- AIRAVATA-3268: add overrideFilename to EXPERIMENT_INPUT, PROCESS_INPUT
+ALTER TABLE EXPERIMENT_INPUT ADD COLUMN IF NOT EXISTS OVERRIDE_FILENAME VARCHAR(255);
+ALTER TABLE PROCESS_INPUT ADD COLUMN IF NOT EXISTS OVERRIDE_FILENAME VARCHAR(255);
diff --git a/thrift-interface-descriptions/data-models/app-catalog-models/application_io_models.thrift b/thrift-interface-descriptions/data-models/app-catalog-models/application_io_models.thrift
index f8537c7..3556e4b 100644
--- a/thrift-interface-descriptions/data-models/app-catalog-models/application_io_models.thrift
+++ b/thrift-interface-descriptions/data-models/app-catalog-models/application_io_models.thrift
@@ -64,6 +64,8 @@ enum DataType{
* metaData:
* Any metadat. This is typically ignore by Airavata and is used by gateways for application configuration.
*
+ * overrideFilename:
+ * Rename input file to given value when staging to compute resource.
*/
struct InputDataObjectType {
1: required string name,
@@ -78,7 +80,8 @@ struct InputDataObjectType {
10: optional bool requiredToAddedToCommandLine,
11: optional bool dataStaged,
12: optional string storageResourceId,
- 13: optional bool isReadOnly
+ 13: optional bool isReadOnly,
+ 14: optional string overrideFilename
}
/**