Repository: airavata Updated Branches: refs/heads/master fc2088202 -> 93d4421b7
http://git-wip-us.apache.org/repos/asf/airavata/blob/66ac6b92/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SSHJobSubmission.java ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SSHJobSubmission.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SSHJobSubmission.java index 4c19d31..a9bf275 100644 --- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SSHJobSubmission.java +++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SSHJobSubmission.java @@ -67,6 +67,7 @@ import org.slf4j.LoggerFactory; private static final org.apache.thrift.protocol.TField ALTERNATIVE_SSHHOST_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("alternativeSSHHostName", org.apache.thrift.protocol.TType.STRING, (short)4); private static final org.apache.thrift.protocol.TField SSH_PORT_FIELD_DESC = new org.apache.thrift.protocol.TField("sshPort", org.apache.thrift.protocol.TType.I32, (short)5); private static final org.apache.thrift.protocol.TField MONITOR_MODE_FIELD_DESC = new org.apache.thrift.protocol.TField("monitorMode", org.apache.thrift.protocol.TType.I32, (short)6); + private static final org.apache.thrift.protocol.TField EMAIL_MONITOR_FIELD_DESC = new org.apache.thrift.protocol.TField("emailMonitor", org.apache.thrift.protocol.TType.STRUCT, (short)7); private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>(); static { @@ -80,6 +81,7 @@ import org.slf4j.LoggerFactory; private String alternativeSSHHostName; // optional private int sshPort; // optional private MonitorMode monitorMode; // optional + private EmailMonitorProperty emailMonitor; // optional /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */ @SuppressWarnings("all") public enum _Fields implements org.apache.thrift.TFieldIdEnum { @@ -96,7 +98,8 @@ import org.slf4j.LoggerFactory; * * @see MonitorMode */ - MONITOR_MODE((short)6, "monitorMode"); + MONITOR_MODE((short)6, "monitorMode"), + EMAIL_MONITOR((short)7, "emailMonitor"); private static final Map<String, _Fields> byName = new HashMap<String, _Fields>(); @@ -123,6 +126,8 @@ import org.slf4j.LoggerFactory; return SSH_PORT; case 6: // MONITOR_MODE return MONITOR_MODE; + case 7: // EMAIL_MONITOR + return EMAIL_MONITOR; default: return null; } @@ -165,7 +170,7 @@ import org.slf4j.LoggerFactory; // isset id assignments private static final int __SSHPORT_ISSET_ID = 0; private byte __isset_bitfield = 0; - private _Fields optionals[] = {_Fields.ALTERNATIVE_SSHHOST_NAME,_Fields.SSH_PORT,_Fields.MONITOR_MODE}; + private _Fields optionals[] = {_Fields.ALTERNATIVE_SSHHOST_NAME,_Fields.SSH_PORT,_Fields.MONITOR_MODE,_Fields.EMAIL_MONITOR}; public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; static { Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); @@ -181,6 +186,8 @@ import org.slf4j.LoggerFactory; new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32))); tmpMap.put(_Fields.MONITOR_MODE, new org.apache.thrift.meta_data.FieldMetaData("monitorMode", org.apache.thrift.TFieldRequirementType.OPTIONAL, new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, MonitorMode.class))); + tmpMap.put(_Fields.EMAIL_MONITOR, new org.apache.thrift.meta_data.FieldMetaData("emailMonitor", org.apache.thrift.TFieldRequirementType.OPTIONAL, + new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, EmailMonitorProperty.class))); metaDataMap = Collections.unmodifiableMap(tmpMap); org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(SSHJobSubmission.class, metaDataMap); } @@ -224,6 +231,9 @@ import org.slf4j.LoggerFactory; if (other.isSetMonitorMode()) { this.monitorMode = other.monitorMode; } + if (other.isSetEmailMonitor()) { + this.emailMonitor = new EmailMonitorProperty(other.emailMonitor); + } } public SSHJobSubmission deepCopy() { @@ -240,6 +250,7 @@ import org.slf4j.LoggerFactory; this.sshPort = 22; this.monitorMode = null; + this.emailMonitor = null; } public String getJobSubmissionInterfaceId() { @@ -395,6 +406,29 @@ import org.slf4j.LoggerFactory; } } + public EmailMonitorProperty getEmailMonitor() { + return this.emailMonitor; + } + + public void setEmailMonitor(EmailMonitorProperty emailMonitor) { + this.emailMonitor = emailMonitor; + } + + public void unsetEmailMonitor() { + this.emailMonitor = null; + } + + /** Returns true if field emailMonitor is set (has been assigned a value) and false otherwise */ + public boolean isSetEmailMonitor() { + return this.emailMonitor != null; + } + + public void setEmailMonitorIsSet(boolean value) { + if (!value) { + this.emailMonitor = null; + } + } + public void setFieldValue(_Fields field, Object value) { switch (field) { case JOB_SUBMISSION_INTERFACE_ID: @@ -445,6 +479,14 @@ import org.slf4j.LoggerFactory; } break; + case EMAIL_MONITOR: + if (value == null) { + unsetEmailMonitor(); + } else { + setEmailMonitor((EmailMonitorProperty)value); + } + break; + } } @@ -468,6 +510,9 @@ import org.slf4j.LoggerFactory; case MONITOR_MODE: return getMonitorMode(); + case EMAIL_MONITOR: + return getEmailMonitor(); + } throw new IllegalStateException(); } @@ -491,6 +536,8 @@ import org.slf4j.LoggerFactory; return isSetSshPort(); case MONITOR_MODE: return isSetMonitorMode(); + case EMAIL_MONITOR: + return isSetEmailMonitor(); } throw new IllegalStateException(); } @@ -562,6 +609,15 @@ import org.slf4j.LoggerFactory; return false; } + boolean this_present_emailMonitor = true && this.isSetEmailMonitor(); + boolean that_present_emailMonitor = true && that.isSetEmailMonitor(); + if (this_present_emailMonitor || that_present_emailMonitor) { + if (!(this_present_emailMonitor && that_present_emailMonitor)) + return false; + if (!this.emailMonitor.equals(that.emailMonitor)) + return false; + } + return true; } @@ -638,6 +694,16 @@ import org.slf4j.LoggerFactory; return lastComparison; } } + lastComparison = Boolean.valueOf(isSetEmailMonitor()).compareTo(other.isSetEmailMonitor()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetEmailMonitor()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.emailMonitor, other.emailMonitor); + if (lastComparison != 0) { + return lastComparison; + } + } return 0; } @@ -707,6 +773,16 @@ import org.slf4j.LoggerFactory; } first = false; } + if (isSetEmailMonitor()) { + if (!first) sb.append(", "); + sb.append("emailMonitor:"); + if (this.emailMonitor == null) { + sb.append("null"); + } else { + sb.append(this.emailMonitor); + } + first = false; + } sb.append(")"); return sb.toString(); } @@ -729,6 +805,9 @@ import org.slf4j.LoggerFactory; if (resourceJobManager != null) { resourceJobManager.validate(); } + if (emailMonitor != null) { + emailMonitor.validate(); + } } private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { @@ -816,6 +895,15 @@ import org.slf4j.LoggerFactory; org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); } break; + case 7: // EMAIL_MONITOR + if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) { + struct.emailMonitor = new EmailMonitorProperty(); + struct.emailMonitor.read(iprot); + struct.setEmailMonitorIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; default: org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); } @@ -863,6 +951,13 @@ import org.slf4j.LoggerFactory; oprot.writeFieldEnd(); } } + if (struct.emailMonitor != null) { + if (struct.isSetEmailMonitor()) { + oprot.writeFieldBegin(EMAIL_MONITOR_FIELD_DESC); + struct.emailMonitor.write(oprot); + oprot.writeFieldEnd(); + } + } oprot.writeFieldStop(); oprot.writeStructEnd(); } @@ -893,7 +988,10 @@ import org.slf4j.LoggerFactory; if (struct.isSetMonitorMode()) { optionals.set(2); } - oprot.writeBitSet(optionals, 3); + if (struct.isSetEmailMonitor()) { + optionals.set(3); + } + oprot.writeBitSet(optionals, 4); if (struct.isSetAlternativeSSHHostName()) { oprot.writeString(struct.alternativeSSHHostName); } @@ -903,6 +1001,9 @@ import org.slf4j.LoggerFactory; if (struct.isSetMonitorMode()) { oprot.writeI32(struct.monitorMode.getValue()); } + if (struct.isSetEmailMonitor()) { + struct.emailMonitor.write(oprot); + } } @Override @@ -915,7 +1016,7 @@ import org.slf4j.LoggerFactory; struct.resourceJobManager = new ResourceJobManager(); struct.resourceJobManager.read(iprot); struct.setResourceJobManagerIsSet(true); - BitSet incoming = iprot.readBitSet(3); + BitSet incoming = iprot.readBitSet(4); if (incoming.get(0)) { struct.alternativeSSHHostName = iprot.readString(); struct.setAlternativeSSHHostNameIsSet(true); @@ -928,6 +1029,11 @@ import org.slf4j.LoggerFactory; struct.monitorMode = MonitorMode.findByValue(iprot.readI32()); struct.setMonitorModeIsSet(true); } + if (incoming.get(3)) { + struct.emailMonitor = new EmailMonitorProperty(); + struct.emailMonitor.read(iprot); + struct.setEmailMonitorIsSet(true); + } } } http://git-wip-us.apache.org/repos/asf/airavata/blob/66ac6b92/airavata-api/thrift-interface-descriptions/computeResourceModel.thrift ---------------------------------------------------------------------- diff --git a/airavata-api/thrift-interface-descriptions/computeResourceModel.thrift b/airavata-api/thrift-interface-descriptions/computeResourceModel.thrift index 929e677..cf9b06c 100644 --- a/airavata-api/thrift-interface-descriptions/computeResourceModel.thrift +++ b/airavata-api/thrift-interface-descriptions/computeResourceModel.thrift @@ -208,10 +208,37 @@ enum JobSubmissionProtocol { **/ enum MonitorMode { POLL_JOB_MANAGER, + JOB_EMAIL_NOTIFICATION_MONITOR, XSEDE_AMQP_SUBSCRIBE } /** +* Email protocol +**/ +enum EmailProtocol{ + POP3, + IMAPS +} + + +/** +* Email Monitoring Properties +* +* host : email host address +* emailAddress : address which should get email notification +* password : password to access email address +* folderName : email folder name default is INBOX +* storeProtocol : type of store protocol +**/ +struct EmailMonitorProperty { + 1: required string host, + 2: required string emailAddress, + 3: required string password, + 4: required string folderName = "INBOX", + 5: required EmailProtocol storeProtocol +} + +/** * Enumeration of data movement supported by Airavata * * SCP: @@ -320,7 +347,8 @@ struct SSHJobSubmission { 3: required ResourceJobManager resourceJobManager, 4: optional string alternativeSSHHostName, 5: optional i32 sshPort = 22, - 6: optional MonitorMode monitorMode + 6: optional MonitorMode monitorMode, + 7: optional EmailMonitorProperty emailMonitor } struct GlobusJobSubmission {
