X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/3e7a408158d3e9e9edf084c250a2c8bfa0e73743..f0cc5e25d9f8b93405994f86f6eb74250622056f:/sdk/go/arvados/config.go diff --git a/sdk/go/arvados/config.go b/sdk/go/arvados/config.go index a1fc2e89f4..677706c082 100644 --- a/sdk/go/arvados/config.go +++ b/sdk/go/arvados/config.go @@ -5,6 +5,7 @@ package arvados import ( + "crypto/tls" "encoding/json" "errors" "fmt" @@ -112,6 +113,7 @@ type Cluster struct { FreezeProjectRequiresDescription bool FreezeProjectRequiresProperties StringSet UnfreezeProjectRequiresAdmin bool + LockBeforeUpdate bool } AuditLogs struct { MaxAge Duration @@ -162,6 +164,7 @@ type Cluster struct { URL URL StartTLS bool InsecureTLS bool + MinTLSVersion TLSVersion StripDomain string AppendDomain string SearchAttribute string @@ -200,11 +203,12 @@ type Cluster struct { Enable bool Users map[string]TestUser } - LoginCluster string - RemoteTokenRefresh Duration - TokenLifetime Duration - TrustedClients map[string]struct{} - IssueTrustedTokens bool + LoginCluster string + RemoteTokenRefresh Duration + TokenLifetime Duration + TrustedClients map[URL]struct{} + TrustPrivateNetworks bool + IssueTrustedTokens bool } Mail struct { MailchimpAPIKey string @@ -248,6 +252,7 @@ type Cluster struct { PreferDomainForUsername string UserSetupMailText string RoleGroupsVisibleToAll bool + CanCreateRoleGroups bool ActivityLoggingPeriod Duration } StorageClasses map[string]StorageClassConfig @@ -291,6 +296,7 @@ type Cluster struct { SSHHelpPageHTML string SSHHelpHostSuffix string IdleTimeout Duration + BannerURL string } } @@ -394,13 +400,58 @@ func (su *URL) UnmarshalText(text []byte) error { } func (su URL) MarshalText() ([]byte, error) { - return []byte(fmt.Sprintf("%s", (*url.URL)(&su).String())), nil + return []byte(su.String()), nil } func (su URL) String() string { return (*url.URL)(&su).String() } +type TLSVersion uint16 + +func (v TLSVersion) MarshalText() ([]byte, error) { + switch v { + case 0: + return []byte{}, nil + case tls.VersionTLS10: + return []byte("1.0"), nil + case tls.VersionTLS11: + return []byte("1.1"), nil + case tls.VersionTLS12: + return []byte("1.2"), nil + case tls.VersionTLS13: + return []byte("1.3"), nil + default: + return nil, fmt.Errorf("unsupported TLSVersion %x", v) + } +} + +func (v *TLSVersion) UnmarshalJSON(text []byte) error { + if len(text) > 0 && text[0] == '"' { + var s string + err := json.Unmarshal(text, &s) + if err != nil { + return err + } + text = []byte(s) + } + switch string(text) { + case "": + *v = 0 + case "1.0": + *v = tls.VersionTLS10 + case "1.1": + *v = tls.VersionTLS11 + case "1.2": + *v = tls.VersionTLS12 + case "1.3": + *v = tls.VersionTLS13 + default: + return fmt.Errorf("unsupported TLSVersion %q", text) + } + return nil +} + type ServiceInstance struct { ListenURL URL Rendezvous string `json:",omitempty"` @@ -447,7 +498,6 @@ type ContainersConfig struct { DefaultKeepCacheRAM ByteSize DispatchPrivateKey string LogReuseDecisions bool - MaxComputeVMs int MaxDispatchAttempts int MaxRetryAttempts int MinRetryPeriod Duration @@ -466,6 +516,7 @@ type ContainersConfig struct { } Logging struct { MaxAge Duration + SweepInterval Duration LogBytesPerEvent int LogSecondsBetweenEvents Duration LogThrottlePeriod Duration @@ -510,6 +561,7 @@ type CloudVMsConfig struct { MaxCloudOpsPerSecond int MaxProbesPerSecond int MaxConcurrentInstanceCreateOps int + MaxInstances int PollInterval Duration ProbeInterval Duration SSHPort string @@ -533,9 +585,11 @@ type InstanceTypeMap map[string]InstanceType var errDuplicateInstanceTypeName = errors.New("duplicate instance type name") // UnmarshalJSON does special handling of InstanceTypes: -// * populate computed fields (Name and Scratch) -// * error out if InstancesTypes are populated as an array, which was -// deprecated in Arvados 1.2.0 +// +// - populate computed fields (Name and Scratch) +// +// - error out if InstancesTypes are populated as an array, which was +// deprecated in Arvados 1.2.0 func (it *InstanceTypeMap) UnmarshalJSON(data []byte) error { fixup := func(t InstanceType) (InstanceType, error) { if t.ProviderType == "" {