2022-12-07 22:02:25 +00:00
|
|
|
package getter
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/hashicorp/go-hclog"
|
|
|
|
"github.com/hashicorp/nomad/client/config"
|
|
|
|
"github.com/hashicorp/nomad/client/interfaces"
|
|
|
|
"github.com/hashicorp/nomad/nomad/structs"
|
|
|
|
)
|
|
|
|
|
|
|
|
// New creates a Sandbox with the given ArtifactConfig.
|
|
|
|
func New(ac *config.ArtifactConfig, logger hclog.Logger) *Sandbox {
|
|
|
|
return &Sandbox{
|
|
|
|
logger: logger.Named("artifact"),
|
|
|
|
ac: ac,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// A Sandbox is used to download artifacts.
|
|
|
|
type Sandbox struct {
|
|
|
|
logger hclog.Logger
|
|
|
|
ac *config.ArtifactConfig
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *Sandbox) Get(env interfaces.EnvReplacer, artifact *structs.TaskArtifact) error {
|
|
|
|
s.logger.Debug("get", "source", artifact.GetterSource, "destination", artifact.RelativeDest)
|
|
|
|
|
|
|
|
source, err := getURL(env, artifact)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
destination, err := getDestination(env, artifact)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
mode := getMode(artifact)
|
|
|
|
headers := getHeaders(env, artifact)
|
|
|
|
dir := getTaskDir(env)
|
|
|
|
|
|
|
|
params := ¶meters{
|
2022-12-08 18:29:23 +00:00
|
|
|
// downloader configuration
|
|
|
|
HTTPReadTimeout: s.ac.HTTPReadTimeout,
|
|
|
|
HTTPMaxBytes: s.ac.HTTPMaxBytes,
|
|
|
|
GCSTimeout: s.ac.GCSTimeout,
|
|
|
|
GitTimeout: s.ac.GitTimeout,
|
|
|
|
HgTimeout: s.ac.HgTimeout,
|
|
|
|
S3Timeout: s.ac.S3Timeout,
|
|
|
|
DisableFilesystemIsolation: s.ac.DisableFilesystemIsolation,
|
|
|
|
|
|
|
|
// artifact configuration
|
|
|
|
Mode: mode,
|
|
|
|
Source: source,
|
|
|
|
Destination: destination,
|
|
|
|
Headers: headers,
|
|
|
|
|
|
|
|
// task environment
|
|
|
|
TaskDir: dir,
|
2022-12-07 22:02:25 +00:00
|
|
|
}
|
|
|
|
|
2022-12-08 18:29:23 +00:00
|
|
|
if err = s.runCmd(params); err != nil {
|
2022-12-07 22:02:25 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|