@@ -162,41 +162,48 @@ func (ts *TaskService) Create(requestCtx context.Context, req *taskAPI.CreateTas
162
162
req .Bundle = bundleDir .RootPath ()
163
163
req .Rootfs = nil
164
164
165
- // Override the incoming stdio FIFOs, which have paths from the host that we can't use
166
- fifoSet , err := cio .NewFIFOSetInDir (bundleDir .RootPath (), req .ID , req .Terminal )
167
- if err != nil {
168
- logger .WithError (err ).Error ("failed opening stdio FIFOs" )
169
- return nil , errors .Wrap (err , "failed to open stdio FIFOs" )
170
- }
165
+ var ioConnectorSet vm.IOProxy
171
166
172
- var stdinConnectorPair * vm.IOConnectorPair
173
- if req .Stdin != "" {
174
- req .Stdin = fifoSet .Stdin
175
- stdinConnectorPair = & vm.IOConnectorPair {
176
- ReadConnector : vm .VSockAcceptConnector (extraData .StdinPort ),
177
- WriteConnector : vm .FIFOConnector (fifoSet .Stdin ),
167
+ if vm .IsAgentOnlyIO (req .Stdout , logger ) {
168
+ ioConnectorSet = vm .NewNullIOProxy ()
169
+ } else {
170
+ // Override the incoming stdio FIFOs, which have paths from the host that we can't use
171
+ fifoSet , err := cio .NewFIFOSetInDir (bundleDir .RootPath (), req .ID , req .Terminal )
172
+ if err != nil {
173
+ logger .WithError (err ).Error ("failed opening stdio FIFOs" )
174
+ return nil , errors .Wrap (err , "failed to open stdio FIFOs" )
178
175
}
179
- }
180
176
181
- var stdoutConnectorPair * vm.IOConnectorPair
182
- if req .Stdout != "" {
183
- req .Stdout = fifoSet .Stdout
184
- stdoutConnectorPair = & vm.IOConnectorPair {
185
- ReadConnector : vm .FIFOConnector (fifoSet .Stdout ),
186
- WriteConnector : vm .VSockAcceptConnector (extraData .StdoutPort ),
177
+ var stdinConnectorPair * vm.IOConnectorPair
178
+ if req .Stdin != "" {
179
+ req .Stdin = fifoSet .Stdin
180
+ stdinConnectorPair = & vm.IOConnectorPair {
181
+ ReadConnector : vm .VSockAcceptConnector (extraData .StdinPort ),
182
+ WriteConnector : vm .FIFOConnector (fifoSet .Stdin ),
183
+ }
187
184
}
188
- }
189
185
190
- var stderrConnectorPair * vm.IOConnectorPair
191
- if req .Stderr != "" {
192
- req .Stderr = fifoSet .Stderr
193
- stderrConnectorPair = & vm.IOConnectorPair {
194
- ReadConnector : vm .FIFOConnector (fifoSet .Stderr ),
195
- WriteConnector : vm .VSockAcceptConnector (extraData .StderrPort ),
186
+ var stdoutConnectorPair * vm.IOConnectorPair
187
+ if req .Stdout != "" {
188
+ req .Stdout = fifoSet .Stdout
189
+ stdoutConnectorPair = & vm.IOConnectorPair {
190
+ ReadConnector : vm .FIFOConnector (fifoSet .Stdout ),
191
+ WriteConnector : vm .VSockAcceptConnector (extraData .StdoutPort ),
192
+ }
196
193
}
194
+
195
+ var stderrConnectorPair * vm.IOConnectorPair
196
+ if req .Stderr != "" {
197
+ req .Stderr = fifoSet .Stderr
198
+ stderrConnectorPair = & vm.IOConnectorPair {
199
+ ReadConnector : vm .FIFOConnector (fifoSet .Stderr ),
200
+ WriteConnector : vm .VSockAcceptConnector (extraData .StderrPort ),
201
+ }
202
+ }
203
+
204
+ ioConnectorSet = vm .NewIOConnectorProxy (stdinConnectorPair , stdoutConnectorPair , stderrConnectorPair )
197
205
}
198
206
199
- ioConnectorSet := vm .NewIOConnectorProxy (stdinConnectorPair , stdoutConnectorPair , stderrConnectorPair )
200
207
resp , err := ts .taskManager .CreateTask (requestCtx , req , ts .runcService , ioConnectorSet )
201
208
if err != nil {
202
209
return nil , errors .Wrap (err , "failed to create runc shim for task" )
@@ -349,41 +356,48 @@ func (ts *TaskService) Exec(requestCtx context.Context, req *taskAPI.ExecProcess
349
356
350
357
bundleDir := bundle .Dir (filepath .Join (containerRootDir , req .ID ))
351
358
352
- // Override the incoming stdio FIFOs, which have paths from the host that we can't use
353
- fifoSet , err := cio .NewFIFOSetInDir (bundleDir .RootPath (), req .ExecID , req .Terminal )
354
- if err != nil {
355
- logger .WithError (err ).Error ("failed opening stdio FIFOs" )
356
- return nil , errors .Wrap (err , "failed to open stdio FIFOs" )
357
- }
359
+ var ioConnectorSet vm.IOProxy
358
360
359
- var stdinConnectorPair * vm.IOConnectorPair
360
- if req .Stdin != "" {
361
- req .Stdin = fifoSet .Stdin
362
- stdinConnectorPair = & vm.IOConnectorPair {
363
- ReadConnector : vm .VSockAcceptConnector (extraData .StdinPort ),
364
- WriteConnector : vm .FIFOConnector (fifoSet .Stdin ),
361
+ if vm .IsAgentOnlyIO (req .Stdout , logger ) {
362
+ ioConnectorSet = vm .NewNullIOProxy ()
363
+ } else {
364
+ // Override the incoming stdio FIFOs, which have paths from the host that we can't use
365
+ fifoSet , err := cio .NewFIFOSetInDir (bundleDir .RootPath (), req .ExecID , req .Terminal )
366
+ if err != nil {
367
+ logger .WithError (err ).Error ("failed opening stdio FIFOs" )
368
+ return nil , errors .Wrap (err , "failed to open stdio FIFOs" )
365
369
}
366
- }
367
370
368
- var stdoutConnectorPair * vm.IOConnectorPair
369
- if req .Stdout != "" {
370
- req .Stdout = fifoSet .Stdout
371
- stdoutConnectorPair = & vm.IOConnectorPair {
372
- ReadConnector : vm .FIFOConnector (fifoSet .Stdout ),
373
- WriteConnector : vm .VSockAcceptConnector (extraData .StdoutPort ),
371
+ var stdinConnectorPair * vm.IOConnectorPair
372
+ if req .Stdin != "" {
373
+ req .Stdin = fifoSet .Stdin
374
+ stdinConnectorPair = & vm.IOConnectorPair {
375
+ ReadConnector : vm .VSockAcceptConnector (extraData .StdinPort ),
376
+ WriteConnector : vm .FIFOConnector (fifoSet .Stdin ),
377
+ }
374
378
}
375
- }
376
379
377
- var stderrConnectorPair * vm.IOConnectorPair
378
- if req .Stderr != "" {
379
- req .Stderr = fifoSet .Stderr
380
- stderrConnectorPair = & vm.IOConnectorPair {
381
- ReadConnector : vm .FIFOConnector (fifoSet .Stderr ),
382
- WriteConnector : vm .VSockAcceptConnector (extraData .StderrPort ),
380
+ var stdoutConnectorPair * vm.IOConnectorPair
381
+ if req .Stdout != "" {
382
+ req .Stdout = fifoSet .Stdout
383
+ stdoutConnectorPair = & vm.IOConnectorPair {
384
+ ReadConnector : vm .FIFOConnector (fifoSet .Stdout ),
385
+ WriteConnector : vm .VSockAcceptConnector (extraData .StdoutPort ),
386
+ }
383
387
}
388
+
389
+ var stderrConnectorPair * vm.IOConnectorPair
390
+ if req .Stderr != "" {
391
+ req .Stderr = fifoSet .Stderr
392
+ stderrConnectorPair = & vm.IOConnectorPair {
393
+ ReadConnector : vm .FIFOConnector (fifoSet .Stderr ),
394
+ WriteConnector : vm .VSockAcceptConnector (extraData .StderrPort ),
395
+ }
396
+ }
397
+
398
+ ioConnectorSet = vm .NewIOConnectorProxy (stdinConnectorPair , stdoutConnectorPair , stderrConnectorPair )
384
399
}
385
400
386
- ioConnectorSet := vm .NewIOConnectorProxy (stdinConnectorPair , stdoutConnectorPair , stderrConnectorPair )
387
401
resp , err := ts .taskManager .ExecProcess (requestCtx , req , ts .runcService , ioConnectorSet )
388
402
if err != nil {
389
403
logger .WithError (err ).Error ("exec failed" )
0 commit comments