public static Environment createEnvironment( final Map<String, String> env) { return Environment.newBuilder() .addAllVariables(env.entrySet().stream() .map(entry -> Environment.Variable.newBuilder() .setName(entry.getKey()) .setValue(entry.getValue()).build()) .collect(Collectors.toList())) .build(); }
@Override public Protos.CommandInfo create(Map<String, String> additionalEnvironmentVariables) { Protos.CommandInfo.Builder builder = Protos.CommandInfo.newBuilder(); Optional<String> command = Optional.ofNullable(mesosConfig.getCommand()); builder.setShell(command.isPresent()); command.ifPresent(builder::setValue); builder.addAllUris(mesosConfig.getUri().stream().map(uri -> Protos.CommandInfo.URI.newBuilder().setValue(uri).build()).collect(Collectors.toList())); Map<String, String> environmentVariables = new LinkedHashMap<>(); environmentVariables.putAll(additionalEnvironmentVariables); environmentVariables.putAll(mesosConfig.getEnvironment()); //todo: migrate to foreach environmentVariables.entrySet().stream() .map(kv -> Protos.Environment.Variable.newBuilder().setName(kv.getKey()).setValue(kv.getValue()).build()) .collect(Collectors.collectingAndThen( Collectors.toList(), variables -> builder.setEnvironment(Protos.Environment.newBuilder().addAllVariables(variables)))); return builder.build(); } }
/** * Adds or updates the provided environment variable entry in the provided command builder. */ public static Environment withEnvVar(Environment environment, String key, String value) { Map<String, Environment.Variable> envMap = toMap(environment); envMap.put(key, Environment.Variable.newBuilder() .setName(key) .setValue(value) .build()); Environment.Builder envBuilder = Environment.newBuilder(); for (Map.Entry<String, Environment.Variable> entry : envMap.entrySet()) { envBuilder.addVariables(entry.getValue()); } return envBuilder.build(); }
private static void updateFaultDomainEnv(Protos.TaskInfo.Builder builder, Protos.Offer offer) { if (!offer.hasDomain() || !offer.getDomain().hasFaultDomain() || !builder.hasCommand()) { return; } Protos.Environment.Variable regionVar = Protos.Environment.Variable.newBuilder() .setName(EnvConstants.REGION_TASKENV) .setValue(offer.getDomain().getFaultDomain().getRegion().getName()) .build(); Protos.Environment.Variable zoneVar = Protos.Environment.Variable.newBuilder() .setName(EnvConstants.ZONE_TASKENV) .setValue(offer.getDomain().getFaultDomain().getZone().getName()) .build(); builder.getCommandBuilder() .getEnvironmentBuilder() .addVariables(regionVar) .addVariables(zoneVar); } }
@Test public void overwriteExistingEnvVarKey() { Protos.Environment.Builder envBuilder = Protos.Environment.newBuilder(); envBuilder.addVariablesBuilder() .setName(TEST_ENV_KEY) .setValue(TEST_ENV_VALUE) .build(); Protos.Environment newEnv = EnvUtils.withEnvVar(envBuilder.build(), TEST_ENV_KEY, TEST_REPLACE_ENV_VALUE); Assert.assertEquals(newEnv.getVariablesCount(), 1); Protos.Environment.Variable envVar = newEnv.getVariables(0); Assert.assertEquals(envVar.getValue(), TEST_REPLACE_ENV_VALUE); }
/** * Construct a Mesos environment variable. */ public static Protos.Environment.Variable variable(String name, String value) { checkNotNull(name); return Protos.Environment.Variable.newBuilder() .setName(name) .setValue(value) .build(); }