package arvados
import (
+ "crypto/tls"
"encoding/json"
"errors"
"fmt"
MaxIndexDatabaseRead int
MaxItemsPerResponse int
MaxConcurrentRequests int
+ MaxQueuedRequests int
+ MaxQueueTimeForLockRequests Duration
+ LogCreateRequestFraction float64
MaxKeepBlobBuffers int
MaxRequestAmplification int
MaxRequestSize int
FreezeProjectRequiresDescription bool
FreezeProjectRequiresProperties StringSet
UnfreezeProjectRequiresAdmin bool
+ LockBeforeUpdate bool
}
AuditLogs struct {
MaxAge Duration
URL URL
StartTLS bool
InsecureTLS bool
+ MinTLSVersion TLSVersion
StripDomain string
AppendDomain string
SearchAttribute string
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
EmailFrom string
}
SystemLogs struct {
- LogLevel string
- Format string
- MaxRequestLogParamsSize int
+ LogLevel string
+ Format string
+ MaxRequestLogParamsSize int
+ RequestQueueDumpDirectory string
}
TLS struct {
Certificate string
PreferDomainForUsername string
UserSetupMailText string
RoleGroupsVisibleToAll bool
+ CanCreateRoleGroups bool
ActivityLoggingPeriod Duration
+ SyncIgnoredGroups []string
+ SyncRequiredGroups []string
+ SyncUserAccounts bool
+ SyncUserAPITokens bool
+ SyncUserGroups bool
+ SyncUserSSHKeys bool
}
StorageClasses map[string]StorageClassConfig
Volumes map[string]Volume
SSHHelpPageHTML string
SSHHelpHostSuffix string
IdleTimeout Duration
- BannerURL string
+ BannerUUID string
}
}
Bucket string
LocationConstraint bool
V2Signature bool
- UseAWSS3v2Driver bool
IndexPageSize int
ConnectTimeout Duration
ReadTimeout Duration
}
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"`
DefaultKeepCacheRAM ByteSize
DispatchPrivateKey string
LogReuseDecisions bool
- MaxComputeVMs int
MaxDispatchAttempts int
MaxRetryAttempts int
MinRetryPeriod Duration
SupportedDockerImageFormats StringSet
AlwaysUsePreemptibleInstances bool
PreemptiblePriceFactor float64
+ MaximumPriceFactor float64
RuntimeEngine string
LocalKeepBlobBuffersPerVCPU int
LocalKeepLogsToContainerLog string
}
Logging struct {
MaxAge Duration
+ SweepInterval Duration
LogBytesPerEvent int
LogSecondsBetweenEvents Duration
LogThrottlePeriod Duration
Enable bool
BootProbeCommand string
+ InstanceInitCommand string
DeployRunnerBinary string
+ DeployPublicKey bool
ImageID string
MaxCloudOpsPerSecond int
MaxProbesPerSecond int
MaxConcurrentInstanceCreateOps int
+ MaxInstances int
+ InitialQuotaEstimate int
+ SupervisorFraction float64
PollInterval Duration
ProbeInterval Duration
SSHPort string
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 == "" {