pkg/volume/docker_volume_helper.go (35 lines of code) (raw):
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
package volume
import (
"bytes"
"context"
"github.com/Azure/acr-builder/pkg/procmanager"
)
const (
// DockerVolumeHelperPrefix is a prefix for volumes.
DockerVolumeHelperPrefix = "acb_vol_"
)
// DockerVolumeHelper describes a Docker volume.
type DockerVolumeHelper struct {
Name string
procManager *procmanager.ProcManager
}
// NewDockerVolumeHelper creates a new DockerVolumeHelper.
func NewDockerVolumeHelper(name string, pm *procmanager.ProcManager) *DockerVolumeHelper {
return &DockerVolumeHelper{
Name: name,
procManager: pm,
}
}
// Create creates a Docker volume representing the DockerVolumeHelper.
func (v *DockerVolumeHelper) Create(ctx context.Context) (string, error) {
var buf bytes.Buffer
err := v.procManager.Run(ctx, v.getDockerCreateArgs(), nil, &buf, &buf, "")
return buf.String(), err
}
// Delete deletes the associated Docker volume.
func (v *DockerVolumeHelper) Delete(ctx context.Context) (string, error) {
var buf bytes.Buffer
err := v.procManager.Run(ctx, v.getDockerRmArgs(), nil, &buf, &buf, "")
return buf.String(), err
}
func (v *DockerVolumeHelper) getDockerCreateArgs() []string {
return []string{"docker", "volume", "create", "--name", v.Name}
}
func (v *DockerVolumeHelper) getDockerRmArgs() []string {
return []string{"docker", "volume", "rm", v.Name}
}