From 0f2625111b69b3d39bea0a3245e36c09e281ff4b Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Sat, 18 Jan 2025 10:29:07 +0100 Subject: [PATCH] Server side filtering by addressfamily --- cmd/ip.go | 25 +------------------------ cmd/network.go | 1 + go.mod | 4 ++-- go.sum | 16 ++++++++-------- 4 files changed, 12 insertions(+), 34 deletions(-) diff --git a/cmd/ip.go b/cmd/ip.go index 6a0cba86..e8423df3 100644 --- a/cmd/ip.go +++ b/cmd/ip.go @@ -3,7 +3,6 @@ package cmd import ( "errors" "fmt" - "net/netip" "strings" "github.com/metal-stack/metal-go/api/client/ip" @@ -110,34 +109,12 @@ func (c *ipCmd) List() ([]*models.V1IPResponse, error) { Machineid: viper.GetString("machineid"), Networkprefix: viper.GetString("prefix"), Tags: viper.GetStringSlice("tags"), + Addressfamily: viper.GetString("addressfamily"), }), nil) if err != nil { return nil, err } - // actually filtered client side because server side would require a reql filter for addressfamilies - if viper.IsSet("addressfamily") { - af := viper.GetString("addressfamily") - var result []*models.V1IPResponse - for _, ipresp := range resp.Payload { - if ipresp == nil || ipresp.Ipaddress == nil { - continue - } - parsedIP, err := netip.ParseAddr(*ipresp.Ipaddress) - if err != nil { - return nil, err - } - if parsedIP.Is4() && af == models.V1IPAllocateRequestAddressfamilyIPV6 { - continue - } - if parsedIP.Is6() && af == models.V1IPAllocateRequestAddressfamilyIPV4 { - continue - } - result = append(result, ipresp) - } - return result, nil - } - return resp.Payload, nil } diff --git a/cmd/network.go b/cmd/network.go index 325b705f..82d4bd04 100644 --- a/cmd/network.go +++ b/cmd/network.go @@ -203,6 +203,7 @@ func (c *networkCmd) List() ([]*models.V1NetworkResponse, error) { Prefixes: viper.GetStringSlice("prefixes"), Destinationprefixes: viper.GetStringSlice("destination-prefixes"), Parentnetworkid: viper.GetString("parent"), + Addressfamily: viper.GetString("addressfamily"), }), nil) if err != nil { return nil, err diff --git a/go.mod b/go.mod index d6fd1449..7e10a66a 100644 --- a/go.mod +++ b/go.mod @@ -10,12 +10,12 @@ require ( github.com/go-openapi/strfmt v0.23.0 github.com/google/go-cmp v0.6.0 github.com/google/uuid v1.6.0 - github.com/metal-stack/metal-go v0.39.5-0.20250116092740-5313a77fbebc + github.com/metal-stack/metal-go v0.39.5-0.20250118092712-1f02cded3753 github.com/metal-stack/metal-lib v0.19.0 github.com/metal-stack/updater v1.2.2 github.com/metal-stack/v v1.0.3 github.com/olekukonko/tablewriter v0.0.6-0.20230925090304-df64c4bbad77 - github.com/spf13/afero v1.11.0 + github.com/spf13/afero v1.12.0 github.com/spf13/cobra v1.8.1 github.com/spf13/pflag v1.0.5 github.com/spf13/viper v1.19.0 diff --git a/go.sum b/go.sum index 6cd23f13..dcc39be3 100644 --- a/go.sum +++ b/go.sum @@ -244,8 +244,8 @@ github.com/mdlayher/sdnotify v1.0.0 h1:Ma9XeLVN/l0qpyx1tNeMSeTjCPH6NtuD6/N9XdTlQ github.com/mdlayher/sdnotify v1.0.0/go.mod h1:HQUmpM4XgYkhDLtd+Uad8ZFK1T9D5+pNxnXQjCeJlGE= github.com/mdlayher/socket v0.5.1 h1:VZaqt6RkGkt2OE9l3GcC6nZkqD3xKeQLyfleW/uBcos= github.com/mdlayher/socket v0.5.1/go.mod h1:TjPLHI1UgwEv5J1B5q0zTZq12A/6H7nKmtTanQE37IQ= -github.com/metal-stack/metal-go v0.39.5-0.20250116092740-5313a77fbebc h1:09j2kxh+lV5+8ln1b72X/6qtRMYKIWzFF/KCLz6RoDw= -github.com/metal-stack/metal-go v0.39.5-0.20250116092740-5313a77fbebc/go.mod h1:ltItf/Md/z588c7Dr3X6iemCeOFh3rJ8nDL5Dpb9zFQ= +github.com/metal-stack/metal-go v0.39.5-0.20250118092712-1f02cded3753 h1:ph55Myan7XzhFPcxXeqoDPW5Ptbm6V0VTkA3kIbe050= +github.com/metal-stack/metal-go v0.39.5-0.20250118092712-1f02cded3753/go.mod h1:ltItf/Md/z588c7Dr3X6iemCeOFh3rJ8nDL5Dpb9zFQ= github.com/metal-stack/metal-lib v0.19.0 h1:4yBnp/jPGgX9KeCje3A4MFL2oDjgjOjgsIK391LltRI= github.com/metal-stack/metal-lib v0.19.0/go.mod h1:fCMaWwVGA/xAoGvBk72/nfzqBkHly0iOzrWpc55Fau4= github.com/metal-stack/security v0.9.0 h1:FYBXJfNJwUw2E0HBa+jay37XF7b6EikEuf4Mw8u04EY= @@ -276,8 +276,8 @@ github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h github.com/pierrec/lz4/v4 v4.1.14/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ= github.com/pierrec/lz4/v4 v4.1.21/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= -github.com/pkg/sftp v1.13.6 h1:JFZT4XbOU7l77xGSpOdW+pwIMqP044IyjXX6FGyEKFo= -github.com/pkg/sftp v1.13.6/go.mod h1:tz1ryNURKu77RL+GuCzmoJYxQczL3wLNNpPWagdg4Qk= +github.com/pkg/sftp v1.13.7 h1:uv+I3nNJvlKZIQGSr8JVQLNHFU9YhhNpvC14Y6KgmSM= +github.com/pkg/sftp v1.13.7/go.mod h1:KMKI0t3T6hfA+lTR/ssZdunHo+uwq7ghoN09/FSu3DY= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -301,8 +301,8 @@ github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys= github.com/segmentio/asm v1.2.0/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= -github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= -github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= +github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs= +github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= @@ -371,8 +371,8 @@ go.opentelemetry.io/otel v1.33.0 h1:/FerN9bax5LoK51X/sI0SVYrjSE0/yUL7DpxW4K3FWw= go.opentelemetry.io/otel v1.33.0/go.mod h1:SUUkR6csvUQl+yjReHu5uM3EtVV7MBm5FHKRlNx4I8I= go.opentelemetry.io/otel/metric v1.33.0 h1:r+JOocAyeRVXD8lZpjdQjzMadVZp2M4WmQ+5WtEnklQ= go.opentelemetry.io/otel/metric v1.33.0/go.mod h1:L9+Fyctbp6HFTddIxClbQkjtubW6O9QS3Ann/M82u6M= -go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw= -go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= +go.opentelemetry.io/otel/sdk v1.29.0 h1:vkqKjk7gwhS8VaWb0POZKmIEDimRCMsopNYnriHyryo= +go.opentelemetry.io/otel/sdk v1.29.0/go.mod h1:pM8Dx5WKnvxLCb+8lG1PRNIDxu9g9b9g59Qr7hfAAok= go.opentelemetry.io/otel/trace v1.33.0 h1:cCJuF7LRjUFso9LPnEAHJDB2pqzp+hbO8eu1qqW2d/s= go.opentelemetry.io/otel/trace v1.33.0/go.mod h1:uIcdVUZMpTAmz0tI1z04GoVSezK37CbGV4fr1f2nBck= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=