github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/client/config/artifact.go (about)

     1  package config
     2  
     3  import (
     4  	"fmt"
     5  	"time"
     6  
     7  	"github.com/dustin/go-humanize"
     8  	"github.com/hashicorp/nomad/nomad/structs/config"
     9  )
    10  
    11  // ArtifactConfig is the internal readonly copy of the client agent's
    12  // ArtifactConfig.
    13  type ArtifactConfig struct {
    14  	HTTPReadTimeout time.Duration
    15  	HTTPMaxBytes    int64
    16  
    17  	GCSTimeout time.Duration
    18  	GitTimeout time.Duration
    19  	HgTimeout  time.Duration
    20  	S3Timeout  time.Duration
    21  
    22  	DisableFilesystemIsolation bool
    23  	SetEnvironmentVariables    string
    24  }
    25  
    26  // ArtifactConfigFromAgent creates a new internal readonly copy of the client
    27  // agent's ArtifactConfig. The config should have already been validated.
    28  func ArtifactConfigFromAgent(c *config.ArtifactConfig) (*ArtifactConfig, error) {
    29  	httpReadTimeout, err := time.ParseDuration(*c.HTTPReadTimeout)
    30  	if err != nil {
    31  		return nil, fmt.Errorf("error parsing HTTPReadTimeout: %w", err)
    32  	}
    33  
    34  	httpMaxSize, err := humanize.ParseBytes(*c.HTTPMaxSize)
    35  	if err != nil {
    36  		return nil, fmt.Errorf("error parsing HTTPMaxSize: %w", err)
    37  	}
    38  
    39  	gcsTimeout, err := time.ParseDuration(*c.GCSTimeout)
    40  	if err != nil {
    41  		return nil, fmt.Errorf("error parsing GCSTimeout: %w", err)
    42  	}
    43  
    44  	gitTimeout, err := time.ParseDuration(*c.GitTimeout)
    45  	if err != nil {
    46  		return nil, fmt.Errorf("error parsing GitTimeout: %w", err)
    47  	}
    48  
    49  	hgTimeout, err := time.ParseDuration(*c.HgTimeout)
    50  	if err != nil {
    51  		return nil, fmt.Errorf("error parsing HgTimeout: %w", err)
    52  	}
    53  
    54  	s3Timeout, err := time.ParseDuration(*c.S3Timeout)
    55  	if err != nil {
    56  		return nil, fmt.Errorf("error parsing S3Timeout: %w", err)
    57  	}
    58  
    59  	return &ArtifactConfig{
    60  		HTTPReadTimeout:            httpReadTimeout,
    61  		HTTPMaxBytes:               int64(httpMaxSize),
    62  		GCSTimeout:                 gcsTimeout,
    63  		GitTimeout:                 gitTimeout,
    64  		HgTimeout:                  hgTimeout,
    65  		S3Timeout:                  s3Timeout,
    66  		DisableFilesystemIsolation: *c.DisableFilesystemIsolation,
    67  		SetEnvironmentVariables:    *c.SetEnvironmentVariables,
    68  	}, nil
    69  }
    70  
    71  func (a *ArtifactConfig) Copy() *ArtifactConfig {
    72  	if a == nil {
    73  		return nil
    74  	}
    75  
    76  	newCopy := *a
    77  	return &newCopy
    78  }