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

de.gesellix.docker.client.volume.ManageVolumeClient.groovy Maven / Gradle / Ivy

package de.gesellix.docker.client.volume

import de.gesellix.docker.client.EngineResponseContent
import de.gesellix.docker.remote.api.EngineApiClient
import de.gesellix.docker.remote.api.Volume
import de.gesellix.docker.remote.api.VolumeConfig
import de.gesellix.docker.remote.api.VolumeListResponse
import de.gesellix.docker.remote.api.VolumePruneResponse
import de.gesellix.util.QueryUtil
import groovy.util.logging.Slf4j

@Slf4j
class ManageVolumeClient implements ManageVolume {

  private EngineApiClient client
  private QueryUtil queryUtil

  ManageVolumeClient(EngineApiClient client) {
    this.client = client
    this.queryUtil = new QueryUtil()
  }

  @Override
  EngineResponseContent volumes(Map query) {
    log.info("docker volume ls")
    Map actualQuery = [:]
    if (query) {
      actualQuery.putAll(query)
    }
    queryUtil.jsonEncodeQueryParameter(actualQuery, "filters")
    return volumes(actualQuery.filters as String)
  }

  @Override
  EngineResponseContent volumes(String filters = null) {
    log.info("docker volume ls")
    VolumeListResponse volumeList = client.getVolumeApi().volumeList(filters)
    return new EngineResponseContent(volumeList)
  }

  @Override
  EngineResponseContent inspectVolume(String name) {
    log.info("docker volume inspect")
    Volume volumeInspect = client.getVolumeApi().volumeInspect(name)
    return new EngineResponseContent(volumeInspect)
  }

  @Override
  EngineResponseContent createVolume(Map config) {
    log.info("docker volume create")
    return createVolume(new VolumeConfig(config?.Name as String, config?.Driver as String, config?.DriverOpts as Map, config?.Labels as Map))
  }

  @Override
  EngineResponseContent createVolume(VolumeConfig volumeConfig = new VolumeConfig()) {
    log.info("docker volume create")
    Volume volume = client.getVolumeApi().volumeCreate(volumeConfig)
    return new EngineResponseContent(volume)
  }

  @Override
  void rmVolume(String name) {
    log.info("docker volume rm")
    client.getVolumeApi().volumeDelete(name, null)
  }

  @Override
  EngineResponseContent pruneVolumes(Map query) {
    log.info("docker volume prune")
    Map actualQuery = [:]
    if (query) {
      actualQuery.putAll(query)
    }
    queryUtil.jsonEncodeQueryParameter(actualQuery, "filters")
    return pruneVolumes(actualQuery.filters as String)
  }

  @Override
  EngineResponseContent pruneVolumes(String filters = null) {
    log.info("docker volume prune")
    VolumePruneResponse pruneResponse = client.getVolumeApi().volumePrune(filters)
    return new EngineResponseContent(pruneResponse)
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy