protected Container buildContainer(String namespace, Map<String, String> metadata, String deploymentName, String imageName, Iterable<Integer> inboundPorts, Map<String, ?> env, Map<String, String> limits, boolean privileged) {
List<ContainerPort> containerPorts = Lists.newArrayList();
for (Integer inboundPort : inboundPorts) {
containerPorts.add(new ContainerPortBuilder().withContainerPort(inboundPort).build());
}
List<EnvVar> envVars = Lists.newArrayList();
for (Map.Entry<String, ?> envVarEntry : env.entrySet()) {
envVars.add(new EnvVarBuilder().withName(envVarEntry.getKey()).withValue(envVarEntry.getValue().toString()).build());
}
ContainerBuilder containerBuilder = new ContainerBuilder()
.withName(deploymentName)
.withImage(imageName)
.addToPorts(Iterables.toArray(containerPorts, ContainerPort.class))
.addToEnv(Iterables.toArray(envVars, EnvVar.class))
.withNewSecurityContext()
.withPrivileged(privileged)
.endSecurityContext();
if (limits != null) {
for (Map.Entry<String, String> nameValueEntry : limits.entrySet()) {
ResourceRequirements resourceRequirements = new ResourceRequirementsBuilder().addToLimits(nameValueEntry.getKey(), new QuantityBuilder().withAmount(nameValueEntry.getValue()).build()).build();
containerBuilder.withResources(resourceRequirements);
}
}
LOG.debug("Built container {} to be deployed in namespace {} with metadata {}.", new Object[]{containerBuilder.build(), namespace, metadata});
return containerBuilder.build();
}