chore: bump runtime
Use new functions and methods from runtime module. Signed-off-by: Dmitriy Matrenichev <dmitry.matrenichev@siderolabs.com>
This commit is contained in:
parent
4f720d4653
commit
45e6e27af7
8
Makefile
8
Makefile
@ -19,17 +19,17 @@ EXTRAS ?= v1.5.0-alpha.0
|
||||
# renovate: datasource=github-tags depName=golang/go
|
||||
GO_VERSION ?= 1.20
|
||||
# renovate: datasource=go depName=golang.org/x/tools
|
||||
GOIMPORTS_VERSION ?= v0.7.0
|
||||
GOIMPORTS_VERSION ?= v0.9.1
|
||||
# renovate: datasource=go depName=mvdan.cc/gofumpt
|
||||
GOFUMPT_VERSION ?= v0.4.0
|
||||
GOFUMPT_VERSION ?= v0.5.0
|
||||
# renovate: datasource=go depName=github.com/golangci/golangci-lint
|
||||
GOLANGCILINT_VERSION ?= v1.52.2
|
||||
# renovate: datasource=go depName=golang.org/x/tools
|
||||
STRINGER_VERSION ?= v0.7.0
|
||||
STRINGER_VERSION ?= v0.9.1
|
||||
# renovate: datasource=go depName=github.com/alvaroloes/enumer
|
||||
ENUMER_VERSION ?= v1.1.2
|
||||
# renovate: datasource=go depName=k8s.io/code-generator
|
||||
DEEPCOPY_GEN_VERSION ?= v0.26.3
|
||||
DEEPCOPY_GEN_VERSION ?= v0.27.1
|
||||
# renovate: datasource=go depName=github.com/planetscale/vtprotobuf
|
||||
VTPROTOBUF_VERSION ?= v0.4.0
|
||||
# renovate: datasource=go depName=github.com/siderolabs/deep-copy
|
||||
|
@ -225,7 +225,7 @@ func completeResourceDefinition(withAliases bool) ([]string, cobra.ShellCompDire
|
||||
var result []string
|
||||
|
||||
if WithClientNoNodes(func(ctx context.Context, c *client.Client) error {
|
||||
items, err := safe.StateList[*meta.ResourceDefinition](ctx, c.COSI, resource.NewMetadata(meta.NamespaceName, meta.ResourceDefinitionType, "", resource.VersionUndefined))
|
||||
items, err := safe.StateListAll[*meta.ResourceDefinition](ctx, c.COSI)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -278,11 +278,11 @@ func completeResourceID(resourceType, namespace string) ([]string, cobra.ShellCo
|
||||
}
|
||||
|
||||
// CompleteNodes represents tab completion for `--nodes` argument.
|
||||
func CompleteNodes(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
|
||||
func CompleteNodes(*cobra.Command, []string, string) ([]string, cobra.ShellCompDirective) {
|
||||
var nodes []string
|
||||
|
||||
if WithClientNoNodes(func(ctx context.Context, c *client.Client) error {
|
||||
items, err := safe.StateList[*cluster.Member](ctx, c.COSI, resource.NewMetadata(cluster.NamespaceName, cluster.MemberType, "", resource.VersionUndefined))
|
||||
items, err := safe.StateListAll[*cluster.Member](ctx, c.COSI)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -11,7 +11,6 @@ import (
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/cosi-project/runtime/pkg/resource"
|
||||
"github.com/cosi-project/runtime/pkg/safe"
|
||||
"github.com/spf13/cobra"
|
||||
"google.golang.org/grpc/codes"
|
||||
@ -243,16 +242,12 @@ func buildClusterInfo() (cluster.Info, error) {
|
||||
var members []*clusterres.Member
|
||||
|
||||
err := WithClientNoNodes(func(ctx context.Context, c *client.Client) error {
|
||||
items, err := safe.StateList[*clusterres.Member](ctx, c.COSI, resource.NewMetadata(clusterres.NamespaceName, clusterres.MemberType, "", resource.VersionUndefined))
|
||||
items, err := safe.StateListAll[*clusterres.Member](ctx, c.COSI)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
it := safe.IteratorFromList(items)
|
||||
|
||||
for it.Next() {
|
||||
members = append(members, it.Value())
|
||||
}
|
||||
items.ForEach(func(item *clusterres.Member) { members = append(members, item) })
|
||||
|
||||
return nil
|
||||
})
|
||||
|
@ -13,6 +13,7 @@ import (
|
||||
|
||||
criconstants "github.com/containerd/containerd/pkg/cri/constants"
|
||||
"github.com/siderolabs/gen/maps"
|
||||
"github.com/siderolabs/gen/slices"
|
||||
"github.com/spf13/cobra"
|
||||
"google.golang.org/grpc"
|
||||
"google.golang.org/grpc/codes"
|
||||
@ -222,7 +223,7 @@ func getContainersFromNode(kubernetes bool) []string {
|
||||
}
|
||||
|
||||
func mergeSuggestions(a, b []string) []string {
|
||||
merged := append(append([]string(nil), a...), b...)
|
||||
merged := append(slices.Clone(a), b...)
|
||||
|
||||
sort.Strings(merged)
|
||||
|
||||
|
10
go.mod
10
go.mod
@ -32,7 +32,7 @@ require (
|
||||
github.com/BurntSushi/toml v1.2.1
|
||||
github.com/aws/aws-sdk-go v1.44.258
|
||||
github.com/beevik/ntp v1.0.0
|
||||
github.com/benbjohnson/clock v1.3.3
|
||||
github.com/benbjohnson/clock v1.3.4
|
||||
github.com/cenkalti/backoff/v4 v4.2.1
|
||||
github.com/containerd/cgroups v1.1.0
|
||||
github.com/containerd/containerd v1.6.20
|
||||
@ -41,7 +41,7 @@ require (
|
||||
github.com/containernetworking/plugins v1.2.0
|
||||
github.com/coreos/go-iptables v0.6.0
|
||||
github.com/coreos/go-semver v0.3.1
|
||||
github.com/cosi-project/runtime v0.3.0
|
||||
github.com/cosi-project/runtime v0.3.1-alpha.2.0.20230511165115-82b69d862a7a
|
||||
github.com/docker/distribution v2.8.1+incompatible
|
||||
github.com/docker/docker v23.0.5+incompatible
|
||||
github.com/docker/go-connections v0.4.0
|
||||
@ -93,7 +93,7 @@ require (
|
||||
github.com/siderolabs/crypto v0.4.0
|
||||
github.com/siderolabs/discovery-api v0.1.2
|
||||
github.com/siderolabs/discovery-client v0.1.4
|
||||
github.com/siderolabs/gen v0.4.4
|
||||
github.com/siderolabs/gen v0.4.5
|
||||
github.com/siderolabs/go-blockdevice v0.4.5
|
||||
github.com/siderolabs/go-circular v0.1.0
|
||||
github.com/siderolabs/go-cmd v0.1.1
|
||||
@ -128,7 +128,7 @@ require (
|
||||
go.etcd.io/etcd/etcdutl/v3 v3.5.8
|
||||
go.uber.org/zap v1.24.0
|
||||
go4.org/netipx v0.0.0-20230303233057-f1b76eb4bb35
|
||||
golang.org/x/net v0.9.0
|
||||
golang.org/x/net v0.10.0
|
||||
golang.org/x/sync v0.2.0
|
||||
golang.org/x/sys v0.8.0
|
||||
golang.org/x/term v0.8.0
|
||||
@ -213,7 +213,7 @@ require (
|
||||
github.com/josharian/intern v1.0.0 // indirect
|
||||
github.com/josharian/native v1.1.0 // indirect
|
||||
github.com/json-iterator/go v1.1.12 // indirect
|
||||
github.com/klauspost/compress v1.16.3 // indirect
|
||||
github.com/klauspost/compress v1.16.5 // indirect
|
||||
github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect
|
||||
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
|
||||
github.com/magiconair/properties v1.8.7 // indirect
|
||||
|
19
go.sum
19
go.sum
@ -266,8 +266,8 @@ github.com/aws/aws-sdk-go v1.44.258/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8
|
||||
github.com/beevik/ntp v1.0.0 h1:d0Lgy1xbNNqVyGfvg2Z96ItKcfyn3lzgus/oRoj9vnk=
|
||||
github.com/beevik/ntp v1.0.0/go.mod h1:JN7/74B0Z4GUGO/1aUeRI2adARlfJGUeaJb0y0Wvnf4=
|
||||
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
|
||||
github.com/benbjohnson/clock v1.3.3 h1:g+rSsSaAzhHJYcIQE78hJ3AhyjjtQvleKDjlhdBnIhc=
|
||||
github.com/benbjohnson/clock v1.3.3/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
|
||||
github.com/benbjohnson/clock v1.3.4 h1:wj3BFPrTw8yYgA1OlMqvUk95nc8OMv3cvBSF5erT2W4=
|
||||
github.com/benbjohnson/clock v1.3.4/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
|
||||
github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
||||
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
||||
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
|
||||
@ -455,8 +455,8 @@ github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8
|
||||
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
||||
github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
|
||||
github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
|
||||
github.com/cosi-project/runtime v0.3.0 h1:f8++A7HUu7pQv9G3IhQworfA4TFLdzGWl3W+jLQF3Oo=
|
||||
github.com/cosi-project/runtime v0.3.0/go.mod h1:BBFzt+ANf4BSlVGIbemVuz+Hql8F3tveWaWoErUi0lY=
|
||||
github.com/cosi-project/runtime v0.3.1-alpha.2.0.20230511165115-82b69d862a7a h1:H52VL6of0xYiEeM7HLBUnRCWKZzGKLV3QKLlTxM3iD4=
|
||||
github.com/cosi-project/runtime v0.3.1-alpha.2.0.20230511165115-82b69d862a7a/go.mod h1:g+0MZ3+2MIUkUL7JYTqgYeo5f4j7dAuGem6apjBJ1XU=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
|
||||
@ -845,8 +845,8 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o
|
||||
github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
|
||||
github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
|
||||
github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
|
||||
github.com/klauspost/compress v1.16.3 h1:XuJt9zzcnaz6a16/OU53ZjWp/v7/42WcR5t2a0PcNQY=
|
||||
github.com/klauspost/compress v1.16.3/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
|
||||
github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI=
|
||||
github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
|
||||
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||
github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||
github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||
@ -1138,8 +1138,8 @@ github.com/siderolabs/discovery-api v0.1.2 h1:PxJhl9s2qpPgjO65bgOdRovBvRg/RuZu93
|
||||
github.com/siderolabs/discovery-api v0.1.2/go.mod h1:JnJg4h1HbAhOazQl0lYHEjrg63rg/cf9r2te6/DqUxo=
|
||||
github.com/siderolabs/discovery-client v0.1.4 h1:5e/4tVsCMTdz1YlynI2ebhSJ9PHhmD3y+aGIsKjDlSA=
|
||||
github.com/siderolabs/discovery-client v0.1.4/go.mod h1:TmrvPz89JyhQT4vrIzAqx/v89zxikdYmhpC0GQsiH3Y=
|
||||
github.com/siderolabs/gen v0.4.4 h1:iShHEAfb3i9jaeDXjT11TepsjdgGoChBKbUuUz4CqnQ=
|
||||
github.com/siderolabs/gen v0.4.4/go.mod h1:wS8tFq7sn5vqKAuyS30vJUig3tX5v6q79VG4KfUnILM=
|
||||
github.com/siderolabs/gen v0.4.5 h1:rwXUVJlL7hYza1LrSVXfT905ZC9Rgei37jMKKs/+eP0=
|
||||
github.com/siderolabs/gen v0.4.5/go.mod h1:wS8tFq7sn5vqKAuyS30vJUig3tX5v6q79VG4KfUnILM=
|
||||
github.com/siderolabs/go-api-signature v0.2.3 h1:7jaZ2R1TiJ/xAsMCiFCm72n/PsnoVYt1R+Savbj7l/0=
|
||||
github.com/siderolabs/go-api-signature v0.2.3/go.mod h1:HmO3kVEXgrXYzj0tLHT9HAAu0I4grz2/dJwq8AdzE5Q=
|
||||
github.com/siderolabs/go-blockdevice v0.4.5 h1:NgpR9XTl/N7WeL59QHBsseDD0Nb8Y2nel+W3u7xHIvY=
|
||||
@ -1484,8 +1484,9 @@ golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfS
|
||||
golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
|
||||
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
|
||||
golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM=
|
||||
golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
|
||||
golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M=
|
||||
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
|
||||
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/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
|
@ -5,7 +5,7 @@ go 1.20
|
||||
require (
|
||||
github.com/fatih/structtag v1.2.0
|
||||
github.com/spf13/cobra v1.7.0
|
||||
golang.org/x/tools v0.8.0
|
||||
golang.org/x/tools v0.9.1
|
||||
gopkg.in/typ.v4 v4.3.0
|
||||
)
|
||||
|
||||
@ -13,5 +13,5 @@ require (
|
||||
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
||||
github.com/spf13/pflag v1.0.5 // indirect
|
||||
golang.org/x/mod v0.10.0 // indirect
|
||||
golang.org/x/sys v0.7.0 // indirect
|
||||
golang.org/x/sys v0.8.0 // indirect
|
||||
)
|
||||
|
@ -10,11 +10,11 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
||||
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||
golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk=
|
||||
golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o=
|
||||
golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU=
|
||||
golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/tools v0.8.0 h1:vSDcovVPld282ceKgDimkRSC8kpaH1dgyc9UMzlt84Y=
|
||||
golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4=
|
||||
golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI=
|
||||
golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=
|
||||
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/tools v0.9.1 h1:8WMNJAz3zrtPmnYC7ISf5dEn3MT0gY7jBJfw27yrrLo=
|
||||
golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/typ.v4 v4.3.0 h1:PEQtVIdhjOo4sOLnqpuEYrfSsul+a85EBGHS7tDJFuU=
|
||||
gopkg.in/typ.v4 v4.3.0/go.mod h1:wolXe8DlewxRCjA7SOiT3zjrZ0eQJZcr8cmV6bQWJUM=
|
||||
|
@ -12,7 +12,6 @@ import (
|
||||
"net/netip"
|
||||
"strings"
|
||||
|
||||
"github.com/cosi-project/runtime/pkg/resource"
|
||||
"github.com/cosi-project/runtime/pkg/safe"
|
||||
"github.com/siderolabs/gen/slices"
|
||||
"google.golang.org/grpc/metadata"
|
||||
@ -140,7 +139,7 @@ func buildClusterInfo(ctx context.Context,
|
||||
}
|
||||
|
||||
return &clusterState{
|
||||
nodeInfos: append(append([]cluster.NodeInfo(nil), controlPlaneNodeInfos...), workerNodeInfos...),
|
||||
nodeInfos: append(slices.Clone(controlPlaneNodeInfos), workerNodeInfos...),
|
||||
nodeInfosByType: map[machine.Type][]cluster.NodeInfo{
|
||||
machine.TypeControlPlane: controlPlaneNodeInfos,
|
||||
machine.TypeWorker: workerNodeInfos,
|
||||
@ -231,7 +230,7 @@ func k8sNodeToNodeInfo(node *corev1.Node) (*cluster.NodeInfo, error) {
|
||||
func getDiscoveryMemberList(ctx context.Context, runtime runtime.Runtime) ([]*clusterres.Member, error) {
|
||||
res := runtime.State().V1Alpha2().Resources()
|
||||
|
||||
list, err := safe.StateList[*clusterres.Member](ctx, res, resource.NewMetadata(clusterres.NamespaceName, clusterres.MemberType, "", resource.VersionUndefined))
|
||||
list, err := safe.StateListAll[*clusterres.Member](ctx, res)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -113,7 +113,7 @@ func (ctrl *LocalAffiliateController) Run(ctx context.Context, r controller.Runt
|
||||
return nil
|
||||
case <-r.EventCh():
|
||||
// mandatory resources to be fetched
|
||||
discoveryConfig, err := r.Get(ctx, resource.NewMetadata(config.NamespaceName, cluster.ConfigType, cluster.ConfigID, resource.VersionUndefined))
|
||||
discoveryConfig, err := safe.ReaderGetByID[*cluster.Config](ctx, r, cluster.ConfigID)
|
||||
if err != nil {
|
||||
if !state.IsNotFoundError(err) {
|
||||
return fmt.Errorf("error getting discovery config: %w", err)
|
||||
@ -122,7 +122,7 @@ func (ctrl *LocalAffiliateController) Run(ctx context.Context, r controller.Runt
|
||||
continue
|
||||
}
|
||||
|
||||
identity, err := r.Get(ctx, resource.NewMetadata(cluster.NamespaceName, cluster.IdentityType, cluster.LocalIdentity, resource.VersionUndefined))
|
||||
identity, err := safe.ReaderGetByID[*cluster.Identity](ctx, r, cluster.LocalIdentity)
|
||||
if err != nil {
|
||||
if !state.IsNotFoundError(err) {
|
||||
return fmt.Errorf("error getting local identity: %w", err)
|
||||
@ -131,7 +131,7 @@ func (ctrl *LocalAffiliateController) Run(ctx context.Context, r controller.Runt
|
||||
continue
|
||||
}
|
||||
|
||||
hostname, err := r.Get(ctx, resource.NewMetadata(network.NamespaceName, network.HostnameStatusType, network.HostnameID, resource.VersionUndefined))
|
||||
hostname, err := safe.ReaderGetByID[*network.HostnameStatus](ctx, r, network.HostnameID)
|
||||
if err != nil {
|
||||
if !state.IsNotFoundError(err) {
|
||||
return fmt.Errorf("error getting hostname: %w", err)
|
||||
@ -140,7 +140,7 @@ func (ctrl *LocalAffiliateController) Run(ctx context.Context, r controller.Runt
|
||||
continue
|
||||
}
|
||||
|
||||
nodename, err := r.Get(ctx, resource.NewMetadata(k8s.NamespaceName, k8s.NodenameType, k8s.NodenameID, resource.VersionUndefined))
|
||||
nodename, err := safe.ReaderGetByID[*k8s.Nodename](ctx, r, k8s.NodenameID)
|
||||
if err != nil {
|
||||
if !state.IsNotFoundError(err) {
|
||||
return fmt.Errorf("error getting nodename: %w", err)
|
||||
@ -149,8 +149,7 @@ func (ctrl *LocalAffiliateController) Run(ctx context.Context, r controller.Runt
|
||||
continue
|
||||
}
|
||||
|
||||
routedAddresses, err := r.Get(ctx,
|
||||
resource.NewMetadata(network.NamespaceName, network.NodeAddressType, network.FilteredNodeAddressID(network.NodeAddressRoutedID, k8s.NodeAddressFilterNoK8s), resource.VersionUndefined))
|
||||
routedAddresses, err := safe.ReaderGetByID[*network.NodeAddress](ctx, r, network.FilteredNodeAddressID(network.NodeAddressRoutedID, k8s.NodeAddressFilterNoK8s))
|
||||
if err != nil {
|
||||
if !state.IsNotFoundError(err) {
|
||||
return fmt.Errorf("error getting addresses: %w", err)
|
||||
@ -159,8 +158,7 @@ func (ctrl *LocalAffiliateController) Run(ctx context.Context, r controller.Runt
|
||||
continue
|
||||
}
|
||||
|
||||
currentAddresses, err := r.Get(ctx,
|
||||
resource.NewMetadata(network.NamespaceName, network.NodeAddressType, network.FilteredNodeAddressID(network.NodeAddressCurrentID, k8s.NodeAddressFilterNoK8s), resource.VersionUndefined))
|
||||
currentAddresses, err := safe.ReaderGetByID[*network.NodeAddress](ctx, r, network.FilteredNodeAddressID(network.NodeAddressCurrentID, k8s.NodeAddressFilterNoK8s))
|
||||
if err != nil {
|
||||
if !state.IsNotFoundError(err) {
|
||||
return fmt.Errorf("error getting addresses: %w", err)
|
||||
@ -169,7 +167,7 @@ func (ctrl *LocalAffiliateController) Run(ctx context.Context, r controller.Runt
|
||||
continue
|
||||
}
|
||||
|
||||
machineType, err := r.Get(ctx, resource.NewMetadata(config.NamespaceName, config.MachineTypeType, config.MachineTypeID, resource.VersionUndefined))
|
||||
machineType, err := safe.ReaderGetByID[*config.MachineType](ctx, r, config.MachineTypeID)
|
||||
if err != nil {
|
||||
if !state.IsNotFoundError(err) {
|
||||
return fmt.Errorf("error getting machine type: %w", err)
|
||||
@ -179,18 +177,17 @@ func (ctrl *LocalAffiliateController) Run(ctx context.Context, r controller.Runt
|
||||
}
|
||||
|
||||
// optional resources (kubespan)
|
||||
kubespanIdentity, err := r.Get(ctx, resource.NewMetadata(kubespan.NamespaceName, kubespan.IdentityType, kubespan.LocalIdentity, resource.VersionUndefined))
|
||||
kubespanIdentity, err := safe.ReaderGetByID[*kubespan.Identity](ctx, r, kubespan.LocalIdentity)
|
||||
if err != nil && !state.IsNotFoundError(err) {
|
||||
return fmt.Errorf("error getting kubespan identity: %w", err)
|
||||
}
|
||||
|
||||
kubespanConfig, err := safe.ReaderGet[*kubespan.Config](ctx, r, resource.NewMetadata(config.NamespaceName, kubespan.ConfigType, kubespan.ConfigID, resource.VersionUndefined))
|
||||
kubespanConfig, err := safe.ReaderGetByID[*kubespan.Config](ctx, r, kubespan.ConfigID)
|
||||
if err != nil && !state.IsNotFoundError(err) {
|
||||
return fmt.Errorf("error getting kubespan config: %w", err)
|
||||
}
|
||||
|
||||
ksAdditionalAddresses, err := r.Get(ctx,
|
||||
resource.NewMetadata(network.NamespaceName, network.NodeAddressType, network.FilteredNodeAddressID(network.NodeAddressCurrentID, k8s.NodeAddressFilterOnlyK8s), resource.VersionUndefined))
|
||||
ksAdditionalAddresses, err := safe.ReaderGetByID[*network.NodeAddress](ctx, r, network.FilteredNodeAddressID(network.NodeAddressCurrentID, k8s.NodeAddressFilterOnlyK8s))
|
||||
if err != nil && !state.IsNotFoundError(err) {
|
||||
return fmt.Errorf("error getting kubespan additional addresses: %w", err)
|
||||
}
|
||||
@ -200,33 +197,33 @@ func (ctrl *LocalAffiliateController) Run(ctx context.Context, r controller.Runt
|
||||
return fmt.Errorf("error getting discovered public IP: %w", err)
|
||||
}
|
||||
|
||||
localID := identity.(*cluster.Identity).TypedSpec().NodeID
|
||||
localID := identity.TypedSpec().NodeID
|
||||
|
||||
touchedIDs := make(map[resource.ID]struct{})
|
||||
touchedIDs := map[resource.ID]struct{}{}
|
||||
|
||||
if discoveryConfig.(*cluster.Config).TypedSpec().DiscoveryEnabled {
|
||||
if err = r.Modify(ctx, cluster.NewAffiliate(cluster.NamespaceName, localID), func(res resource.Resource) error {
|
||||
spec := res.(*cluster.Affiliate).TypedSpec()
|
||||
if discoveryConfig.TypedSpec().DiscoveryEnabled {
|
||||
if err = safe.WriterModify(ctx, r, cluster.NewAffiliate(cluster.NamespaceName, localID), func(res *cluster.Affiliate) error {
|
||||
spec := res.TypedSpec()
|
||||
|
||||
spec.NodeID = localID
|
||||
spec.Hostname = hostname.(*network.HostnameStatus).TypedSpec().FQDN()
|
||||
spec.Nodename = nodename.(*k8s.Nodename).TypedSpec().Nodename
|
||||
spec.MachineType = machineType.(*config.MachineType).MachineType()
|
||||
spec.Hostname = hostname.TypedSpec().FQDN()
|
||||
spec.Nodename = nodename.TypedSpec().Nodename
|
||||
spec.MachineType = machineType.MachineType()
|
||||
spec.OperatingSystem = fmt.Sprintf("%s (%s)", version.Name, version.Tag)
|
||||
|
||||
routedNodeIPs := routedAddresses.(*network.NodeAddress).TypedSpec().IPs()
|
||||
currentNodeIPs := currentAddresses.(*network.NodeAddress).TypedSpec().IPs()
|
||||
routedNodeIPs := routedAddresses.TypedSpec().IPs()
|
||||
currentNodeIPs := currentAddresses.TypedSpec().IPs()
|
||||
|
||||
spec.Addresses = routedNodeIPs
|
||||
|
||||
spec.KubeSpan = cluster.KubeSpanAffiliateSpec{}
|
||||
|
||||
if kubespanIdentity != nil && kubespanConfig != nil {
|
||||
spec.KubeSpan.Address = kubespanIdentity.(*kubespan.Identity).TypedSpec().Address.Addr()
|
||||
spec.KubeSpan.PublicKey = kubespanIdentity.(*kubespan.Identity).TypedSpec().PublicKey
|
||||
spec.KubeSpan.Address = kubespanIdentity.TypedSpec().Address.Addr()
|
||||
spec.KubeSpan.PublicKey = kubespanIdentity.TypedSpec().PublicKey
|
||||
|
||||
if kubespanConfig.TypedSpec().AdvertiseKubernetesNetworks && ksAdditionalAddresses != nil {
|
||||
spec.KubeSpan.AdditionalAddresses = append([]netip.Prefix(nil), ksAdditionalAddresses.(*network.NodeAddress).TypedSpec().Addresses...)
|
||||
spec.KubeSpan.AdditionalAddresses = slices.Clone(ksAdditionalAddresses.TypedSpec().Addresses)
|
||||
} else {
|
||||
spec.KubeSpan.AdditionalAddresses = nil
|
||||
}
|
||||
|
@ -7,10 +7,10 @@ package cluster
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net/netip"
|
||||
|
||||
"github.com/cosi-project/runtime/pkg/controller"
|
||||
"github.com/cosi-project/runtime/pkg/resource"
|
||||
"github.com/siderolabs/gen/slices"
|
||||
"go.uber.org/zap"
|
||||
|
||||
"github.com/siderolabs/talos/pkg/machinery/resources/cluster"
|
||||
@ -73,7 +73,7 @@ func (ctrl *MemberController) Run(ctx context.Context, r controller.Runtime, log
|
||||
if err = r.Modify(ctx, cluster.NewMember(cluster.NamespaceName, affiliateSpec.Nodename), func(res resource.Resource) error {
|
||||
spec := res.(*cluster.Member).TypedSpec()
|
||||
|
||||
spec.Addresses = append([]netip.Addr(nil), affiliateSpec.Addresses...)
|
||||
spec.Addresses = slices.Clone(affiliateSpec.Addresses)
|
||||
spec.Hostname = affiliateSpec.Hostname
|
||||
spec.MachineType = affiliateSpec.MachineType
|
||||
spec.OperatingSystem = affiliateSpec.OperatingSystem
|
||||
|
@ -85,7 +85,7 @@ func (ctrl *SeccompProfileController) Run(ctx context.Context, r controller.Runt
|
||||
}
|
||||
|
||||
// list keys for cleanup
|
||||
list, err := safe.ReaderList[*cri.SeccompProfile](ctx, r, resource.NewMetadata(cri.NamespaceName, cri.SeccompProfileType, "", resource.VersionUndefined))
|
||||
list, err := safe.ReaderListAll[*cri.SeccompProfile](ctx, r)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error listing seccomp profiles: %w", err)
|
||||
}
|
||||
|
@ -107,7 +107,7 @@ func (ctrl *SeccompProfileFileController) Run(ctx context.Context, r controller.
|
||||
case <-r.EventCh():
|
||||
}
|
||||
|
||||
list, err := safe.ReaderList[*cri.SeccompProfile](ctx, r, resource.NewMetadata(cri.NamespaceName, cri.SeccompProfileType, "", resource.VersionUndefined))
|
||||
list, err := safe.ReaderListAll[*cri.SeccompProfile](ctx, r)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error listing seccomp profiles: %w", err)
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ import (
|
||||
"github.com/cosi-project/runtime/pkg/controller"
|
||||
"github.com/cosi-project/runtime/pkg/resource"
|
||||
"github.com/cosi-project/runtime/pkg/state"
|
||||
"github.com/siderolabs/gen/slices"
|
||||
"github.com/siderolabs/go-pointer"
|
||||
"go.uber.org/zap"
|
||||
|
||||
@ -98,7 +99,7 @@ func (ctrl *AddressFilterController) Run(ctx context.Context, r controller.Runti
|
||||
if err = r.Modify(ctx, network.NewNodeAddressFilter(network.NamespaceName, k8s.NodeAddressFilterNoK8s), func(r resource.Resource) error {
|
||||
spec := r.(*network.NodeAddressFilter).TypedSpec()
|
||||
|
||||
spec.ExcludeSubnets = append(append([]netip.Prefix(nil), podCIDRs...), serviceCIDRs...)
|
||||
spec.ExcludeSubnets = append(slices.Clone(podCIDRs), serviceCIDRs...)
|
||||
|
||||
return nil
|
||||
}); err != nil {
|
||||
@ -110,7 +111,7 @@ func (ctrl *AddressFilterController) Run(ctx context.Context, r controller.Runti
|
||||
if err = r.Modify(ctx, network.NewNodeAddressFilter(network.NamespaceName, k8s.NodeAddressFilterOnlyK8s), func(r resource.Resource) error {
|
||||
spec := r.(*network.NodeAddressFilter).TypedSpec()
|
||||
|
||||
spec.IncludeSubnets = append(append([]netip.Prefix(nil), podCIDRs...), serviceCIDRs...)
|
||||
spec.IncludeSubnets = append(slices.Clone(podCIDRs), serviceCIDRs...)
|
||||
|
||||
return nil
|
||||
}); err != nil {
|
||||
|
@ -72,9 +72,9 @@ func (ctrl *NodeLabelSpecController) Run(ctx context.Context, r controller.Runti
|
||||
}
|
||||
|
||||
for key, value := range nodeLabels {
|
||||
if err = r.Modify(ctx, k8s.NewNodeLabelSpec(key), func(r resource.Resource) error {
|
||||
r.(*k8s.NodeLabelSpec).TypedSpec().Key = key
|
||||
r.(*k8s.NodeLabelSpec).TypedSpec().Value = value
|
||||
if err = safe.WriterModify(ctx, r, k8s.NewNodeLabelSpec(key), func(k *k8s.NodeLabelSpec) error {
|
||||
k.TypedSpec().Key = key
|
||||
k.TypedSpec().Value = value
|
||||
|
||||
return nil
|
||||
}); err != nil {
|
||||
@ -82,7 +82,7 @@ func (ctrl *NodeLabelSpecController) Run(ctx context.Context, r controller.Runti
|
||||
}
|
||||
}
|
||||
|
||||
labelSpecs, err := safe.ReaderList[*k8s.NodeLabelSpec](ctx, r, k8s.NewNodeLabelSpec("").Metadata())
|
||||
labelSpecs, err := safe.ReaderListAll[*k8s.NodeLabelSpec](ctx, r)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error getting node label specs: %w", err)
|
||||
}
|
||||
|
@ -92,7 +92,7 @@ func (ctrl *NodeLabelsApplyController) Run(ctx context.Context, r controller.Run
|
||||
}
|
||||
|
||||
func (ctrl *NodeLabelsApplyController) getNodeLabelSpecs(ctx context.Context, r controller.Runtime) (map[string]string, error) {
|
||||
items, err := safe.ReaderList[*k8s.NodeLabelSpec](ctx, r, resource.NewMetadata(k8s.NamespaceName, k8s.NodeLabelSpecType, "", resource.VersionUndefined))
|
||||
items, err := safe.ReaderListAll[*k8s.NodeLabelSpec](ctx, r)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error listing node label spec resources: %w", err)
|
||||
}
|
||||
|
@ -99,7 +99,7 @@ func (ctrl *StaticPodServerController) Run(ctx context.Context, r controller.Run
|
||||
}
|
||||
|
||||
func (ctrl *StaticPodServerController) buildPodList(ctx context.Context, r controller.Runtime, logger *zap.Logger) ([]byte, error) {
|
||||
staticPods, err := safe.ReaderList[*k8s.StaticPod](ctx, r, resource.NewMetadata(k8s.NamespaceName, k8s.StaticPodType, "", resource.VersionUndefined))
|
||||
staticPods, err := safe.ReaderListAll[*k8s.StaticPod](ctx, r)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error listing static pods: %w", err)
|
||||
}
|
||||
|
@ -15,6 +15,7 @@ import (
|
||||
"github.com/cosi-project/runtime/pkg/controller"
|
||||
"github.com/cosi-project/runtime/pkg/resource"
|
||||
"github.com/cosi-project/runtime/pkg/state"
|
||||
"github.com/siderolabs/gen/slices"
|
||||
"github.com/siderolabs/gen/value"
|
||||
"github.com/siderolabs/go-pointer"
|
||||
"go.uber.org/zap"
|
||||
@ -343,7 +344,7 @@ func (ctrl *ManagerController) Run(ctx context.Context, r controller.Runtime, lo
|
||||
PresharedKey: cfgSpec.SharedSecret,
|
||||
Endpoint: endpoint,
|
||||
PersistentKeepaliveInterval: constants.KubeSpanDefaultPeerKeepalive,
|
||||
AllowedIPs: append([]netip.Prefix(nil), peerSpec.AllowedIPs...),
|
||||
AllowedIPs: slices.Clone(peerSpec.AllowedIPs),
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -7,7 +7,6 @@ package kubespan
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net/netip"
|
||||
|
||||
"github.com/cosi-project/runtime/pkg/controller"
|
||||
"github.com/cosi-project/runtime/pkg/resource"
|
||||
@ -161,7 +160,7 @@ func (ctrl *PeerSpecController) Run(ctx context.Context, r controller.Runtime, l
|
||||
*res.(*kubespan.PeerSpec).TypedSpec() = kubespan.PeerSpecSpec{
|
||||
Address: spec.KubeSpan.Address,
|
||||
AllowedIPs: ipSet.Prefixes(),
|
||||
Endpoints: append([]netip.AddrPort(nil), spec.KubeSpan.Endpoints...),
|
||||
Endpoints: slices.Clone(spec.KubeSpan.Endpoints),
|
||||
Label: spec.Nodename,
|
||||
}
|
||||
|
||||
|
@ -81,7 +81,7 @@ func (ctrl *DeviceConfigController) Run(ctx context.Context, r controller.Runtim
|
||||
case <-r.EventCh():
|
||||
}
|
||||
|
||||
links, err := safe.ReaderList[*network.LinkStatus](ctx, r, resource.NewMetadata(network.NamespaceName, network.LinkStatusType, "", resource.VersionUndefined))
|
||||
links, err := safe.ReaderListAll[*network.LinkStatus](ctx, r)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -9,7 +9,6 @@ import (
|
||||
"fmt"
|
||||
|
||||
"github.com/cosi-project/runtime/pkg/controller"
|
||||
"github.com/cosi-project/runtime/pkg/resource"
|
||||
"github.com/cosi-project/runtime/pkg/safe"
|
||||
"github.com/cosi-project/runtime/pkg/state"
|
||||
"go.uber.org/zap"
|
||||
@ -81,7 +80,7 @@ func (ctrl *ProbeController) Run(ctx context.Context, r controller.Runtime, logg
|
||||
|
||||
//nolint:gocyclo
|
||||
func (ctrl *ProbeController) reconcileRunners(ctx context.Context, r controller.Runtime, logger *zap.Logger, notifyCh chan<- probe.Notification) error {
|
||||
specList, err := safe.ReaderList[*network.ProbeSpec](ctx, r, resource.NewMetadata(network.NamespaceName, network.ProbeSpecType, "", resource.VersionUndefined))
|
||||
specList, err := safe.ReaderListAll[*network.ProbeSpec](ctx, r)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error listing probe specs: %w", err)
|
||||
}
|
||||
@ -122,7 +121,7 @@ func (ctrl *ProbeController) reconcileRunners(ctx context.Context, r controller.
|
||||
}
|
||||
|
||||
// clean up statuses which should no longer exist
|
||||
statusList, err := safe.ReaderList[*network.ProbeStatus](ctx, r, resource.NewMetadata(network.NamespaceName, network.ProbeStatusType, "", resource.VersionUndefined))
|
||||
statusList, err := safe.ReaderListAll[*network.ProbeStatus](ctx, r)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error listing probe statuses: %w", err)
|
||||
}
|
||||
|
@ -95,7 +95,7 @@ func (ctrl *StatusController) Run(ctx context.Context, r controller.Runtime, log
|
||||
|
||||
// connectivity
|
||||
// if any probes are defined, use their status, otherwise rely on presence of the default gateway
|
||||
probeStatuses, err := safe.ReaderList[*network.ProbeStatus](ctx, r, resource.NewMetadata(network.NamespaceName, network.ProbeStatusType, "", resource.VersionUndefined))
|
||||
probeStatuses, err := safe.ReaderListAll[*network.ProbeStatus](ctx, r)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error getting probe statuses: %w", err)
|
||||
}
|
||||
@ -115,7 +115,7 @@ func (ctrl *StatusController) Run(ctx context.Context, r controller.Runtime, log
|
||||
} else if probeStatuses.Len() == 0 {
|
||||
var routes safe.List[*network.RouteStatus]
|
||||
|
||||
routes, err = safe.ReaderList[*network.RouteStatus](ctx, r, resource.NewMetadata(network.NamespaceName, network.RouteStatusType, "", resource.VersionUndefined))
|
||||
routes, err = safe.ReaderListAll[*network.RouteStatus](ctx, r)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error getting routes: %w", err)
|
||||
}
|
||||
|
@ -11,6 +11,7 @@ import (
|
||||
"github.com/cosi-project/runtime/pkg/controller"
|
||||
"github.com/cosi-project/runtime/pkg/resource"
|
||||
"github.com/cosi-project/runtime/pkg/state"
|
||||
"github.com/siderolabs/gen/slices"
|
||||
"github.com/siderolabs/go-pointer"
|
||||
"github.com/siderolabs/go-procfs/procfs"
|
||||
"go.uber.org/zap"
|
||||
@ -195,7 +196,7 @@ func (ctrl *TimeServerConfigController) parseMachineConfiguration(cfgProvider ta
|
||||
return
|
||||
}
|
||||
|
||||
spec.NTPServers = append([]string(nil), cfgProvider.Machine().Time().Servers()...)
|
||||
spec.NTPServers = slices.Clone(cfgProvider.Machine().Time().Servers())
|
||||
spec.ConfigLayer = network.ConfigMachineConfiguration
|
||||
|
||||
return spec
|
||||
|
@ -66,7 +66,7 @@ func (m *mockImageService) List(ctx context.Context, filters ...string) ([]image
|
||||
m.mu.Lock()
|
||||
defer m.mu.Unlock()
|
||||
|
||||
return append([]images.Image(nil), m.images...), nil
|
||||
return slices.Clone(m.images), nil
|
||||
}
|
||||
|
||||
func (m *mockImageService) Create(ctx context.Context, image images.Image) (images.Image, error) {
|
||||
|
@ -11,7 +11,6 @@ import (
|
||||
"sync"
|
||||
|
||||
"github.com/cosi-project/runtime/pkg/controller"
|
||||
"github.com/cosi-project/runtime/pkg/resource"
|
||||
"github.com/cosi-project/runtime/pkg/safe"
|
||||
"github.com/cosi-project/runtime/pkg/state"
|
||||
"github.com/siderolabs/go-pointer"
|
||||
@ -247,7 +246,7 @@ func (ctrl *MachineStatusController) networkReadyCheck(ctx context.Context, r co
|
||||
|
||||
func (ctrl *MachineStatusController) servicesCheck(requiredServices []string) func(ctx context.Context, r controller.Runtime) error {
|
||||
return func(ctx context.Context, r controller.Runtime) error {
|
||||
serviceList, err := safe.ReaderList[*v1alpha1.Service](ctx, r, resource.NewMetadata(v1alpha1.NamespaceName, v1alpha1.ServiceType, "", resource.VersionUndefined))
|
||||
serviceList, err := safe.ReaderListAll[*v1alpha1.Service](ctx, r)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -290,7 +289,7 @@ func (ctrl *MachineStatusController) servicesCheck(requiredServices []string) fu
|
||||
|
||||
//nolint:gocyclo
|
||||
func (ctrl *MachineStatusController) staticPodsCheck(ctx context.Context, r controller.Runtime) error {
|
||||
staticPodList, err := safe.ReaderList[*k8s.StaticPodStatus](ctx, r, resource.NewMetadata(k8s.NamespaceName, k8s.StaticPodStatusType, "", resource.VersionUndefined))
|
||||
staticPodList, err := safe.ReaderListAll[*k8s.StaticPodStatus](ctx, r)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -18,6 +18,7 @@ import (
|
||||
"github.com/cosi-project/runtime/pkg/state"
|
||||
"github.com/cosi-project/runtime/pkg/state/impl/inmem"
|
||||
"github.com/cosi-project/runtime/pkg/state/impl/namespaced"
|
||||
"github.com/siderolabs/gen/slices"
|
||||
"github.com/siderolabs/go-pointer"
|
||||
"github.com/siderolabs/go-retry/retry"
|
||||
"github.com/stretchr/testify/suite"
|
||||
@ -507,19 +508,19 @@ func (mock *mockSyncer) getTimeServers() (servers []string) {
|
||||
mock.mu.Lock()
|
||||
defer mock.mu.Unlock()
|
||||
|
||||
return append([]string(nil), mock.timeServers...)
|
||||
return slices.Clone(mock.timeServers)
|
||||
}
|
||||
|
||||
func (mock *mockSyncer) SetTimeServers(servers []string) {
|
||||
mock.mu.Lock()
|
||||
defer mock.mu.Unlock()
|
||||
|
||||
mock.timeServers = append([]string(nil), servers...)
|
||||
mock.timeServers = slices.Clone(servers)
|
||||
}
|
||||
|
||||
func newMockSyncer(_ *zap.Logger, servers []string) *mockSyncer {
|
||||
return &mockSyncer{
|
||||
timeServers: append([]string(nil), servers...),
|
||||
timeServers: slices.Clone(servers),
|
||||
syncedCh: make(chan struct{}, 1),
|
||||
epochCh: make(chan struct{}, 1),
|
||||
}
|
||||
|
@ -16,7 +16,6 @@ import (
|
||||
"net/netip"
|
||||
"time"
|
||||
|
||||
"github.com/cosi-project/runtime/pkg/resource"
|
||||
"github.com/cosi-project/runtime/pkg/safe"
|
||||
"github.com/cosi-project/runtime/pkg/state"
|
||||
"github.com/siderolabs/go-procfs/procfs"
|
||||
@ -126,7 +125,7 @@ func (p *EquinixMetal) ParseMetadata(ctx context.Context, equinixMetadata *Metad
|
||||
// determine bond name and build list of interfaces enslaved by the bond
|
||||
bondName := ""
|
||||
|
||||
hostInterfaces, err := safe.StateList[*network.LinkStatus](ctx, st, resource.NewMetadata(network.NamespaceName, network.LinkStatusType, "", resource.VersionUndefined))
|
||||
hostInterfaces, err := safe.StateListAll[*network.LinkStatus](ctx, st)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error listing host interfaces: %w", err)
|
||||
}
|
||||
|
@ -15,7 +15,6 @@ import (
|
||||
"net/netip"
|
||||
"strings"
|
||||
|
||||
"github.com/cosi-project/runtime/pkg/resource"
|
||||
"github.com/cosi-project/runtime/pkg/safe"
|
||||
"github.com/cosi-project/runtime/pkg/state"
|
||||
"github.com/siderolabs/go-procfs/procfs"
|
||||
@ -83,7 +82,7 @@ func (o *Openstack) ParseMetadata(
|
||||
})
|
||||
}
|
||||
|
||||
hostInterfaces, err := safe.StateList[*network.LinkStatus](ctx, st, resource.NewMetadata(network.NamespaceName, network.LinkStatusType, "", resource.VersionUndefined))
|
||||
hostInterfaces, err := safe.StateListAll[*network.LinkStatus](ctx, st)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error listing host interfaces: %w", err)
|
||||
}
|
||||
|
@ -12,7 +12,6 @@ import (
|
||||
"net/netip"
|
||||
"strings"
|
||||
|
||||
"github.com/cosi-project/runtime/pkg/resource"
|
||||
"github.com/cosi-project/runtime/pkg/safe"
|
||||
"github.com/cosi-project/runtime/pkg/state"
|
||||
|
||||
@ -88,7 +87,7 @@ type DHCPOverrides struct {
|
||||
func (v *VMware) ApplyNetworkConfigV2(ctx context.Context, st state.State, config *NetworkConfig, networkConfig *runtime.PlatformNetworkConfig) error {
|
||||
var dnsIPs []netip.Addr
|
||||
|
||||
hostInterfaces, err := safe.StateList[*network.LinkStatus](ctx, st, resource.NewMetadata(network.NamespaceName, network.LinkStatusType, "", resource.VersionUndefined))
|
||||
hostInterfaces, err := safe.StateListAll[*network.LinkStatus](ctx, st)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error listing host interfaces: %w", err)
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import (
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/siderolabs/gen/slices"
|
||||
"google.golang.org/protobuf/types/known/timestamppb"
|
||||
|
||||
machineapi "github.com/siderolabs/talos/pkg/machinery/api/machine"
|
||||
@ -65,7 +66,7 @@ func (state *State) Update(healthy bool, message string) {
|
||||
|
||||
var subscribers []chan<- StateChange
|
||||
if notify {
|
||||
subscribers = append([]chan<- StateChange(nil), state.subscribers...)
|
||||
subscribers = slices.Clone(state.subscribers)
|
||||
}
|
||||
|
||||
state.Unlock()
|
||||
|
@ -407,7 +407,7 @@ func (svcrunner *ServiceRunner) Unsubscribe(event StateEvent, ch chan<- struct{}
|
||||
|
||||
func (svcrunner *ServiceRunner) notifyEvent(event StateEvent) {
|
||||
svcrunner.mu.Lock()
|
||||
channels := append([]chan<- struct{}(nil), svcrunner.stateSubscribers[event]...)
|
||||
channels := slices.Clone(svcrunner.stateSubscribers[event])
|
||||
svcrunner.mu.Unlock()
|
||||
|
||||
for _, ch := range channels {
|
||||
|
@ -281,7 +281,7 @@ func (suite *DiscoverySuite) TestKubeSpanPeers() {
|
||||
func (suite *DiscoverySuite) getMembers(nodeCtx context.Context) []*cluster.Member {
|
||||
var result []*cluster.Member
|
||||
|
||||
items, err := safe.StateList[*cluster.Member](nodeCtx, suite.Client.COSI, resource.NewMetadata(cluster.NamespaceName, cluster.MemberType, "", resource.VersionUndefined))
|
||||
items, err := safe.StateListAll[*cluster.Member](nodeCtx, suite.Client.COSI)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
it := safe.IteratorFromList(items)
|
||||
@ -320,7 +320,7 @@ func (suite *DiscoverySuite) getAffiliates(nodeCtx context.Context, namespace re
|
||||
func (suite *DiscoverySuite) getKubeSpanPeerSpecs(nodeCtx context.Context) []*kubespan.PeerSpec {
|
||||
var result []*kubespan.PeerSpec
|
||||
|
||||
items, err := safe.StateList[*kubespan.PeerSpec](nodeCtx, suite.Client.COSI, resource.NewMetadata(kubespan.NamespaceName, kubespan.PeerSpecType, "", resource.VersionUndefined))
|
||||
items, err := safe.StateListAll[*kubespan.PeerSpec](nodeCtx, suite.Client.COSI)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
it := safe.IteratorFromList(items)
|
||||
@ -336,7 +336,7 @@ func (suite *DiscoverySuite) getKubeSpanPeerSpecs(nodeCtx context.Context) []*ku
|
||||
func (suite *DiscoverySuite) getKubeSpanPeerStatuses(nodeCtx context.Context) []*kubespan.PeerStatus {
|
||||
var result []*kubespan.PeerStatus
|
||||
|
||||
items, err := safe.StateList[*kubespan.PeerStatus](nodeCtx, suite.Client.COSI, resource.NewMetadata(kubespan.NamespaceName, kubespan.PeerStatusType, "", resource.VersionUndefined))
|
||||
items, err := safe.StateListAll[*kubespan.PeerStatus](nodeCtx, suite.Client.COSI)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
it := safe.IteratorFromList(items)
|
||||
|
@ -55,7 +55,7 @@ func (suite *ResourcesSuite) TestListResources() {
|
||||
|
||||
var namespaces []string
|
||||
|
||||
nsList, err := safe.StateList[*meta.Namespace](ctx, suite.Client.COSI, resource.NewMetadata(meta.NamespaceName, meta.NamespaceType, "", resource.VersionUndefined))
|
||||
nsList, err := safe.StateListAll[*meta.Namespace](ctx, suite.Client.COSI)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
nsIt := safe.IteratorFromList(nsList)
|
||||
@ -66,7 +66,7 @@ func (suite *ResourcesSuite) TestListResources() {
|
||||
|
||||
var resourceTypes []string
|
||||
|
||||
rdList, err := safe.StateList[*meta.ResourceDefinition](ctx, suite.Client.COSI, resource.NewMetadata(meta.NamespaceName, meta.ResourceDefinitionType, "", resource.VersionUndefined))
|
||||
rdList, err := safe.StateListAll[*meta.ResourceDefinition](ctx, suite.Client.COSI)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
rdIt := safe.IteratorFromList(rdList)
|
||||
|
@ -7,6 +7,8 @@
|
||||
package base
|
||||
|
||||
import (
|
||||
"github.com/siderolabs/gen/slices"
|
||||
|
||||
"github.com/siderolabs/talos/pkg/cluster"
|
||||
"github.com/siderolabs/talos/pkg/machinery/config/types/v1alpha1/machine"
|
||||
)
|
||||
@ -28,7 +30,7 @@ func newNodeInfo(masterNodes, workerNodes []string) (*infoWrapper, error) {
|
||||
}
|
||||
|
||||
return &infoWrapper{
|
||||
nodeInfos: append(append([]cluster.NodeInfo(nil), controlPlaneNodeInfos...), workerNodeInfos...),
|
||||
nodeInfos: append(slices.Clone(controlPlaneNodeInfos), workerNodeInfos...),
|
||||
nodeInfosByType: map[machine.Type][]cluster.NodeInfo{
|
||||
machine.TypeControlPlane: controlPlaneNodeInfos,
|
||||
machine.TypeWorker: workerNodeInfos,
|
||||
|
@ -8,7 +8,6 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/cosi-project/runtime/pkg/resource"
|
||||
"github.com/cosi-project/runtime/pkg/safe"
|
||||
"github.com/cosi-project/runtime/pkg/state"
|
||||
|
||||
@ -21,7 +20,7 @@ import (
|
||||
//
|
||||
// It is not guaranteed that etcd is running on each listed endpoint.
|
||||
func GetEndpoints(ctx context.Context, resources state.State) ([]string, error) {
|
||||
endpointResources, err := safe.StateList[*k8s.Endpoint](ctx, resources, resource.NewMetadata(k8s.ControlPlaneNamespaceName, k8s.EndpointType, "", resource.VersionUndefined))
|
||||
endpointResources, err := safe.StateListAll[*k8s.Endpoint](ctx, resources)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error getting endpoints resources: %w", err)
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ import (
|
||||
|
||||
"github.com/godbus/dbus/v5"
|
||||
"github.com/godbus/dbus/v5/prop"
|
||||
"github.com/siderolabs/gen/slices"
|
||||
|
||||
"github.com/siderolabs/talos/pkg/machinery/constants"
|
||||
)
|
||||
@ -59,5 +60,5 @@ func (mock *logindMock) getPipe() []int {
|
||||
mock.mu.Lock()
|
||||
defer mock.mu.Unlock()
|
||||
|
||||
return append([]int(nil), mock.inhibitPipe...)
|
||||
return slices.Clone(mock.inhibitPipe)
|
||||
}
|
||||
|
@ -98,7 +98,7 @@ func (a *ADV) Unmarshal(buf []byte) error {
|
||||
return fmt.Errorf("adv: unexpected magic %x, expecting %x", magic2, Magic2)
|
||||
}
|
||||
|
||||
checksum := append([]byte(nil), buf[len(buf)-36:len(buf)-4]...)
|
||||
checksum := slices.Clone(buf[len(buf)-36 : len(buf)-4])
|
||||
|
||||
copy(buf[len(buf)-36:len(buf)-4], make([]byte, 32))
|
||||
|
||||
|
@ -9,6 +9,7 @@ import (
|
||||
"sort"
|
||||
"testing"
|
||||
|
||||
"github.com/siderolabs/gen/slices"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
@ -62,7 +63,7 @@ func TestMarshalUnmarshal(t *testing.T) {
|
||||
},
|
||||
},
|
||||
} {
|
||||
corrupted := append([]byte(nil), b...)
|
||||
corrupted := slices.Clone(b)
|
||||
|
||||
for _, z := range c.zeroOut {
|
||||
copy(corrupted[z[0]:z[0]+z[1]], make([]byte, z[1]))
|
||||
|
@ -18,6 +18,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/beevik/ntp"
|
||||
"github.com/siderolabs/gen/slices"
|
||||
"github.com/u-root/u-root/pkg/rtc"
|
||||
"go.uber.org/zap"
|
||||
"go.uber.org/zap/zapcore"
|
||||
@ -65,7 +66,7 @@ func NewSyncer(logger *zap.Logger, timeServers []string) *Syncer {
|
||||
syncer := &Syncer{
|
||||
logger: logger,
|
||||
|
||||
timeServers: append([]string(nil), timeServers...),
|
||||
timeServers: slices.Clone(timeServers),
|
||||
timeSynced: make(chan struct{}),
|
||||
|
||||
restartSyncCh: make(chan struct{}, 1),
|
||||
@ -127,7 +128,7 @@ func (syncer *Syncer) SetTimeServers(timeServers []string) {
|
||||
return
|
||||
}
|
||||
|
||||
syncer.timeServers = append([]string(nil), timeServers...)
|
||||
syncer.timeServers = slices.Clone(timeServers)
|
||||
syncer.lastSyncServer = ""
|
||||
|
||||
syncer.restartSync()
|
||||
|
@ -8,7 +8,6 @@ import (
|
||||
"context"
|
||||
"net"
|
||||
|
||||
"github.com/cosi-project/runtime/pkg/resource"
|
||||
"github.com/cosi-project/runtime/pkg/safe"
|
||||
"google.golang.org/grpc"
|
||||
"google.golang.org/grpc/metadata"
|
||||
@ -97,11 +96,7 @@ func (c *Connection) Links() ([]Link, error) {
|
||||
ctx = client.WithNode(ctx, nodes[0])
|
||||
}
|
||||
|
||||
items, err := safe.StateList[*network.LinkStatus](
|
||||
ctx,
|
||||
c.nodeClient.COSI,
|
||||
resource.NewMetadata(network.NamespaceName, network.LinkStatusType, "", resource.VersionUndefined),
|
||||
)
|
||||
items, err := safe.StateListAll[*network.LinkStatus](ctx, c.nodeClient.COSI)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -16,6 +16,7 @@ import (
|
||||
"syscall"
|
||||
|
||||
multierror "github.com/hashicorp/go-multierror"
|
||||
"github.com/siderolabs/gen/slices"
|
||||
)
|
||||
|
||||
// Tar creates .tar archive and writes it to output for every item in paths channel.
|
||||
@ -105,7 +106,7 @@ func processFile(ctx context.Context, tw *tar.Writer, fi FileItem, buf []byte) e
|
||||
}
|
||||
case n < len(buf):
|
||||
header.Size = int64(n)
|
||||
r = bytes.NewReader(append([]byte(nil), buf[:n]...))
|
||||
r = bytes.NewReader(slices.Clone(buf[:n]))
|
||||
default:
|
||||
// none matched so the file is bigger than we expected, ignore it and copy as zero size
|
||||
skipData = true
|
||||
|
@ -11,7 +11,6 @@ import (
|
||||
"net/netip"
|
||||
"strings"
|
||||
|
||||
"github.com/cosi-project/runtime/pkg/resource"
|
||||
"github.com/cosi-project/runtime/pkg/safe"
|
||||
"github.com/siderolabs/gen/maps"
|
||||
"google.golang.org/grpc/codes"
|
||||
@ -406,11 +405,7 @@ func K8sControlPlaneStaticPods(ctx context.Context, cl ClusterInfo) error {
|
||||
"kube-system/kube-scheduler": {},
|
||||
}
|
||||
|
||||
items, err := safe.StateList[*k8s.StaticPodStatus](
|
||||
client.WithNode(ctx, node.InternalIP.String()),
|
||||
c.COSI,
|
||||
resource.NewMetadata(k8s.NamespaceName, k8s.StaticPodStatusType, "", resource.VersionUndefined),
|
||||
)
|
||||
items, err := safe.StateListAll[*k8s.StaticPodStatus](client.WithNode(ctx, node.InternalIP.String()), c.COSI)
|
||||
if err != nil {
|
||||
if client.StatusCode(err) == codes.Unimplemented {
|
||||
// old version of Talos without COSI API
|
||||
|
@ -9,7 +9,6 @@ import (
|
||||
"errors"
|
||||
fmt "fmt"
|
||||
|
||||
"github.com/cosi-project/runtime/pkg/resource"
|
||||
"github.com/cosi-project/runtime/pkg/safe"
|
||||
"github.com/cosi-project/runtime/pkg/state"
|
||||
"github.com/dustin/go-humanize"
|
||||
@ -21,7 +20,6 @@ import (
|
||||
"github.com/siderolabs/talos/pkg/machinery/config/types/v1alpha1/machine"
|
||||
"github.com/siderolabs/talos/pkg/machinery/constants"
|
||||
"github.com/siderolabs/talos/pkg/machinery/resources/runtime"
|
||||
"github.com/siderolabs/talos/pkg/machinery/resources/v1alpha1"
|
||||
"github.com/siderolabs/talos/pkg/minimal"
|
||||
)
|
||||
|
||||
@ -210,11 +208,7 @@ type mountData struct {
|
||||
var ErrOldTalosVersion = fmt.Errorf("old Talos version")
|
||||
|
||||
func getEphemeralPartitionData(ctx context.Context, state state.State, nodeIP string) (mountData, error) {
|
||||
items, err := safe.StateList[*runtime.MountStatus](
|
||||
client.WithNode(ctx, nodeIP),
|
||||
state,
|
||||
resource.NewMetadata(v1alpha1.NamespaceName, runtime.MountStatusType, "", resource.VersionUndefined),
|
||||
)
|
||||
items, err := safe.StateListAll[*runtime.MountStatus](client.WithNode(ctx, nodeIP), state)
|
||||
if err != nil {
|
||||
if client.StatusCode(err) == codes.Unimplemented {
|
||||
// old version of Talos without COSI API
|
||||
|
@ -14,6 +14,7 @@ import (
|
||||
"github.com/cosi-project/runtime/pkg/resource"
|
||||
"github.com/cosi-project/runtime/pkg/safe"
|
||||
"github.com/cosi-project/runtime/pkg/state"
|
||||
"github.com/siderolabs/gen/slices"
|
||||
"github.com/siderolabs/go-retry/retry"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
@ -37,7 +38,7 @@ func upgradeKubelet(ctx context.Context, cluster UpgradeProvider, options Upgrad
|
||||
|
||||
options.Log("updating kubelet to version %q", options.Path.ToVersion())
|
||||
|
||||
for _, node := range append(append([]string(nil), options.controlPlaneNodes...), options.workerNodes...) {
|
||||
for _, node := range append(slices.Clone(options.controlPlaneNodes), options.workerNodes...) {
|
||||
if err := upgradeKubeletOnNode(ctx, cluster, options, node); err != nil {
|
||||
return fmt.Errorf("error updating node %q: %w", node, err)
|
||||
}
|
||||
|
@ -400,7 +400,7 @@ func getResources(ctx context.Context, c *client.Client) ([]nodeCollector, error
|
||||
return nil, fmt.Errorf("got more than one node in the context: %v", nodes)
|
||||
}
|
||||
|
||||
rds, err := safe.StateList[*meta.ResourceDefinition](client.WithNode(ctx, nodes[0]), c.COSI, resource.NewMetadata(meta.NamespaceName, meta.ResourceDefinitionType, "", resource.VersionUndefined))
|
||||
rds, err := safe.StateListAll[*meta.ResourceDefinition](client.WithNode(ctx, nodes[0]), c.COSI)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -19,7 +19,7 @@ import (
|
||||
|
||||
// ResolveResourceKind resolves potentially aliased 'resourceType' and replaces empty 'resourceNamespace' with the default namespace for the resource.
|
||||
func (c *Client) ResolveResourceKind(ctx context.Context, resourceNamespace *resource.Namespace, resourceType resource.Type) (*meta.ResourceDefinition, error) {
|
||||
registeredResources, err := safe.StateList[*meta.ResourceDefinition](ctx, c.COSI, resource.NewMetadata(meta.NamespaceName, meta.ResourceDefinitionType, "", resource.VersionUndefined))
|
||||
registeredResources, err := safe.StateListAll[*meta.ResourceDefinition](ctx, c.COSI)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -23,6 +23,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/siderolabs/crypto/x509"
|
||||
"github.com/siderolabs/gen/slices"
|
||||
tnet "github.com/siderolabs/net"
|
||||
|
||||
"github.com/siderolabs/talos/pkg/machinery/config"
|
||||
@ -640,7 +641,7 @@ func NewInput(clustername, endpoint, kubernetesVersion string, secrets *SecretsB
|
||||
return nil, err
|
||||
}
|
||||
|
||||
additionalSubjectAltNames := append([]string(nil), options.AdditionalSubjectAltNames...)
|
||||
additionalSubjectAltNames := slices.Clone(options.AdditionalSubjectAltNames)
|
||||
|
||||
if !options.VersionContract.SupportsDynamicCertSANs() {
|
||||
additionalSubjectAltNames = append(additionalSubjectAltNames, options.EndpointList...)
|
||||
|
@ -600,7 +600,7 @@ func (d *Device) Interface() string {
|
||||
func (d *Device) Addresses() []string {
|
||||
switch {
|
||||
case len(d.DeviceAddresses) > 0:
|
||||
return append([]string(nil), d.DeviceAddresses...)
|
||||
return slices.Clone(d.DeviceAddresses)
|
||||
case d.DeviceCIDR != "":
|
||||
return []string{d.DeviceCIDR}
|
||||
default:
|
||||
@ -1024,7 +1024,7 @@ func (b *Bridge) STP() config.STP {
|
||||
func (v *Vlan) Addresses() []string {
|
||||
switch {
|
||||
case len(v.VlanAddresses) > 0:
|
||||
return append([]string(nil), v.VlanAddresses...)
|
||||
return slices.Clone(v.VlanAddresses)
|
||||
case v.VlanCIDR != "":
|
||||
return []string{v.VlanCIDR}
|
||||
default:
|
||||
|
@ -6,6 +6,8 @@ package v1alpha1
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/siderolabs/gen/slices"
|
||||
)
|
||||
|
||||
// Unstructured allows wrapping any map[string]interface{} into a config object.
|
||||
@ -58,7 +60,7 @@ func deepCopyUnstructured(x interface{}) interface{} {
|
||||
case string, bool, int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, float32, float64, complex64, complex128, nil:
|
||||
return x
|
||||
case []byte:
|
||||
return append([]byte(nil), x...)
|
||||
return slices.Clone(x)
|
||||
default:
|
||||
panic(fmt.Errorf("cannot deep copy %T", x))
|
||||
}
|
||||
|
@ -8,7 +8,7 @@ replace gopkg.in/yaml.v3 => github.com/unix4ever/yaml v0.0.0-20220527175918-f17b
|
||||
|
||||
require (
|
||||
github.com/containerd/go-cni v1.1.9
|
||||
github.com/cosi-project/runtime v0.3.0
|
||||
github.com/cosi-project/runtime v0.3.1-alpha.2.0.20230511165115-82b69d862a7a
|
||||
github.com/dustin/go-humanize v1.0.1
|
||||
github.com/evanphx/json-patch v5.6.0+incompatible
|
||||
github.com/ghodss/yaml v1.0.0
|
||||
@ -20,7 +20,7 @@ require (
|
||||
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8
|
||||
github.com/santhosh-tekuri/jsonschema/v5 v5.3.0
|
||||
github.com/siderolabs/crypto v0.4.0
|
||||
github.com/siderolabs/gen v0.4.4
|
||||
github.com/siderolabs/gen v0.4.5
|
||||
github.com/siderolabs/go-api-signature v0.2.3
|
||||
github.com/siderolabs/go-blockdevice v0.4.5
|
||||
github.com/siderolabs/go-debug v0.2.2
|
||||
@ -61,7 +61,7 @@ require (
|
||||
go.uber.org/zap v1.24.0 // indirect
|
||||
golang.org/x/crypto v0.8.0 // indirect
|
||||
golang.org/x/net v0.9.0 // indirect
|
||||
golang.org/x/sync v0.1.0 // indirect
|
||||
golang.org/x/sync v0.2.0 // indirect
|
||||
golang.org/x/sys v0.8.0 // indirect
|
||||
golang.org/x/text v0.9.0 // indirect
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
|
||||
|
@ -21,8 +21,8 @@ github.com/containerd/go-cni v1.1.9 h1:ORi7P1dYzCwVM6XPN4n3CbkuOx/NZ2DOqy+SHRdo9
|
||||
github.com/containerd/go-cni v1.1.9/go.mod h1:XYrZJ1d5W6E2VOvjffL3IZq0Dz6bsVlERHbekNK90PM=
|
||||
github.com/containernetworking/cni v1.1.2 h1:wtRGZVv7olUHMOqouPpn3cXJWpJgM6+EUl31EQbXALQ=
|
||||
github.com/containernetworking/cni v1.1.2/go.mod h1:sDpYKmGVENF3s6uvMvGgldDWeG8dMxakj/u+i9ht9vw=
|
||||
github.com/cosi-project/runtime v0.3.0 h1:f8++A7HUu7pQv9G3IhQworfA4TFLdzGWl3W+jLQF3Oo=
|
||||
github.com/cosi-project/runtime v0.3.0/go.mod h1:BBFzt+ANf4BSlVGIbemVuz+Hql8F3tveWaWoErUi0lY=
|
||||
github.com/cosi-project/runtime v0.3.1-alpha.2.0.20230511165115-82b69d862a7a h1:H52VL6of0xYiEeM7HLBUnRCWKZzGKLV3QKLlTxM3iD4=
|
||||
github.com/cosi-project/runtime v0.3.1-alpha.2.0.20230511165115-82b69d862a7a/go.mod h1:g+0MZ3+2MIUkUL7JYTqgYeo5f4j7dAuGem6apjBJ1XU=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
@ -111,8 +111,8 @@ github.com/santhosh-tekuri/jsonschema/v5 v5.3.0 h1:uIkTLo0AGRc8l7h5l9r+GcYi9qfVP
|
||||
github.com/santhosh-tekuri/jsonschema/v5 v5.3.0/go.mod h1:FKdcjfQW6rpZSnxxUvEA5H/cDPdvJ/SZJQLWWXWGrZ0=
|
||||
github.com/siderolabs/crypto v0.4.0 h1:o1KIR1KyevUcY9nbJlSyQAj7+p+rveGGF8LjAAFMtjc=
|
||||
github.com/siderolabs/crypto v0.4.0/go.mod h1:itZpBsJ9i0aH8jiHAuSlKCal7hni7X1aDYo6vGVl5LY=
|
||||
github.com/siderolabs/gen v0.4.4 h1:iShHEAfb3i9jaeDXjT11TepsjdgGoChBKbUuUz4CqnQ=
|
||||
github.com/siderolabs/gen v0.4.4/go.mod h1:wS8tFq7sn5vqKAuyS30vJUig3tX5v6q79VG4KfUnILM=
|
||||
github.com/siderolabs/gen v0.4.5 h1:rwXUVJlL7hYza1LrSVXfT905ZC9Rgei37jMKKs/+eP0=
|
||||
github.com/siderolabs/gen v0.4.5/go.mod h1:wS8tFq7sn5vqKAuyS30vJUig3tX5v6q79VG4KfUnILM=
|
||||
github.com/siderolabs/go-api-signature v0.2.3 h1:7jaZ2R1TiJ/xAsMCiFCm72n/PsnoVYt1R+Savbj7l/0=
|
||||
github.com/siderolabs/go-api-signature v0.2.3/go.mod h1:HmO3kVEXgrXYzj0tLHT9HAAu0I4grz2/dJwq8AdzE5Q=
|
||||
github.com/siderolabs/go-blockdevice v0.4.5 h1:NgpR9XTl/N7WeL59QHBsseDD0Nb8Y2nel+W3u7xHIvY=
|
||||
@ -175,8 +175,9 @@ golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJ
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o=
|
||||
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI=
|
||||
golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
|
@ -11,6 +11,8 @@ import (
|
||||
"net/http"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/siderolabs/gen/slices"
|
||||
)
|
||||
|
||||
// Server is an in-memory http web server.
|
||||
@ -54,7 +56,7 @@ func NewServer(address string) (Server, error) {
|
||||
}
|
||||
|
||||
func (s *server) AddFile(filename string, contents []byte) error {
|
||||
contentsCopy := append([]byte(nil), contents...)
|
||||
contentsCopy := slices.Clone(contents)
|
||||
|
||||
s.mux.Handle("/"+filename, http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
|
||||
switch req.Method {
|
||||
|
Loading…
x
Reference in New Issue
Block a user