diff --git a/apis/management.cattle.io/v3/rke_types.go b/apis/management.cattle.io/v3/rke_types.go index 1b15a256..4d49a5af 100644 --- a/apis/management.cattle.io/v3/rke_types.go +++ b/apis/management.cattle.io/v3/rke_types.go @@ -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 { diff --git a/apis/management.cattle.io/v3/zz_generated_deepcopy.go b/apis/management.cattle.io/v3/zz_generated_deepcopy.go index 8fbb31c6..115e0d9d 100644 --- a/apis/management.cattle.io/v3/zz_generated_deepcopy.go +++ b/apis/management.cattle.io/v3/zz_generated_deepcopy.go @@ -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 } diff --git a/client/management/v3/zz_generated_etcd_service.go b/client/management/v3/zz_generated_etcd_service.go index d4f9f6bd..4badd1cd 100644 --- a/client/management/v3/zz_generated_etcd_service.go +++ b/client/management/v3/zz_generated_etcd_service.go @@ -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"` } diff --git a/client/management/v3/zz_generated_kube_apiservice.go b/client/management/v3/zz_generated_kube_apiservice.go index 903f1870..0465cf71 100644 --- a/client/management/v3/zz_generated_kube_apiservice.go +++ b/client/management/v3/zz_generated_kube_apiservice.go @@ -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"` } diff --git a/client/management/v3/zz_generated_kube_controller_service.go b/client/management/v3/zz_generated_kube_controller_service.go index fb5281ed..f2c9a0bc 100644 --- a/client/management/v3/zz_generated_kube_controller_service.go +++ b/client/management/v3/zz_generated_kube_controller_service.go @@ -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"` } diff --git a/client/management/v3/zz_generated_kubelet_service.go b/client/management/v3/zz_generated_kubelet_service.go index 6a39355f..af7a11ef 100644 --- a/client/management/v3/zz_generated_kubelet_service.go +++ b/client/management/v3/zz_generated_kubelet_service.go @@ -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"` } diff --git a/client/management/v3/zz_generated_kubeproxy_service.go b/client/management/v3/zz_generated_kubeproxy_service.go index ea19f9b9..c57c6d6c 100644 --- a/client/management/v3/zz_generated_kubeproxy_service.go +++ b/client/management/v3/zz_generated_kubeproxy_service.go @@ -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"` } diff --git a/client/management/v3/zz_generated_rancher_kubernetes_engine_config.go b/client/management/v3/zz_generated_rancher_kubernetes_engine_config.go index 4ccfa15c..e0b98766 100644 --- a/client/management/v3/zz_generated_rancher_kubernetes_engine_config.go +++ b/client/management/v3/zz_generated_rancher_kubernetes_engine_config.go @@ -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"` } diff --git a/client/management/v3/zz_generated_scheduler_service.go b/client/management/v3/zz_generated_scheduler_service.go index 651890b1..1bfad7c0 100644 --- a/client/management/v3/zz_generated_scheduler_service.go +++ b/client/management/v3/zz_generated_scheduler_service.go @@ -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"` } diff --git a/go.mod b/go.mod index c4c0a8f8..c1cdb037 100644 --- a/go.mod +++ b/go.mod @@ -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 diff --git a/go.sum b/go.sum index ac706b18..ad1395a3 100644 --- a/go.sum +++ b/go.sum @@ -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=