blob: 34b50a85a2edd5dcdcb3f8eb169cebe89c93746a [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.heron.scheduler.kubernetes;
import org.apache.heron.spi.common.Config;
import org.apache.heron.spi.common.Context;
public final class KubernetesContext extends Context {
public static final String HERON_EXECUTOR_DOCKER_IMAGE = "heron.executor.docker.image";
public static final String HERON_KUBERNETES_SCHEDULER_URI = "heron.kubernetes.scheduler.uri";
public static final String HERON_KUBERNETES_SCHEDULER_NAMESPACE =
"heron.kubernetes.scheduler.namespace";
public static final String HERON_KUBERNETES_SCHEDULER_IMAGE_PULL_POLICY =
"heron.kubernetes.scheduler.imagePullPolicy";
public static final String HERON_KUBERNETES_VOLUME_NAME = "heron.kubernetes.volume.name";
public static final String HERON_KUBERNETES_VOLUME_TYPE = "heron.kubernetes.volume.type";
// HostPath volume keys
// https://kubernetes.io/docs/concepts/storage/volumes/#hostpath
public static final String HERON_KUBERNETES_VOLUME_HOSTPATH_PATH =
"heron.kubernetes.volume.hostPath.path";
// nfs volume keys
// https://kubernetes.io/docs/concepts/storage/volumes/#nfs
public static final String HERON_KUBERNETES_VOLUME_NFS_PATH =
"heron.kubernetes.volume.nfs.path";
public static final String HERON_KUBERNETES_VOLUME_NFS_SERVER =
"heron.kubernetes.volume.nfs.server";
// awsElasticBlockStore volume keys
// https://kubernetes.io/docs/concepts/storage/volumes/#awselasticblockstore
public static final String HERON_KUBERNETES_VOLUME_AWS_EBS_VOLUME_ID =
"heron.kubernetes.volume.awsElasticBlockStore.volumeID";
public static final String HERON_KUBERNETES_VOLUME_AWS_EBS_FS_TYPE =
"heron.kubernetes.volume.awsElasticBlockStore.fsType";
// container mount volume mount keys
public static final String HERON_KUBERNETES_CONTAINER_VOLUME_MOUNT_NAME =
"heron.kubernetes.container.volumeMount.name";
public static final String HERON_KUBERNETES_CONTAINER_VOLUME_MOUNT_PATH =
"heron.kubernetes.container.volumeMount.path";
private KubernetesContext() {
}
public static String getExecutorDockerImage(Config config) {
return config.getStringValue(HERON_EXECUTOR_DOCKER_IMAGE);
}
public static String getSchedulerURI(Config config) {
return config.getStringValue(HERON_KUBERNETES_SCHEDULER_URI);
}
public static String getKubernetesNamespace(Config config) {
return config.getStringValue(HERON_KUBERNETES_SCHEDULER_NAMESPACE);
}
public static String getKubernetesImagePullPolicy(Config config) {
return config.getStringValue(HERON_KUBERNETES_SCHEDULER_IMAGE_PULL_POLICY);
}
public static boolean hasImagePullPolicy(Config config) {
final String imagePullPolicy = getKubernetesImagePullPolicy(config);
return isNotEmpty(imagePullPolicy);
}
static String getVolumeType(Config config) {
return config.getStringValue(HERON_KUBERNETES_VOLUME_TYPE);
}
static String getVolumeName(Config config) {
return config.getStringValue(HERON_KUBERNETES_VOLUME_NAME);
}
static String getHostPathVolumePath(Config config) {
return config.getStringValue(HERON_KUBERNETES_VOLUME_HOSTPATH_PATH);
}
static String getNfsVolumePath(Config config) {
return config.getStringValue(HERON_KUBERNETES_VOLUME_NFS_PATH);
}
static String getNfsServer(Config config) {
return config.getStringValue(HERON_KUBERNETES_VOLUME_NFS_SERVER);
}
static String getAwsEbsVolumeId(Config config) {
return config.getStringValue(HERON_KUBERNETES_VOLUME_AWS_EBS_VOLUME_ID);
}
static String getAwsEbsFsType(Config config) {
return config.getStringValue(HERON_KUBERNETES_VOLUME_AWS_EBS_FS_TYPE);
}
static boolean hasVolume(Config config) {
return isNotEmpty(getVolumeType(config));
}
static String getContainerVolumeName(Config config) {
return config.getStringValue(HERON_KUBERNETES_CONTAINER_VOLUME_MOUNT_NAME);
}
static String getContainerVolumeMountPath(Config config) {
return config.getStringValue(HERON_KUBERNETES_CONTAINER_VOLUME_MOUNT_PATH);
}
public static boolean hasContainerVolume(Config config) {
final String name = getContainerVolumeName(config);
final String path = getContainerVolumeMountPath(config);
return isNotEmpty(name) && isNotEmpty(path);
}
private static boolean isNotEmpty(String s) {
return s != null && !s.isEmpty();
}
}