diff --git a/cmd/client/client.go b/cmd/client/client.go index b6899d5..0dd5042 100644 --- a/cmd/client/client.go +++ b/cmd/client/client.go @@ -70,7 +70,7 @@ func main() { c := client(ctx) result, err := c.AcquireChildPrefix(context.Background(), connect.NewRequest(&v1.AcquireChildPrefixRequest{ Cidr: ctx.String("parent"), - Length: uint32(ctx.Uint("length")), + Length: uint32(ctx.Uint("length")), // nolint:gosec })) if err != nil { diff --git a/go.mod b/go.mod index d0898f8..b88aaec 100644 --- a/go.mod +++ b/go.mod @@ -12,15 +12,15 @@ require ( github.com/klauspost/connect-compress/v2 v2.0.0 github.com/lib/pq v1.10.9 github.com/metal-stack/v v1.0.3 - github.com/prometheus/client_golang v1.19.1 + github.com/prometheus/client_golang v1.20.2 github.com/redis/go-redis/v9 v9.6.1 github.com/stretchr/testify v1.9.0 - github.com/testcontainers/testcontainers-go v0.32.0 + github.com/testcontainers/testcontainers-go v0.33.0 github.com/urfave/cli/v2 v2.27.4 go.etcd.io/etcd/client/v3 v3.5.15 go.mongodb.org/mongo-driver v1.16.1 - go.opentelemetry.io/otel/exporters/prometheus v0.50.0 - go.opentelemetry.io/otel/sdk/metric v1.28.0 + go.opentelemetry.io/otel/exporters/prometheus v0.51.0 + go.opentelemetry.io/otel/sdk/metric v1.29.0 go4.org/netipx v0.0.0-20231129151722-fdeea329fbba golang.org/x/net v0.28.0 golang.org/x/sync v0.8.0 @@ -28,14 +28,13 @@ require ( ) require ( - dario.cat/mergo v1.0.0 // indirect + dario.cat/mergo v1.0.1 // indirect + github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 // indirect github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect - github.com/Microsoft/hcsshim v0.12.5 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/containerd/containerd v1.7.20 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect github.com/coreos/go-semver v0.3.1 // indirect @@ -57,7 +56,7 @@ require ( github.com/golang/snappy v0.0.4 // indirect github.com/google/uuid v1.6.0 // indirect github.com/klauspost/compress v1.17.9 // indirect - github.com/lufia/plan9stats v0.0.0-20240513124658-fba389f38bae // indirect + github.com/lufia/plan9stats v0.0.0-20240819163618-b1d8f4d146e7 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/patternmatcher v0.6.0 // indirect @@ -76,6 +75,7 @@ require ( github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common v0.55.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect + github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/shirou/gopsutil/v3 v3.24.5 // indirect github.com/shoenig/go-m1cpu v0.1.6 // indirect @@ -90,18 +90,20 @@ require ( github.com/yusufpapurcu/wmi v1.2.4 // indirect go.etcd.io/etcd/api/v3 v3.5.15 // indirect go.etcd.io/etcd/client/pkg/v3 v3.5.15 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 // indirect - go.opentelemetry.io/otel v1.28.0 // indirect - go.opentelemetry.io/otel/metric v1.28.0 // indirect - go.opentelemetry.io/otel/sdk v1.28.0 // indirect - go.opentelemetry.io/otel/trace v1.28.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 // indirect + go.opentelemetry.io/otel v1.29.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.29.0 // indirect + go.opentelemetry.io/otel/metric v1.29.0 // indirect + go.opentelemetry.io/otel/sdk v1.29.0 // indirect + go.opentelemetry.io/otel/trace v1.29.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect golang.org/x/crypto v0.26.0 // indirect golang.org/x/sys v0.24.0 // indirect golang.org/x/text v0.17.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240812133136-8ffd90a71988 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240812133136-8ffd90a71988 // indirect + golang.org/x/time v0.6.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240823204242-4ba0660f739c // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240823204242-4ba0660f739c // indirect google.golang.org/grpc v1.65.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 79be722..537574b 100644 --- a/go.sum +++ b/go.sum @@ -6,18 +6,16 @@ connectrpc.com/grpcreflect v1.2.0 h1:Q6og1S7HinmtbEuBvARLNwYmTbhEGRpHDhqrPNlmK+U connectrpc.com/grpcreflect v1.2.0/go.mod h1:nwSOKmE8nU5u/CidgHtPYk1PFI3U9ignz7iDMxOYkSY= connectrpc.com/otelconnect v0.7.1 h1:scO5pOb0i4yUE66CnNrHeK1x51yq0bE0ehPg6WvzXJY= connectrpc.com/otelconnect v0.7.1/go.mod h1:dh3bFgHBTb2bkqGCeVVOtHJreSns7uu9wwL2Tbz17ms= -dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= -dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= +dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= +dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= -github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= -github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 h1:He8afgbRMd7mFxO99hRNu+6tazq8nFF9lIwo9JFroBk= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= -github.com/Microsoft/hcsshim v0.12.5 h1:bpTInLlDy/nDRWFVcefDZZ1+U8tS+rz3MxjKgu9boo0= -github.com/Microsoft/hcsshim v0.12.5/go.mod h1:tIUGego4G1EN5Hb6KC90aDYiUI2dqLSTTOCjVNpOgZ8= github.com/avast/retry-go/v4 v4.6.0 h1:K9xNA+KeB8HHc2aWFuLb25Offp+0iVRXEvFx8IinRJA= github.com/avast/retry-go/v4 v4.6.0/go.mod h1:gvWlPhBVsvBbLkVGDg/KwvBv0bEkCOLRRSHKIr2PyOE= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -30,8 +28,6 @@ github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK3 github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/containerd/containerd v1.7.20 h1:Sl6jQYk3TRavaU83h66QMbI2Nqg9Jm6qzwX57Vsn1SQ= -github.com/containerd/containerd v1.7.20/go.mod h1:52GsS5CwquuqPuLncsXwG0t2CiUce+KsNHJZQJvAgR0= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= @@ -83,8 +79,8 @@ github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 h1:asbCHRVmodnJTuQ3qamDwqVOIjwqUPTYmYuemVOx+Ys= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0/go.mod h1:ggCgvZ2r7uOoQjOyu2Y1NhHmEPPzzuhWgcza5M1Ji1I= github.com/jmoiron/sqlx v1.4.0 h1:1PLqN7S1UYp5t4SrVVnt4nUVNemrDAtxlulVe+Qgm3o= github.com/jmoiron/sqlx v1.4.0/go.mod h1:ZrZ7UsYB/weZdl2Bxg6jCRO9c3YHl8r3ahlKmRT4JLY= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -97,10 +93,12 @@ github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/lufia/plan9stats v0.0.0-20240513124658-fba389f38bae h1:dIZY4ULFcto4tAFlj1FYZl8ztUZ13bdq+PLY+NOfbyI= -github.com/lufia/plan9stats v0.0.0-20240513124658-fba389f38bae/go.mod h1:ilwx/Dta8jXAgpFYFvSWEMwxmbWXyiUHkd5FwyKhb5k= +github.com/lufia/plan9stats v0.0.0-20240819163618-b1d8f4d146e7 h1:5RK988zAqB3/AN3opGfRpoQgAVqr6/A5+qRTi67VUZY= +github.com/lufia/plan9stats v0.0.0-20240819163618-b1d8f4d146e7/go.mod h1:ilwx/Dta8jXAgpFYFvSWEMwxmbWXyiUHkd5FwyKhb5k= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= @@ -135,8 +133,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= -github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= +github.com/prometheus/client_golang v1.20.2 h1:5ctymQzZlyOON1666svgwn3s6IKWgfbjsejTMiXIyjg= +github.com/prometheus/client_golang v1.20.2/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= @@ -145,8 +143,8 @@ github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0leargg github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/redis/go-redis/v9 v9.6.1 h1:HHDteefn6ZkTtY5fGUE8tj8uy85AHk6zP7CpzIAM0y4= github.com/redis/go-redis/v9 v9.6.1/go.mod h1:0C0c6ycQsdpVNQpxb1njEQIqkx5UcsM8FJCQLgE9+RA= -github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= -github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/shirou/gopsutil/v3 v3.24.5 h1:i0t8kL+kQTvpAYToeuiVk3TgDeKOFioZO3Ztz/iZ9pI= @@ -161,8 +159,8 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/testcontainers/testcontainers-go v0.32.0 h1:ug1aK08L3gCHdhknlTTwWjPHPS+/alvLJU/DRxTD/ME= -github.com/testcontainers/testcontainers-go v0.32.0/go.mod h1:CRHrzHLQhlXUsa5gXjTOfqIEJcrK5+xMDmBr/WMI88E= +github.com/testcontainers/testcontainers-go v0.33.0 h1:zJS9PfXYT5O0ZFXM2xxXfk4J5UMw/kRiISng037Gxdw= +github.com/testcontainers/testcontainers-go v0.33.0/go.mod h1:W80YpTa8D5C3Yy16icheD01UTDu+LmXIA2Keo+jWtT8= github.com/tklauser/go-sysconf v0.3.14 h1:g5vzr9iPFFz24v2KZXs/pvpvh8/V9Fw6vQK5ZZb78yU= github.com/tklauser/go-sysconf v0.3.14/go.mod h1:1ym4lWMLUOhuBOPGtRcJm7tEGX4SCYNEEEtghGG/8uY= github.com/tklauser/numcpus v0.8.0 h1:Mx4Wwe/FjZLeQsK/6kt2EOepwwSl7SmJrK5bV/dXYgY= @@ -192,26 +190,26 @@ go.etcd.io/etcd/client/v3 v3.5.15 h1:23M0eY4Fd/inNv1ZfU3AxrbbOdW79r9V9Rl62Nm6ip4 go.etcd.io/etcd/client/v3 v3.5.15/go.mod h1:CLSJxrYjvLtHsrPKsy7LmZEE+DK2ktfd2bN4RhBMwlU= go.mongodb.org/mongo-driver v1.16.1 h1:rIVLL3q0IHM39dvE+z2ulZLp9ENZKThVfuvN/IiN4l8= go.mongodb.org/mongo-driver v1.16.1/go.mod h1:oB6AhJQvFQL4LEHyXi6aJzQJtBiTQHiAd83l0GdFaiw= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 h1:4K4tsIXefpVJtvA/8srF4V4y0akAoPHkIslgAkjixJA= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0/go.mod h1:jjdQuTGVsXV4vSs+CJ2qYDeDPf9yIJV23qlIzBm73Vg= -go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= -go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 h1:Mne5On7VWdx7omSrSSZvM4Kw7cS7NQkOOmLcgscI51U= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0/go.mod h1:IPtUMKL4O3tH5y+iXVyAXqpAwMuzC1IrxVS81rummfE= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0 h1:IeMeyr1aBvBiPVYihXIaeIZba6b8E1bYp7lbdxK8CQg= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0/go.mod h1:oVdCUtjq9MK9BlS7TtucsQwUcXcymNiEDjgDD2jMtZU= -go.opentelemetry.io/otel/exporters/prometheus v0.50.0 h1:2Ewsda6hejmbhGFyUvWZjUThC98Cf8Zy6g0zkIimOng= -go.opentelemetry.io/otel/exporters/prometheus v0.50.0/go.mod h1:pMm5PkUo5YwbLiuEf7t2xg4wbP0/eSJrMxIMxKosynY= -go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6bOeuA5Q= -go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s= -go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE= -go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg= -go.opentelemetry.io/otel/sdk/metric v1.28.0 h1:OkuaKgKrgAbYrrY0t92c+cC+2F6hsFNnCQArXCKlg08= -go.opentelemetry.io/otel/sdk/metric v1.28.0/go.mod h1:cWPjykihLAPvXKi4iZc1dpER3Jdq2Z0YLse3moQUCpg= -go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g= -go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI= -go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= -go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 h1:TT4fX+nBOA/+LUkobKGW1ydGcn+G3vRw9+g5HwCphpk= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0/go.mod h1:L7UH0GbB0p47T4Rri3uHjbpCFYrVrwc1I25QhNPiGK8= +go.opentelemetry.io/otel v1.29.0 h1:PdomN/Al4q/lN6iBJEN3AwPvUiHPMlt93c8bqTG5Llw= +go.opentelemetry.io/otel v1.29.0/go.mod h1:N/WtXPs1CNCUEx+Agz5uouwCba+i+bJGFicT8SR4NP8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.29.0 h1:dIIDULZJpgdiHz5tXrTgKIMLkus6jEFa7x5SOKcyR7E= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.29.0/go.mod h1:jlRVBe7+Z1wyxFSUs48L6OBQZ5JwH2Hg/Vbl+t9rAgI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.29.0 h1:JAv0Jwtl01UFiyWZEMiJZBiTlv5A50zNs8lsthXqIio= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.29.0/go.mod h1:QNKLmUEAq2QUbPQUfvw4fmv0bgbK7UlOSFCnXyfvSNc= +go.opentelemetry.io/otel/exporters/prometheus v0.51.0 h1:G7uexXb/K3T+T9fNLCCKncweEtNEBMTO+46hKX5EdKw= +go.opentelemetry.io/otel/exporters/prometheus v0.51.0/go.mod h1:v0mFe5Kk7woIh938mrZBJBmENYquyA0IICrlYm4Y0t4= +go.opentelemetry.io/otel/metric v1.29.0 h1:vPf/HFWTNkPu1aYeIsc98l4ktOQaL6LeSoeV2g+8YLc= +go.opentelemetry.io/otel/metric v1.29.0/go.mod h1:auu/QWieFVWx+DmQOUMgj0F8LHWdgalxXqvp7BII/W8= +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/sdk/metric v1.29.0 h1:K2CfmJohnRgvZ9UAj2/FhIf/okdWcNdBwe1m8xFXiSY= +go.opentelemetry.io/otel/sdk/metric v1.29.0/go.mod h1:6zZLdCl2fkauYoZIOn/soQIDSWFmNSRcICarHfuhNJQ= +go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt39JTi4= +go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ= +go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= +go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= @@ -267,8 +265,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= -golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44= -golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= +golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -278,10 +276,10 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20240812133136-8ffd90a71988 h1:+/tmTy5zAieooKIXfzDm9KiA3Bv6JBwriRN9LY+yayk= -google.golang.org/genproto/googleapis/api v0.0.0-20240812133136-8ffd90a71988/go.mod h1:4+X6GvPs+25wZKbQq9qyAXrwIRExv7w0Ea6MgZLZiDM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240812133136-8ffd90a71988 h1:V71AcdLZr2p8dC9dbOIMCpqi4EmRl8wUwnJzXXLmbmc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240812133136-8ffd90a71988/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/genproto/googleapis/api v0.0.0-20240823204242-4ba0660f739c h1:e0zB268kOca6FbuJkYUGxfwG4DKFZG/8DLyv9Zv66cE= +google.golang.org/genproto/googleapis/api v0.0.0-20240823204242-4ba0660f739c/go.mod h1:fO8wJzT2zbQbAjbIoos1285VfEIYKDDY+Dt+WpTkh6g= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240823204242-4ba0660f739c h1:Kqjm4WpoWvwhMPcrAczoTyMySQmYa9Wy2iL6Con4zn8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240823204242-4ba0660f739c/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= diff --git a/integration_test.go b/integration_test.go index f85514b..c2791cc 100644 --- a/integration_test.go +++ b/integration_test.go @@ -27,8 +27,8 @@ func TestIntegration(t *testing.T) { require.NoError(t, err) require.NotNil(t, publicInternet) - require.Equal(t, 25, int(publicInternet.Usage().AcquiredIPs)) - require.Equal(t, 32, int(publicInternet.Usage().AvailableIPs)) + require.Equal(t, uint64(25), publicInternet.Usage().AcquiredIPs) + require.Equal(t, uint64(32), publicInternet.Usage().AvailableIPs) require.Equal(t, "", publicInternet.ParentCidr) _, err = ipam.AcquireChildPrefix(ctx, publicInternet.Cidr, 29) require.EqualError(t, err, "prefix 1.2.3.0/27 has ips, acquire child prefix not possible") @@ -42,20 +42,20 @@ func TestIntegration(t *testing.T) { // reread prefix publicInternet, err = ipam.PrefixFrom(ctx, "1.2.3.0/27") require.NoError(t, err) - require.Equal(t, 26, int(publicInternet.Usage().AcquiredIPs)) + require.Equal(t, uint64(26), publicInternet.Usage().AcquiredIPs) _, err = ipam.ReleaseIP(ctx, ip) require.NoError(t, err) // reread prefix publicInternet, err = ipam.PrefixFrom(ctx, "1.2.3.0/27") require.NoError(t, err) - require.Equal(t, 25, int(publicInternet.Usage().AcquiredIPs)) + require.Equal(t, uint64(25), publicInternet.Usage().AcquiredIPs) // release acquired ip err = ipam.ReleaseIPFromPrefix(ctx, "1.2.3.0/27", "1.2.3.1") require.NoError(t, err) // reread prefix publicInternet, err = ipam.PrefixFrom(ctx, "1.2.3.0/27") require.NoError(t, err) - require.Equal(t, 24, int(publicInternet.Usage().AcquiredIPs)) + require.Equal(t, uint64(24), publicInternet.Usage().AcquiredIPs) // release unacquired ip err = ipam.ReleaseIPFromPrefix(ctx, "1.2.3.0/27", "1.2.3.24") require.EqualError(t, err, "NotFound: unable to release ip:1.2.3.24 because it is not allocated in prefix:1.2.3.0/27") @@ -74,9 +74,9 @@ func TestIntegration(t *testing.T) { sum += smallest t.Logf("available prefix:%s smallest left:%d sum:%d", pfx, smallest, sum) } - require.Equal(t, 60928, int(tenantSuper.Usage().AvailableSmallestPrefixes)) + require.Equal(t, uint64(60928), tenantSuper.Usage().AvailableSmallestPrefixes) // FIXME This Super Prefix has leaked child prefixes ! - require.Equal(t, 18, int(tenantSuper.Usage().AcquiredPrefixes)) + require.Equal(t, uint64(18), tenantSuper.Usage().AcquiredPrefixes) cp, err := ipam.AcquireChildPrefix(ctx, "10.128.0.0/14", 22) require.NoError(t, err) @@ -89,14 +89,14 @@ func TestIntegration(t *testing.T) { tenantSuper, err = ipam.PrefixFrom(ctx, "10.128.0.0/14") require.NoError(t, err) require.NotNil(t, tenantSuper) - require.Equal(t, 19, int(tenantSuper.Usage().AcquiredPrefixes)) + require.Equal(t, uint64(19), tenantSuper.Usage().AcquiredPrefixes) err = ipam.ReleaseChildPrefix(ctx, cp) require.NoError(t, err) // reread tenantSuper, err = ipam.PrefixFrom(ctx, "10.128.0.0/14") require.NoError(t, err) require.NotNil(t, tenantSuper) - require.Equal(t, 18, int(tenantSuper.Usage().AcquiredPrefixes)) + require.Equal(t, uint64(18), tenantSuper.Usage().AcquiredPrefixes) cp, err = ipam.AcquireSpecificChildPrefix(ctx, "10.128.0.0/14", "10.128.4.0/22") require.NoError(t, err) @@ -108,7 +108,7 @@ func TestIntegration(t *testing.T) { tenantSuper, err = ipam.PrefixFrom(ctx, "10.128.0.0/14") require.NoError(t, err) require.NotNil(t, tenantSuper) - require.Equal(t, 19, int(tenantSuper.Usage().AcquiredPrefixes)) + require.Equal(t, uint64(19), tenantSuper.Usage().AcquiredPrefixes) err = ipam.ReleaseChildPrefix(ctx, cp) require.NoError(t, err) // reread @@ -129,7 +129,7 @@ func TestIntegration(t *testing.T) { tenantSuper, err = ipam.PrefixFrom(ctx, "10.128.0.0/14") require.NoError(t, err) require.NotNil(t, tenantSuper) - require.Equal(t, 17, int(tenantSuper.Usage().AcquiredPrefixes)) + require.Equal(t, uint64(17), tenantSuper.Usage().AcquiredPrefixes) // Release existing child prefix with ips existingChildWithIPs, err := ipam.PrefixFrom(ctx, "10.130.36.0/22") @@ -166,9 +166,9 @@ func TestIntegrationP(t *testing.T) { tenantSuper1, err := ipam.PrefixFrom(ctx, "10.64.0.0/14") require.NoError(t, err) require.NotNil(t, tenantSuper1) - require.Equal(t, 2, int(tenantSuper1.Usage().AcquiredIPs)) - require.Equal(t, 56320, int(tenantSuper1.Usage().AvailableSmallestPrefixes)) - require.Equal(t, 36, int(tenantSuper1.Usage().AcquiredPrefixes)) + require.Equal(t, uint64(2), tenantSuper1.Usage().AcquiredIPs) + require.Equal(t, uint64(56320), tenantSuper1.Usage().AvailableSmallestPrefixes) + require.Equal(t, uint64(36), tenantSuper1.Usage().AcquiredPrefixes) cp, err := ipam.AcquireChildPrefix(ctx, "10.64.0.0/14", 22) require.NoError(t, err) @@ -181,14 +181,14 @@ func TestIntegrationP(t *testing.T) { tenantSuper1, err = ipam.PrefixFrom(ctx, "10.64.0.0/14") require.NoError(t, err) require.NotNil(t, tenantSuper1) - require.Equal(t, 37, int(tenantSuper1.Usage().AcquiredPrefixes)) + require.Equal(t, uint64(37), tenantSuper1.Usage().AcquiredPrefixes) err = ipam.ReleaseChildPrefix(ctx, cp) require.NoError(t, err) // reread tenantSuper1, err = ipam.PrefixFrom(ctx, "10.64.0.0/14") require.NoError(t, err) require.NotNil(t, tenantSuper1) - require.Equal(t, 36, int(tenantSuper1.Usage().AcquiredPrefixes)) + require.Equal(t, uint64(36), tenantSuper1.Usage().AcquiredPrefixes) cp, err = ipam.AcquireSpecificChildPrefix(ctx, "10.64.0.0/14", "10.64.0.0/22") require.NoError(t, err) @@ -200,14 +200,14 @@ func TestIntegrationP(t *testing.T) { tenantSuper1, err = ipam.PrefixFrom(ctx, "10.64.0.0/14") require.NoError(t, err) require.NotNil(t, tenantSuper1) - require.Equal(t, 37, int(tenantSuper1.Usage().AcquiredPrefixes)) + require.Equal(t, uint64(37), tenantSuper1.Usage().AcquiredPrefixes) err = ipam.ReleaseChildPrefix(ctx, cp) require.NoError(t, err) // reread tenantSuper1, err = ipam.PrefixFrom(ctx, "10.64.0.0/14") require.NoError(t, err) require.NotNil(t, tenantSuper1) - require.Equal(t, 36, int(tenantSuper1.Usage().AcquiredPrefixes)) + require.Equal(t, uint64(36), tenantSuper1.Usage().AcquiredPrefixes) _, err = ipam.AcquireIP(ctx, "10.64.0.0/14") require.EqualError(t, err, "prefix 10.64.0.0/14 has childprefixes, acquire ip not possible") @@ -226,15 +226,15 @@ func TestIntegrationP(t *testing.T) { } } // FIXME the tenantsuper has 2 more prefixes acquired - require.Len(t, childPrefixesOfTenantSuper, int(tenantSuper1.Usage().AcquiredPrefixes)-2) + require.Len(t, childPrefixesOfTenantSuper, int(tenantSuper1.Usage().AcquiredPrefixes)-2) // nolint:gosec // Tenant super network 2 tenantSuper2, err := ipam.PrefixFrom(ctx, "10.76.0.0/14") require.NoError(t, err) require.NotNil(t, tenantSuper2) - require.Equal(t, 2, int(tenantSuper2.Usage().AcquiredIPs)) - require.Equal(t, 58368, int(tenantSuper2.Usage().AvailableSmallestPrefixes)) - require.Equal(t, 28, int(tenantSuper2.Usage().AcquiredPrefixes)) + require.Equal(t, uint64(2), tenantSuper2.Usage().AcquiredIPs) + require.Equal(t, uint64(58368), tenantSuper2.Usage().AvailableSmallestPrefixes) + require.Equal(t, uint64(28), tenantSuper2.Usage().AcquiredPrefixes) cp, err = ipam.AcquireChildPrefix(ctx, "10.76.0.0/14", 22) require.NoError(t, err) @@ -247,14 +247,14 @@ func TestIntegrationP(t *testing.T) { tenantSuper2, err = ipam.PrefixFrom(ctx, "10.76.0.0/14") require.NoError(t, err) require.NotNil(t, tenantSuper2) - require.Equal(t, 29, int(tenantSuper2.Usage().AcquiredPrefixes)) + require.Equal(t, uint64(29), tenantSuper2.Usage().AcquiredPrefixes) err = ipam.ReleaseChildPrefix(ctx, cp) require.NoError(t, err) // reread tenantSuper2, err = ipam.PrefixFrom(ctx, "10.76.0.0/14") require.NoError(t, err) require.NotNil(t, tenantSuper2) - require.Equal(t, 28, int(tenantSuper2.Usage().AcquiredPrefixes)) + require.Equal(t, uint64(28), tenantSuper2.Usage().AcquiredPrefixes) cp, err = ipam.AcquireSpecificChildPrefix(ctx, "10.76.0.0/14", "10.76.0.0/22") require.NoError(t, err) @@ -266,14 +266,14 @@ func TestIntegrationP(t *testing.T) { tenantSuper2, err = ipam.PrefixFrom(ctx, "10.76.0.0/14") require.NoError(t, err) require.NotNil(t, tenantSuper2) - require.Equal(t, 29, int(tenantSuper2.Usage().AcquiredPrefixes)) + require.Equal(t, uint64(29), tenantSuper2.Usage().AcquiredPrefixes) err = ipam.ReleaseChildPrefix(ctx, cp) require.NoError(t, err) // reread tenantSuper2, err = ipam.PrefixFrom(ctx, "10.76.0.0/14") require.NoError(t, err) require.NotNil(t, tenantSuper2) - require.Equal(t, 28, int(tenantSuper2.Usage().AcquiredPrefixes)) + require.Equal(t, uint64(28), tenantSuper2.Usage().AcquiredPrefixes) _, err = ipam.AcquireIP(ctx, "10.76.0.0/14") require.EqualError(t, err, "prefix 10.76.0.0/14 has childprefixes, acquire ip not possible") @@ -291,15 +291,15 @@ func TestIntegrationP(t *testing.T) { childPrefixesOfTenantSuper[pfx.String()] = false } } - require.Len(t, childPrefixesOfTenantSuper, int(tenantSuper2.Usage().AcquiredPrefixes)) + require.Len(t, childPrefixesOfTenantSuper, int(tenantSuper2.Usage().AcquiredPrefixes)) // nolint:gosec // Public Internet publicInternet, err := ipam.PrefixFrom(ctx, "1.2.3.0/25") require.NoError(t, err) require.NotNil(t, publicInternet) - require.Equal(t, 128, int(publicInternet.Usage().AcquiredIPs)) - require.Equal(t, 128, int(publicInternet.Usage().AvailableIPs)) + require.Equal(t, uint64(128), publicInternet.Usage().AcquiredIPs) + require.Equal(t, uint64(128), publicInternet.Usage().AvailableIPs) require.Equal(t, "", publicInternet.ParentCidr) _, err = ipam.AcquireChildPrefix(ctx, publicInternet.Cidr, 29) require.EqualError(t, err, "prefix 1.2.3.0/25 has ips, acquire child prefix not possible") @@ -321,9 +321,9 @@ func TestIntegrationEtcd(t *testing.T) { require.NoError(t, err) require.NotNil(t, tenantSuper1) - require.Equal(t, 2, int(tenantSuper1.Usage().AcquiredIPs)) - require.Equal(t, 65536, int(tenantSuper1.Usage().AvailableSmallestPrefixes)) - require.Equal(t, 0, int(tenantSuper1.Usage().AcquiredPrefixes)) + require.Equal(t, uint64(2), tenantSuper1.Usage().AcquiredIPs) + require.Equal(t, uint64(65536), tenantSuper1.Usage().AvailableSmallestPrefixes) + require.Equal(t, uint64(0), tenantSuper1.Usage().AcquiredPrefixes) cp, err := ipam.AcquireChildPrefix(ctx, "10.64.0.0/14", 22) require.NoError(t, err) @@ -336,14 +336,14 @@ func TestIntegrationEtcd(t *testing.T) { tenantSuper1, err = ipam.PrefixFrom(ctx, "10.64.0.0/14") require.NoError(t, err) require.NotNil(t, tenantSuper1) - require.Equal(t, 1, int(tenantSuper1.Usage().AcquiredPrefixes)) + require.Equal(t, uint64(1), tenantSuper1.Usage().AcquiredPrefixes) err = ipam.ReleaseChildPrefix(ctx, cp) require.NoError(t, err) // reread tenantSuper1, err = ipam.PrefixFrom(ctx, "10.64.0.0/14") require.NoError(t, err) require.NotNil(t, tenantSuper1) - require.Equal(t, 0, int(tenantSuper1.Usage().AcquiredPrefixes)) + require.Equal(t, uint64(0), tenantSuper1.Usage().AcquiredPrefixes) cp, err = ipam.AcquireSpecificChildPrefix(ctx, "10.64.0.0/14", "10.64.0.0/22") require.NoError(t, err) @@ -358,9 +358,9 @@ func TestIntegrationEtcd(t *testing.T) { tenantSuper2, err := ipam.NewPrefix(ctx, "10.76.0.0/14") require.NoError(t, err) require.NotNil(t, tenantSuper2) - require.Equal(t, 2, int(tenantSuper2.Usage().AcquiredIPs)) - require.Equal(t, 65536, int(tenantSuper2.Usage().AvailableSmallestPrefixes)) - require.Equal(t, 0, int(tenantSuper2.Usage().AcquiredPrefixes)) + require.Equal(t, uint64(2), tenantSuper2.Usage().AcquiredIPs) + require.Equal(t, uint64(65536), tenantSuper2.Usage().AvailableSmallestPrefixes) + require.Equal(t, uint64(0), tenantSuper2.Usage().AcquiredPrefixes) cp, err = ipam.AcquireChildPrefix(ctx, "10.76.0.0/14", 22) require.NoError(t, err) @@ -373,14 +373,14 @@ func TestIntegrationEtcd(t *testing.T) { tenantSuper2, err = ipam.PrefixFrom(ctx, "10.76.0.0/14") require.NoError(t, err) require.NotNil(t, tenantSuper2) - require.Equal(t, 1, int(tenantSuper2.Usage().AcquiredPrefixes)) + require.Equal(t, uint64(1), tenantSuper2.Usage().AcquiredPrefixes) err = ipam.ReleaseChildPrefix(ctx, cp) require.NoError(t, err) // reread tenantSuper2, err = ipam.PrefixFrom(ctx, "10.76.0.0/14") require.NoError(t, err) require.NotNil(t, tenantSuper2) - require.Equal(t, 0, int(tenantSuper2.Usage().AcquiredPrefixes)) + require.Equal(t, uint64(0), tenantSuper2.Usage().AcquiredPrefixes) cp, err = ipam.AcquireSpecificChildPrefix(ctx, "10.76.0.0/14", "10.76.0.0/22") require.NoError(t, err) @@ -392,14 +392,14 @@ func TestIntegrationEtcd(t *testing.T) { tenantSuper2, err = ipam.PrefixFrom(ctx, "10.76.0.0/14") require.NoError(t, err) require.NotNil(t, tenantSuper2) - require.Equal(t, 1, int(tenantSuper2.Usage().AcquiredPrefixes)) + require.Equal(t, uint64(1), tenantSuper2.Usage().AcquiredPrefixes) err = ipam.ReleaseChildPrefix(ctx, cp) require.NoError(t, err) // reread tenantSuper2, err = ipam.PrefixFrom(ctx, "10.76.0.0/14") require.NoError(t, err) require.NotNil(t, tenantSuper2) - require.Equal(t, 0, int(tenantSuper2.Usage().AcquiredPrefixes)) + require.Equal(t, uint64(0), tenantSuper2.Usage().AcquiredPrefixes) _, err = ipam.AcquireIP(ctx, "10.76.0.0/14") require.EqualError(t, err, "prefix 10.76.0.0/14 has childprefixes, acquire ip not possible") @@ -417,15 +417,15 @@ func TestIntegrationEtcd(t *testing.T) { childPrefixesOfTenantSuper[pfx.String()] = false } } - require.Len(t, childPrefixesOfTenantSuper, int(tenantSuper2.Usage().AcquiredPrefixes)) + require.Len(t, childPrefixesOfTenantSuper, int(tenantSuper2.Usage().AcquiredPrefixes)) // nolint:gosec // Public Internet publicInternet, err := ipam.NewPrefix(ctx, "1.2.3.0/25") require.NoError(t, err) require.NotNil(t, publicInternet) - require.Equal(t, 2, int(publicInternet.Usage().AcquiredIPs)) - require.Equal(t, 128, int(publicInternet.Usage().AvailableIPs)) + require.Equal(t, uint64(2), publicInternet.Usage().AcquiredIPs) + require.Equal(t, uint64(128), publicInternet.Usage().AvailableIPs) require.Equal(t, "", publicInternet.ParentCidr) _, err = ipam.AcquireChildPrefix(ctx, publicInternet.Cidr, 29) require.NoError(t, err) diff --git a/pkg/service/ipam-service.go b/pkg/service/ipam-service.go index 1434ae8..310c45e 100644 --- a/pkg/service/ipam-service.go +++ b/pkg/service/ipam-service.go @@ -139,6 +139,9 @@ func (i *IPAMService) AcquireChildPrefix(ctx context.Context, req *connect.Reque childCidr = req.Msg.GetChildCidr() length = req.Msg.GetLength() ) + if length > 128 { + return nil, connect.NewError(connect.CodeInvalidArgument, errors.New("length must not be greater than 128")) + } if req.Msg.GetChildCidr() != "" { resp, err = i.ipamer.AcquireSpecificChildPrefix(ctx, parentCidr, childCidr) if err != nil { @@ -146,7 +149,7 @@ func (i *IPAMService) AcquireChildPrefix(ctx context.Context, req *connect.Reque return nil, connect.NewError(connect.CodeInvalidArgument, err) } } else { - resp, err = i.ipamer.AcquireChildPrefix(ctx, parentCidr, uint8(length)) + resp, err = i.ipamer.AcquireChildPrefix(ctx, parentCidr, uint8(length)) // nolint:gosec if err != nil { i.log.Error("acquirechildprefix", "parent cidr", parentCidr, "length", length, "error", err) return nil, connect.NewError(connect.CodeInvalidArgument, err) diff --git a/prefix.go b/prefix.go index 6ae2fd9..edfbd95 100644 --- a/prefix.go +++ b/prefix.go @@ -233,7 +233,7 @@ func (i *ipamer) acquireChildPrefixInternal(ctx context.Context, namespace, pare var cp netip.Prefix if !specificChildRequest { var ok bool - cp, _, ok = ipset.RemoveFreePrefix(uint8(length)) + cp, _, ok = ipset.RemoveFreePrefix(uint8(length)) // nolint:gosec if !ok { pfxs := ipset.Prefixes() if len(pfxs) == 0 { diff --git a/prefix_test.go b/prefix_test.go index 0f8ff88..e809c41 100644 --- a/prefix_test.go +++ b/prefix_test.go @@ -409,7 +409,7 @@ func TestIpamer_AcquireChildPrefixFragmented(t *testing.T) { prefix, err := ipam.NewPrefix(ctx, "192.168.0.0/20") require.NoError(t, err) s, _ := prefix.availablePrefixes() - require.Equal(t, 1024, int(s)) + require.Equal(t, uint64(1024), s) require.Empty(t, prefix.acquiredPrefixes()) require.Empty(t, prefix.Usage().AcquiredPrefixes) @@ -420,9 +420,9 @@ func TestIpamer_AcquireChildPrefixFragmented(t *testing.T) { prefix, err = ipam.PrefixFrom(ctx, prefix.Cidr) require.NoError(t, err) s, _ = prefix.availablePrefixes() - require.Equal(t, 512, int(s)) - require.Equal(t, 1, int(prefix.acquiredPrefixes())) - require.Equal(t, 1, int(prefix.Usage().AcquiredPrefixes)) + require.Equal(t, uint64(512), s) + require.Equal(t, uint64(1), prefix.acquiredPrefixes()) + require.Equal(t, uint64(1), prefix.Usage().AcquiredPrefixes) // acquire 1/4the of the rest 192.168.8.0/22 = 192.168.8.0 - 192.168.11.254 c2, err := ipam.AcquireChildPrefix(ctx, prefix.Cidr, 22) @@ -433,9 +433,9 @@ func TestIpamer_AcquireChildPrefixFragmented(t *testing.T) { s, a := prefix.availablePrefixes() // Next free must be 192.168.12.0/22 require.Equal(t, []string{"192.168.12.0/22"}, a) - require.Equal(t, 256, int(s)) - require.Equal(t, 2, int(prefix.acquiredPrefixes())) - require.Equal(t, 2, int(prefix.Usage().AcquiredPrefixes)) + require.Equal(t, uint64(256), s) + require.Equal(t, uint64(2), prefix.acquiredPrefixes()) + require.Equal(t, uint64(2), prefix.Usage().AcquiredPrefixes) // acquire impossible size _, err = ipam.AcquireChildPrefix(ctx, prefix.Cidr, 21) @@ -453,9 +453,9 @@ func TestIpamer_AcquireChildPrefixFragmented(t *testing.T) { require.NoError(t, err) s, a = prefix.availablePrefixes() require.Equal(t, []string{"192.168.8.16/28", "192.168.8.32/27", "192.168.8.64/26", "192.168.8.128/25", "192.168.9.0/24", "192.168.10.0/23", "192.168.12.0/22"}, a) - require.Equal(t, 508, int(s)) - require.Equal(t, 2, int(prefix.acquiredPrefixes())) - require.Equal(t, 2, int(prefix.Usage().AcquiredPrefixes)) + require.Equal(t, uint64(508), s) + require.Equal(t, uint64(2), prefix.acquiredPrefixes()) + require.Equal(t, uint64(2), prefix.Usage().AcquiredPrefixes) // acquire impossible size _, err = ipam.AcquireChildPrefix(ctx, prefix.Cidr, 21) diff --git a/proto/Makefile b/proto/Makefile index 440c6a8..10679dc 100644 --- a/proto/Makefile +++ b/proto/Makefile @@ -1,5 +1,5 @@ MAKEFLAGS += --no-print-directory -BUF_VERSION := 1.36.0 +BUF_VERSION := 1.38.0 _buf: docker run --rm \