Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ class GridTaskHandler extends TaskHandler implements FusionAwareTask {
final launcher = fusionLauncher()
final config = task.getContainerConfig()
final containerOpts = task.config.getContainerOptions()
final cmd = FusionHelper.runWithContainer(launcher, config, task.getContainer(), containerOpts, submit)
final cmd = FusionHelper.runWithContainer(launcher, config, task.getContainer(), containerOpts, submit, task.getContainerPlatform())
// create an inline script to launch the job execution
return '#!/bin/bash\n' + submitDirective(task) + cmd + '\n'
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ class LocalTaskHandler extends TaskHandler implements FusionAwareTask {
final launcher = fusionLauncher()
final config = task.getContainerConfig()
final containerOpts = task.config.getContainerOptions()
final cmd = FusionHelper.runWithContainer(launcher, config, task.getContainer(), containerOpts, submit)
final cmd = FusionHelper.runWithContainer(launcher, config, task.getContainer(), containerOpts, submit, task.getContainerPlatform())
log.debug "Launch cmd line: ${cmd}"

final logPath = Files.createTempFile('nf-task','.log')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,17 @@ class FusionHelper {
return result!=null ? result.toString()=='true' : false
}

static String runWithContainer(FusionScriptLauncher launcher, ContainerConfig containerConfig, String containerName, String containerOpts, List<String> runCmd) {
static String runWithContainer(FusionScriptLauncher launcher, ContainerConfig containerConfig, String containerName, String containerOpts, List<String> runCmd, String containerPlatform = null) {
if( !containerName )
throw new IllegalArgumentException("Missing task container -- Fusion requires the task to be executed by a container process")
final containerBuilder = ContainerBuilder.create(containerConfig, containerName)
.addMountWorkDir(false)
.addRunOptions(containerOpts)
.addRunOptions(containerConfig.getFusionOptions())

if( containerPlatform )
containerBuilder.setPlatform(containerPlatform)

// add fusion env vars
for(Map.Entry<String,String> it : launcher.fusionEnv()) {
containerBuilder.addEnv("$it.key=$it.value")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,19 @@ class FusionHelperTest extends Specification {

}

def 'should include container platform in fusion command' () {
given:
def launcher = Mock(FusionScriptLauncher)
def config = new DockerConfig([:])

when:
def result = FusionHelper.runWithContainer(launcher, config, 'image:1', null, ['echo', 'hello'], 'linux/amd64')
then:
1 * launcher.fusionEnv() >> [:]
and:
result == "docker run -i --platform linux/amd64 --rm --privileged image:1 echo 'hello'"
}

def 'should return fusion container command' () {
given:
def launcher = Mock(FusionScriptLauncher) {
Expand Down
Loading