1
0
mirror of https://github.com/rancher/types.git synced 2025-08-15 11:12:57 +00:00

Merge pull request #1174 from luthermonson/wins

win_ Params for RKE
This commit is contained in:
Luther Monson 2020-07-23 15:40:53 -07:00 committed by GitHub
commit ae84b42a47
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 125 additions and 49 deletions

View File

@ -46,6 +46,8 @@ type RancherKubernetesEngineConfig struct {
CloudProvider CloudProvider `yaml:"cloud_provider" json:"cloudProvider,omitempty"`
// kubernetes directory path
PrefixPath string `yaml:"prefix_path" json:"prefixPath,omitempty"`
// kubernetes directory path for windows
WindowsPrefixPath string `yaml:"win_prefix_path" json:"winPrefixPath,omitempty"`
// Timeout in seconds for status check on addon deployment jobs
AddonJobTimeout int `yaml:"addon_job_timeout" json:"addonJobTimeout,omitempty" norman:"default=30"`
// Bastion/Jump Host configuration
@ -363,6 +365,14 @@ type BaseService struct {
ExtraBinds []string `yaml:"extra_binds" json:"extraBinds,omitempty"`
// this is to provide extra env variable to the docker container running kubernetes service
ExtraEnv []string `yaml:"extra_env" json:"extraEnv,omitempty"`
// Windows nodes only of the same as the above
// Extra arguments that are added to the services
WindowsExtraArgs map[string]string `yaml:"win_extra_args" json:"winExtraArgs,omitempty"`
// Extra binds added to the nodes
WindowsExtraBinds []string `yaml:"win_extra_binds" json:"winExtraBinds,omitempty"`
// this is to provide extra env variable to the docker container running kubernetes service
WindowsExtraEnv []string `yaml:"win_extra_env" json:"winExtraEnv,omitempty"`
}
type NetworkConfig struct {

View File

@ -521,6 +521,23 @@ func (in *BaseService) DeepCopyInto(out *BaseService) {
*out = make([]string, len(*in))
copy(*out, *in)
}
if in.WindowsExtraArgs != nil {
in, out := &in.WindowsExtraArgs, &out.WindowsExtraArgs
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
}
if in.WindowsExtraBinds != nil {
in, out := &in.WindowsExtraBinds, &out.WindowsExtraBinds
*out = make([]string, len(*in))
copy(*out, *in)
}
if in.WindowsExtraEnv != nil {
in, out := &in.WindowsExtraEnv, &out.WindowsExtraEnv
*out = make([]string, len(*in))
copy(*out, *in)
}
return
}

View File

@ -1,38 +1,44 @@
package client
const (
ETCDServiceType = "etcdService"
ETCDServiceFieldBackupConfig = "backupConfig"
ETCDServiceFieldCACert = "caCert"
ETCDServiceFieldCert = "cert"
ETCDServiceFieldCreation = "creation"
ETCDServiceFieldExternalURLs = "externalUrls"
ETCDServiceFieldExtraArgs = "extraArgs"
ETCDServiceFieldExtraBinds = "extraBinds"
ETCDServiceFieldExtraEnv = "extraEnv"
ETCDServiceFieldGID = "gid"
ETCDServiceFieldImage = "image"
ETCDServiceFieldKey = "key"
ETCDServiceFieldPath = "path"
ETCDServiceFieldRetention = "retention"
ETCDServiceFieldSnapshot = "snapshot"
ETCDServiceFieldUID = "uid"
ETCDServiceType = "etcdService"
ETCDServiceFieldBackupConfig = "backupConfig"
ETCDServiceFieldCACert = "caCert"
ETCDServiceFieldCert = "cert"
ETCDServiceFieldCreation = "creation"
ETCDServiceFieldExternalURLs = "externalUrls"
ETCDServiceFieldExtraArgs = "extraArgs"
ETCDServiceFieldExtraBinds = "extraBinds"
ETCDServiceFieldExtraEnv = "extraEnv"
ETCDServiceFieldGID = "gid"
ETCDServiceFieldImage = "image"
ETCDServiceFieldKey = "key"
ETCDServiceFieldPath = "path"
ETCDServiceFieldRetention = "retention"
ETCDServiceFieldSnapshot = "snapshot"
ETCDServiceFieldUID = "uid"
ETCDServiceFieldWindowsExtraArgs = "winExtraArgs"
ETCDServiceFieldWindowsExtraBinds = "winExtraBinds"
ETCDServiceFieldWindowsExtraEnv = "winExtraEnv"
)
type ETCDService struct {
BackupConfig *BackupConfig `json:"backupConfig,omitempty" yaml:"backupConfig,omitempty"`
CACert string `json:"caCert,omitempty" yaml:"caCert,omitempty"`
Cert string `json:"cert,omitempty" yaml:"cert,omitempty"`
Creation string `json:"creation,omitempty" yaml:"creation,omitempty"`
ExternalURLs []string `json:"externalUrls,omitempty" yaml:"externalUrls,omitempty"`
ExtraArgs map[string]string `json:"extraArgs,omitempty" yaml:"extraArgs,omitempty"`
ExtraBinds []string `json:"extraBinds,omitempty" yaml:"extraBinds,omitempty"`
ExtraEnv []string `json:"extraEnv,omitempty" yaml:"extraEnv,omitempty"`
GID int64 `json:"gid,omitempty" yaml:"gid,omitempty"`
Image string `json:"image,omitempty" yaml:"image,omitempty"`
Key string `json:"key,omitempty" yaml:"key,omitempty"`
Path string `json:"path,omitempty" yaml:"path,omitempty"`
Retention string `json:"retention,omitempty" yaml:"retention,omitempty"`
Snapshot *bool `json:"snapshot,omitempty" yaml:"snapshot,omitempty"`
UID int64 `json:"uid,omitempty" yaml:"uid,omitempty"`
BackupConfig *BackupConfig `json:"backupConfig,omitempty" yaml:"backupConfig,omitempty"`
CACert string `json:"caCert,omitempty" yaml:"caCert,omitempty"`
Cert string `json:"cert,omitempty" yaml:"cert,omitempty"`
Creation string `json:"creation,omitempty" yaml:"creation,omitempty"`
ExternalURLs []string `json:"externalUrls,omitempty" yaml:"externalUrls,omitempty"`
ExtraArgs map[string]string `json:"extraArgs,omitempty" yaml:"extraArgs,omitempty"`
ExtraBinds []string `json:"extraBinds,omitempty" yaml:"extraBinds,omitempty"`
ExtraEnv []string `json:"extraEnv,omitempty" yaml:"extraEnv,omitempty"`
GID int64 `json:"gid,omitempty" yaml:"gid,omitempty"`
Image string `json:"image,omitempty" yaml:"image,omitempty"`
Key string `json:"key,omitempty" yaml:"key,omitempty"`
Path string `json:"path,omitempty" yaml:"path,omitempty"`
Retention string `json:"retention,omitempty" yaml:"retention,omitempty"`
Snapshot *bool `json:"snapshot,omitempty" yaml:"snapshot,omitempty"`
UID int64 `json:"uid,omitempty" yaml:"uid,omitempty"`
WindowsExtraArgs map[string]string `json:"winExtraArgs,omitempty" yaml:"winExtraArgs,omitempty"`
WindowsExtraBinds []string `json:"winExtraBinds,omitempty" yaml:"winExtraBinds,omitempty"`
WindowsExtraEnv []string `json:"winExtraEnv,omitempty" yaml:"winExtraEnv,omitempty"`
}

View File

@ -14,6 +14,9 @@ const (
KubeAPIServiceFieldSecretsEncryptionConfig = "secretsEncryptionConfig"
KubeAPIServiceFieldServiceClusterIPRange = "serviceClusterIpRange"
KubeAPIServiceFieldServiceNodePortRange = "serviceNodePortRange"
KubeAPIServiceFieldWindowsExtraArgs = "winExtraArgs"
KubeAPIServiceFieldWindowsExtraBinds = "winExtraBinds"
KubeAPIServiceFieldWindowsExtraEnv = "winExtraEnv"
)
type KubeAPIService struct {
@ -29,4 +32,7 @@ type KubeAPIService struct {
SecretsEncryptionConfig *SecretsEncryptionConfig `json:"secretsEncryptionConfig,omitempty" yaml:"secretsEncryptionConfig,omitempty"`
ServiceClusterIPRange string `json:"serviceClusterIpRange,omitempty" yaml:"serviceClusterIpRange,omitempty"`
ServiceNodePortRange string `json:"serviceNodePortRange,omitempty" yaml:"serviceNodePortRange,omitempty"`
WindowsExtraArgs map[string]string `json:"winExtraArgs,omitempty" yaml:"winExtraArgs,omitempty"`
WindowsExtraBinds []string `json:"winExtraBinds,omitempty" yaml:"winExtraBinds,omitempty"`
WindowsExtraEnv []string `json:"winExtraEnv,omitempty" yaml:"winExtraEnv,omitempty"`
}

View File

@ -8,6 +8,9 @@ const (
KubeControllerServiceFieldExtraEnv = "extraEnv"
KubeControllerServiceFieldImage = "image"
KubeControllerServiceFieldServiceClusterIPRange = "serviceClusterIpRange"
KubeControllerServiceFieldWindowsExtraArgs = "winExtraArgs"
KubeControllerServiceFieldWindowsExtraBinds = "winExtraBinds"
KubeControllerServiceFieldWindowsExtraEnv = "winExtraEnv"
)
type KubeControllerService struct {
@ -17,4 +20,7 @@ type KubeControllerService struct {
ExtraEnv []string `json:"extraEnv,omitempty" yaml:"extraEnv,omitempty"`
Image string `json:"image,omitempty" yaml:"image,omitempty"`
ServiceClusterIPRange string `json:"serviceClusterIpRange,omitempty" yaml:"serviceClusterIpRange,omitempty"`
WindowsExtraArgs map[string]string `json:"winExtraArgs,omitempty" yaml:"winExtraArgs,omitempty"`
WindowsExtraBinds []string `json:"winExtraBinds,omitempty" yaml:"winExtraBinds,omitempty"`
WindowsExtraEnv []string `json:"winExtraEnv,omitempty" yaml:"winExtraEnv,omitempty"`
}

View File

@ -11,6 +11,9 @@ const (
KubeletServiceFieldGenerateServingCertificate = "generateServingCertificate"
KubeletServiceFieldImage = "image"
KubeletServiceFieldInfraContainerImage = "infraContainerImage"
KubeletServiceFieldWindowsExtraArgs = "winExtraArgs"
KubeletServiceFieldWindowsExtraBinds = "winExtraBinds"
KubeletServiceFieldWindowsExtraEnv = "winExtraEnv"
)
type KubeletService struct {
@ -23,4 +26,7 @@ type KubeletService struct {
GenerateServingCertificate bool `json:"generateServingCertificate,omitempty" yaml:"generateServingCertificate,omitempty"`
Image string `json:"image,omitempty" yaml:"image,omitempty"`
InfraContainerImage string `json:"infraContainerImage,omitempty" yaml:"infraContainerImage,omitempty"`
WindowsExtraArgs map[string]string `json:"winExtraArgs,omitempty" yaml:"winExtraArgs,omitempty"`
WindowsExtraBinds []string `json:"winExtraBinds,omitempty" yaml:"winExtraBinds,omitempty"`
WindowsExtraEnv []string `json:"winExtraEnv,omitempty" yaml:"winExtraEnv,omitempty"`
}

View File

@ -1,16 +1,22 @@
package client
const (
KubeproxyServiceType = "kubeproxyService"
KubeproxyServiceFieldExtraArgs = "extraArgs"
KubeproxyServiceFieldExtraBinds = "extraBinds"
KubeproxyServiceFieldExtraEnv = "extraEnv"
KubeproxyServiceFieldImage = "image"
KubeproxyServiceType = "kubeproxyService"
KubeproxyServiceFieldExtraArgs = "extraArgs"
KubeproxyServiceFieldExtraBinds = "extraBinds"
KubeproxyServiceFieldExtraEnv = "extraEnv"
KubeproxyServiceFieldImage = "image"
KubeproxyServiceFieldWindowsExtraArgs = "winExtraArgs"
KubeproxyServiceFieldWindowsExtraBinds = "winExtraBinds"
KubeproxyServiceFieldWindowsExtraEnv = "winExtraEnv"
)
type KubeproxyService struct {
ExtraArgs map[string]string `json:"extraArgs,omitempty" yaml:"extraArgs,omitempty"`
ExtraBinds []string `json:"extraBinds,omitempty" yaml:"extraBinds,omitempty"`
ExtraEnv []string `json:"extraEnv,omitempty" yaml:"extraEnv,omitempty"`
Image string `json:"image,omitempty" yaml:"image,omitempty"`
ExtraArgs map[string]string `json:"extraArgs,omitempty" yaml:"extraArgs,omitempty"`
ExtraBinds []string `json:"extraBinds,omitempty" yaml:"extraBinds,omitempty"`
ExtraEnv []string `json:"extraEnv,omitempty" yaml:"extraEnv,omitempty"`
Image string `json:"image,omitempty" yaml:"image,omitempty"`
WindowsExtraArgs map[string]string `json:"winExtraArgs,omitempty" yaml:"winExtraArgs,omitempty"`
WindowsExtraBinds []string `json:"winExtraBinds,omitempty" yaml:"winExtraBinds,omitempty"`
WindowsExtraEnv []string `json:"winExtraEnv,omitempty" yaml:"winExtraEnv,omitempty"`
}

View File

@ -26,6 +26,7 @@ const (
RancherKubernetesEngineConfigFieldServices = "services"
RancherKubernetesEngineConfigFieldUpgradeStrategy = "upgradeStrategy"
RancherKubernetesEngineConfigFieldVersion = "kubernetesVersion"
RancherKubernetesEngineConfigFieldWindowsPrefixPath = "winPrefixPath"
)
type RancherKubernetesEngineConfig struct {
@ -53,4 +54,5 @@ type RancherKubernetesEngineConfig struct {
Services *RKEConfigServices `json:"services,omitempty" yaml:"services,omitempty"`
UpgradeStrategy *NodeUpgradeStrategy `json:"upgradeStrategy,omitempty" yaml:"upgradeStrategy,omitempty"`
Version string `json:"kubernetesVersion,omitempty" yaml:"kubernetesVersion,omitempty"`
WindowsPrefixPath string `json:"winPrefixPath,omitempty" yaml:"winPrefixPath,omitempty"`
}

View File

@ -1,16 +1,22 @@
package client
const (
SchedulerServiceType = "schedulerService"
SchedulerServiceFieldExtraArgs = "extraArgs"
SchedulerServiceFieldExtraBinds = "extraBinds"
SchedulerServiceFieldExtraEnv = "extraEnv"
SchedulerServiceFieldImage = "image"
SchedulerServiceType = "schedulerService"
SchedulerServiceFieldExtraArgs = "extraArgs"
SchedulerServiceFieldExtraBinds = "extraBinds"
SchedulerServiceFieldExtraEnv = "extraEnv"
SchedulerServiceFieldImage = "image"
SchedulerServiceFieldWindowsExtraArgs = "winExtraArgs"
SchedulerServiceFieldWindowsExtraBinds = "winExtraBinds"
SchedulerServiceFieldWindowsExtraEnv = "winExtraEnv"
)
type SchedulerService struct {
ExtraArgs map[string]string `json:"extraArgs,omitempty" yaml:"extraArgs,omitempty"`
ExtraBinds []string `json:"extraBinds,omitempty" yaml:"extraBinds,omitempty"`
ExtraEnv []string `json:"extraEnv,omitempty" yaml:"extraEnv,omitempty"`
Image string `json:"image,omitempty" yaml:"image,omitempty"`
ExtraArgs map[string]string `json:"extraArgs,omitempty" yaml:"extraArgs,omitempty"`
ExtraBinds []string `json:"extraBinds,omitempty" yaml:"extraBinds,omitempty"`
ExtraEnv []string `json:"extraEnv,omitempty" yaml:"extraEnv,omitempty"`
Image string `json:"image,omitempty" yaml:"image,omitempty"`
WindowsExtraArgs map[string]string `json:"winExtraArgs,omitempty" yaml:"winExtraArgs,omitempty"`
WindowsExtraBinds []string `json:"winExtraBinds,omitempty" yaml:"winExtraBinds,omitempty"`
WindowsExtraEnv []string `json:"winExtraEnv,omitempty" yaml:"winExtraEnv,omitempty"`
}

1
go.mod
View File

@ -16,6 +16,7 @@ require (
github.com/rancher/wrangler v0.5.4-0.20200520040055-b8d49179cfc8
github.com/rancher/wrangler-api v0.5.1-0.20200326194427-c13310506d04
github.com/sirupsen/logrus v1.4.2
golang.org/x/tools v0.0.0-20200624223020-7a9acb0a45bb // indirect
k8s.io/api v0.18.0
k8s.io/apiextensions-apiserver v0.18.0
k8s.io/apimachinery v0.18.0

10
go.sum
View File

@ -605,6 +605,7 @@ github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18/go.mod h1:UETIi67q
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg=
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
go.elastic.co/apm v1.5.0/go.mod h1:OdB9sPtM6Vt7oz3VXt7+KR96i9li74qrxBGHTQygFvk=
go.elastic.co/apm/module/apmhttp v1.5.0/go.mod h1:1FbmNuyD3ddauwzgVwFB0fqY6KbZt3JkV187tGCYYhY=
go.elastic.co/apm/module/apmot v1.5.0/go.mod h1:d2KYwhJParTpyw2WnTNy8geNlHKKFX+4oK3YLlsesWE=
@ -642,6 +643,7 @@ golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8 h1:1wopBVtVdWnn03fZelqdXT
golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191112222119-e1110fd1c708 h1:pXVtWnwHkrWD9ru3sDxY/qFK/bfc0egRovX91EjWjf4=
golang.org/x/crypto v0.0.0-20191112222119-e1110fd1c708/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975 h1:/Tl7pH94bvbAAHBdZJT947M/+gp0+CqQXDtMRC0fseo=
@ -666,6 +668,8 @@ golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
golang.org/x/mod v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@ -701,6 +705,8 @@ golang.org/x/net v0.0.0-20191004110552-13f9640d40b9 h1:rjwSpXsdiK0dV8/Naq3kAw9ym
golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20191112182307-2180aed22343 h1:00ohfJ4K98s3m6BGUoBd8nyfp4Yl0GoIKvw5abItTjI=
golang.org/x/net v0.0.0-20191112182307-2180aed22343/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b h1:0mm1VjtFUOIlE1SbDlwjYaDxZVDP2S5ou6y0gSgXHu8=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0=
@ -804,7 +810,11 @@ golang.org/x/tools v0.0.0-20191111182352-50fa39b762bc/go.mod h1:b+2E5dAYhXwXZwtn
golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2 h1:EtTFh6h4SAKemS+CURDMTDIANuduG5zKEXShyy18bGA=
golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200624223020-7a9acb0a45bb h1:NyaeMQ3XiyZSnTS7YjPk1ksNbe4EUlrse3jBvmVU2l8=
golang.org/x/tools v0.0.0-20200624223020-7a9acb0a45bb/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0=