/** * 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.camel.component.docker; import java.util.HashMap; import java.util.Map; /** * Operations the Docker Component supports */ public enum DockerOperation { /** * Events * */ EVENTS("events", false, true, false, DockerConstants.DOCKER_INITIAL_RANGE, Long.class), /** * Stats * */ STATS("stats", false, true, false, DockerConstants.DOCKER_CONTAINER_ID, Long.class), /** * General * */ AUTH("auth", false, true, false, DockerConstants.DOCKER_USERNAME, String.class, DockerConstants.DOCKER_PASSWORD, String.class, DockerConstants.DOCKER_EMAIL, String.class, DockerConstants.DOCKER_SERVER_ADDRESS, String.class), INFO("info", false, true, false), PING("ping", false, true, false), VERSION("version", false, true, false), /** * Images * */ BUILD_IMAGE("imagebuild", false, true, true, DockerConstants.DOCKER_NO_CACHE, Boolean.class, DockerConstants.DOCKER_REMOVE, Boolean.class, DockerConstants.DOCKER_QUIET, Boolean.class), CREATE_IMAGE("imagecreate", false, true, false, DockerConstants.DOCKER_REPOSITORY, String.class), INSPECT_IMAGE("imageinspect", false, true, false, DockerConstants.DOCKER_IMAGE_ID, String.class, DockerConstants.DOCKER_NO_PRUNE, Boolean.class, DockerConstants.DOCKER_FORCE, Boolean.class), LIST_IMAGES("imagelist", false, true, false, DockerConstants.DOCKER_FILTER, String.class, DockerConstants.DOCKER_SHOW_ALL, Boolean.class), PULL_IMAGE("imagepull", false, true, true, DockerConstants.DOCKER_REGISTRY, String.class, DockerConstants.DOCKER_TAG, String.class, DockerConstants.DOCKER_REPOSITORY, String.class), PUSH_IMAGE("imagepush", false, true, true, DockerConstants.DOCKER_NAME, String.class, DockerConstants.DOCKER_TAG, String.class), REMOVE_IMAGE("imageremove", false, true, false, DockerConstants.DOCKER_IMAGE_ID, String.class, DockerConstants.DOCKER_FORCE, Boolean.class, DockerConstants.DOCKER_NO_PRUNE, String.class), SEARCH_IMAGES("imagesearch", false, true, false, DockerConstants.DOCKER_TERM, String.class), TAG_IMAGE("imagetag", false, true, false, DockerConstants.DOCKER_FORCE, Boolean.class, DockerConstants.DOCKER_IMAGE_ID, String.class, DockerConstants.DOCKER_REPOSITORY, String.class), /** * Container * */ ATTACH_CONTAINER("containerattach", false, true, true, DockerConstants.DOCKER_CONTAINER_ID, String.class, DockerConstants.DOCKER_FOLLOW_STREAM, Boolean.class, DockerConstants.DOCKER_LOGS, Boolean.class, DockerConstants.DOCKER_STD_OUT, Boolean.class, DockerConstants.DOCKER_STD_ERR, Boolean.class, DockerConstants.DOCKER_TIMESTAMPS, Boolean.class), COMMIT_CONTAINER("containercommit", false, true, false, DockerConstants.DOCKER_ATTACH_STD_ERR, Boolean.class, DockerConstants.DOCKER_ATTACH_STD_IN, Boolean.class, DockerConstants.DOCKER_ATTACH_STD_OUT, Boolean.class, DockerConstants.DOCKER_AUTHOR, String.class, DockerConstants.DOCKER_CMD, String.class, DockerConstants.DOCKER_CONTAINER_ID, String.class, DockerConstants.DOCKER_DISABLE_NETWORK, String.class, DockerConstants.DOCKER_ENV, String.class, DockerConstants.DOCKER_EXPOSED_PORTS, String.class, DockerConstants.DOCKER_HOSTNAME, String.class, DockerConstants.DOCKER_MEMORY, Integer.class, DockerConstants.DOCKER_MEMORY_SWAP, Integer.class, DockerConstants.DOCKER_MESSAGE, String.class, DockerConstants.DOCKER_OPEN_STD_IN, Boolean.class, DockerConstants.DOCKER_PAUSE, Boolean.class, DockerConstants.DOCKER_PORT_SPECS, String.class, DockerConstants.DOCKER_REPOSITORY, String.class, DockerConstants.DOCKER_STD_IN_ONCE, Boolean.class, DockerConstants.DOCKER_TAG, String.class, DockerConstants.DOCKER_TTY, Boolean.class, DockerConstants.DOCKER_USER, String.class, DockerConstants.DOCKER_VOLUMES, String.class, DockerConstants.DOCKER_WORKING_DIR, String.class), COPY_FILE_CONTAINER("containercopyfile", false, true, false, DockerConstants.DOCKER_CONTAINER_ID, String.class, DockerConstants.DOCKER_HOST_PATH, String.class, DockerConstants.DOCKER_RESOURCE, String.class), CREATE_CONTAINER("containercreate", false, true, false, DockerConstants.DOCKER_ATTACH_STD_ERR, Boolean.class, DockerConstants.DOCKER_ATTACH_STD_IN, Boolean.class, DockerConstants.DOCKER_ATTACH_STD_OUT, Boolean.class, DockerConstants.DOCKER_CAP_ADD, String.class, DockerConstants.DOCKER_CAP_DROP, String.class, DockerConstants.DOCKER_CMD, String.class, DockerConstants.DOCKER_CPU_SHARES, Integer.class, DockerConstants.DOCKER_DISABLE_NETWORK, Boolean.class, DockerConstants.DOCKER_DNS, String.class, DockerConstants.DOCKER_DOMAIN_NAME, String.class, DockerConstants.DOCKER_ENTRYPOINT, String.class, DockerConstants.DOCKER_ENV, String.class, DockerConstants.DOCKER_EXPOSED_PORTS, String.class, DockerConstants.DOCKER_HOST_CONFIG, String.class, DockerConstants.DOCKER_HOSTNAME, String.class, DockerConstants.DOCKER_IMAGE, String.class, DockerConstants.DOCKER_NAME, String.class, DockerConstants.DOCKER_PORT_SPECS, String.class, DockerConstants.DOCKER_STD_IN_OPEN, Boolean.class, DockerConstants.DOCKER_STD_IN_ONCE, Boolean.class, DockerConstants.DOCKER_TTY, Boolean.class, DockerConstants.DOCKER_USER, String.class, DockerConstants.DOCKER_VOLUMES, String.class, DockerConstants.DOCKER_VOLUMES_FROM, String.class, DockerConstants.DOCKER_WORKING_DIR, String.class), DIFF_CONTAINER("containerdiff", false, true, false, DockerConstants.DOCKER_CONTAINER_ID, String.class), INSPECT_CONTAINER("inspectcontainer", false, true, false, DockerConstants.DOCKER_CONTAINER_ID, String.class), KILL_CONTAINER("containerkill", false, true, false, DockerConstants.DOCKER_CONTAINER_ID, String.class, DockerConstants.DOCKER_SIGNAL, String.class), LIST_CONTAINERS("containerlist", false, true, false, DockerConstants.DOCKER_BEFORE, String.class, DockerConstants.DOCKER_LIMIT, String.class, DockerConstants.DOCKER_SHOW_ALL, Boolean.class, DockerConstants.DOCKER_SHOW_SIZE, Boolean.class, DockerConstants.DOCKER_SINCE, String.class), LOG_CONTAINER("containerlog", false, true, true, DockerConstants.DOCKER_CONTAINER_ID, String.class, DockerConstants.DOCKER_FOLLOW_STREAM, Boolean.class, DockerConstants.DOCKER_STD_ERR, Boolean.class, DockerConstants.DOCKER_STD_OUT, Boolean.class, DockerConstants.DOCKER_TAIL, Integer.class, DockerConstants.DOCKER_TAIL_ALL, Boolean.class, DockerConstants.DOCKER_TIMESTAMPS, Boolean.class), PAUSE_CONTAINER("containerpause", false, true, false, DockerConstants.DOCKER_CONTAINER_ID, String.class), RESTART_CONTAINER("containerrestart", false, true, false, DockerConstants.DOCKER_CONTAINER_ID, String.class, DockerConstants.DOCKER_TIMEOUT, Integer.class), REMOVE_CONTAINER("containerremove", false, true, false, DockerConstants.DOCKER_CONTAINER_ID, String.class, DockerConstants.DOCKER_FORCE, Boolean.class, DockerConstants.DOCKER_REMOVE_VOLUMES, Boolean.class), START_CONTAINER("containerstart", false, true, false, DockerConstants.DOCKER_CONTAINER_ID, String.class), STOP_CONTAINER("containerstop", false, true, false, DockerConstants.DOCKER_CONTAINER_ID, String.class, DockerConstants.DOCKER_TIMEOUT, Integer.class), TOP_CONTAINER("containertop", false, true, false, DockerConstants.DOCKER_CONTAINER_ID, String.class, DockerConstants.DOCKER_PS_ARGS, String.class), UNPAUSE_CONTAINER("containerunpause", false, true, false, DockerConstants.DOCKER_CONTAINER_ID, String.class), WAIT_CONTAINER("containerwait", false, true, true, DockerConstants.DOCKER_CONTAINER_ID, String.class), /** * Exec * */ EXEC_CREATE("execcreate", false, true, false, DockerConstants.DOCKER_ATTACH_STD_ERR, Boolean.class, DockerConstants.DOCKER_ATTACH_STD_IN, Boolean.class, DockerConstants.DOCKER_ATTACH_STD_OUT, Boolean.class, DockerConstants.DOCKER_TTY, Boolean.class), EXEC_START("execstart", false, true, true, DockerConstants.DOCKER_DETACH, Boolean.class, DockerConstants.DOCKER_EXEC_ID, String.class, DockerConstants.DOCKER_TTY, Boolean.class); private String text; private boolean canConsume; private boolean canProduce; private boolean async; private Map<String, Class<?>> parameters; DockerOperation(String text, boolean canConsume, boolean canProduce, boolean async, Object... params) { this.text = text; this.canConsume = canConsume; this.canProduce = canProduce; this.async = async; parameters = new HashMap<String, Class<?>>(); if (params.length > 0) { if (params.length % 2 != 0) { throw new IllegalArgumentException("Invalid parameter list, " + "must be of the form 'String name1, Class class1, String name2, Class class2..."); } int nParameters = params.length / 2; for (int i = 0; i < nParameters; i++) { parameters.put((String) params[i * 2], (Class<?>) params[i * 2 + 1]); } } } @Override public String toString() { return text; } public boolean canConsume() { return canConsume; } public boolean canProduce() { return canProduce; } public boolean isAsync() { return async; } public Map<String, Class<?>> getParameters() { return parameters; } public static DockerOperation getDockerOperation(String name) { for (DockerOperation dockerOperation : DockerOperation.values()) { if (dockerOperation.toString().equals(name)) { return dockerOperation; } } return null; } }