/******************************************************************************* * Copyright (c) 2015 Red Hat, Inc. Distributed under license by Red Hat, Inc. * All rights reserved. This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, and is * available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: Red Hat, Inc. ******************************************************************************/ package com.openshift.restclient.model; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Set; import com.openshift.restclient.images.DockerImageURI; import com.openshift.restclient.model.volume.IVolumeSource; /** * @author Jeff Cantrill */ public interface IReplicationController extends IResource{ static final String DEPLOYMENT_PHASE = "openshift.io/deployment.phase"; /** * Set an environment variable to the given name and * value on the first container in the list of containers * * @param name * @param value */ void setEnvironmentVariable(String name, String value); /** * Set an environment variable to the given name and * value on the given container. Returns silently * if the containerName is not found * * @param containerName * @param name * @param value */ void setEnvironmentVariable(String containerName, String name, String value); /** * Removes an environment variable with the given name. * Returns silently if the name is not found * * @throws IllegalArgumentException if name is null * * @param name */ public void removeEnvironmentVariable(String name); /** * Removes an environment variable with the given name and * value on the given container. Returns silently * if the containerName or the name is not found * * @throws IllegalArgumentException if name is null * * @param containerName * @param name */ public void removeEnvironmentVariable(String containerName, String name); /** * Return the list of env vars of the first container * @return */ Collection<IEnvironmentVariable> getEnvironmentVariables(); /** * Return the list of env vars for the given container or an empty list * if the container is not found * @param containerName * @return */ Collection<IEnvironmentVariable> getEnvironmentVariables(String containerName); /** * Returns the desired number of replicas * @return */ int getDesiredReplicaCount(); int getReplicas(); void setReplicas(int count); /** * Sets a new desired number of replicas * @param new number of replicas */ void setDesiredReplicaCount(int numOfReplicas); /** * Returns the current number of replicas * @return */ int getCurrentReplicaCount(); /** * Returns the selector used by the controller * @return */ Map<String, String> getReplicaSelector(); /** * Set the selector using the map of values * @param selector */ void setReplicaSelector(Map<String, String> selector); void setReplicaSelector(String key, String value); /** * Retrieves the list of images deployed in the * pod containers from this controller * @return */ Collection<String> getImages(); /** * Add a container to the pod that will be spun up as * part of this deployment. * * @param name the name of the container * @param tag the docker uri * @param containerPorts the container ports * @param volumes the set of emptyDir volumes to add to the config */ IContainer addContainer(String name, DockerImageURI tag, Set<IPort> containerPorts, Map<String, String> envVars, List<String> volumes); /** * Add a container to the pod that will be spun up as * part of this deployment, defaulting the name to the image name * * @param tag the docker uri * @param containerPorts the container ports */ IContainer addContainer(DockerImageURI tag, Set<IPort> containerPorts, Map<String, String> envVars); /** * Add a container with the given name * @param name * @return */ IContainer addContainer(String name); /** * Retrieve a container by name or null if it is not found * @param name * @return the container or null if not found */ IContainer getContainer(String name); /** * Retrieve the containers defined in spec * @param name * @return collection of containers or empty collection */ Collection<IContainer> getContainers(); /** * Returns the labels for the template in this replication controller * @return */ Map<String, String> getTemplateLabels(); /** * Add or update a label to the template spec; * @param key * @param value */ void addTemplateLabel(String key, String value); /** * The volumes associated with the pod spec * @return */ Set<IVolumeSource> getVolumes(); /** * Adds a volume to the pod spec. If a volume with the same name already exists, the volume is not added. * * @param volumeSource The volume to add to the pod spec */ void addVolume(IVolumeSource volumeSource); /** * Add a volume source of the given type with the given name. Unimplemented types * will return a generic volumesource impl * * @param volumetype * @param name * @return */ <T extends IVolumeSource> T addVolume(String volumetype, String name); /** * Sets the volumes associated with the pod spec. Existing volumes will be overwritten. * * @param volumes The volumes to assign to the pod spec. */ void setVolumes(Set<IVolumeSource> volumes); void setContainers(Collection<IContainer> containers); /** * Sets the service account to run this replication controller under. * * @param volumes The service account to assign to the spec. */ void setServiceAccountName(String serviceAccount); /** * Retrieves the service account used by the controller * @return */ String getServiceAccountName(); }