2222import com .iexec .commons .containers .DockerRunFinalStatus ;
2323import com .iexec .commons .containers .DockerRunRequest ;
2424import com .iexec .commons .containers .DockerRunResponse ;
25- import com .iexec .commons .poco .chain .WorkerpoolAuthorization ;
2625import com .iexec .commons .poco .task .TaskDescription ;
2726import com .iexec .commons .poco .tee .TeeEnclaveConfiguration ;
28- import com .iexec .sms .api .TeeSessionGenerationError ;
29- import com .iexec .sms .api .TeeSessionGenerationResponse ;
3027import com .iexec .sms .api .config .TeeAppProperties ;
3128import com .iexec .sms .api .config .TeeServicesProperties ;
3229import com .iexec .worker .compute .ComputeExitCauseService ;
3532import com .iexec .worker .docker .DockerService ;
3633import com .iexec .worker .metric .ComputeDurationsService ;
3734import com .iexec .worker .sgx .SgxService ;
38- import com .iexec .worker .sms .SmsService ;
39- import com .iexec .worker .sms .TeeSessionGenerationException ;
4035import com .iexec .worker .tee .TeeServicesManager ;
4136import com .iexec .worker .tee .TeeServicesPropertiesService ;
4237import com .iexec .worker .workflow .WorkflowError ;
4944import java .util .List ;
5045import java .util .concurrent .TimeoutException ;
5146
52- import static com .iexec .sms .api .TeeSessionGenerationError .UNKNOWN_ISSUE ;
53-
5447@ Slf4j
5548@ Service
5649public class PreComputeService {
5750
58- private final SmsService smsService ;
5951 private final DockerService dockerService ;
6052 private final TeeServicesManager teeServicesManager ;
6153 private final WorkerConfigurationService workerConfigService ;
@@ -65,15 +57,13 @@ public class PreComputeService {
6557 private final ComputeDurationsService preComputeDurationsService ;
6658
6759 public PreComputeService (
68- SmsService smsService ,
6960 DockerService dockerService ,
7061 TeeServicesManager teeServicesManager ,
7162 WorkerConfigurationService workerConfigService ,
7263 SgxService sgxService ,
7364 ComputeExitCauseService computeExitCauseService ,
7465 TeeServicesPropertiesService teeServicesPropertiesService ,
7566 ComputeDurationsService preComputeDurationsService ) {
76- this .smsService = smsService ;
7767 this .dockerService = dockerService ;
7868 this .teeServicesManager = teeServicesManager ;
7969 this .workerConfigService = workerConfigService ;
@@ -90,13 +80,11 @@ public PreComputeService(
9080 * is started to handle them.
9181 *
9282 * @param taskDescription Task description read on-chain
93- * @param workerpoolAuth Workerpool authorization provided by scheduler
9483 * @return PreComputeResponse
9584 */
96- public PreComputeResponse runTeePreCompute (TaskDescription taskDescription , WorkerpoolAuthorization workerpoolAuth ) {
85+ public PreComputeResponse runTeePreCompute (final TaskDescription taskDescription ) {
9786 final String chainTaskId = taskDescription .getChainTaskId ();
98- final PreComputeResponse .PreComputeResponseBuilder preComputeResponseBuilder = PreComputeResponse .builder ()
99- .isTeeTask (taskDescription .isTeeTask ());
87+ final PreComputeResponse .PreComputeResponseBuilder preComputeResponseBuilder = PreComputeResponse .builder ();
10088
10189 // verify enclave configuration for compute stage
10290 final TeeEnclaveConfiguration enclaveConfig = taskDescription .getAppEnclaveConfiguration ();
@@ -122,37 +110,21 @@ public PreComputeResponse runTeePreCompute(TaskDescription taskDescription, Work
122110 preComputeResponseBuilder .exitCauses (List .of (new WorkflowError (ReplicateStatusCause .PRE_COMPUTE_INVALID_ENCLAVE_HEAP_CONFIGURATION )));
123111 return preComputeResponseBuilder .build ();
124112 }
125- // create secure session
126- final TeeSessionGenerationResponse secureSession ;
127- try {
128- secureSession = smsService .createTeeSession (workerpoolAuth );
129- if (secureSession == null ) {
130- throw new TeeSessionGenerationException (UNKNOWN_ISSUE );
131- }
132- preComputeResponseBuilder .secureSession (secureSession );
133- } catch (TeeSessionGenerationException e ) {
134- log .error ("Failed to create TEE secure session [chainTaskId:{}]" , chainTaskId , e );
135- return preComputeResponseBuilder
136- .exitCauses (List .of (new WorkflowError (teeSessionGenerationErrorToReplicateStatusCause (e .getTeeSessionGenerationError ()))))
137- .build ();
138- }
139113
140114 // run TEE pre-compute container if needed
141115 if (taskDescription .requiresPreCompute ()) {
142116 log .info ("Task contains TEE input data [chainTaskId:{}, containsDataset:{}, containsInputFiles:{}, isBulkRequest:{}]" ,
143117 chainTaskId , taskDescription .containsDataset (), taskDescription .containsInputFiles (), taskDescription .isBulkRequest ());
144- final List <WorkflowError > exitCauses = downloadDatasetAndFiles (taskDescription , secureSession );
118+ final List <WorkflowError > exitCauses = downloadDatasetAndFiles (taskDescription );
145119 preComputeResponseBuilder .exitCauses (exitCauses );
146120 }
147121
148122 return preComputeResponseBuilder .build ();
149123 }
150124
151- private List <WorkflowError > downloadDatasetAndFiles (
152- final TaskDescription taskDescription ,
153- final TeeSessionGenerationResponse secureSession ) {
125+ private List <WorkflowError > downloadDatasetAndFiles (final TaskDescription taskDescription ) {
154126 try {
155- final Integer exitCode = prepareTeeInputData (taskDescription , secureSession );
127+ final Integer exitCode = prepareTeeInputData (taskDescription );
156128 if (exitCode == null || exitCode != 0 ) {
157129 final String chainTaskId = taskDescription .getChainTaskId ();
158130 final List <WorkflowError > exitCauses = getExitCauses (chainTaskId , exitCode );
@@ -179,33 +151,14 @@ private List<WorkflowError> getExitCauses(final String chainTaskId, final Intege
179151 };
180152 }
181153
182-
183- /**
184- * {@link TeeSessionGenerationError} and {@link ReplicateStatusCause} are dynamically bound
185- * such as {@code TeeSessionGenerationError.MEMBER_X == ReplicateStatusCause.TEE_SESSION_GENERATION_MEMBER_X}.
186- *
187- * @return {@literal null} if no member of {@link ReplicateStatusCause} matches,
188- * the matching member otherwise.
189- */
190- ReplicateStatusCause teeSessionGenerationErrorToReplicateStatusCause (TeeSessionGenerationError error ) {
191- try {
192- return ReplicateStatusCause .valueOf ("TEE_SESSION_GENERATION_" + error .name ());
193- } catch (IllegalArgumentException e ) {
194- return null ;
195- }
196- }
197-
198154 /**
199155 * Run tee-worker-pre-compute docker image. The pre-compute enclave downloads
200156 * the dataset and decrypts it for the compute stage. It also downloads input
201157 * files if requested.
202158 *
203159 * @return pre-compute exit code
204160 */
205- private Integer prepareTeeInputData (
206- TaskDescription taskDescription ,
207- TeeSessionGenerationResponse secureSession )
208- throws TimeoutException {
161+ private Integer prepareTeeInputData (final TaskDescription taskDescription ) throws TimeoutException {
209162 String chainTaskId = taskDescription .getChainTaskId ();
210163 log .info ("Preparing tee input data [chainTaskId:{}]" , chainTaskId );
211164
@@ -221,7 +174,7 @@ private Integer prepareTeeInputData(
221174 }
222175 // run container
223176 List <String > env = teeServicesManager .getTeeService (taskDescription .getTeeFramework ())
224- .buildPreComputeDockerEnv (taskDescription , secureSession );
177+ .buildPreComputeDockerEnv (taskDescription );
225178 List <Bind > binds = Collections .singletonList (Bind .parse (dockerService .getInputBind (chainTaskId )));
226179 HostConfig hostConfig = HostConfig .newHostConfig ()
227180 .withBinds (binds )
@@ -244,15 +197,14 @@ private Integer prepareTeeInputData(
244197 }
245198 final DockerRunFinalStatus finalStatus = dockerResponse .getFinalStatus ();
246199 if (finalStatus == DockerRunFinalStatus .TIMEOUT ) {
247- log .error ("Tee pre-compute container timed out" +
248- " [chainTaskId:{}, maxExecutionTime:{}]" ,
200+ log .error ("Tee pre-compute container timed out [chainTaskId:{}, maxExecutionTime:{}]" ,
249201 chainTaskId , taskDescription .getMaxExecutionTime ());
250202 throw new TimeoutException ("Tee pre-compute container timed out" );
251203 }
252204 if (finalStatus == DockerRunFinalStatus .FAILED ) {
253205 int exitCode = dockerResponse .getContainerExitCode ();
254- log .error ("Tee pre-compute container failed [chainTaskId:{}, " +
255- "exitCode:{}]" , chainTaskId , exitCode );
206+ log .error ("Tee pre-compute container failed [chainTaskId:{}, exitCode:{}]" ,
207+ chainTaskId , exitCode );
256208 return dockerResponse .getContainerExitCode ();
257209 }
258210 log .info ("Prepared tee input data successfully [chainTaskId:{}]" , chainTaskId );
0 commit comments