X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/5763409818cd2ab68c0f59b6a97d0c3df090907f..8cd08f2ce640e0b1967db489d29e3761ac63f0d7:/sdk/go/arvados/config.go diff --git a/sdk/go/arvados/config.go b/sdk/go/arvados/config.go index 817f5b7a69..9dc9e17dd8 100644 --- a/sdk/go/arvados/config.go +++ b/sdk/go/arvados/config.go @@ -17,9 +17,8 @@ import ( var DefaultConfigFile = func() string { if path := os.Getenv("ARVADOS_CONFIG"); path != "" { return path - } else { - return "/etc/arvados/config.yml" } + return "/etc/arvados/config.yml" }() type Config struct { @@ -50,12 +49,12 @@ func (sc *Config) GetCluster(clusterID string) (*Cluster, error) { } } } - if cc, ok := sc.Clusters[clusterID]; !ok { + cc, ok := sc.Clusters[clusterID] + if !ok { return nil, fmt.Errorf("cluster %q is not configured", clusterID) - } else { - cc.ClusterID = clusterID - return &cc, nil } + cc.ClusterID = clusterID + return &cc, nil } type WebDAVCacheConfig struct { @@ -87,7 +86,6 @@ type Cluster struct { MaxKeepBlobBuffers int MaxRequestAmplification int MaxRequestSize int - RailsSessionSecretToken string RequestTimeout Duration SendTimeout Duration WebsocketClientEventQueue int @@ -121,11 +119,13 @@ type Cluster struct { TrashSweepInterval Duration TrustAllContent bool ForwardSlashNameSubstitution string + S3FolderObjects bool BlobMissingReport string BalancePeriod Duration BalanceCollectionBatch int BalanceCollectionBuffers int + BalanceTimeout Duration WebDAVCache WebDAVCacheConfig } @@ -150,16 +150,39 @@ type Cluster struct { EmailAttribute string UsernameAttribute string } - GoogleClientID string - GoogleClientSecret string - GoogleAlternateEmailAddresses bool - PAM bool - PAMService string - PAMDefaultEmailDomain string - ProviderAppID string - ProviderAppSecret string - LoginCluster string - RemoteTokenRefresh Duration + Google struct { + Enable bool + ClientID string + ClientSecret string + AlternateEmailAddresses bool + } + OpenIDConnect struct { + Enable bool + Issuer string + ClientID string + ClientSecret string + EmailClaim string + EmailVerifiedClaim string + UsernameClaim string + } + PAM struct { + Enable bool + Service string + DefaultEmailDomain string + } + SSO struct { + Enable bool + ProviderAppID string + ProviderAppSecret string + } + Test struct { + Enable bool + Users map[string]TestUser + } + LoginCluster string + RemoteTokenRefresh Duration + TokenLifetime Duration + TrustedClients map[string]struct{} } Mail struct { MailchimpAPIKey string @@ -196,6 +219,7 @@ type Cluster struct { UserNotifierEmailFrom string UserProfileNotificationAddress string PreferDomainForUsername string + UserSetupMailText string } Volumes map[string]Volume Workbench struct { @@ -236,6 +260,7 @@ type Cluster struct { InactivePageHTML string SSHHelpPageHTML string SSHHelpHostSuffix string + IdleTimeout Duration } ForceLegacyAPI14 bool @@ -251,12 +276,15 @@ type Volume struct { } type S3VolumeDriverParameters struct { + IAMRole string AccessKey string SecretKey string Endpoint string Region string Bucket string LocationConstraint bool + V2Signature bool + UseAWSS3v2Driver bool IndexPageSize int ConnectTimeout Duration ReadTimeout Duration @@ -293,7 +321,6 @@ type Services struct { Keepbalance Service Keepproxy Service Keepstore Service - Nodemanager Service RailsAPI Service SSO Service WebDAVDownload Service @@ -309,6 +336,11 @@ type Service struct { ExternalURL URL } +type TestUser struct { + Email string + Password string +} + // URL is a url.URL that is also usable as a JSON key/value. type URL url.URL @@ -318,6 +350,10 @@ func (su *URL) UnmarshalText(text []byte) error { u, err := url.Parse(string(text)) if err == nil { *su = URL(*u) + if su.Path == "" && su.Host != "" { + // http://example really means http://example/ + su.Path = "/" + } } return err } @@ -412,23 +448,25 @@ type ContainersConfig struct { type CloudVMsConfig struct { Enable bool - BootProbeCommand string - DeployRunnerBinary string - ImageID string - MaxCloudOpsPerSecond int - MaxProbesPerSecond int - PollInterval Duration - ProbeInterval Duration - SSHPort string - SyncInterval Duration - TimeoutBooting Duration - TimeoutIdle Duration - TimeoutProbe Duration - TimeoutShutdown Duration - TimeoutSignal Duration - TimeoutTERM Duration - ResourceTags map[string]string - TagKeyPrefix string + BootProbeCommand string + DeployRunnerBinary string + ImageID string + MaxCloudOpsPerSecond int + MaxProbesPerSecond int + MaxConcurrentInstanceCreateOps int + PollInterval Duration + ProbeInterval Duration + SSHPort string + SyncInterval Duration + TimeoutBooting Duration + TimeoutIdle Duration + TimeoutProbe Duration + TimeoutShutdown Duration + TimeoutSignal Duration + TimeoutStaleRunLock Duration + TimeoutTERM Duration + ResourceTags map[string]string + TagKeyPrefix string Driver string DriverParameters json.RawMessage @@ -528,7 +566,7 @@ func (ss *StringSet) UnmarshalJSON(data []byte) error { return err } *ss = make(map[string]struct{}, len(hash)) - for t, _ := range hash { + for t := range hash { (*ss)[t] = struct{}{} } @@ -542,7 +580,6 @@ const ( ServiceNameController ServiceName = "arvados-controller" ServiceNameDispatchCloud ServiceName = "arvados-dispatch-cloud" ServiceNameHealth ServiceName = "arvados-health" - ServiceNameNodemanager ServiceName = "arvados-node-manager" ServiceNameWorkbench1 ServiceName = "arvados-workbench1" ServiceNameWorkbench2 ServiceName = "arvados-workbench2" ServiceNameWebsocket ServiceName = "arvados-ws" @@ -560,7 +597,6 @@ func (svcs Services) Map() map[ServiceName]Service { ServiceNameController: svcs.Controller, ServiceNameDispatchCloud: svcs.DispatchCloud, ServiceNameHealth: svcs.Health, - ServiceNameNodemanager: svcs.Nodemanager, ServiceNameWorkbench1: svcs.Workbench1, ServiceNameWorkbench2: svcs.Workbench2, ServiceNameWebsocket: svcs.Websocket,