airavata 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +15 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +6 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +11 -0
  7. data/README.md +61 -0
  8. data/Rakefile +6 -0
  9. data/airavata.gemspec +26 -0
  10. data/bin/console +14 -0
  11. data/bin/setup +8 -0
  12. data/lib/account_provisioning_model_constants.rb +9 -0
  13. data/lib/account_provisioning_model_types.rb +69 -0
  14. data/lib/airavata.rb +15774 -0
  15. data/lib/airavata_api_constants.rb +11 -0
  16. data/lib/airavata_api_types.rb +34 -0
  17. data/lib/airavata_commons_constants.rb +11 -0
  18. data/lib/airavata_commons_types.rb +79 -0
  19. data/lib/airavata_data_models_constants.rb +9 -0
  20. data/lib/airavata_data_models_types.rb +28 -0
  21. data/lib/airavata_errors_constants.rb +9 -0
  22. data/lib/airavata_errors_types.rb +317 -0
  23. data/lib/airavata_workflow_model_constants.rb +9 -0
  24. data/lib/airavata_workflow_model_types.rb +335 -0
  25. data/lib/application_deployment_model_constants.rb +9 -0
  26. data/lib/application_deployment_model_types.rb +186 -0
  27. data/lib/application_interface_model_constants.rb +9 -0
  28. data/lib/application_interface_model_types.rb +54 -0
  29. data/lib/application_io_models_constants.rb +9 -0
  30. data/lib/application_io_models_types.rb +160 -0
  31. data/lib/base_a_p_i.rb +77 -0
  32. data/lib/base_api_constants.rb +9 -0
  33. data/lib/base_api_types.rb +8 -0
  34. data/lib/compute_resource_model_constants.rb +9 -0
  35. data/lib/compute_resource_model_types.rb +470 -0
  36. data/lib/credential_store_data_models_constants.rb +11 -0
  37. data/lib/credential_store_data_models_types.rb +172 -0
  38. data/lib/data_movement_models_constants.rb +9 -0
  39. data/lib/data_movement_models_types.rb +199 -0
  40. data/lib/db_event_model_constants.rb +9 -0
  41. data/lib/db_event_model_types.rb +155 -0
  42. data/lib/experiment_model_constants.rb +9 -0
  43. data/lib/experiment_model_types.rb +246 -0
  44. data/lib/gateway_groups_model_constants.rb +9 -0
  45. data/lib/gateway_groups_model_types.rb +34 -0
  46. data/lib/gateway_resource_profile_model_constants.rb +9 -0
  47. data/lib/gateway_resource_profile_model_types.rb +165 -0
  48. data/lib/group_manager_model_constants.rb +9 -0
  49. data/lib/group_manager_model_types.rb +58 -0
  50. data/lib/group_resource_profile_model_constants.rb +9 -0
  51. data/lib/group_resource_profile_model_types.rb +230 -0
  52. data/lib/job_model_constants.rb +9 -0
  53. data/lib/job_model_types.rb +52 -0
  54. data/lib/messaging_events_constants.rb +9 -0
  55. data/lib/messaging_events_types.rb +399 -0
  56. data/lib/parallelism_model_constants.rb +9 -0
  57. data/lib/parallelism_model_types.rb +19 -0
  58. data/lib/parser_model_constants.rb +9 -0
  59. data/lib/parser_model_types.rb +229 -0
  60. data/lib/process_model_constants.rb +9 -0
  61. data/lib/process_model_types.rb +113 -0
  62. data/lib/replica_catalog_models_constants.rb +9 -0
  63. data/lib/replica_catalog_models_types.rb +116 -0
  64. data/lib/scheduling_model_constants.rb +9 -0
  65. data/lib/scheduling_model_types.rb +49 -0
  66. data/lib/security_model_constants.rb +9 -0
  67. data/lib/security_model_types.rb +27 -0
  68. data/lib/status_models_constants.rb +9 -0
  69. data/lib/status_models_types.rb +212 -0
  70. data/lib/storage_resource_model_constants.rb +9 -0
  71. data/lib/storage_resource_model_types.rb +56 -0
  72. data/lib/task_model_constants.rb +9 -0
  73. data/lib/task_model_types.rb +197 -0
  74. data/lib/tenant_profile_model_constants.rb +9 -0
  75. data/lib/tenant_profile_model_types.rb +108 -0
  76. data/lib/user_profile_model_constants.rb +11 -0
  77. data/lib/user_profile_model_types.rb +300 -0
  78. data/lib/user_resource_profile_model_constants.rb +9 -0
  79. data/lib/user_resource_profile_model_types.rb +150 -0
  80. data/lib/workspace_model_constants.rb +9 -0
  81. data/lib/workspace_model_types.rb +230 -0
  82. metadata +128 -0
