Skip to content

Commit 20c0003

Browse files
committed
merge main
2 parents bb8a857 + 92c509f commit 20c0003

File tree

36 files changed

+605
-447
lines changed

36 files changed

+605
-447
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ K0S_GO_VERSION = v1.29.13+k0s.0
1515
PREVIOUS_K0S_VERSION ?= v1.28.14+k0s.0-ec.0
1616
PREVIOUS_K0S_GO_VERSION ?= v1.28.14+k0s.0
1717
K0S_BINARY_SOURCE_OVERRIDE =
18-
TROUBLESHOOT_VERSION = v0.112.1
18+
TROUBLESHOOT_VERSION = v0.116.1
1919

2020
KOTS_VERSION = v$(shell awk '/^version/{print $$2}' pkg/addons/adminconsole/static/metadata.yaml | sed -E 's/([0-9]+\.[0-9]+\.[0-9]+).*/\1/')
2121
# When updating KOTS_BINARY_URL_OVERRIDE, also update the KOTS_VERSION above or

cmd/installer/cli/install.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,12 @@ func runInstall(ctx context.Context, name string, flags InstallCmdFlags, metrics
252252

253253
logrus.Debugf("configuring sysctl")
254254
if err := configutils.ConfigureSysctl(); err != nil {
255-
return fmt.Errorf("unable to configure sysctl: %w", err)
255+
logrus.Debugf("unable to configure sysctl: %v", err)
256+
}
257+
258+
logrus.Debugf("configuring kernel modules")
259+
if err := configutils.ConfigureKernelModules(); err != nil {
260+
logrus.Debugf("unable to configure kernel modules: %v", err)
256261
}
257262

258263
logrus.Debugf("configuring network manager")

cmd/installer/cli/install_runpreflights.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"fmt"
77

88
"github.com/replicatedhq/embedded-cluster/pkg/configutils"
9+
"github.com/replicatedhq/embedded-cluster/pkg/netutils"
910
"github.com/replicatedhq/embedded-cluster/pkg/preflights"
1011
"github.com/replicatedhq/embedded-cluster/pkg/runtimeconfig"
1112
"github.com/sirupsen/logrus"
@@ -57,8 +58,14 @@ func runInstallRunPreflights(ctx context.Context, name string, flags InstallCmdF
5758
return fmt.Errorf("unable to materialize files: %w", err)
5859
}
5960

61+
logrus.Debugf("configuring sysctl")
6062
if err := configutils.ConfigureSysctl(); err != nil {
61-
return fmt.Errorf("unable to configure sysctl: %w", err)
63+
logrus.Debugf("unable to configure sysctl: %v", err)
64+
}
65+
66+
logrus.Debugf("configuring kernel modules")
67+
if err := configutils.ConfigureKernelModules(); err != nil {
68+
logrus.Debugf("unable to configure kernel modules: %v", err)
6269
}
6370

6471
logrus.Debugf("running install preflights")
@@ -81,13 +88,19 @@ func runInstallPreflights(ctx context.Context, flags InstallCmdFlags, metricsRep
8188
proxyRegistryURL = fmt.Sprintf("https://%s", runtimeconfig.ProxyRegistryAddress)
8289
}
8390

91+
nodeIP, err := netutils.FirstValidAddress(flags.networkInterface)
92+
if err != nil {
93+
return fmt.Errorf("unable to find first valid address: %w", err)
94+
}
95+
8496
if err := preflights.PrepareAndRun(ctx, preflights.PrepareAndRunOptions{
8597
ReplicatedAPIURL: replicatedAPIURL,
8698
ProxyRegistryURL: proxyRegistryURL,
8799
Proxy: flags.proxy,
88100
PodCIDR: flags.cidrCfg.PodCIDR,
89101
ServiceCIDR: flags.cidrCfg.ServiceCIDR,
90102
GlobalCIDR: flags.cidrCfg.GlobalCIDR,
103+
NodeIP: nodeIP,
91104
PrivateCAs: flags.privateCAs,
92105
IsAirgap: flags.isAirgap,
93106
SkipHostPreflights: flags.skipHostPreflights,

cmd/installer/cli/join.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,12 @@ func runJoin(ctx context.Context, name string, flags JoinCmdFlags, jcmd *kotsadm
135135

136136
logrus.Debugf("configuring sysctl")
137137
if err := configutils.ConfigureSysctl(); err != nil {
138-
return fmt.Errorf("unable to configure sysctl: %w", err)
138+
logrus.Debugf("unable to configure sysctl: %v", err)
139+
}
140+
141+
logrus.Debugf("configuring kernel modules")
142+
if err := configutils.ConfigureKernelModules(); err != nil {
143+
logrus.Debugf("unable to configure kernel modules: %v", err)
139144
}
140145

141146
logrus.Debugf("configuring network manager")

cmd/installer/cli/join_runpreflights.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77

88
"github.com/replicatedhq/embedded-cluster/pkg/configutils"
99
"github.com/replicatedhq/embedded-cluster/pkg/kotsadm"
10+
"github.com/replicatedhq/embedded-cluster/pkg/netutils"
1011
"github.com/replicatedhq/embedded-cluster/pkg/preflights"
1112
"github.com/replicatedhq/embedded-cluster/pkg/runtimeconfig"
1213
"github.com/sirupsen/logrus"
@@ -63,7 +64,12 @@ func runJoinRunPreflights(ctx context.Context, name string, flags JoinCmdFlags,
6364

6465
logrus.Debugf("configuring sysctl")
6566
if err := configutils.ConfigureSysctl(); err != nil {
66-
return fmt.Errorf("unable to configure sysctl: %w", err)
67+
logrus.Debugf("unable to configure sysctl: %v", err)
68+
}
69+
70+
logrus.Debugf("configuring kernel modules")
71+
if err := configutils.ConfigureKernelModules(); err != nil {
72+
logrus.Debugf("unable to configure kernel modules: %v", err)
6773
}
6874

6975
cidrCfg, err := getJoinCIDRConfig(jcmd)
@@ -85,12 +91,18 @@ func runJoinRunPreflights(ctx context.Context, name string, flags JoinCmdFlags,
8591
}
8692

8793
func runJoinPreflights(ctx context.Context, jcmd *kotsadm.JoinCommandResponse, flags JoinCmdFlags, cidrCfg *CIDRConfig, metricsReported preflights.MetricsReporter) error {
94+
nodeIP, err := netutils.FirstValidAddress(flags.networkInterface)
95+
if err != nil {
96+
return fmt.Errorf("unable to find first valid address: %w", err)
97+
}
98+
8899
if err := preflights.PrepareAndRun(ctx, preflights.PrepareAndRunOptions{
89100
ReplicatedAPIURL: jcmd.InstallationSpec.MetricsBaseURL, // MetricsBaseURL is the replicated.app endpoint url
90101
ProxyRegistryURL: fmt.Sprintf("https://%s", runtimeconfig.ProxyRegistryAddress),
91102
Proxy: jcmd.InstallationSpec.Proxy,
92103
PodCIDR: cidrCfg.PodCIDR,
93104
ServiceCIDR: cidrCfg.ServiceCIDR,
105+
NodeIP: nodeIP,
94106
IsAirgap: flags.isAirgap,
95107
SkipHostPreflights: flags.skipHostPreflights,
96108
IgnoreHostPreflights: flags.ignoreHostPreflights,

cmd/installer/cli/restore.go

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -135,11 +135,6 @@ func runRestore(ctx context.Context, name string, flags InstallCmdFlags, s3Store
135135
}
136136
}
137137

138-
logrus.Debugf("configuring sysctl")
139-
if err := configutils.ConfigureSysctl(); err != nil {
140-
return fmt.Errorf("unable to configure sysctl: %w", err)
141-
}
142-
143138
logrus.Debugf("getting restore state")
144139
state := getECRestoreState(ctx)
145140
logrus.Debugf("restore state is: %q", state)
@@ -364,6 +359,16 @@ func runRestoreStepNew(ctx context.Context, name string, flags InstallCmdFlags,
364359
}
365360
}
366361

362+
logrus.Debugf("configuring sysctl")
363+
if err := configutils.ConfigureSysctl(); err != nil {
364+
logrus.Debugf("unable to configure sysctl: %v", err)
365+
}
366+
367+
logrus.Debugf("configuring kernel modules")
368+
if err := configutils.ConfigureKernelModules(); err != nil {
369+
logrus.Debugf("unable to configure kernel modules: %v", err)
370+
}
371+
367372
logrus.Debugf("configuring network manager")
368373
if err := configureNetworkManager(ctx); err != nil {
369374
return fmt.Errorf("unable to configure network manager: %w", err)

cmd/local-artifact-mirror/artifact.go

Lines changed: 12 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -2,132 +2,31 @@ package main
22

33
import (
44
"context"
5-
"crypto/tls"
6-
"encoding/json"
75
"fmt"
8-
"net/http"
96
"os"
107

11-
"github.com/sirupsen/logrus"
12-
"go.uber.org/multierr"
13-
corev1 "k8s.io/api/core/v1"
14-
"k8s.io/apimachinery/pkg/api/errors"
15-
"k8s.io/apimachinery/pkg/types"
16-
"oras.land/oras-go/v2"
17-
"oras.land/oras-go/v2/content/file"
18-
"oras.land/oras-go/v2/registry"
19-
"oras.land/oras-go/v2/registry/remote"
20-
"oras.land/oras-go/v2/registry/remote/auth"
21-
"oras.land/oras-go/v2/registry/remote/credentials"
8+
"github.com/replicatedhq/embedded-cluster/pkg/artifacts"
229
)
2310

24-
var (
25-
insecureTransport *http.Transport
26-
)
27-
28-
func init() {
29-
insecureTransport = http.DefaultTransport.(*http.Transport).Clone()
30-
insecureTransport.TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
31-
}
32-
33-
// DockerConfig represents the content of the '.dockerconfigjson' secret.
34-
type DockerConfig struct {
35-
Auths map[string]DockerConfigEntry `json:"auths"`
36-
}
37-
38-
// DockerConfigEntry represents the content of the '.dockerconfigjson' secret.
39-
type DockerConfigEntry struct {
40-
Username string `json:"username"`
41-
Password string `json:"password"`
42-
}
43-
44-
// registryAuth returns the authentication store to be used when reaching the
45-
// registry. The authentication store is read from the cluster secret named
46-
// 'registry-creds' in the 'kotsadm' namespace.
47-
func registryAuth(ctx context.Context) (credentials.Store, error) {
48-
nsn := types.NamespacedName{Name: "registry-creds", Namespace: "kotsadm"}
49-
var sct corev1.Secret
50-
if err := kubecli.Get(ctx, nsn, &sct); err != nil {
51-
if !errors.IsNotFound(err) {
52-
return nil, fmt.Errorf("unable to get secret: %w", err)
53-
}
54-
55-
// if we can't locate a secret then returns an empty credentials
56-
// store so we attempt to fetch the assets without auth.
57-
logrus.Infof("no registry auth found, trying anonymous access")
58-
return credentials.NewMemoryStore(), nil
59-
}
60-
61-
data, ok := sct.Data[".dockerconfigjson"]
62-
if !ok {
63-
return nil, fmt.Errorf("unable to find secret .dockerconfigjson")
64-
}
65-
66-
var cfg DockerConfig
67-
if err := json.Unmarshal(data, &cfg); err != nil {
68-
return nil, fmt.Errorf("unable to unmarshal secret: %w", err)
69-
}
70-
71-
creds := credentials.NewMemoryStore()
72-
for addr, entry := range cfg.Auths {
73-
creds.Put(ctx, addr, auth.Credential{
74-
Username: entry.Username,
75-
Password: entry.Password,
76-
})
77-
}
78-
return creds, nil
79-
}
80-
81-
// pullArtifact fetches an artifact from the registry pointed by 'from'. The artifact
82-
// is stored in a temporary directory and the path to this directory is returned.
83-
// Callers are responsible for removing the temporary directory when it is no longer
84-
// needed. In case of error, the temporary directory is removed here.
8511
func pullArtifact(ctx context.Context, from string) (string, error) {
86-
store, err := registryAuth(ctx)
12+
tmpdir, err := os.MkdirTemp("", "lam-artifact-*")
8713
if err != nil {
88-
return "", fmt.Errorf("unable to get registry auth: %w", err)
14+
return "", fmt.Errorf("create temp dir: %w", err)
8915
}
9016

91-
imgref, err := registry.ParseReference(from)
92-
if err != nil {
93-
return "", fmt.Errorf("unable to parse image reference: %w", err)
94-
}
95-
96-
tmpdir, err := os.MkdirTemp("", "embedded-cluster-artifact-*")
97-
if err != nil {
98-
return "", fmt.Errorf("unable to create temp dir: %w", err)
99-
}
100-
101-
repo, err := remote.NewRepository(from)
102-
if err != nil {
103-
return "", fmt.Errorf("unable to create repository: %w", err)
104-
}
105-
106-
fs, err := file.New(tmpdir)
107-
if err != nil {
108-
return "", fmt.Errorf("unable to create file store: %w", err)
109-
}
110-
defer fs.Close()
111-
112-
repo.Client = &auth.Client{
113-
Client: &http.Client{Transport: insecureTransport},
114-
Credential: store.Get,
115-
}
116-
117-
tag := imgref.Reference
118-
_, tlserr := oras.Copy(ctx, repo, tag, fs, tag, oras.DefaultCopyOptions)
119-
if tlserr == nil {
17+
opts := artifacts.PullOptions{}
18+
err = artifacts.Pull(ctx, kubecli, from, tmpdir, opts)
19+
if err == nil {
12020
return tmpdir, nil
12121
}
12222

12323
// if we fail to fetch the artifact using https we gonna try once more using plain
12424
// http as some versions of the registry were deployed without tls.
125-
repo.PlainHTTP = true
126-
logrus.Infof("unable to fetch artifact using tls, retrying with http")
127-
if _, err := oras.Copy(ctx, repo, tag, fs, tag, oras.DefaultCopyOptions); err != nil {
128-
os.RemoveAll(tmpdir)
129-
err = multierr.Combine(tlserr, err)
130-
return "", fmt.Errorf("unable to fetch artifacts with or without tls: %w", err)
25+
opts.PlainHTTP = true
26+
if err := artifacts.Pull(ctx, kubecli, from, tmpdir, opts); err == nil {
27+
return tmpdir, nil
13128
}
132-
return tmpdir, nil
29+
30+
os.RemoveAll(tmpdir)
31+
return "", fmt.Errorf("pull artifact: %w", err)
13332
}

go.mod

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ require (
3232
github.com/replicatedhq/embedded-cluster/kinds v0.0.0
3333
github.com/replicatedhq/embedded-cluster/utils v0.0.0
3434
github.com/replicatedhq/kotskinds v0.0.0-20240814191029-3f677ee409a0
35-
github.com/replicatedhq/troubleshoot v0.115.3
35+
github.com/replicatedhq/troubleshoot v0.116.1
3636
github.com/sirupsen/logrus v1.9.3
3737
github.com/spf13/cobra v1.8.1
3838
github.com/spf13/viper v1.19.0
@@ -110,7 +110,7 @@ require (
110110
github.com/cespare/xxhash/v2 v2.3.0 // indirect
111111
github.com/chai2010/gettext-go v1.0.2 // indirect
112112
github.com/chzyer/readline v1.5.1 // indirect
113-
github.com/cilium/ebpf v0.17.1 // indirect
113+
github.com/cilium/ebpf v0.17.2 // indirect
114114
github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 // indirect
115115
github.com/containerd/cgroups/v3 v3.0.5 // indirect
116116
github.com/containerd/containerd v1.7.24 // indirect
@@ -125,7 +125,7 @@ require (
125125
github.com/containers/storage v1.57.1 // indirect
126126
github.com/coreos/go-semver v0.3.1 // indirect
127127
github.com/cyphar/filepath-securejoin v0.3.6 // indirect
128-
github.com/distribution/distribution/v3 v3.0.0-rc.2 // indirect
128+
github.com/distribution/distribution/v3 v3.0.0-rc.3 // indirect
129129
github.com/docker/cli v27.5.1+incompatible // indirect
130130
github.com/docker/distribution v2.8.3+incompatible // indirect
131131
github.com/docker/docker v27.5.1+incompatible // indirect
@@ -271,7 +271,7 @@ require (
271271
go.opentelemetry.io/otel/sdk/metric v1.32.0 // indirect
272272
go.opentelemetry.io/otel/trace v1.34.0 // indirect
273273
golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67 // indirect
274-
golang.org/x/mod v0.22.0 // indirect
274+
golang.org/x/mod v0.23.0 // indirect
275275
golang.org/x/tools v0.28.0 // indirect
276276
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
277277
google.golang.org/api v0.197.0 // indirect
@@ -336,7 +336,7 @@ require (
336336
github.com/spf13/pflag v1.0.6
337337
github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect
338338
go.uber.org/zap v1.27.0 // indirect
339-
golang.org/x/net v0.34.0 // indirect
339+
golang.org/x/net v0.35.0 // indirect
340340
golang.org/x/oauth2 v0.25.0 // indirect
341341
golang.org/x/sys v0.30.0 // indirect
342342
golang.org/x/text v0.22.0 // indirect

go.sum

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -778,8 +778,8 @@ github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObk
778778
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
779779
github.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04=
780780
github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8=
781-
github.com/cilium/ebpf v0.17.1 h1:G8mzU81R2JA1nE5/8SRubzqvBMmAmri2VL8BIZPWvV0=
782-
github.com/cilium/ebpf v0.17.1/go.mod h1:vay2FaYSmIlv3r8dNACd4mW/OCaZLJKJOo+IHBvCIO8=
781+
github.com/cilium/ebpf v0.17.2 h1:IQTaTVu0vKA8WTemFuBnxW9YbAwMkJVKHsNHW4lHv/g=
782+
github.com/cilium/ebpf v0.17.2/go.mod h1:9X5VAsIOck/nCAp0+nCSVzub1Q7x+zKXXItTMYfNE+E=
783783
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
784784
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
785785
github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
@@ -841,8 +841,8 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1
841841
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
842842
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=
843843
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
844-
github.com/distribution/distribution/v3 v3.0.0-rc.2 h1:tTrzntanYMbd20SyvdeR83Ya1l/aBwDcA3NCIpmwemc=
845-
github.com/distribution/distribution/v3 v3.0.0-rc.2/go.mod h1:H2zIRRXS20ylnv2HTuKILAWuANjuA60GB7MLOsQag7Y=
844+
github.com/distribution/distribution/v3 v3.0.0-rc.3 h1:JRJso9IVLoooKX76oWR+DWCCdZlK5m4nRtDWvzB1ITg=
845+
github.com/distribution/distribution/v3 v3.0.0-rc.3/go.mod h1:offoOgrnYs+CFwis8nE0hyzYZqRCZj5EFc5kgfszwiE=
846846
github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk=
847847
github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
848848
github.com/docker/cli v27.5.1+incompatible h1:JB9cieUT9YNiMITtIsguaN55PLOHhBSz3LKVc6cqWaY=
@@ -1440,8 +1440,8 @@ github.com/redis/go-redis/v9 v9.5.2/go.mod h1:hdY0cQFCN4fnSYT6TkisLufl/4W5UIXyv0
14401440
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
14411441
github.com/replicatedhq/kotskinds v0.0.0-20240814191029-3f677ee409a0 h1:Gi+Fs6583v7GmgQKJyaZuBzcih0z5YXBREDQ8AWY2JM=
14421442
github.com/replicatedhq/kotskinds v0.0.0-20240814191029-3f677ee409a0/go.mod h1:QjhIUu3+OmHZ09u09j3FCoTt8F3BYtQglS+OLmftu9I=
1443-
github.com/replicatedhq/troubleshoot v0.115.3 h1:sBTfQbogY/HEvHuhx1MRJ3P8gJrtIIStCezsbzPAzRM=
1444-
github.com/replicatedhq/troubleshoot v0.115.3/go.mod h1:RoVEqBrZ1uyireINqk2NAM8qlf2Ui85JfgNhR1RjzTs=
1443+
github.com/replicatedhq/troubleshoot v0.116.1 h1:IrSSW/eyU0BbjgbSZcKF5W00WtO1z8jBT7pOal8L3Rk=
1444+
github.com/replicatedhq/troubleshoot v0.116.1/go.mod h1:FbVwjHSSUboCd3G1Vz0pUUDU2ux/rW5m/BpkTrf86rc=
14451445
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
14461446
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
14471447
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
@@ -1727,8 +1727,8 @@ golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
17271727
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
17281728
golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
17291729
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
1730-
golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4=
1731-
golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
1730+
golang.org/x/mod v0.23.0 h1:Zb7khfcRGKk+kqfxFaP5tZqCnDZMjC5VtUBs87Hr6QM=
1731+
golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
17321732
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
17331733
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
17341734
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -1795,8 +1795,9 @@ golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
17951795
golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
17961796
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
17971797
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
1798-
golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0=
17991798
golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k=
1799+
golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8=
1800+
golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk=
18001801
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
18011802
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
18021803
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=

0 commit comments

Comments
 (0)