/** * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.aurora.scheduler.mesos; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import org.apache.aurora.gen.apiConstants; import org.apache.aurora.scheduler.configuration.executor.ExecutorConfig; import org.apache.aurora.scheduler.configuration.executor.ExecutorSettings; import org.apache.aurora.scheduler.configuration.executor.Executors; import org.apache.aurora.scheduler.resources.ResourceType; import org.apache.mesos.v1.Protos.CommandInfo; import org.apache.mesos.v1.Protos.CommandInfo.URI; import org.apache.mesos.v1.Protos.ExecutorInfo; import org.apache.mesos.v1.Protos.Resource; import org.apache.mesos.v1.Protos.Value.Scalar; import org.apache.mesos.v1.Protos.Value.Type; /** * Test utility class for executor fields. */ public final class TestExecutorSettings { private TestExecutorSettings() { // Utility class. } public static final ExecutorInfo THERMOS_EXECUTOR_INFO = ExecutorInfo.newBuilder() .setName(apiConstants.AURORA_EXECUTOR_NAME) .setExecutorId(Executors.PLACEHOLDER_EXECUTOR_ID) .setCommand(CommandInfo.newBuilder().setValue("thermos_executor.pex") .addAllArguments(ImmutableList.of( "--announcer-ensemble", "localhost:2181")) .addAllUris(ImmutableList.of( URI.newBuilder() .setValue("/home/vagrant/aurora/dist/thermos_executor.pex") .setExecutable(true) .setExtract(false) .setCache(false).build()))) .addAllResources(ImmutableList.of( Resource.newBuilder() .setName(ResourceType.CPUS.getMesosName()) .setType(Type.SCALAR) .setScalar(Scalar.newBuilder().setValue(0.25)) .build(), Resource.newBuilder() .setName(ResourceType.RAM_MB.getMesosName()) .setType(Type.SCALAR) .setScalar(Scalar.newBuilder().setValue(128)) .build() )) .build(); public static final String THERMOS_TASK_PREFIX = "thermos-"; public static final ExecutorConfig THERMOS_CONFIG = new ExecutorConfig(THERMOS_EXECUTOR_INFO, ImmutableList.of(), THERMOS_TASK_PREFIX); public static final ExecutorSettings THERMOS_EXECUTOR = new ExecutorSettings( ImmutableMap.<String, ExecutorConfig>builder() .put(apiConstants.AURORA_EXECUTOR_NAME, THERMOS_CONFIG) .build(), false /* populate discovery info */); public static ExecutorSettings thermosOnlyWithOverhead(Iterable<Resource> resources) { ExecutorConfig config = THERMOS_EXECUTOR.getExecutorConfig(THERMOS_EXECUTOR_INFO.getName()).get(); ExecutorInfo.Builder executor = config.getExecutor().toBuilder(); executor.clearResources().addAllResources(resources); return new ExecutorSettings( ImmutableMap.<String, ExecutorConfig>builder().put( apiConstants.AURORA_EXECUTOR_NAME, new ExecutorConfig( executor.build(), config.getVolumeMounts(), THERMOS_TASK_PREFIX)).build(), false /* populate discovery info */); } }