X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/0b90a6ee86fdfa5b2b8cb51d66d70cef00dc6800..a136c1ca723537feab8efb40de4fe68c099a175b:/sdk/go/arvados/config.go diff --git a/sdk/go/arvados/config.go b/sdk/go/arvados/config.go index e04849bb89..02043fb6d1 100644 --- a/sdk/go/arvados/config.go +++ b/sdk/go/arvados/config.go @@ -57,6 +57,15 @@ func (sc *Config) GetCluster(clusterID string) (*Cluster, error) { } } +type WebDAVCacheConfig struct { + TTL Duration + UUIDTTL Duration + MaxBlockEntries int + MaxCollectionEntries int + MaxCollectionBytes int64 + MaxPermissionEntries int + MaxUUIDEntries int +} type Cluster struct { ClusterID string `json:"-"` ManagementToken string @@ -69,7 +78,7 @@ type Cluster struct { API struct { AsyncPermissionsUpdateInterval Duration - DisabledAPIs map[string]struct{} + DisabledAPIs StringSet MaxIndexDatabaseRead int MaxItemsPerResponse int MaxRequestAmplification int @@ -83,7 +92,7 @@ type Cluster struct { AuditLogs struct { MaxAge Duration MaxDeleteBatch int - UnloggedAttributes map[string]struct{} + UnloggedAttributes StringSet } Collections struct { BlobSigning bool @@ -100,6 +109,8 @@ type Cluster struct { PreserveVersionIfIdle Duration TrashSweepInterval Duration TrustAllContent bool + + WebDAVCache WebDAVCacheConfig } Git struct { Repositories string @@ -135,10 +146,10 @@ type Cluster struct { AutoSetupNewUsers bool AutoSetupNewUsersWithRepository bool AutoSetupNewUsersWithVmUUID string - AutoSetupUsernameBlacklist map[string]struct{} + AutoSetupUsernameBlacklist StringSet EmailSubjectPrefix string - NewInactiveUserNotificationRecipients map[string]struct{} - NewUserNotificationRecipients map[string]struct{} + NewInactiveUserNotificationRecipients StringSet + NewUserNotificationRecipients StringSet NewUsersAreActive bool UserNotifierEmailFrom string UserProfileNotificationAddress string @@ -148,7 +159,7 @@ type Cluster struct { APIClientConnectTimeout Duration APIClientReceiveTimeout Duration APIResponseCompression bool - ApplicationMimetypesWithViewIcon map[string]struct{} + ApplicationMimetypesWithViewIcon StringSet ArvadosDocsite string ArvadosPublicDataDocURL string DefaultOpenIdPrefix string @@ -267,17 +278,12 @@ type ContainersConfig struct { MinRetryPeriod Duration ReserveExtraRAM ByteSize StaleLockTimeout Duration - SupportedDockerImageFormats map[string]struct{} + SupportedDockerImageFormats StringSet UsePreemptibleInstances bool JobsAPI struct { - Enable string - GitInternalDir string - DefaultDockerImage string - CrunchJobWrapper string - CrunchJobUser string - CrunchRefreshTrigger string - ReuseJobIfOutputsDiffer bool + Enable string + GitInternalDir string } Logging struct { MaxAge Duration @@ -292,15 +298,16 @@ type ContainersConfig struct { LogUpdateSize ByteSize } SLURM struct { - PrioritySpread int64 - SbatchArgumentsList []string - Managed struct { + PrioritySpread int64 + SbatchArgumentsList []string + SbatchEnvironmentVariables map[string]string + Managed struct { DNSServerConfDir string DNSServerConfTemplate string DNSServerReloadCommand string DNSServerUpdateCommand string ComputeNodeDomain string - ComputeNodeNameservers map[string]struct{} + ComputeNodeNameservers StringSet AssignNodeHostname string } } @@ -388,6 +395,40 @@ func (it *InstanceTypeMap) UnmarshalJSON(data []byte) error { return nil } +type StringSet map[string]struct{} + +// UnmarshalJSON handles old config files that provide an array of +// instance types instead of a hash. +func (ss *StringSet) UnmarshalJSON(data []byte) error { + if len(data) > 0 && data[0] == '[' { + var arr []string + err := json.Unmarshal(data, &arr) + if err != nil { + return err + } + if len(arr) == 0 { + *ss = nil + return nil + } + *ss = make(map[string]struct{}, len(arr)) + for _, t := range arr { + (*ss)[t] = struct{}{} + } + return nil + } + var hash map[string]struct{} + err := json.Unmarshal(data, &hash) + if err != nil { + return err + } + *ss = make(map[string]struct{}, len(hash)) + for t, _ := range hash { + (*ss)[t] = struct{}{} + } + + return nil +} + type ServiceName string const (