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 }