ConcurrentMap<ContainerId, Container> containers = nm.getNMContext().getContainers(); for (Map.Entry<ContainerId, Container> entry : containers.entrySet()) { String command = StringUtils.join(entry.getValue().getLaunchContext().getCommands(), " "); if (command.contains(YarnTaskExecutorRunner.class.getSimpleName())) { taskManagerContainer = entry.getKey();
/** * This function only returns whether a privileged container was requested, * not whether the container was or will be launched as privileged. * @param container * @return */ private boolean isContainerRequestedAsPrivileged( Container container) { String runPrivilegedContainerEnvVar = container.getLaunchContext() .getEnvironment().get(ENV_DOCKER_CONTAINER_RUN_PRIVILEGED_CONTAINER); return Boolean.parseBoolean(runPrivilegedContainerEnvVar); }
public String getRequestedIPID(Container container) { String r= container.getLaunchContext().getEnvironment(). get(REQUEST_FPGA_IP_ID_KEY); return r == null ? "" : r; }
private LinuxContainerRuntime pickContainerRuntime(Container container) { Map<String, String> env = container.getLaunchContext().getEnvironment(); LinuxContainerRuntime runtime; if (DockerLinuxContainerRuntime.isDockerContainerRequested(env)){ runtime = dockerLinuxContainerRuntime; } else { runtime = defaultLinuxContainerRuntime; } if (LOG.isInfoEnabled()) { LOG.info("Using container runtime: " + runtime.getClass() .getSimpleName()); } return runtime; }
private LinuxContainerRuntime pickContainerRuntime(Container container) throws ContainerExecutionException { return pickContainerRuntime(container.getLaunchContext().getEnvironment()); }
Map<String, String> environment = container.getLaunchContext() .getEnvironment(); String pidNamespace = environment.get(ENV_DOCKER_CONTAINER_PID_NAMESPACE);
String network; try { network = container.getLaunchContext().getEnvironment() .get("YARN_CONTAINER_RUNTIME_DOCKER_CONTAINER_NETWORK"); if (network == null || network.isEmpty()) {
super.launchContainer(containerStartContext); int exitCode = 0; if (container.getLaunchContext().getCommands().toString().contains("bin/java")) { ExecJavaCliParser result = this.createExecCommandParser(containerWorkDir.toString()); try { String cmd = container.getLaunchContext().getCommands().get(0); if (logger.isInfoEnabled()) { logger.info("Running Command: " + cmd);
Map<String, String> environment = container.getLaunchContext().getEnvironment(); EnvironmentUtils.putAll(environment);
Map<String, String> environment = container.getLaunchContext() .getEnvironment(); String runPrivilegedContainerEnvVar = environment
private void addDockerClientConfigToRunCommand(ContainerRuntimeContext ctx, DockerRunCommand dockerRunCommand) throws ContainerExecutionException { ByteBuffer tokens = ctx.getContainer().getLaunchContext().getTokens(); Credentials credentials; if (tokens != null) {
String[] commandArray = command.toArray(new String[command.size()]); shExec = new ShellCommandExecutor(commandArray, null, // NM's cwd container.getLaunchContext().getEnvironment()); // sanitized env if (LOG.isDebugEnabled()) { LOG.debug("launchContainer: " + Arrays.toString(commandArray));
if (container.getLaunchContext().getCommands().toString().contains("bin/java")) { ExecJavaCliParser result = this.createExecCommandParser(containerWorkDir.toString()); try { String cmd = container.getLaunchContext().getCommands().get(0); if (logger.isInfoEnabled()) { logger.info("Running Command: " + cmd);
if (!DockerLinuxContainerRuntime.isDockerContainerRequested( nmContext.getConf(), container.getLaunchContext().getEnvironment())) {
private void prepareContainer(Map<Path, List<String>> localResources, List<String> containerLocalDirs) throws IOException { exec.prepareContainer(new ContainerPrepareContext.Builder() .setContainer(container) .setLocalizedResources(localResources) .setUser(container.getUser()) .setContainerLocalDirs(containerLocalDirs) .setCommands(container.getLaunchContext().getCommands()) .build()); }
@Override public void signalContainer(ContainerRuntimeContext ctx) throws ContainerExecutionException { Container container = ctx.getContainer(); PrivilegedOperation signalOp = new PrivilegedOperation( PrivilegedOperation.OperationType.SIGNAL_CONTAINER); signalOp.appendArgs(ctx.getExecutionAttribute(RUN_AS_USER), ctx.getExecutionAttribute(USER), Integer.toString(PrivilegedOperation .RunAsUserCommand.SIGNAL_CONTAINER.getValue()), ctx.getExecutionAttribute(PID), Integer.toString(ctx.getExecutionAttribute(SIGNAL).getValue())); try { PrivilegedOperationExecutor executor = PrivilegedOperationExecutor .getInstance(conf); executor.executePrivilegedOperation(null, signalOp, null, container.getLaunchContext().getEnvironment(), false, true); } catch (PrivilegedOperationException e) { LOG.warn("Signal container failed. Exception: ", e); throw new ContainerExecutionException("Signal container failed", e .getExitCode(), e.getOutput(), e.getErrorOutput()); } }
launchOp, null, container.getLaunchContext().getEnvironment(), false, false); } catch (PrivilegedOperationException e) {
@Override public void signalContainer(ContainerRuntimeContext ctx) throws ContainerExecutionException { Container container = ctx.getContainer(); PrivilegedOperation signalOp = new PrivilegedOperation( PrivilegedOperation.OperationType.SIGNAL_CONTAINER); signalOp.appendArgs(ctx.getExecutionAttribute(RUN_AS_USER), ctx.getExecutionAttribute(USER), Integer.toString(PrivilegedOperation.RunAsUserCommand .SIGNAL_CONTAINER.getValue()), ctx.getExecutionAttribute(PID), Integer.toString(ctx.getExecutionAttribute(SIGNAL).getValue())); //Some failures here are acceptable. Let the calling executor decide. signalOp.disableFailureLogging(); try { PrivilegedOperationExecutor executor = PrivilegedOperationExecutor .getInstance(conf); executor.executePrivilegedOperation(null, signalOp, null, container.getLaunchContext().getEnvironment(), false, true); } catch (PrivilegedOperationException e) { //Don't log the failure here. Some kinds of signaling failures are // acceptable. Let the calling executor decide what to do. throw new ContainerExecutionException("Signal container failed", e .getExitCode(), e.getOutput(), e.getErrorOutput()); } }
/** * Reap the docker container. * * @param ctx the {@link ContainerRuntimeContext}. * @throws ContainerExecutionException if the removal fails. */ @Override public void reapContainer(ContainerRuntimeContext ctx) throws ContainerExecutionException { // Clean up the Docker container handleContainerRemove(ctx.getContainer().getContainerId().toString(), ctx.getContainer().getLaunchContext().getEnvironment()); // Cleanup volumes when needed. if (nmContext != null && nmContext.getResourcePluginManager().getNameToPlugins() != null) { for (ResourcePlugin plugin : nmContext.getResourcePluginManager() .getNameToPlugins().values()) { DockerCommandPlugin dockerCommandPlugin = plugin.getDockerCommandPluginInstance(); if (dockerCommandPlugin != null) { DockerVolumeCommand dockerVolumeCommand = dockerCommandPlugin.getCleanupDockerVolumesCommand( ctx.getContainer()); if (dockerVolumeCommand != null) { runDockerVolumeCommand(dockerVolumeCommand, ctx.getContainer()); } } } } }
ContainerExecutor.Signal signal = ctx.getExecutionAttribute(SIGNAL); Map<String, String> env = ctx.getContainer().getLaunchContext().getEnvironment(); try { if (ContainerExecutor.Signal.NULL.equals(signal)) {