@@ -0,0 +1,9 @@
1
+ #
2
+ # Autogenerated by Thrift Compiler (0.10.0)
3
+ #
4
+ # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
5
+ #
6
+
7
+ require 'thrift'
8
+ require 'application_interface_model_types'
9
+
@@ -0,0 +1,54 @@
1
+ #
2
+ # Autogenerated by Thrift Compiler (0.10.0)
3
+ #
4
+ # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
5
+ #
6
+
7
+ require 'thrift'
8
+ require 'application_io_models_types'
9
+ require 'airavata_commons_types'
10
+
11
+
12
+ # Application Interface Description
13
+ #
14
+ # applicationModules:
15
+ # Associate all application modules with versions which interface is applicable to.
16
+ #
17
+ # applicationInputs:
18
+ # Inputs to be passed to the application
19
+ #
20
+ # applicationOutputs:
21
+ # Outputs generated from the application
22
+ #
23
+ class ApplicationInterfaceDescription
24
+ include ::Thrift::Struct, ::Thrift::Struct_Union
25
+ APPLICATIONINTERFACEID = 1
26
+ APPLICATIONNAME = 2
27
+ APPLICATIONDESCRIPTION = 3
28
+ APPLICATIONMODULES = 4
29
+ APPLICATIONINPUTS = 5
30
+ APPLICATIONOUTPUTS = 6
31
+ ARCHIVEWORKINGDIRECTORY = 7
32
+ HASOPTIONALFILEINPUTS = 8
33
+
34
+ FIELDS = {
35
+ APPLICATIONINTERFACEID => {:type => ::Thrift::Types::STRING, :name => 'applicationInterfaceId', :default => %q"DO_NOT_SET_AT_CLIENTS"},
36
+ APPLICATIONNAME => {:type => ::Thrift::Types::STRING, :name => 'applicationName'},
37
+ APPLICATIONDESCRIPTION => {:type => ::Thrift::Types::STRING, :name => 'applicationDescription', :optional => true},
38
+ APPLICATIONMODULES => {:type => ::Thrift::Types::LIST, :name => 'applicationModules', :element => {:type => ::Thrift::Types::STRING}, :optional => true},
39
+ APPLICATIONINPUTS => {:type => ::Thrift::Types::LIST, :name => 'applicationInputs', :element => {:type => ::Thrift::Types::STRUCT, :class => ::InputDataObjectType}, :optional => true},
40
+ APPLICATIONOUTPUTS => {:type => ::Thrift::Types::LIST, :name => 'applicationOutputs', :element => {:type => ::Thrift::Types::STRUCT, :class => ::OutputDataObjectType}, :optional => true},
41
+ ARCHIVEWORKINGDIRECTORY => {:type => ::Thrift::Types::BOOL, :name => 'archiveWorkingDirectory', :default => false, :optional => true},
42
+ HASOPTIONALFILEINPUTS => {:type => ::Thrift::Types::BOOL, :name => 'hasOptionalFileInputs', :optional => true}
43
+ }
44
+
45
+ def struct_fields; FIELDS; end
46
+
47
+ def validate
48
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field applicationInterfaceId is unset!') unless @applicationInterfaceId
49
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field applicationName is unset!') unless @applicationName
50
+ end
51
+
52
+ ::Thrift::Struct.generate_accessors self
53
+ end
54
+
@@ -0,0 +1,9 @@
1
+ #
2
+ # Autogenerated by Thrift Compiler (0.10.0)
3
+ #
4
+ # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
5
+ #
6
+
7
+ require 'thrift'
8
+ require 'application_io_models_types'
9
+
@@ -0,0 +1,160 @@
1
+ #
2
+ # Autogenerated by Thrift Compiler (0.10.0)
3
+ #
4
+ # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
5
+ #
6
+
7
+ require 'thrift'
8
+ require 'compute_resource_model_types'
9
+
10
+
11
+ module DataType
12
+ STRING = 0
13
+ INTEGER = 1
14
+ FLOAT = 2
15
+ URI = 3
16
+ URI_COLLECTION = 4
17
+ STDOUT = 5
18
+ STDERR = 6
19
+ VALUE_MAP = {0 => "STRING", 1 => "INTEGER", 2 => "FLOAT", 3 => "URI", 4 => "URI_COLLECTION", 5 => "STDOUT", 6 => "STDERR"}
20
+ VALID_VALUES = Set.new([STRING, INTEGER, FLOAT, URI, URI_COLLECTION, STDOUT, STDERR]).freeze
21
+ end
22
+
23
+ # Application Inputs. The paramters describe how inputs are passed to the application.
24
+ #
25
+ # name:
26
+ # Name of the parameter.
27
+ #
28
+ # value:
29
+ # Value of the parameter. A default value could be set during registration.
30
+ #
31
+ # type:
32
+ # Data type of the parameter
33
+ #
34
+ # applicationArguement:
35
+ # The argument flag sent to the application. Such as -p pressure.
36
+ #
37
+ # standardInput:
38
+ # When this value is set, the parameter is sent as standard input rather than a parameter.
39
+ # Typically this is passed using redirection operator ">".
40
+ #
41
+ # userFriendlyDescription:
42
+ # Description to be displayed at the user interface.
43
+ #
44
+ # metaData:
45
+ # Any metadat. This is typically ignore by Airavata and is used by gateways for application configuration.
46
+ #
47
+ # overrideFilename:
48
+ # Rename input file to given value when staging to compute resource.
49
+ class InputDataObjectType
50
+ include ::Thrift::Struct, ::Thrift::Struct_Union
51
+ NAME = 1
52
+ VALUE = 2
53
+ TYPE = 3
54
+ APPLICATIONARGUMENT = 4
55
+ STANDARDINPUT = 5
56
+ USERFRIENDLYDESCRIPTION = 6
57
+ METADATA = 7
58
+ INPUTORDER = 8
59
+ ISREQUIRED = 9
60
+ REQUIREDTOADDEDTOCOMMANDLINE = 10
61
+ DATASTAGED = 11
62
+ STORAGERESOURCEID = 12
63
+ ISREADONLY = 13
64
+ OVERRIDEFILENAME = 14
65
+
66
+ FIELDS = {
67
+ NAME => {:type => ::Thrift::Types::STRING, :name => 'name'},
68
+ VALUE => {:type => ::Thrift::Types::STRING, :name => 'value', :optional => true},
69
+ TYPE => {:type => ::Thrift::Types::I32, :name => 'type', :optional => true, :enum_class => ::DataType},
70
+ APPLICATIONARGUMENT => {:type => ::Thrift::Types::STRING, :name => 'applicationArgument', :optional => true},
71
+ STANDARDINPUT => {:type => ::Thrift::Types::BOOL, :name => 'standardInput', :optional => true},
72
+ USERFRIENDLYDESCRIPTION => {:type => ::Thrift::Types::STRING, :name => 'userFriendlyDescription', :optional => true},
73
+ METADATA => {:type => ::Thrift::Types::STRING, :name => 'metaData', :optional => true},
74
+ INPUTORDER => {:type => ::Thrift::Types::I32, :name => 'inputOrder', :optional => true},
75
+ ISREQUIRED => {:type => ::Thrift::Types::BOOL, :name => 'isRequired', :optional => true},
76
+ REQUIREDTOADDEDTOCOMMANDLINE => {:type => ::Thrift::Types::BOOL, :name => 'requiredToAddedToCommandLine', :optional => true},
77
+ DATASTAGED => {:type => ::Thrift::Types::BOOL, :name => 'dataStaged', :optional => true},
78
+ STORAGERESOURCEID => {:type => ::Thrift::Types::STRING, :name => 'storageResourceId', :optional => true},
79
+ ISREADONLY => {:type => ::Thrift::Types::BOOL, :name => 'isReadOnly', :optional => true},
80
+ OVERRIDEFILENAME => {:type => ::Thrift::Types::STRING, :name => 'overrideFilename', :optional => true}
81
+ }
82
+
83
+ def struct_fields; FIELDS; end
84
+
85
+ def validate
86
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field name is unset!') unless @name
87
+ unless @type.nil? || ::DataType::VALID_VALUES.include?(@type)
88
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field type!')
89
+ end
90
+ end
91
+
92
+ ::Thrift::Struct.generate_accessors self
93
+ end
94
+
95
+ # Application Outputs. The paramters describe how outputs generated by the application.
96
+ #
97
+ # name:
98
+ # Name of the parameter.
99
+ #
100
+ # value:
101
+ # Value of the parameter.
102
+ #
103
+ # type:
104
+ # Data type of the parameter
105
+ #
106
+ # applicationArguement:
107
+ # The argument flag sent to the application. Such as -p pressure.
108
+ #
109
+ # standardInput:
110
+ # When this value is set, the parameter is sent as standard input rather than a parameter.
111
+ # Typically this is passed using redirection operator ">".
112
+ #
113
+ # userFriendlyDescription:
114
+ # Description to be displayed at the user interface.
115
+ #
116
+ # metaData:
117
+ # Any metadat. This is typically ignore by Airavata and is used by gateways for application configuration.
118
+ #
119
+ class OutputDataObjectType
120
+ include ::Thrift::Struct, ::Thrift::Struct_Union
121
+ NAME = 1
122
+ VALUE = 2
123
+ TYPE = 3
124
+ APPLICATIONARGUMENT = 4
125
+ ISREQUIRED = 5
126
+ REQUIREDTOADDEDTOCOMMANDLINE = 6
127
+ DATAMOVEMENT = 7
128
+ LOCATION = 8
129
+ SEARCHQUERY = 9
130
+ OUTPUTSTREAMING = 10
131
+ STORAGERESOURCEID = 11
132
+ METADATA = 12
133
+
134
+ FIELDS = {
135
+ NAME => {:type => ::Thrift::Types::STRING, :name => 'name'},
136
+ VALUE => {:type => ::Thrift::Types::STRING, :name => 'value', :optional => true},
137
+ TYPE => {:type => ::Thrift::Types::I32, :name => 'type', :optional => true, :enum_class => ::DataType},
138
+ APPLICATIONARGUMENT => {:type => ::Thrift::Types::STRING, :name => 'applicationArgument', :optional => true},
139
+ ISREQUIRED => {:type => ::Thrift::Types::BOOL, :name => 'isRequired', :optional => true},
140
+ REQUIREDTOADDEDTOCOMMANDLINE => {:type => ::Thrift::Types::BOOL, :name => 'requiredToAddedToCommandLine', :optional => true},
141
+ DATAMOVEMENT => {:type => ::Thrift::Types::BOOL, :name => 'dataMovement', :optional => true},
142
+ LOCATION => {:type => ::Thrift::Types::STRING, :name => 'location', :optional => true},
143
+ SEARCHQUERY => {:type => ::Thrift::Types::STRING, :name => 'searchQuery', :optional => true},
144
+ OUTPUTSTREAMING => {:type => ::Thrift::Types::BOOL, :name => 'outputStreaming', :optional => true},
145
+ STORAGERESOURCEID => {:type => ::Thrift::Types::STRING, :name => 'storageResourceId', :optional => true},
146
+ METADATA => {:type => ::Thrift::Types::STRING, :name => 'metaData', :optional => true}
147
+ }
148
+
149
+ def struct_fields; FIELDS; end
150
+
151
+ def validate
152
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field name is unset!') unless @name
153
+ unless @type.nil? || ::DataType::VALID_VALUES.include?(@type)
154
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field type!')
155
+ end
156
+ end
157
+
158
+ ::Thrift::Struct.generate_accessors self
159
+ end
160
+
@@ -0,0 +1,77 @@
1
+ #
2
+ # Autogenerated by Thrift Compiler (0.10.0)
3
+ #
4
+ # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
5
+ #
6
+
7
+ require 'thrift'
8
+ require 'base_api_types'
9
+
10
+ module BaseAPI
11
+ class Client
12
+ include ::Thrift::Client
13
+
14
+ def getAPIVersion()
15
+ send_getAPIVersion()
16
+ return recv_getAPIVersion()
17
+ end
18
+
19
+ def send_getAPIVersion()
20
+ send_message('getAPIVersion', GetAPIVersion_args)
21
+ end
22
+
23
+ def recv_getAPIVersion()
24
+ result = receive_message(GetAPIVersion_result)
25
+ return result.success unless result.success.nil?
26
+ raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'getAPIVersion failed: unknown result')
27
+ end
28
+
29
+ end
30
+
31
+ class Processor
32
+ include ::Thrift::Processor
33
+
34
+ def process_getAPIVersion(seqid, iprot, oprot)
35
+ args = read_args(iprot, GetAPIVersion_args)
36
+ result = GetAPIVersion_result.new()
37
+ result.success = @handler.getAPIVersion()
38
+ write_result(result, oprot, 'getAPIVersion', seqid)
39
+ end
40
+
41
+ end
42
+
43
+ # HELPER FUNCTIONS AND STRUCTURES
44
+
45
+ class GetAPIVersion_args
46
+ include ::Thrift::Struct, ::Thrift::Struct_Union
47
+
48
+ FIELDS = {
49
+
50
+ }
51
+
52
+ def struct_fields; FIELDS; end
53
+
54
+ def validate
55
+ end
56
+
57
+ ::Thrift::Struct.generate_accessors self
58
+ end
59
+
60
+ class GetAPIVersion_result
61
+ include ::Thrift::Struct, ::Thrift::Struct_Union
62
+ SUCCESS = 0
63
+
64
+ FIELDS = {
65
+ SUCCESS => {:type => ::Thrift::Types::STRING, :name => 'success'}
66
+ }
67
+
68
+ def struct_fields; FIELDS; end
69
+
70
+ def validate
71
+ end
72
+
73
+ ::Thrift::Struct.generate_accessors self
74
+ end
75
+
76
+ end
77
+
@@ -0,0 +1,9 @@
1
+ #
2
+ # Autogenerated by Thrift Compiler (0.10.0)
3
+ #
4
+ # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
5
+ #
6
+
7
+ require 'thrift'
8
+ require 'base_api_types'
9
+
@@ -0,0 +1,8 @@
1
+ #
2
+ # Autogenerated by Thrift Compiler (0.10.0)
3
+ #
4
+ # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
5
+ #
6
+
7
+ require 'thrift'
8
+
@@ -0,0 +1,9 @@
1
+ #
2
+ # Autogenerated by Thrift Compiler (0.10.0)
3
+ #
4
+ # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
5
+ #
6
+
7
+ require 'thrift'
8
+ require 'compute_resource_model_types'
9
+
@@ -0,0 +1,470 @@
1
+ #
2
+ # Autogenerated by Thrift Compiler (0.10.0)
3
+ #
4
+ # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
5
+ #
6
+
7
+ require 'thrift'
8
+ require 'airavata_commons_types'
9
+ require 'parallelism_model_types'
10
+ require 'data_movement_models_types'
11
+
12
+
13
+ module ResourceJobManagerType
14
+ FORK = 0
15
+ PBS = 1
16
+ SLURM = 2
17
+ LSF = 3
18
+ UGE = 4
19
+ CLOUD = 5
20
+ AIRAVATA_CUSTOM = 6
21
+ VALUE_MAP = {0 => "FORK", 1 => "PBS", 2 => "SLURM", 3 => "LSF", 4 => "UGE", 5 => "CLOUD", 6 => "AIRAVATA_CUSTOM"}
22
+ VALID_VALUES = Set.new([FORK, PBS, SLURM, LSF, UGE, CLOUD, AIRAVATA_CUSTOM]).freeze
23
+ end
24
+
25
+ module JobManagerCommand
26
+ SUBMISSION = 0
27
+ JOB_MONITORING = 1
28
+ DELETION = 2
29
+ CHECK_JOB = 3
30
+ SHOW_QUEUE = 4
31
+ SHOW_RESERVATION = 5
32
+ SHOW_START = 6
33
+ VALUE_MAP = {0 => "SUBMISSION", 1 => "JOB_MONITORING", 2 => "DELETION", 3 => "CHECK_JOB", 4 => "SHOW_QUEUE", 5 => "SHOW_RESERVATION", 6 => "SHOW_START"}
34
+ VALID_VALUES = Set.new([SUBMISSION, JOB_MONITORING, DELETION, CHECK_JOB, SHOW_QUEUE, SHOW_RESERVATION, SHOW_START]).freeze
35
+ end
36
+
37
+ module FileSystems
38
+ HOME = 0
39
+ WORK = 1
40
+ LOCALTMP = 2
41
+ SCRATCH = 3
42
+ ARCHIVE = 4
43
+ VALUE_MAP = {0 => "HOME", 1 => "WORK", 2 => "LOCALTMP", 3 => "SCRATCH", 4 => "ARCHIVE"}
44
+ VALID_VALUES = Set.new([HOME, WORK, LOCALTMP, SCRATCH, ARCHIVE]).freeze
45
+ end
46
+
47
+ module JobSubmissionProtocol
48
+ LOCAL = 0
49
+ SSH = 1
50
+ GLOBUS = 2
51
+ UNICORE = 3
52
+ CLOUD = 4
53
+ SSH_FORK = 5
54
+ LOCAL_FORK = 6
55
+ VALUE_MAP = {0 => "LOCAL", 1 => "SSH", 2 => "GLOBUS", 3 => "UNICORE", 4 => "CLOUD", 5 => "SSH_FORK", 6 => "LOCAL_FORK"}
56
+ VALID_VALUES = Set.new([LOCAL, SSH, GLOBUS, UNICORE, CLOUD, SSH_FORK, LOCAL_FORK]).freeze
57
+ end
58
+
59
+ module MonitorMode
60
+ POLL_JOB_MANAGER = 0
61
+ CLOUD_JOB_MONITOR = 1
62
+ JOB_EMAIL_NOTIFICATION_MONITOR = 2
63
+ XSEDE_AMQP_SUBSCRIBE = 3
64
+ FORK = 4
65
+ LOCAL = 5
66
+ VALUE_MAP = {0 => "POLL_JOB_MANAGER", 1 => "CLOUD_JOB_MONITOR", 2 => "JOB_EMAIL_NOTIFICATION_MONITOR", 3 => "XSEDE_AMQP_SUBSCRIBE", 4 => "FORK", 5 => "LOCAL"}
67
+ VALID_VALUES = Set.new([POLL_JOB_MANAGER, CLOUD_JOB_MONITOR, JOB_EMAIL_NOTIFICATION_MONITOR, XSEDE_AMQP_SUBSCRIBE, FORK, LOCAL]).freeze
68
+ end
69
+
70
+ module DMType
71
+ COMPUTE_RESOURCE = 0
72
+ STORAGE_RESOURCE = 1
73
+ VALUE_MAP = {0 => "COMPUTE_RESOURCE", 1 => "STORAGE_RESOURCE"}
74
+ VALID_VALUES = Set.new([COMPUTE_RESOURCE, STORAGE_RESOURCE]).freeze
75
+ end
76
+
77
+ module ProviderName
78
+ EC2 = 0
79
+ AWSEC2 = 1
80
+ RACKSPACE = 2
81
+ VALUE_MAP = {0 => "EC2", 1 => "AWSEC2", 2 => "RACKSPACE"}
82
+ VALID_VALUES = Set.new([EC2, AWSEC2, RACKSPACE]).freeze
83
+ end
84
+
85
+ # Resource Job Manager Information
86
+ #
87
+ # resourceJobManagerType:
88
+ # A typical HPC cluster has a single Job Manager to manage the resources.
89
+ #
90
+ # pushMonitoringEndpoint:
91
+ # If the job manager pushes out state changes to a database or bus, specify the service endpoint.
92
+ # Ex: Moab Web Service, Moab MongoDB URL, AMQP (GLUE2) Broker
93
+ #
94
+ # jobManagerBinPath:
95
+ # Path to the Job Manager Installation Binary directory.
96
+ #
97
+ # jobManagerCommands:
98
+ # An enumeration of commonly used manager commands.
99
+ #
100
+ class ResourceJobManager
101
+ include ::Thrift::Struct, ::Thrift::Struct_Union
102
+ RESOURCEJOBMANAGERID = 1
103
+ RESOURCEJOBMANAGERTYPE = 2
104
+ PUSHMONITORINGENDPOINT = 3
105
+ JOBMANAGERBINPATH = 4
106
+ JOBMANAGERCOMMANDS = 5
107
+ PARALLELISMPREFIX = 6
108
+
109
+ FIELDS = {
110
+ RESOURCEJOBMANAGERID => {:type => ::Thrift::Types::STRING, :name => 'resourceJobManagerId', :default => %q"DO_NOT_SET_AT_CLIENTS"},
111
+ RESOURCEJOBMANAGERTYPE => {:type => ::Thrift::Types::I32, :name => 'resourceJobManagerType', :enum_class => ::ResourceJobManagerType},
112
+ PUSHMONITORINGENDPOINT => {:type => ::Thrift::Types::STRING, :name => 'pushMonitoringEndpoint', :optional => true},
113
+ JOBMANAGERBINPATH => {:type => ::Thrift::Types::STRING, :name => 'jobManagerBinPath', :optional => true},
114
+ JOBMANAGERCOMMANDS => {:type => ::Thrift::Types::MAP, :name => 'jobManagerCommands', :key => {:type => ::Thrift::Types::I32, :enum_class => ::JobManagerCommand}, :value => {:type => ::Thrift::Types::STRING}, :optional => true},
115
+ PARALLELISMPREFIX => {:type => ::Thrift::Types::MAP, :name => 'parallelismPrefix', :key => {:type => ::Thrift::Types::I32, :enum_class => ::ApplicationParallelismType}, :value => {:type => ::Thrift::Types::STRING}, :optional => true}
116
+ }
117
+
118
+ def struct_fields; FIELDS; end
119
+
120
+ def validate
121
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field resourceJobManagerId is unset!') unless @resourceJobManagerId
122
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field resourceJobManagerType is unset!') unless @resourceJobManagerType
123
+ unless @resourceJobManagerType.nil? || ::ResourceJobManagerType::VALID_VALUES.include?(@resourceJobManagerType)
124
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field resourceJobManagerType!')
125
+ end
126
+ end
127
+
128
+ ::Thrift::Struct.generate_accessors self
129
+ end
130
+
131
+ # Batch Queue Information on SuperComputers
132
+ #
133
+ # maxRunTime:
134
+ # Maximum allowed run time in hours.
135
+ class BatchQueue
136
+ include ::Thrift::Struct, ::Thrift::Struct_Union
137
+ QUEUENAME = 1
138
+ QUEUEDESCRIPTION = 2
139
+ MAXRUNTIME = 3
140
+ MAXNODES = 4
141
+ MAXPROCESSORS = 5
142
+ MAXJOBSINQUEUE = 6
143
+ MAXMEMORY = 7
144
+ CPUPERNODE = 8
145
+ DEFAULTNODECOUNT = 9
146
+ DEFAULTCPUCOUNT = 10
147
+ DEFAULTWALLTIME = 11
148
+ QUEUESPECIFICMACROS = 12
149
+ ISDEFAULTQUEUE = 13
150
+
151
+ FIELDS = {
152
+ QUEUENAME => {:type => ::Thrift::Types::STRING, :name => 'queueName'},
153
+ QUEUEDESCRIPTION => {:type => ::Thrift::Types::STRING, :name => 'queueDescription', :optional => true},
154
+ MAXRUNTIME => {:type => ::Thrift::Types::I32, :name => 'maxRunTime', :optional => true},
155
+ MAXNODES => {:type => ::Thrift::Types::I32, :name => 'maxNodes', :optional => true},
156
+ MAXPROCESSORS => {:type => ::Thrift::Types::I32, :name => 'maxProcessors', :optional => true},
157
+ MAXJOBSINQUEUE => {:type => ::Thrift::Types::I32, :name => 'maxJobsInQueue', :optional => true},
158
+ MAXMEMORY => {:type => ::Thrift::Types::I32, :name => 'maxMemory', :optional => true},
159
+ CPUPERNODE => {:type => ::Thrift::Types::I32, :name => 'cpuPerNode', :optional => true},
160
+ DEFAULTNODECOUNT => {:type => ::Thrift::Types::I32, :name => 'defaultNodeCount', :optional => true},
161
+ DEFAULTCPUCOUNT => {:type => ::Thrift::Types::I32, :name => 'defaultCPUCount', :optional => true},
162
+ DEFAULTWALLTIME => {:type => ::Thrift::Types::I32, :name => 'defaultWalltime', :optional => true},
163
+ QUEUESPECIFICMACROS => {:type => ::Thrift::Types::STRING, :name => 'queueSpecificMacros', :optional => true},
164
+ ISDEFAULTQUEUE => {:type => ::Thrift::Types::BOOL, :name => 'isDefaultQueue', :optional => true}
165
+ }
166
+
167
+ def struct_fields; FIELDS; end
168
+
169
+ def validate
170
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field queueName is unset!') unless @queueName
171
+ end
172
+
173
+ ::Thrift::Struct.generate_accessors self
174
+ end
175
+
176
+ # Locally Fork Jobs as OS processes
177
+ #
178
+ # alternativeSSHHostName:
179
+ # If the login to ssh is different than the hostname itself, specify it here
180
+ #
181
+ # sshPort:
182
+ # If a non-default port needs to used, specify it.
183
+ class LOCALSubmission
184
+ include ::Thrift::Struct, ::Thrift::Struct_Union
185
+ JOBSUBMISSIONINTERFACEID = 1
186
+ RESOURCEJOBMANAGER = 2
187
+ SECURITYPROTOCOL = 3
188
+
189
+ FIELDS = {
190
+ JOBSUBMISSIONINTERFACEID => {:type => ::Thrift::Types::STRING, :name => 'jobSubmissionInterfaceId', :default => %q"DO_NOT_SET_AT_CLIENTS"},
191
+ RESOURCEJOBMANAGER => {:type => ::Thrift::Types::STRUCT, :name => 'resourceJobManager', :class => ::ResourceJobManager},
192
+ SECURITYPROTOCOL => {:type => ::Thrift::Types::I32, :name => 'securityProtocol', :enum_class => ::SecurityProtocol}
193
+ }
194
+
195
+ def struct_fields; FIELDS; end
196
+
197
+ def validate
198
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field jobSubmissionInterfaceId is unset!') unless @jobSubmissionInterfaceId
199
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field resourceJobManager is unset!') unless @resourceJobManager
200
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field securityProtocol is unset!') unless @securityProtocol
201
+ unless @securityProtocol.nil? || ::SecurityProtocol::VALID_VALUES.include?(@securityProtocol)
202
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field securityProtocol!')
203
+ end
204
+ end
205
+
206
+ ::Thrift::Struct.generate_accessors self
207
+ end
208
+
209
+ # Authenticate using Secured Shell
210
+ #
211
+ # alternativeSSHHostName:
212
+ # If the login to ssh is different than the hostname itself, specify it here
213
+ #
214
+ # sshPort:
215
+ # If a non-default port needs to used, specify it.
216
+ #
217
+ # batchQueueEmailSenders:
218
+ # If a resource always sends the monitoring from a specific address, specify the
219
+ # full email address. If a resource sends emails from multiple addresses (
220
+ # example: based on the submitted login node) then use the wildchar * to indicate
221
+ # the same. Example: *@*.example.com or *@example.com
222
+ #
223
+ class SSHJobSubmission
224
+ include ::Thrift::Struct, ::Thrift::Struct_Union
225
+ JOBSUBMISSIONINTERFACEID = 1
226
+ SECURITYPROTOCOL = 2
227
+ RESOURCEJOBMANAGER = 3
228
+ ALTERNATIVESSHHOSTNAME = 4
229
+ SSHPORT = 5
230
+ MONITORMODE = 6
231
+ BATCHQUEUEEMAILSENDERS = 7
232
+
233
+ FIELDS = {
234
+ JOBSUBMISSIONINTERFACEID => {:type => ::Thrift::Types::STRING, :name => 'jobSubmissionInterfaceId', :default => %q"DO_NOT_SET_AT_CLIENTS"},
235
+ SECURITYPROTOCOL => {:type => ::Thrift::Types::I32, :name => 'securityProtocol', :enum_class => ::SecurityProtocol},
236
+ RESOURCEJOBMANAGER => {:type => ::Thrift::Types::STRUCT, :name => 'resourceJobManager', :class => ::ResourceJobManager},
237
+ ALTERNATIVESSHHOSTNAME => {:type => ::Thrift::Types::STRING, :name => 'alternativeSSHHostName', :optional => true},
238
+ SSHPORT => {:type => ::Thrift::Types::I32, :name => 'sshPort', :default => 22, :optional => true},
239
+ MONITORMODE => {:type => ::Thrift::Types::I32, :name => 'monitorMode', :optional => true, :enum_class => ::MonitorMode},
240
+ BATCHQUEUEEMAILSENDERS => {:type => ::Thrift::Types::LIST, :name => 'batchQueueEmailSenders', :element => {:type => ::Thrift::Types::STRING}, :optional => true}
241
+ }
242
+
243
+ def struct_fields; FIELDS; end
244
+
245
+ def validate
246
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field jobSubmissionInterfaceId is unset!') unless @jobSubmissionInterfaceId
247
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field securityProtocol is unset!') unless @securityProtocol
248
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field resourceJobManager is unset!') unless @resourceJobManager
249
+ unless @securityProtocol.nil? || ::SecurityProtocol::VALID_VALUES.include?(@securityProtocol)
250
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field securityProtocol!')
251
+ end
252
+ unless @monitorMode.nil? || ::MonitorMode::VALID_VALUES.include?(@monitorMode)
253
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field monitorMode!')
254
+ end
255
+ end
256
+
257
+ ::Thrift::Struct.generate_accessors self
258
+ end
259
+
260
+ class GlobusJobSubmission
261
+ include ::Thrift::Struct, ::Thrift::Struct_Union
262
+ JOBSUBMISSIONINTERFACEID = 1
263
+ SECURITYPROTOCOL = 2
264
+ GLOBUSGATEKEEPERENDPOINT = 3
265
+
266
+ FIELDS = {
267
+ JOBSUBMISSIONINTERFACEID => {:type => ::Thrift::Types::STRING, :name => 'jobSubmissionInterfaceId', :default => %q"DO_NOT_SET_AT_CLIENTS"},
268
+ SECURITYPROTOCOL => {:type => ::Thrift::Types::I32, :name => 'securityProtocol', :enum_class => ::SecurityProtocol},
269
+ GLOBUSGATEKEEPERENDPOINT => {:type => ::Thrift::Types::LIST, :name => 'globusGateKeeperEndPoint', :element => {:type => ::Thrift::Types::STRING}, :optional => true}
270
+ }
271
+
272
+ def struct_fields; FIELDS; end
273
+
274
+ def validate
275
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field jobSubmissionInterfaceId is unset!') unless @jobSubmissionInterfaceId
276
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field securityProtocol is unset!') unless @securityProtocol
277
+ unless @securityProtocol.nil? || ::SecurityProtocol::VALID_VALUES.include?(@securityProtocol)
278
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field securityProtocol!')
279
+ end
280
+ end
281
+
282
+ ::Thrift::Struct.generate_accessors self
283
+ end
284
+
285
+ # Unicore Job Submission
286
+ #
287
+ # unicoreEndPointURL:
288
+ # unicoreGateway End Point. The provider will query this service to fetch required service end points.
289
+ # authenticationMode
290
+ # The authenticationMode defines the way certificate is fetched.
291
+ class UnicoreJobSubmission
292
+ include ::Thrift::Struct, ::Thrift::Struct_Union
293
+ JOBSUBMISSIONINTERFACEID = 1
294
+ SECURITYPROTOCOL = 2
295
+ UNICOREENDPOINTURL = 3
296
+
297
+ FIELDS = {
298
+ JOBSUBMISSIONINTERFACEID => {:type => ::Thrift::Types::STRING, :name => 'jobSubmissionInterfaceId', :default => %q"DO_NOT_SET_AT_CLIENTS"},
299
+ SECURITYPROTOCOL => {:type => ::Thrift::Types::I32, :name => 'securityProtocol', :enum_class => ::SecurityProtocol},
300
+ UNICOREENDPOINTURL => {:type => ::Thrift::Types::STRING, :name => 'unicoreEndPointURL'}
301
+ }
302
+
303
+ def struct_fields; FIELDS; end
304
+
305
+ def validate
306
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field jobSubmissionInterfaceId is unset!') unless @jobSubmissionInterfaceId
307
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field securityProtocol is unset!') unless @securityProtocol
308
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field unicoreEndPointURL is unset!') unless @unicoreEndPointURL
309
+ unless @securityProtocol.nil? || ::SecurityProtocol::VALID_VALUES.include?(@securityProtocol)
310
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field securityProtocol!')
311
+ end
312
+ end
313
+
314
+ ::Thrift::Struct.generate_accessors self
315
+ end
316
+
317
+ # Cloud Job Submission
318
+ #
319
+ #
320
+ class CloudJobSubmission
321
+ include ::Thrift::Struct, ::Thrift::Struct_Union
322
+ JOBSUBMISSIONINTERFACEID = 1
323
+ SECURITYPROTOCOL = 2
324
+ NODEID = 3
325
+ EXECUTABLETYPE = 4
326
+ PROVIDERNAME = 5
327
+ USERACCOUNTNAME = 6
328
+
329
+ FIELDS = {
330
+ JOBSUBMISSIONINTERFACEID => {:type => ::Thrift::Types::STRING, :name => 'jobSubmissionInterfaceId', :default => %q"DO_NOT_SET_AT_CLIENTS"},
331
+ SECURITYPROTOCOL => {:type => ::Thrift::Types::I32, :name => 'securityProtocol', :enum_class => ::SecurityProtocol},
332
+ NODEID => {:type => ::Thrift::Types::STRING, :name => 'nodeId'},
333
+ EXECUTABLETYPE => {:type => ::Thrift::Types::STRING, :name => 'executableType'},
334
+ PROVIDERNAME => {:type => ::Thrift::Types::I32, :name => 'providerName', :enum_class => ::ProviderName},
335
+ USERACCOUNTNAME => {:type => ::Thrift::Types::STRING, :name => 'userAccountName'}
336
+ }
337
+
338
+ def struct_fields; FIELDS; end
339
+
340
+ def validate
341
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field jobSubmissionInterfaceId is unset!') unless @jobSubmissionInterfaceId
342
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field securityProtocol is unset!') unless @securityProtocol
343
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field nodeId is unset!') unless @nodeId
344
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field executableType is unset!') unless @executableType
345
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field providerName is unset!') unless @providerName
346
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field userAccountName is unset!') unless @userAccountName
347
+ unless @securityProtocol.nil? || ::SecurityProtocol::VALID_VALUES.include?(@securityProtocol)
348
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field securityProtocol!')
349
+ end
350
+ unless @providerName.nil? || ::ProviderName::VALID_VALUES.include?(@providerName)
351
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field providerName!')
352
+ end
353
+ end
354
+
355
+ ::Thrift::Struct.generate_accessors self
356
+ end
357
+
358
+ # Job Submission Interfaces
359
+ #
360
+ # jobSubmissionInterfaceId: The Job Submission Interface has to be previously registered and referenced here.
361
+ #
362
+ # priorityOrder:
363
+ # For resources with multiple interfaces, the priority order should be selected.
364
+ # Lower the numerical number, higher the priority
365
+ #
366
+ class JobSubmissionInterface
367
+ include ::Thrift::Struct, ::Thrift::Struct_Union
368
+ JOBSUBMISSIONINTERFACEID = 1
369
+ JOBSUBMISSIONPROTOCOL = 2
370
+ PRIORITYORDER = 3
371
+
372
+ FIELDS = {
373
+ JOBSUBMISSIONINTERFACEID => {:type => ::Thrift::Types::STRING, :name => 'jobSubmissionInterfaceId'},
374
+ JOBSUBMISSIONPROTOCOL => {:type => ::Thrift::Types::I32, :name => 'jobSubmissionProtocol', :enum_class => ::JobSubmissionProtocol},
375
+ PRIORITYORDER => {:type => ::Thrift::Types::I32, :name => 'priorityOrder', :default => 0}
376
+ }
377
+
378
+ def struct_fields; FIELDS; end
379
+
380
+ def validate
381
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field jobSubmissionInterfaceId is unset!') unless @jobSubmissionInterfaceId
382
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field jobSubmissionProtocol is unset!') unless @jobSubmissionProtocol
383
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field priorityOrder is unset!') unless @priorityOrder
384
+ unless @jobSubmissionProtocol.nil? || ::JobSubmissionProtocol::VALID_VALUES.include?(@jobSubmissionProtocol)
385
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field jobSubmissionProtocol!')
386
+ end
387
+ end
388
+
389
+ ::Thrift::Struct.generate_accessors self
390
+ end
391
+
392
+ # Computational Resource Description
393
+ #
394
+ # computeResourceId: Airavata Internal Unique Identifier to distinguish Compute Resource.
395
+ #
396
+ # hostName:
397
+ # Fully Qualified Host Name.
398
+ #
399
+ # hostAliases:
400
+ # Aliases if any.
401
+ #
402
+ # ipAddress:
403
+ # IP Addresses of the Resource.
404
+ #
405
+ # resourceDescription:
406
+ # A user friendly description of the resource.
407
+ #
408
+ # JobSubmissionProtocols:
409
+ # A computational resources may have one or more ways of submitting Jobs. This structure
410
+ # will hold all available mechanisms to interact with the resource.
411
+ # The key is the priority
412
+ #
413
+ # DataMovementProtocol:
414
+ # Option to specify a prefered data movement mechanism of the available options.
415
+ #
416
+ # fileSystems:
417
+ # Map of file systems type and the path.
418
+ #
419
+ class ComputeResourceDescription
420
+ include ::Thrift::Struct, ::Thrift::Struct_Union
421
+ COMPUTERESOURCEID = 1
422
+ HOSTNAME = 2
423
+ HOSTALIASES = 3
424
+ IPADDRESSES = 4
425
+ RESOURCEDESCRIPTION = 5
426
+ ENABLED = 6
427
+ BATCHQUEUES = 7
428
+ FILESYSTEMS = 8
429
+ JOBSUBMISSIONINTERFACES = 9
430
+ DATAMOVEMENTINTERFACES = 10
431
+ MAXMEMORYPERNODE = 11
432
+ GATEWAYUSAGEREPORTING = 12
433
+ GATEWAYUSAGEMODULELOADCOMMAND = 13
434
+ GATEWAYUSAGEEXECUTABLE = 14
435
+ CPUSPERNODE = 15
436
+ DEFAULTNODECOUNT = 16
437
+ DEFAULTCPUCOUNT = 17
438
+ DEFAULTWALLTIME = 18
439
+
440
+ FIELDS = {
441
+ COMPUTERESOURCEID => {:type => ::Thrift::Types::STRING, :name => 'computeResourceId', :default => %q"DO_NOT_SET_AT_CLIENTS"},
442
+ HOSTNAME => {:type => ::Thrift::Types::STRING, :name => 'hostName'},
443
+ HOSTALIASES => {:type => ::Thrift::Types::LIST, :name => 'hostAliases', :element => {:type => ::Thrift::Types::STRING}, :optional => true},
444
+ IPADDRESSES => {:type => ::Thrift::Types::LIST, :name => 'ipAddresses', :element => {:type => ::Thrift::Types::STRING}, :optional => true},
445
+ RESOURCEDESCRIPTION => {:type => ::Thrift::Types::STRING, :name => 'resourceDescription', :optional => true},
446
+ ENABLED => {:type => ::Thrift::Types::BOOL, :name => 'enabled', :optional => true},
447
+ BATCHQUEUES => {:type => ::Thrift::Types::LIST, :name => 'batchQueues', :element => {:type => ::Thrift::Types::STRUCT, :class => ::BatchQueue}, :optional => true},
448
+ FILESYSTEMS => {:type => ::Thrift::Types::MAP, :name => 'fileSystems', :key => {:type => ::Thrift::Types::I32, :enum_class => ::FileSystems}, :value => {:type => ::Thrift::Types::STRING}, :optional => true},
449
+ JOBSUBMISSIONINTERFACES => {:type => ::Thrift::Types::LIST, :name => 'jobSubmissionInterfaces', :element => {:type => ::Thrift::Types::STRUCT, :class => ::JobSubmissionInterface}, :optional => true},
450
+ DATAMOVEMENTINTERFACES => {:type => ::Thrift::Types::LIST, :name => 'dataMovementInterfaces', :element => {:type => ::Thrift::Types::STRUCT, :class => ::DataMovementInterface}, :optional => true},
451
+ MAXMEMORYPERNODE => {:type => ::Thrift::Types::I32, :name => 'maxMemoryPerNode', :optional => true},
452
+ GATEWAYUSAGEREPORTING => {:type => ::Thrift::Types::BOOL, :name => 'gatewayUsageReporting', :optional => true},
453
+ GATEWAYUSAGEMODULELOADCOMMAND => {:type => ::Thrift::Types::STRING, :name => 'gatewayUsageModuleLoadCommand', :optional => true},
454
+ GATEWAYUSAGEEXECUTABLE => {:type => ::Thrift::Types::STRING, :name => 'gatewayUsageExecutable', :optional => true},
455
+ CPUSPERNODE => {:type => ::Thrift::Types::I32, :name => 'cpusPerNode', :optional => true},
456
+ DEFAULTNODECOUNT => {:type => ::Thrift::Types::I32, :name => 'defaultNodeCount', :optional => true},
457
+ DEFAULTCPUCOUNT => {:type => ::Thrift::Types::I32, :name => 'defaultCPUCount', :optional => true},
458
+ DEFAULTWALLTIME => {:type => ::Thrift::Types::I32, :name => 'defaultWalltime', :optional => true}
459
+ }
460
+
461
+ def struct_fields; FIELDS; end
462
+
463
+ def validate
464
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field computeResourceId is unset!') unless @computeResourceId
465
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field hostName is unset!') unless @hostName
466
+ end
467
+
468
+ ::Thrift::Struct.generate_accessors self
469
+ end
470
+