All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.gesellix.docker.client.config.ManageConfigClient.groovy Maven / Gradle / Ivy

package de.gesellix.docker.client.config

import de.gesellix.docker.client.DockerResponseHandler
import de.gesellix.docker.engine.EngineClient
import de.gesellix.docker.engine.EngineResponse
import de.gesellix.util.QueryUtil
import groovy.util.logging.Slf4j

@Slf4j
class ManageConfigClient implements ManageConfig {

  private EngineClient client
  private DockerResponseHandler responseHandler
  private QueryUtil queryUtil

  ManageConfigClient(EngineClient client, DockerResponseHandler responseHandler) {
    this.client = client
    this.responseHandler = responseHandler
    this.queryUtil = new QueryUtil()
  }

  @Override
  EngineResponse createConfig(String name, byte[] configData, Map labels = [:]) {
    log.info "docker config create"
    // TODO do we need to base64 encode the config data?
    def configConfig = [Name  : name,
                        Data  : configData,
                        Labels: labels]
    def response = client.post([path              : "/configs/create",
                                body              : configConfig,
                                requestContentType: "application/json"])
    responseHandler.ensureSuccessfulResponse(response, new IllegalStateException("docker config create failed"))
    return response
  }

  @Override
  EngineResponse inspectConfig(String configId) {
    log.info "docker config inspect"
    def response = client.get([path: "/configs/${configId}".toString()])
    responseHandler.ensureSuccessfulResponse(response, new IllegalStateException("docker config inspect failed"))
    return response
  }

  @Override
  EngineResponse configs(Map query = [:]) {
    log.info "docker config ls"
    def actualQuery = query ?: [:]
    queryUtil.jsonEncodeFilters(actualQuery)
    def response = client.get([path : "/configs",
                               query: actualQuery])
    responseHandler.ensureSuccessfulResponse(response, new IllegalStateException("docker config ls failed"))
    return response
  }

  @Override
  EngineResponse rmConfig(String configId) {
    log.info "docker config rm"
    def response = client.delete([path: "/configs/${configId}".toString()])
    responseHandler.ensureSuccessfulResponse(response, new IllegalStateException("docker config rm failed"))
    return response
  }

  @Override
  EngineResponse updateConfig(String configId, version, configSpec) {
    log.info "docker config update"
    def response = client.post([path              : "/configs/${configId}/update".toString(),
                                query             : [version: version],
                                body              : configSpec,
                                requestContentType: "application/json"])
    responseHandler.ensureSuccessfulResponse(response, new IllegalStateException("docker config update failed"))
    return response
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy