use of io.fabric8.kubernetes.api.model.ResourceRequirements in project flink by apache.
the class KubernetesUtils method getResourceRequirements.
/**
* Get resource requirements from memory and cpu.
*
* @param resourceRequirements resource requirements in pod template
* @param mem Memory in mb.
* @param memoryLimitFactor limit factor for the memory, used to set the limit resources.
* @param cpu cpu.
* @param cpuLimitFactor limit factor for the cpu, used to set the limit resources.
* @param externalResources external resources
* @param externalResourceConfigKeys config keys of external resources
* @return KubernetesResource requirements.
*/
public static ResourceRequirements getResourceRequirements(ResourceRequirements resourceRequirements, int mem, double memoryLimitFactor, double cpu, double cpuLimitFactor, Map<String, ExternalResource> externalResources, Map<String, String> externalResourceConfigKeys) {
final Quantity cpuQuantity = new Quantity(String.valueOf(cpu));
final Quantity cpuLimitQuantity = new Quantity(String.valueOf(cpu * cpuLimitFactor));
final Quantity memQuantity = new Quantity(mem + Constants.RESOURCE_UNIT_MB);
final Quantity memQuantityLimit = new Quantity(((int) (mem * memoryLimitFactor)) + Constants.RESOURCE_UNIT_MB);
ResourceRequirementsBuilder resourceRequirementsBuilder = new ResourceRequirementsBuilder(resourceRequirements).addToRequests(Constants.RESOURCE_NAME_MEMORY, memQuantity).addToRequests(Constants.RESOURCE_NAME_CPU, cpuQuantity).addToLimits(Constants.RESOURCE_NAME_MEMORY, memQuantityLimit).addToLimits(Constants.RESOURCE_NAME_CPU, cpuLimitQuantity);
// Add the external resources to resource requirement.
for (Map.Entry<String, ExternalResource> externalResource : externalResources.entrySet()) {
final String configKey = externalResourceConfigKeys.get(externalResource.getKey());
if (!StringUtils.isNullOrWhitespaceOnly(configKey)) {
final Quantity resourceQuantity = new Quantity(String.valueOf(externalResource.getValue().getValue().longValue()));
resourceRequirementsBuilder.addToRequests(configKey, resourceQuantity).addToLimits(configKey, resourceQuantity);
LOG.info("Request external resource {} with config key {}.", resourceQuantity.getAmount(), configKey);
}
}
return resourceRequirementsBuilder.build();
}
use of io.fabric8.kubernetes.api.model.ResourceRequirements in project flink by apache.
the class InitTaskManagerDecoratorTest method testMainContainerResourceRequirements.
@Test
public void testMainContainerResourceRequirements() {
final ResourceRequirements resourceRequirements = this.resultMainContainer.getResources();
final Map<String, Quantity> requests = resourceRequirements.getRequests();
assertEquals(Double.toString(TASK_MANAGER_CPU), requests.get("cpu").getAmount());
assertEquals(String.valueOf(TOTAL_PROCESS_MEMORY), requests.get("memory").getAmount());
final Map<String, Quantity> limits = resourceRequirements.getLimits();
assertEquals(Double.toString(TASK_MANAGER_CPU * TASK_MANAGER_CPU_LIMIT_FACTOR), limits.get("cpu").getAmount());
assertEquals(Integer.toString((int) (TOTAL_PROCESS_MEMORY * TASK_MANAGER_MEMORY_LIMIT_FACTOR)), limits.get("memory").getAmount());
}
use of io.fabric8.kubernetes.api.model.ResourceRequirements in project flink by apache.
the class InitTaskManagerDecoratorTest method testExternalResourceInResourceRequirements.
@Test
public void testExternalResourceInResourceRequirements() {
final ResourceRequirements resourceRequirements = this.resultMainContainer.getResources();
final Map<String, Quantity> requests = resourceRequirements.getRequests();
assertEquals(Long.toString(RESOURCE_AMOUNT), requests.get(RESOURCE_CONFIG_KEY).getAmount());
final Map<String, Quantity> limits = resourceRequirements.getLimits();
assertEquals(Long.toString(RESOURCE_AMOUNT), limits.get(RESOURCE_CONFIG_KEY).getAmount());
}
use of io.fabric8.kubernetes.api.model.ResourceRequirements in project flink by apache.
the class InitJobManagerDecoratorTest method testMainContainerResourceRequirements.
@Test
public void testMainContainerResourceRequirements() {
final ResourceRequirements resourceRequirements = this.resultMainContainer.getResources();
final Map<String, Quantity> requests = resourceRequirements.getRequests();
assertEquals(Double.toString(JOB_MANAGER_CPU), requests.get("cpu").getAmount());
assertEquals(String.valueOf(JOB_MANAGER_MEMORY), requests.get("memory").getAmount());
final Map<String, Quantity> limits = resourceRequirements.getLimits();
assertEquals(Double.toString(JOB_MANAGER_CPU * JOB_MANAGER_CPU_LIMIT_FACTOR), limits.get("cpu").getAmount());
assertEquals(Integer.toString((int) (JOB_MANAGER_MEMORY * JOB_MANAGER_MEMORY_LIMIT_FACTOR)), limits.get("memory").getAmount());
}
use of io.fabric8.kubernetes.api.model.ResourceRequirements in project flink by apache.
the class DecoratorWithPodTemplateTestBase method testMainContainerResourceRequirementsMerging.
@Test
public void testMainContainerResourceRequirementsMerging() {
final ResourceRequirements resourceRequirements = this.resultPod.getMainContainer().getResources();
final Map<String, Quantity> requests = resourceRequirements.getRequests();
assertThat(requests.get("cpu").getAmount(), is(String.valueOf(RESOURCE_CPU)));
assertThat(requests.get("memory").getAmount(), is(String.valueOf(RESOURCE_MEMORY)));
assertThat(requests.get("ephemeral-storage").getAmount(), is("256"));
final Map<String, Quantity> limits = resourceRequirements.getLimits();
assertThat(limits.get("cpu").getAmount(), is(String.valueOf(RESOURCE_CPU)));
assertThat(limits.get("memory").getAmount(), is(String.valueOf(RESOURCE_MEMORY)));
assertThat(limits.get("ephemeral-storage").getAmount(), is("256"));
}
Aggregations