--set-file stringArray Set helm values from respective files specified via the command line (can specify multiple or separate values with commas: key1=path1,key2=path2)
--set-string stringArray Set helm STRING values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)
-f, --values strings Specify helm values in a YAML file or a URL (can specify multiple)
- --version string Cilium version to install (default "v1.18.4")
+ --version string Cilium version to install (default "v1.18.5")
--wait Wait for helm install to finish
--wait-duration duration Maximum time to wait for status (default 5m0s)
```
--set-file stringArray Set helm values from respective files specified via the command line (can specify multiple or separate values with commas: key1=path1,key2=path2)
--set-string stringArray Set helm STRING values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)
-f, --values strings Specify helm values in a YAML file or a URL (can specify multiple)
- --version string Cilium version to install (default "v1.18.4")
+ --version string Cilium version to install (default "v1.18.5")
--wait Wait for helm install to finish
--wait-duration duration Maximum time to wait for status (default 5m0s)
```
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v7 v7.2.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v7 v7.2.0
github.com/aliyun/alibaba-cloud-sdk-go v1.63.107
- github.com/aws/aws-sdk-go-v2 v1.40.1
- github.com/aws/aws-sdk-go-v2/config v1.32.3
- github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.15
- github.com/aws/aws-sdk-go-v2/service/ec2 v1.275.1
+ github.com/aws/aws-sdk-go-v2 v1.41.0
+ github.com/aws/aws-sdk-go-v2/config v1.32.6
+ github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.16
+ github.com/aws/aws-sdk-go-v2/service/ec2 v1.278.0
github.com/aws/smithy-go v1.24.0
github.com/blang/semver/v4 v4.0.0
github.com/cespare/xxhash/v2 v2.3.0
- github.com/cilium/charts v0.0.0-20251203153012-ac76b7522d1a
+ github.com/cilium/charts v0.0.0-20251217104012-70fd91a32619
github.com/cilium/coverbee v0.3.3-0.20240723084546-664438750fce
github.com/cilium/dns v1.1.51-0.20240603182237-af788769786a
- github.com/cilium/ebpf v0.20.1-0.20251204155832-f150ced93791
+ github.com/cilium/ebpf v0.20.1-0.20251215101449-df5c3096bd8c
github.com/cilium/endpointslice-controller v0.0.0-20250410163339-ffb33e27879c
github.com/cilium/fake v0.7.0
- github.com/cilium/hive v0.0.0-20251021073839-03494cb6c4de
+ github.com/cilium/hive v0.0.0-20251219070844-89ccf807d9fb
github.com/cilium/lumberjack/v2 v2.4.1
github.com/cilium/proxy v0.0.0-20250623105955-2136f59a4ea1
github.com/cilium/statedb v0.5.6
github.com/fatih/color v1.18.0
github.com/fsnotify/fsnotify v1.9.0
github.com/go-logr/logr v1.4.3
- github.com/go-openapi/errors v0.22.5
+ github.com/go-openapi/errors v0.22.6
github.com/go-openapi/loads v0.23.2
github.com/go-openapi/runtime v0.29.2
- github.com/go-openapi/spec v0.22.1
+ github.com/go-openapi/spec v0.22.2
github.com/go-openapi/strfmt v0.25.0
github.com/go-openapi/swag v0.25.4
github.com/go-openapi/validate v0.25.1
github.com/tidwall/sjson v1.2.5
github.com/vishvananda/netlink v1.3.2-0.20251101063711-6e61cd407d1d
github.com/vishvananda/netns v0.0.5
- go.etcd.io/etcd/api/v3 v3.6.6
- go.etcd.io/etcd/client/pkg/v3 v3.6.6
- go.etcd.io/etcd/client/v3 v3.6.6
- go.opentelemetry.io/otel v1.38.0
- go.opentelemetry.io/otel/trace v1.38.0
+ go.etcd.io/etcd/api/v3 v3.6.7
+ go.etcd.io/etcd/client/pkg/v3 v3.6.7
+ go.etcd.io/etcd/client/v3 v3.6.7
+ go.opentelemetry.io/otel v1.39.0
+ go.opentelemetry.io/otel/trace v1.39.0
go.uber.org/goleak v1.3.0
go.uber.org/zap v1.27.1
go.yaml.in/yaml/v3 v3.0.4
go4.org/netipx v0.0.0-20231129151722-fdeea329fbba
golang.org/x/crypto v0.46.0
- golang.org/x/exp v0.0.0-20251209150349-8475f28825e9
+ golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93
golang.org/x/mod v0.31.0
golang.org/x/net v0.48.0
golang.org/x/oauth2 v0.34.0
k8s.io/klog/v2 v2.130.1
k8s.io/kubectl v0.35.0
k8s.io/metrics v0.35.0
- k8s.io/utils v0.0.0-20251002143259-bc988d571ff4
+ k8s.io/utils v0.0.0-20251220205832-9d40a56c1308
sigs.k8s.io/controller-runtime v0.22.4
sigs.k8s.io/gateway-api v1.4.0-rc.2
sigs.k8s.io/mcs-api v0.3.1-0.20251217171610-79faa199f7dd
- sigs.k8s.io/mcs-api/controllers v0.0.0-20251209180531-e481ae73a51f
+ sigs.k8s.io/mcs-api/controllers v0.0.0-20251217171610-79faa199f7dd
sigs.k8s.io/yaml v1.6.0
)
github.com/alecthomas/participle/v2 v2.1.0 // indirect
github.com/antlr4-go/antlr/v4 v4.13.0 // indirect
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
- github.com/aws/aws-sdk-go-v2/credentials v1.19.3 // indirect
- github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.15 // indirect
- github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.15 // indirect
+ github.com/aws/aws-sdk-go-v2/credentials v1.19.6 // indirect
+ github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.16 // indirect
+ github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.16 // indirect
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.4 // indirect
- github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.15 // indirect
- github.com/aws/aws-sdk-go-v2/service/signin v1.0.3 // indirect
- github.com/aws/aws-sdk-go-v2/service/sso v1.30.6 // indirect
- github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.11 // indirect
- github.com/aws/aws-sdk-go-v2/service/sts v1.41.3 // indirect
+ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.16 // indirect
+ github.com/aws/aws-sdk-go-v2/service/signin v1.0.4 // indirect
+ github.com/aws/aws-sdk-go-v2/service/sso v1.30.8 // indirect
+ github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.12 // indirect
+ github.com/aws/aws-sdk-go-v2/service/sts v1.41.5 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/chai2010/gettext-go v1.0.2 // indirect
github.com/cilium/deepequal-gen v0.0.0-20241016021505-f57df2fe2e62 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-logr/zapr v1.3.0 // indirect
github.com/go-openapi/analysis v0.24.1 // indirect
- github.com/go-openapi/jsonpointer v0.22.1 // indirect
- github.com/go-openapi/jsonreference v0.21.3 // indirect
+ github.com/go-openapi/jsonpointer v0.22.4 // indirect
+ github.com/go-openapi/jsonreference v0.21.4 // indirect
github.com/go-openapi/swag/cmdutils v0.25.4 // indirect
github.com/go-openapi/swag/conv v0.25.4 // indirect
github.com/go-openapi/swag/fileutils v0.25.4 // indirect
go.opencensus.io v0.24.0 // indirect
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect
- go.opentelemetry.io/otel/metric v1.38.0 // indirect
+ go.opentelemetry.io/otel/metric v1.39.0 // indirect
go.opentelemetry.io/proto/otlp v1.7.1 // indirect
go.uber.org/atomic v1.11.0 // indirect
go.uber.org/dig v1.17.1 // indirect
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so=
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
-github.com/aws/aws-sdk-go-v2 v1.40.1 h1:difXb4maDZkRH0x//Qkwcfpdg1XQVXEAEs2DdXldFFc=
-github.com/aws/aws-sdk-go-v2 v1.40.1/go.mod h1:MayyLB8y+buD9hZqkCW3kX1AKq07Y5pXxtgB+rRFhz0=
-github.com/aws/aws-sdk-go-v2/config v1.32.3 h1:cpz7H2uMNTDa0h/5CYL5dLUEzPSLo2g0NkbxTRJtSSU=
-github.com/aws/aws-sdk-go-v2/config v1.32.3/go.mod h1:srtPKaJJe3McW6T/+GMBZyIPc+SeqJsNPJsd4mOYZ6s=
-github.com/aws/aws-sdk-go-v2/credentials v1.19.3 h1:01Ym72hK43hjwDeJUfi1l2oYLXBAOR8gNSZNmXmvuas=
-github.com/aws/aws-sdk-go-v2/credentials v1.19.3/go.mod h1:55nWF/Sr9Zvls0bGnWkRxUdhzKqj9uRNlPvgV1vgxKc=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.15 h1:utxLraaifrSBkeyII9mIbVwXXWrZdlPO7FIKmyLCEcY=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.15/go.mod h1:hW6zjYUDQwfz3icf4g2O41PHi77u10oAzJ84iSzR/lo=
-github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.15 h1:Y5YXgygXwDI5P4RkteB5yF7v35neH7LfJKBG+hzIons=
-github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.15/go.mod h1:K+/1EpG42dFSY7CBj+Fruzm8PsCGWTXJ3jdeJ659oGQ=
-github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.15 h1:AvltKnW9ewxX2hFmQS0FyJH93aSvJVUEFvXfU+HWtSE=
-github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.15/go.mod h1:3I4oCdZdmgrREhU74qS1dK9yZ62yumob+58AbFR4cQA=
+github.com/aws/aws-sdk-go-v2 v1.41.0 h1:tNvqh1s+v0vFYdA1xq0aOJH+Y5cRyZ5upu6roPgPKd4=
+github.com/aws/aws-sdk-go-v2 v1.41.0/go.mod h1:MayyLB8y+buD9hZqkCW3kX1AKq07Y5pXxtgB+rRFhz0=
+github.com/aws/aws-sdk-go-v2/config v1.32.6 h1:hFLBGUKjmLAekvi1evLi5hVvFQtSo3GYwi+Bx4lpJf8=
+github.com/aws/aws-sdk-go-v2/config v1.32.6/go.mod h1:lcUL/gcd8WyjCrMnxez5OXkO3/rwcNmvfno62tnXNcI=
+github.com/aws/aws-sdk-go-v2/credentials v1.19.6 h1:F9vWao2TwjV2MyiyVS+duza0NIRtAslgLUM0vTA1ZaE=
+github.com/aws/aws-sdk-go-v2/credentials v1.19.6/go.mod h1:SgHzKjEVsdQr6Opor0ihgWtkWdfRAIwxYzSJ8O85VHY=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.16 h1:80+uETIWS1BqjnN9uJ0dBUaETh+P1XwFy5vwHwK5r9k=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.16/go.mod h1:wOOsYuxYuB/7FlnVtzeBYRcjSRtQpAW0hCP7tIULMwo=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.16 h1:rgGwPzb82iBYSvHMHXc8h9mRoOUBZIGFgKb9qniaZZc=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.16/go.mod h1:L/UxsGeKpGoIj6DxfhOWHWQ/kGKcd4I1VncE4++IyKA=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.16 h1:1jtGzuV7c82xnqOVfx2F0xmJcOw5374L7N6juGW6x6U=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.16/go.mod h1:M2E5OQf+XLe+SZGmmpaI2yy+J326aFf6/+54PoxSANc=
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 h1:WKuaxf++XKWlHWu9ECbMlha8WOEGm0OUEZqm4K/Gcfk=
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4/go.mod h1:ZWy7j6v1vWGmPReu0iSGvRiise4YI5SkR3OHKTZ6Wuc=
-github.com/aws/aws-sdk-go-v2/service/ec2 v1.275.1 h1:nEpHPUp2UKzxiLBoaLLTnIrWBmb1OL0vf8KHDHjNqcQ=
-github.com/aws/aws-sdk-go-v2/service/ec2 v1.275.1/go.mod h1:6xabBAflTTz4OO5f/P4QJrjzZ0WTYjRka+ZWXFqWw8U=
+github.com/aws/aws-sdk-go-v2/service/ec2 v1.278.0 h1:Cx/Rs2zaG30Dn4QMvUGC5rCAZagA8heta0TWAdBE/Xc=
+github.com/aws/aws-sdk-go-v2/service/ec2 v1.278.0/go.mod h1:Wg68QRgy2gEGGdmTPU/UbVpdv8sM14bUZmF64KFwAsY=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.4 h1:0ryTNEdJbzUCEWkVXEXoqlXV72J5keC1GvILMOuD00E=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.4/go.mod h1:HQ4qwNZh32C3CBeO6iJLQlgtMzqeG17ziAA/3KDJFow=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.15 h1:3/u/4yZOffg5jdNk1sDpOQ4Y+R6Xbh+GzpDrSZjuy3U=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.15/go.mod h1:4Zkjq0FKjE78NKjabuM4tRXKFzUJWXgP0ItEZK8l7JU=
-github.com/aws/aws-sdk-go-v2/service/signin v1.0.3 h1:d/6xOGIllc/XW1lzG9a4AUBMmpLA9PXcQnVPTuHHcik=
-github.com/aws/aws-sdk-go-v2/service/signin v1.0.3/go.mod h1:fQ7E7Qj9GiW8y0ClD7cUJk3Bz5Iw8wZkWDHsTe8vDKs=
-github.com/aws/aws-sdk-go-v2/service/sso v1.30.6 h1:8sTTiw+9yuNXcfWeqKF2x01GqCF49CpP4Z9nKrrk/ts=
-github.com/aws/aws-sdk-go-v2/service/sso v1.30.6/go.mod h1:8WYg+Y40Sn3X2hioaaWAAIngndR8n1XFdRPPX+7QBaM=
-github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.11 h1:E+KqWoVsSrj1tJ6I/fjDIu5xoS2Zacuu1zT+H7KtiIk=
-github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.11/go.mod h1:qyWHz+4lvkXcr3+PoGlGHEI+3DLLiU6/GdrFfMaAhB0=
-github.com/aws/aws-sdk-go-v2/service/sts v1.41.3 h1:tzMkjh0yTChUqJDgGkcDdxvZDSrJ/WB6R6ymI5ehqJI=
-github.com/aws/aws-sdk-go-v2/service/sts v1.41.3/go.mod h1:T270C0R5sZNLbWUe8ueiAF42XSZxxPocTaGSgs5c/60=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.16 h1:oHjJHeUy0ImIV0bsrX0X91GkV5nJAyv1l1CC9lnO0TI=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.16/go.mod h1:iRSNGgOYmiYwSCXxXaKb9HfOEj40+oTKn8pTxMlYkRM=
+github.com/aws/aws-sdk-go-v2/service/signin v1.0.4 h1:HpI7aMmJ+mm1wkSHIA2t5EaFFv5EFYXePW30p1EIrbQ=
+github.com/aws/aws-sdk-go-v2/service/signin v1.0.4/go.mod h1:C5RdGMYGlfM0gYq/tifqgn4EbyX99V15P2V3R+VHbQU=
+github.com/aws/aws-sdk-go-v2/service/sso v1.30.8 h1:aM/Q24rIlS3bRAhTyFurowU8A0SMyGDtEOY/l/s/1Uw=
+github.com/aws/aws-sdk-go-v2/service/sso v1.30.8/go.mod h1:+fWt2UHSb4kS7Pu8y+BMBvJF0EWx+4H0hzNwtDNRTrg=
+github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.12 h1:AHDr0DaHIAo8c9t1emrzAlVDFp+iMMKnPdYy6XO4MCE=
+github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.12/go.mod h1:GQ73XawFFiWxyWXMHWfhiomvP3tXtdNar/fi8z18sx0=
+github.com/aws/aws-sdk-go-v2/service/sts v1.41.5 h1:SciGFVNZ4mHdm7gpD1dgZYnCuVdX1s+lFTg4+4DOy70=
+github.com/aws/aws-sdk-go-v2/service/sts v1.41.5/go.mod h1:iW40X4QBmUxdP+fZNOpfmkdMZqsovezbAeO+Ubiv2pk=
github.com/aws/smithy-go v1.24.0 h1:LpilSUItNPFr1eY85RYgTIg5eIEPtvFbskaFcmmIUnk=
github.com/aws/smithy-go v1.24.0/go.mod h1:LEj2LM3rBRQJxPZTB4KuzZkaZYnZPnvgIhb4pu07mx0=
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/chai2010/gettext-go v1.0.2 h1:1Lwwip6Q2QGsAdl/ZKPCwTe9fe0CjlUbqj5bFNSjIRk=
github.com/chai2010/gettext-go v1.0.2/go.mod h1:y+wnP2cHYaVj19NZhYKAwEMH2CI1gNHeQQ+5AjwawxA=
-github.com/cilium/charts v0.0.0-20251203153012-ac76b7522d1a h1:5u17cHgUL79jtF1Pm7rugnnjgjTjMZssv4wVBIfZhpU=
-github.com/cilium/charts v0.0.0-20251203153012-ac76b7522d1a/go.mod h1:M3C9VOlFvRzuV+a01t07Tw4uFLSfkCH3L542IWjf6BU=
+github.com/cilium/charts v0.0.0-20251217104012-70fd91a32619 h1:+fVBYaQuC+ReQmH1K4FbT+xUB3DAKA62gtVznd8V6pc=
+github.com/cilium/charts v0.0.0-20251217104012-70fd91a32619/go.mod h1:M3C9VOlFvRzuV+a01t07Tw4uFLSfkCH3L542IWjf6BU=
github.com/cilium/controller-tools v0.16.5-1 h1:aJLd2riNwIP+qVwA9bFBu2GDk6fQVecJt/0bZF2IYOw=
github.com/cilium/controller-tools v0.16.5-1/go.mod h1:8vztuRVzs8IuuJqKqbXCSlXcw+lkAv/M2sTpg55qjMY=
github.com/cilium/coverbee v0.3.3-0.20240723084546-664438750fce h1:gqzXY3NuHllVVDw9vD49mlXx+9bYFPlg23rdrkQNFDM=
github.com/cilium/deepequal-gen v0.0.0-20241016021505-f57df2fe2e62/go.mod h1:9EU8oWNwEP6f98xJz/YjWw7yOLHK7p90MKmaPu1wBcE=
github.com/cilium/dns v1.1.51-0.20240603182237-af788769786a h1:PRGN7B+72mj3OtLL2DM3F/9jp+ItgqgNS7mecgCmwsQ=
github.com/cilium/dns v1.1.51-0.20240603182237-af788769786a/go.mod h1:/7LC2GOgyXJ7maupZlaVIumYQiGPIgllSf6mA9sg6RU=
-github.com/cilium/ebpf v0.20.1-0.20251204155832-f150ced93791 h1:ZdcDKqh1c+drwvyCjz5o7pe3AGNRo1z1EZh4MVgixAk=
-github.com/cilium/ebpf v0.20.1-0.20251204155832-f150ced93791/go.mod h1:dM+AMI6FkW5LOkzikdefUmzK0z81o7GqiKXon7D1F58=
+github.com/cilium/ebpf v0.20.1-0.20251215101449-df5c3096bd8c h1:oC8e6Vac5mOCKfGtbozmBY7wUvKV0aekCUYeFJ9ffCM=
+github.com/cilium/ebpf v0.20.1-0.20251215101449-df5c3096bd8c/go.mod h1:dM+AMI6FkW5LOkzikdefUmzK0z81o7GqiKXon7D1F58=
github.com/cilium/endpointslice v0.29.4-0.20240409195643-982ad68ab7ba h1:Ddc5e+pz0/nY0XiAEW/UcIlvnaHACSuF77ePyMNX510=
github.com/cilium/endpointslice v0.29.4-0.20240409195643-982ad68ab7ba/go.mod h1:9MPoeojWVEBLFnioKXTvRoqGWTs9Dt252r1ACFsi8K8=
github.com/cilium/endpointslice-controller v0.0.0-20250410163339-ffb33e27879c h1:+/SPdDam5Mha4QzOByEoBE7hfq8aUxnioItyKM48U6M=
github.com/cilium/fake v0.7.0/go.mod h1:hA1YsEjgIs5Gdeq/DVrDWGuhLCoVok7THTvQaGDO5bc=
github.com/cilium/gobgp/v3 v3.0.0-20251113221723-3540251c0674 h1:RPXlDz/YCj2qscehc5oVFwHgUTDQGYHIgTxlN65F8R8=
github.com/cilium/gobgp/v3 v3.0.0-20251113221723-3540251c0674/go.mod h1:kVHVFy1/fyZHJ8P32+ctvPeJogn9qKwa1YCeMRXXrP0=
-github.com/cilium/hive v0.0.0-20251021073839-03494cb6c4de h1:Kvp7XGVwH6zoLZx2As7ufnFohE94WwcU+WDJWzloOK8=
-github.com/cilium/hive v0.0.0-20251021073839-03494cb6c4de/go.mod h1:6qtm9+eQD8D1SsqGFgNE63lNeys9PZswouh37X5ZhWU=
+github.com/cilium/hive v0.0.0-20251219070844-89ccf807d9fb h1:4liozOPul/ER4VH2q8KJXTot1rfYxZbYyAyZzBcvP/M=
+github.com/cilium/hive v0.0.0-20251219070844-89ccf807d9fb/go.mod h1:6qtm9+eQD8D1SsqGFgNE63lNeys9PZswouh37X5ZhWU=
github.com/cilium/linters v0.3.0 h1:XZzur3mcyM04YSnDeoKSb1l+9W7k3kvUoL0yF8ICCQA=
github.com/cilium/linters v0.3.0/go.mod h1:CBcLwepTO5u+EwoN4X01HN9Pb1ru4Tn0vh68VnUrXuA=
github.com/cilium/lumberjack/v2 v2.4.1 h1:tU92KFJmLQ4Uls5vTgok5b5RbfxpawRia7L14y2qDBs=
github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=
github.com/go-openapi/analysis v0.24.1 h1:Xp+7Yn/KOnVWYG8d+hPksOYnCYImE3TieBa7rBOesYM=
github.com/go-openapi/analysis v0.24.1/go.mod h1:dU+qxX7QGU1rl7IYhBC8bIfmWQdX4Buoea4TGtxXY84=
-github.com/go-openapi/errors v0.22.5 h1:Yfv4O/PRYpNF3BNmVkEizcHb3uLVVsrDt3LNdgAKRY4=
-github.com/go-openapi/errors v0.22.5/go.mod h1:z9S8ASTUqx7+CP1Q8dD8ewGH/1JWFFLX/2PmAYNQLgk=
-github.com/go-openapi/jsonpointer v0.22.1 h1:sHYI1He3b9NqJ4wXLoJDKmUmHkWy/L7rtEo92JUxBNk=
-github.com/go-openapi/jsonpointer v0.22.1/go.mod h1:pQT9OsLkfz1yWoMgYFy4x3U5GY5nUlsOn1qSBH5MkCM=
-github.com/go-openapi/jsonreference v0.21.3 h1:96Dn+MRPa0nYAR8DR1E03SblB5FJvh7W6krPI0Z7qMc=
-github.com/go-openapi/jsonreference v0.21.3/go.mod h1:RqkUP0MrLf37HqxZxrIAtTWW4ZJIK1VzduhXYBEeGc4=
+github.com/go-openapi/errors v0.22.6 h1:eDxcf89O8odEnohIXwEjY1IB4ph5vmbUsBMsFNwXWPo=
+github.com/go-openapi/errors v0.22.6/go.mod h1:z9S8ASTUqx7+CP1Q8dD8ewGH/1JWFFLX/2PmAYNQLgk=
+github.com/go-openapi/jsonpointer v0.22.4 h1:dZtK82WlNpVLDW2jlA1YCiVJFVqkED1MegOUy9kR5T4=
+github.com/go-openapi/jsonpointer v0.22.4/go.mod h1:elX9+UgznpFhgBuaMQ7iu4lvvX1nvNsesQ3oxmYTw80=
+github.com/go-openapi/jsonreference v0.21.4 h1:24qaE2y9bx/q3uRK/qN+TDwbok1NhbSmGjjySRCHtC8=
+github.com/go-openapi/jsonreference v0.21.4/go.mod h1:rIENPTjDbLpzQmQWCj5kKj3ZlmEh+EFVbz3RTUh30/4=
github.com/go-openapi/loads v0.23.2 h1:rJXAcP7g1+lWyBHC7iTY+WAF0rprtM+pm8Jxv1uQJp4=
github.com/go-openapi/loads v0.23.2/go.mod h1:IEVw1GfRt/P2Pplkelxzj9BYFajiWOtY2nHZNj4UnWY=
github.com/go-openapi/runtime v0.29.2 h1:UmwSGWNmWQqKm1c2MGgXVpC2FTGwPDQeUsBMufc5Yj0=
github.com/go-openapi/runtime v0.29.2/go.mod h1:biq5kJXRJKBJxTDJXAa00DOTa/anflQPhT0/wmjuy+0=
-github.com/go-openapi/spec v0.22.1 h1:beZMa5AVQzRspNjvhe5aG1/XyBSMeX1eEOs7dMoXh/k=
-github.com/go-openapi/spec v0.22.1/go.mod h1:c7aeIQT175dVowfp7FeCvXXnjN/MrpaONStibD2WtDA=
+github.com/go-openapi/spec v0.22.2 h1:KEU4Fb+Lp1qg0V4MxrSCPv403ZjBl8Lx1a83gIPU8Qc=
+github.com/go-openapi/spec v0.22.2/go.mod h1:iIImLODL2loCh3Vnox8TY2YWYJZjMAKYyLH2Mu8lOZs=
github.com/go-openapi/strfmt v0.25.0 h1:7R0RX7mbKLa9EYCTHRcCuIPcaqlyQiWNPTXwClK0saQ=
github.com/go-openapi/strfmt v0.25.0/go.mod h1:nNXct7OzbwrMY9+5tLX4I21pzcmE6ccMGXl3jFdPfn8=
github.com/go-openapi/swag v0.25.4 h1:OyUPUFYDPDBMkqyxOTkqDYFnrhuhi9NR6QVUvIochMU=
github.com/zmap/zlint/v3 v3.0.0/go.mod h1:paGwFySdHIBEMJ61YjoqT4h7Ge+fdYG4sUQhnTb1lJ8=
github.com/zmap/zlint/v3 v3.5.0 h1:Eh2B5t6VKgVH0DFmTwOqE50POvyDhUaU9T2mJOe1vfQ=
github.com/zmap/zlint/v3 v3.5.0/go.mod h1:JkNSrsDJ8F4VRtBZcYUQSvnWFL7utcjDIn+FE64mlBI=
-go.etcd.io/etcd/api/v3 v3.6.6 h1:mcaMp3+7JawWv69p6QShYWS8cIWUOl32bFLb6qf8pOQ=
-go.etcd.io/etcd/api/v3 v3.6.6/go.mod h1:f/om26iXl2wSkcTA1zGQv8reJRSLVdoEBsi4JdfMrx4=
-go.etcd.io/etcd/client/pkg/v3 v3.6.6 h1:uoqgzSOv2H9KlIF5O1Lsd8sW+eMLuV6wzE3q5GJGQNs=
-go.etcd.io/etcd/client/pkg/v3 v3.6.6/go.mod h1:YngfUVmvsvOJ2rRgStIyHsKtOt9SZI2aBJrZiWJhCbI=
-go.etcd.io/etcd/client/v3 v3.6.6 h1:G5z1wMf5B9SNexoxOHUGBaULurOZPIgGPsW6CN492ec=
-go.etcd.io/etcd/client/v3 v3.6.6/go.mod h1:36Qv6baQ07znPR3+n7t+Rk5VHEzVYPvFfGmfF4wBHV8=
+go.etcd.io/etcd/api/v3 v3.6.7 h1:7BNJ2gQmc3DNM+9cRkv7KkGQDayElg8x3X+tFDYS+E0=
+go.etcd.io/etcd/api/v3 v3.6.7/go.mod h1:xJ81TLj9hxrYYEDmXTeKURMeY3qEDN24hqe+q7KhbnI=
+go.etcd.io/etcd/client/pkg/v3 v3.6.7 h1:vvzgyozz46q+TyeGBuFzVuI53/yd133CHceNb/AhBVs=
+go.etcd.io/etcd/client/pkg/v3 v3.6.7/go.mod h1:2IVulJ3FZ/czIGl9T4lMF1uxzrhRahLqe+hSgy+Kh7Q=
+go.etcd.io/etcd/client/v3 v3.6.7 h1:9WqA5RpIBtdMxAy1ukXLAdtg2pAxNqW5NUoO2wQrE6U=
+go.etcd.io/etcd/client/v3 v3.6.7/go.mod h1:2XfROY56AXnUqGsvl+6k29wrwsSbEh1lAouQB1vHpeE=
go.mongodb.org/mongo-driver v1.17.6 h1:87JUG1wZfWsr6rIz3ZmpH90rL5tea7O3IHuSwHUpsss=
go.mongodb.org/mongo-driver v1.17.6/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ=
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0/go.mod h1:rg+RlpR5dKwaS95IyyZqj5Wd4E13lk/msnTS0Xl9lJM=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q=
-go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8=
-go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM=
+go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48=
+go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8=
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0 h1:WzNab7hOOLzdDF/EoWCt4glhrbMPVMOO5JYTmpz36Ls=
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0/go.mod h1:hKvJwTzJdp90Vh7p6q/9PAOd55dI6WA6sWj62a/JvSs=
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0 h1:S+LdBGiQXtJdowoJoQPEtI52syEP/JYBUpjO49EQhV8=
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.32.0/go.mod h1:2PD5Ex6z8CFzDbTdOlwyNIUywRr1DN0ospafJM1wJ+s=
go.opentelemetry.io/otel/log v0.8.0 h1:egZ8vV5atrUWUbnSsHn6vB8R21G2wrKqNiDt3iWertk=
go.opentelemetry.io/otel/log v0.8.0/go.mod h1:M9qvDdUTRCopJcGRKg57+JSQ9LgLBrwwfC32epk5NX8=
-go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA=
-go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI=
+go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0=
+go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs=
go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E=
go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg=
go.opentelemetry.io/otel/sdk/log v0.8.0 h1:zg7GUYXqxk1jnGF/dTdLPrK06xJdrXgqgFLnI4Crxvs=
go.opentelemetry.io/otel/sdk/log v0.8.0/go.mod h1:50iXr0UVwQrYS45KbruFrEt4LvAdCaWWgIrsN3ZQggo=
go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM=
go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA=
-go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE=
-go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs=
+go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI=
+go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA=
go.opentelemetry.io/proto/otlp v1.7.1 h1:gTOMpGDb0WTBOP8JaO72iL3auEZhVmAQg4ipjOVAtj4=
go.opentelemetry.io/proto/otlp v1.7.1/go.mod h1:b2rVh6rfI/s2pHWNlB7ILJcRALpcNDzKhACevjI+ZnE=
go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
-golang.org/x/exp v0.0.0-20251209150349-8475f28825e9 h1:MDfG8Cvcqlt9XXrmEiD4epKn7VJHZO84hejP9Jmp0MM=
-golang.org/x/exp v0.0.0-20251209150349-8475f28825e9/go.mod h1:EPRbTFwzwjXj9NpYyyrvenVh9Y+GFeEvMNh7Xuz7xgU=
+golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93 h1:fQsdNF2N+/YewlRZiricy4P1iimyPKZ/xwniHj8Q2a0=
+golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93/go.mod h1:EPRbTFwzwjXj9NpYyyrvenVh9Y+GFeEvMNh7Xuz7xgU=
golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs=
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
k8s.io/kubectl v0.35.0/go.mod h1:VR5/TSkYyxZwrRwY5I5dDq6l5KXmiCb+9w8IKplk3Qo=
k8s.io/metrics v0.35.0 h1:xVFoqtAGm2dMNJAcB5TFZJPCen0uEqqNt52wW7ABbX8=
k8s.io/metrics v0.35.0/go.mod h1:g2Up4dcBygZi2kQSEQVDByFs+VUwepJMzzQLJJLpq4M=
-k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 h1:SjGebBtkBqHFOli+05xYbK8YF1Dzkbzn+gDM4X9T4Ck=
-k8s.io/utils v0.0.0-20251002143259-bc988d571ff4/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
+k8s.io/utils v0.0.0-20251220205832-9d40a56c1308 h1:rk+D2uTO79bbNsICltOdVoA6mcJb0NpvBcts+ACymBQ=
+k8s.io/utils v0.0.0-20251220205832-9d40a56c1308/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk=
oras.land/oras-go/v2 v2.6.0 h1:X4ELRsiGkrbeox69+9tzTu492FMUu7zJQW6eJU+I2oc=
oras.land/oras-go/v2 v2.6.0/go.mod h1:magiQDfG6H1O9APp+rOsvCPcW1GD2MM7vgnKY0Y+u1o=
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
sigs.k8s.io/kustomize/kyaml v0.20.1/go.mod h1:0EmkQHRUsJxY8Ug9Niig1pUMSCGHxQ5RklbpV/Ri6po=
sigs.k8s.io/mcs-api v0.3.1-0.20251217171610-79faa199f7dd h1:s5E2X2Y7W2M2KxV731CBCWAEOsbvqgNsjUSLL4vHXLg=
sigs.k8s.io/mcs-api v0.3.1-0.20251217171610-79faa199f7dd/go.mod h1:zZ5CK8uS6HaLkxY4HqsmcBHfzHuNMrY2uJy8T7jffK4=
-sigs.k8s.io/mcs-api/controllers v0.0.0-20251209180531-e481ae73a51f h1:TqhC0fHcxg9wEpHkMMmV95JXssNHPMFsl/LvhieB8wA=
-sigs.k8s.io/mcs-api/controllers v0.0.0-20251209180531-e481ae73a51f/go.mod h1:IEVANHiCGLNsCWuPsZCJhCVzeWavUmxpJ8XgpTt9MpM=
+sigs.k8s.io/mcs-api/controllers v0.0.0-20251217171610-79faa199f7dd h1:pTMgSLnHwHtn5t9uPmxYpyEkBbbH/Lsueo6nSEaCFjc=
+sigs.k8s.io/mcs-api/controllers v0.0.0-20251217171610-79faa199f7dd/go.mod h1:IEVANHiCGLNsCWuPsZCJhCVzeWavUmxpJ8XgpTt9MpM=
sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
sigs.k8s.io/structured-merge-diff/v6 v6.3.0 h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco=
package aws
// goModuleVersion is the tagged release for this module
-const goModuleVersion = "1.40.1"
+const goModuleVersion = "1.41.0"
// Default connection pool options
DefaultHTTPTransportMaxIdleConns = 100
DefaultHTTPTransportMaxIdleConnsPerHost = 10
+ DefaultHTTPTransportMaxConnsPerHost = 2048
// Default connection timeouts
DefaultHTTPTransportIdleConnTimeout = 90 * time.Second
TLSHandshakeTimeout: DefaultHTTPTransportTLSHandleshakeTimeout,
MaxIdleConns: DefaultHTTPTransportMaxIdleConns,
MaxIdleConnsPerHost: DefaultHTTPTransportMaxIdleConnsPerHost,
+ MaxConnsPerHost: DefaultHTTPTransportMaxConnsPerHost,
IdleConnTimeout: DefaultHTTPTransportIdleConnTimeout,
ExpectContinueTimeout: DefaultHTTPTransportExpectContinueTimeout,
ForceAttemptHTTP2: true,
+# v1.32.6 (2025-12-16)
+
+* **Dependency Update**: Updated to the latest SDK module versions
+
+# v1.32.5 (2025-12-09)
+
+* **Dependency Update**: Updated to the latest SDK module versions
+
+# v1.32.4 (2025-12-08)
+
+* **Dependency Update**: Updated to the latest SDK module versions
+
# v1.32.3 (2025-12-02)
* **Dependency Update**: Updated to the latest SDK module versions
package config
// goModuleVersion is the tagged release for this module
-const goModuleVersion = "1.32.3"
+const goModuleVersion = "1.32.6"
+# v1.19.6 (2025-12-16)
+
+* **Dependency Update**: Updated to the latest SDK module versions
+
+# v1.19.5 (2025-12-09)
+
+* **Dependency Update**: Updated to the latest SDK module versions
+
+# v1.19.4 (2025-12-08)
+
+* **Dependency Update**: Updated to the latest SDK module versions
+
# v1.19.3 (2025-12-02)
* **Dependency Update**: Updated to the latest SDK module versions
package credentials
// goModuleVersion is the tagged release for this module
-const goModuleVersion = "1.19.3"
+const goModuleVersion = "1.19.6"
+# v1.18.16 (2025-12-08)
+
+* **Dependency Update**: Updated to the latest SDK module versions
+
# v1.18.15 (2025-12-02)
* **Dependency Update**: Updated to the latest SDK module versions
package imds
// goModuleVersion is the tagged release for this module
-const goModuleVersion = "1.18.15"
+const goModuleVersion = "1.18.16"
+# v1.4.16 (2025-12-08)
+
+* **Dependency Update**: Updated to the latest SDK module versions
+
# v1.4.15 (2025-12-02)
* **Dependency Update**: Updated to the latest SDK module versions
package configsources
// goModuleVersion is the tagged release for this module
-const goModuleVersion = "1.4.15"
+const goModuleVersion = "1.4.16"
+# v2.7.16 (2025-12-08)
+
+* **Dependency Update**: Updated to the latest SDK module versions
+
# v2.7.15 (2025-12-02)
* **Dependency Update**: Updated to the latest SDK module versions
package endpoints
// goModuleVersion is the tagged release for this module
-const goModuleVersion = "2.7.15"
+const goModuleVersion = "2.7.16"
+# v1.278.0 (2025-12-18)
+
+* **Feature**: This release adds AvailabilityZoneId support for CreateFleet, ModifyFleet, DescribeFleets, RequestSpotFleet, ModifySpotFleetRequests and DescribeSpotFleetRequests APIs.
+
+# v1.277.0 (2025-12-15)
+
+* **Feature**: EC2 Capacity Manager now supports SpotTotalCount, SpotTotalInterruptions and SpotInterruptionRate metrics for both vCPU and instance units.
+
+# v1.276.1 (2025-12-09)
+
+* No change notes available for this release.
+
+# v1.276.0 (2025-12-08)
+
+* **Feature**: Amazon EC2 P6-B300 instances provide 8x NVIDIA Blackwell Ultra GPUs with 2.1 TB high bandwidth GPU memory, 6.4 Tbps EFA networking, 300 Gbps dedicated ENA throughput, and 4 TB of system memory. Amazon EC2 C8a instances are powered by 5th Gen AMD EPYC processors with a maximum frequency of 4.5 GHz.
+* **Dependency Update**: Updated to the latest SDK module versions
+
# v1.275.1 (2025-12-02)
* **Dependency Update**: Updated to the latest SDK module versions
// them through their termination. For more information, see [Instance lifecycle]in the Amazon EC2
// User Guide.
//
-// - SQL license exemption monitoring - For instances registered with the SQL LE
-// service, status includes SQL license exemption monitoring health and processing
-// status to provide operational visibility into license exemption functionality.
-//
// The Amazon EC2 API follows an eventual consistency model. This means that the
// result of an API command you run that creates or modifies resources might not be
// immediately available to all subsequent commands you run. For guidance on how to
// to the state-reason-code filter.
//
// - requester-id - The ID of the entity that launched the instance on your
- // behalf (for example, Amazon Web Services Management Console, Amazon EC2 Auto
- // Scaling, and so on).
+ // behalf (for example, Amazon Web Services Management Console, Auto Scaling, and
+ // so on).
//
// - reservation-id - The ID of the instance's reservation. A reservation ID is
// created any time you launch an instance. A reservation ID has a one-to-one
sv.AvailabilityZone = ptr.String(xtv)
}
+ case strings.EqualFold("availabilityZoneId", t.Name.Local):
+ val, err := decoder.Value()
+ if err != nil {
+ return err
+ }
+ if val == nil {
+ break
+ }
+ {
+ xtv := string(val)
+ sv.AvailabilityZoneId = ptr.String(xtv)
+ }
+
case strings.EqualFold("blockDeviceMappingSet", t.Name.Local):
nodeDecoder := smithyxml.WrapNodeDecoder(decoder.Decoder, t)
if err := awsEc2query_deserializeDocumentBlockDeviceMappingResponseList(&sv.BlockDeviceMappings, nodeDecoder); err != nil {
sv.AvailabilityZone = ptr.String(xtv)
}
+ case strings.EqualFold("availabilityZoneId", t.Name.Local):
+ val, err := decoder.Value()
+ if err != nil {
+ return err
+ }
+ if val == nil {
+ break
+ }
+ {
+ xtv := string(val)
+ sv.AvailabilityZoneId = ptr.String(xtv)
+ }
+
case strings.EqualFold("instanceRequirements", t.Name.Local):
nodeDecoder := smithyxml.WrapNodeDecoder(decoder.Decoder, t)
if err := awsEc2query_deserializeDocumentInstanceRequirements(&sv.InstanceRequirements, nodeDecoder); err != nil {
sv.AvailabilityZone = ptr.String(xtv)
}
+ case strings.EqualFold("availabilityZoneId", t.Name.Local):
+ val, err := decoder.Value()
+ if err != nil {
+ return err
+ }
+ if val == nil {
+ break
+ }
+ {
+ xtv := string(val)
+ sv.AvailabilityZoneId = ptr.String(xtv)
+ }
+
case strings.EqualFold("groupName", t.Name.Local):
val, err := decoder.Value()
if err != nil {
package ec2
// goModuleVersion is the tagged release for this module
-const goModuleVersion = "1.275.1"
+const goModuleVersion = "1.278.0"
},
RegionRegex: partitionRegexp.AwsEusc,
IsRegionalized: true,
+ Endpoints: endpoints.Endpoints{
+ endpoints.EndpointKey{
+ Region: "eusc-de-east-1",
+ }: endpoints.Endpoint{},
+ },
},
{
ID: "aws-iso",
objectKey.String(*v.AvailabilityZone)
}
+ if v.AvailabilityZoneId != nil {
+ objectKey := object.Key("AvailabilityZoneId")
+ objectKey.String(*v.AvailabilityZoneId)
+ }
+
if v.BlockDeviceMappings != nil {
objectKey := object.FlatKey("BlockDeviceMapping")
if err := awsEc2query_serializeDocumentFleetBlockDeviceMappingRequestList(v.BlockDeviceMappings, objectKey); err != nil {
objectKey.String(*v.AvailabilityZone)
}
+ if v.AvailabilityZoneId != nil {
+ objectKey := object.Key("AvailabilityZoneId")
+ objectKey.String(*v.AvailabilityZoneId)
+ }
+
if v.InstanceRequirements != nil {
objectKey := object.Key("InstanceRequirements")
if err := awsEc2query_serializeDocumentInstanceRequirements(v.InstanceRequirements, objectKey); err != nil {
objectKey.String(*v.AvailabilityZone)
}
+ if v.AvailabilityZoneId != nil {
+ objectKey := object.Key("AvailabilityZoneId")
+ objectKey.String(*v.AvailabilityZoneId)
+ }
+
if v.GroupName != nil {
objectKey := object.Key("GroupName")
objectKey.String(*v.GroupName)
InstanceTypeR8a48xlarge InstanceType = "r8a.48xlarge"
InstanceTypeR8aMetal24xl InstanceType = "r8a.metal-24xl"
InstanceTypeR8aMetal48xl InstanceType = "r8a.metal-48xl"
+ InstanceTypeP6B30048xlarge InstanceType = "p6-b300.48xlarge"
+ InstanceTypeC8aMedium InstanceType = "c8a.medium"
+ InstanceTypeC8aLarge InstanceType = "c8a.large"
+ InstanceTypeC8aXlarge InstanceType = "c8a.xlarge"
+ InstanceTypeC8a2xlarge InstanceType = "c8a.2xlarge"
+ InstanceTypeC8a4xlarge InstanceType = "c8a.4xlarge"
+ InstanceTypeC8a8xlarge InstanceType = "c8a.8xlarge"
+ InstanceTypeC8a12xlarge InstanceType = "c8a.12xlarge"
+ InstanceTypeC8a16xlarge InstanceType = "c8a.16xlarge"
+ InstanceTypeC8a24xlarge InstanceType = "c8a.24xlarge"
+ InstanceTypeC8a48xlarge InstanceType = "c8a.48xlarge"
+ InstanceTypeC8aMetal24xl InstanceType = "c8a.metal-24xl"
+ InstanceTypeC8aMetal48xl InstanceType = "c8a.metal-48xl"
)
// Values returns all known values for InstanceType. Note that this can be
"r8a.48xlarge",
"r8a.metal-24xl",
"r8a.metal-48xl",
+ "p6-b300.48xlarge",
+ "c8a.medium",
+ "c8a.large",
+ "c8a.xlarge",
+ "c8a.2xlarge",
+ "c8a.4xlarge",
+ "c8a.8xlarge",
+ "c8a.12xlarge",
+ "c8a.16xlarge",
+ "c8a.24xlarge",
+ "c8a.48xlarge",
+ "c8a.metal-24xl",
+ "c8a.metal-48xl",
}
}
MetricSpotAvgRunTimeBeforeInterruptionInst Metric = "spot-avg-run-time-before-interruption-inst"
MetricSpotMaxRunTimeBeforeInterruptionInst Metric = "spot-max-run-time-before-interruption-inst"
MetricSpotMinRunTimeBeforeInterruptionInst Metric = "spot-min-run-time-before-interruption-inst"
+ MetricSpotTotalInterruptionsInst Metric = "spot-total-interruptions-inst"
+ MetricSpotTotalInterruptionsVcpu Metric = "spot-total-interruptions-vcpu"
+ MetricSpotTotalCountInst Metric = "spot-total-count-inst"
+ MetricSpotTotalCountVcpu Metric = "spot-total-count-vcpu"
+ MetricSpotInterruptionRateInst Metric = "spot-interruption-rate-inst"
+ MetricSpotInterruptionRateVcpu Metric = "spot-interruption-rate-vcpu"
)
// Values returns all known values for Metric. Note that this can be expanded in
"spot-avg-run-time-before-interruption-inst",
"spot-max-run-time-before-interruption-inst",
"spot-min-run-time-before-interruption-inst",
+ "spot-total-interruptions-inst",
+ "spot-total-interruptions-vcpu",
+ "spot-total-count-inst",
+ "spot-total-count-vcpu",
+ "spot-interruption-rate-inst",
+ "spot-interruption-rate-vcpu",
}
}
// Describes overrides for a launch template.
type FleetLaunchTemplateOverrides struct {
- // The Availability Zone in which to launch the instances.
+ // The Availability Zone in which to launch the instances. For example, us-east-2a .
+ //
+ // Either AvailabilityZone or AvailabilityZoneId must be specified in the request,
+ // but not both.
AvailabilityZone *string
+ // The ID of the Availability Zone in which to launch the instances. For example,
+ // use2-az1 .
+ //
+ // Either AvailabilityZone or AvailabilityZoneId must be specified in the request,
+ // but not both.
+ AvailabilityZoneId *string
+
// The block device mappings, which define the EBS volumes and instance store
// volumes to attach to the instance at launch.
//
// Describes overrides for a launch template.
type FleetLaunchTemplateOverridesRequest struct {
- // The Availability Zone in which to launch the instances.
+ // The Availability Zone in which to launch the instances. For example, us-east-2a .
+ //
+ // Either AvailabilityZone or AvailabilityZoneId must be specified in the request,
+ // but not both.
AvailabilityZone *string
+ // The ID of the Availability Zone in which to launch the instances. For example,
+ // use2-az1 .
+ //
+ // Either AvailabilityZone or AvailabilityZoneId must be specified in the request,
+ // but not both.
+ AvailabilityZoneId *string
+
// The block device mappings, which define the EBS volumes and instance store
// volumes to attach to the instance at launch.
//
// Describes overrides for a launch template.
type LaunchTemplateOverrides struct {
- // The Availability Zone in which to launch the instances.
+ // The Availability Zone in which to launch the instances. For example, us-east-2a .
+ //
+ // Either AvailabilityZone or AvailabilityZoneId must be specified in the request,
+ // but not both.
AvailabilityZone *string
+ // The ID of the Availability Zone in which to launch the instances. For example,
+ // use2-az1 .
+ //
+ // Either AvailabilityZone or AvailabilityZoneId must be specified in the request,
+ // but not both.
+ AvailabilityZoneId *string
+
// The instance requirements. When you specify instance requirements, Amazon EC2
// will identify instance types with the provided requirements, and then use your
// On-Demand and Spot allocation strategies to launch instances from these instance
// Describes Spot Instance placement.
type SpotPlacement struct {
- // The Availability Zone.
+ // The Availability Zone. For example, us-east-2a .
//
// [Spot Fleet only] To specify multiple Availability Zones, separate them using
- // commas; for example, "us-west-2a, us-west-2b".
+ // commas; for example, " us-east-2a , us-east-2b ".
+ //
+ // Either AvailabilityZone or AvailabilityZoneId must be specified in the request,
+ // but not both.
AvailabilityZone *string
+ // The ID of the Availability Zone. For example, use2-az1 .
+ //
+ // [Spot Fleet only] To specify multiple Availability Zones, separate them using
+ // commas; for example, " use2-az1 , use2-bz1 ".
+ //
+ // Either AvailabilityZone or AvailabilityZoneId must be specified in the request,
+ // but not both.
+ AvailabilityZoneId *string
+
// The name of the placement group.
GroupName *string
+# v1.13.16 (2025-12-08)
+
+* **Dependency Update**: Updated to the latest SDK module versions
+
# v1.13.15 (2025-12-02)
* **Dependency Update**: Updated to the latest SDK module versions
package presignedurl
// goModuleVersion is the tagged release for this module
-const goModuleVersion = "1.13.15"
+const goModuleVersion = "1.13.16"
+# v1.0.4 (2025-12-08)
+
+* **Dependency Update**: Updated to the latest SDK module versions
+
# v1.0.3 (2025-12-02)
* **Dependency Update**: Updated to the latest SDK module versions
package signin
// goModuleVersion is the tagged release for this module
-const goModuleVersion = "1.0.3"
+const goModuleVersion = "1.0.4"
+# v1.30.8 (2025-12-16)
+
+* No change notes available for this release.
+
+# v1.30.7 (2025-12-08)
+
+* **Dependency Update**: Updated to the latest SDK module versions
+
# v1.30.6 (2025-12-02)
* **Dependency Update**: Updated to the latest SDK module versions
package sso
// goModuleVersion is the tagged release for this module
-const goModuleVersion = "1.30.6"
+const goModuleVersion = "1.30.8"
Region: "ap-east-1",
},
},
+ endpoints.EndpointKey{
+ Region: "ap-east-2",
+ }: endpoints.Endpoint{},
endpoints.EndpointKey{
Region: "ap-northeast-1",
}: endpoints.Endpoint{
+# v1.35.12 (2025-12-08)
+
+* **Dependency Update**: Updated to the latest SDK module versions
+
# v1.35.11 (2025-12-02)
* **Dependency Update**: Updated to the latest SDK module versions
package ssooidc
// goModuleVersion is the tagged release for this module
-const goModuleVersion = "1.35.11"
+const goModuleVersion = "1.35.12"
+# v1.41.5 (2025-12-09)
+
+* No change notes available for this release.
+
+# v1.41.4 (2025-12-08)
+
+* **Dependency Update**: Updated to the latest SDK module versions
+
# v1.41.3 (2025-12-02)
* **Dependency Update**: Updated to the latest SDK module versions
package sts
// goModuleVersion is the tagged release for this module
-const goModuleVersion = "1.41.3"
+const goModuleVersion = "1.41.5"
},
RegionRegex: partitionRegexp.AwsEusc,
IsRegionalized: true,
+ Endpoints: endpoints.Endpoints{
+ endpoints.EndpointKey{
+ Region: "eusc-de-east-1",
+ }: endpoints.Endpoint{},
+ },
},
{
ID: "aws-iso",
* [v1.19.0-pre.3](https://github.com/cilium/cilium/releases/tag/v1.19.0-pre.3) (_[source](https://github.com/cilium/cilium/tree/v1.19.0-pre.3/install/kubernetes/cilium)_)
* [v1.19.0-pre.2](https://github.com/cilium/cilium/releases/tag/v1.19.0-pre.2) (_[source](https://github.com/cilium/cilium/tree/v1.19.0-pre.2/install/kubernetes/cilium)_)
-* [v1.19.0-pre.2](https://github.com/cilium/cilium/releases/tag/v1.19.0-pre.2) (_[source](https://github.com/cilium/cilium/tree/v1.19.0-pre.2/install/kubernetes/cilium)_)
-* [v1.19.0-pre.1](https://github.com/cilium/cilium/releases/tag/v1.19.0-pre.1) (_[source](https://github.com/cilium/cilium/tree/v1.19.0-pre.1/install/kubernetes/cilium)_)
* [v1.19.0-pre.1](https://github.com/cilium/cilium/releases/tag/v1.19.0-pre.1) (_[source](https://github.com/cilium/cilium/tree/v1.19.0-pre.1/install/kubernetes/cilium)_)
* [v1.19.0-pre.0](https://github.com/cilium/cilium/releases/tag/v1.19.0-pre.0) (_[source](https://github.com/cilium/cilium/tree/v1.19.0-pre.0/install/kubernetes/cilium)_)
-* [v1.19.0-pre.0](https://github.com/cilium/cilium/releases/tag/v1.19.0-pre.0) (_[source](https://github.com/cilium/cilium/tree/v1.19.0-pre.0/install/kubernetes/cilium)_)
+* [v1.18.5](https://github.com/cilium/cilium/releases/tag/v1.18.5) (_[source](https://github.com/cilium/cilium/tree/v1.18.5/install/kubernetes/cilium)_)
* [v1.18.4](https://github.com/cilium/cilium/releases/tag/v1.18.4) (_[source](https://github.com/cilium/cilium/tree/v1.18.4/install/kubernetes/cilium)_)
* [v1.18.3](https://github.com/cilium/cilium/releases/tag/v1.18.3) (_[source](https://github.com/cilium/cilium/tree/v1.18.3/install/kubernetes/cilium)_)
-* [v1.18.3](https://github.com/cilium/cilium/releases/tag/v1.18.3) (_[source](https://github.com/cilium/cilium/tree/v1.18.3/install/kubernetes/cilium)_)
-* [v1.18.2](https://github.com/cilium/cilium/releases/tag/v1.18.2) (_[source](https://github.com/cilium/cilium/tree/v1.18.2/install/kubernetes/cilium)_)
* [v1.18.2](https://github.com/cilium/cilium/releases/tag/v1.18.2) (_[source](https://github.com/cilium/cilium/tree/v1.18.2/install/kubernetes/cilium)_)
* [v1.18.1](https://github.com/cilium/cilium/releases/tag/v1.18.1) (_[source](https://github.com/cilium/cilium/tree/v1.18.1/install/kubernetes/cilium)_)
-* [v1.18.1](https://github.com/cilium/cilium/releases/tag/v1.18.1) (_[source](https://github.com/cilium/cilium/tree/v1.18.1/install/kubernetes/cilium)_)
-* [v1.18.0](https://github.com/cilium/cilium/releases/tag/v1.18.0) (_[source](https://github.com/cilium/cilium/tree/v1.18.0/install/kubernetes/cilium)_)
* [v1.18.0](https://github.com/cilium/cilium/releases/tag/v1.18.0) (_[source](https://github.com/cilium/cilium/tree/v1.18.0/install/kubernetes/cilium)_)
* [v1.18.0-rc.1](https://github.com/cilium/cilium/releases/tag/v1.18.0-rc.1) (_[source](https://github.com/cilium/cilium/tree/v1.18.0-rc.1/install/kubernetes/cilium)_)
-* [v1.18.0-rc.1](https://github.com/cilium/cilium/releases/tag/v1.18.0-rc.1) (_[source](https://github.com/cilium/cilium/tree/v1.18.0-rc.1/install/kubernetes/cilium)_)
* [v1.18.0-rc.0](https://github.com/cilium/cilium/releases/tag/v1.18.0-rc.0) (_[source](https://github.com/cilium/cilium/tree/v1.18.0-rc.0/install/kubernetes/cilium)_)
-* [v1.18.0-rc.0](https://github.com/cilium/cilium/releases/tag/v1.18.0-rc.0) (_[source](https://github.com/cilium/cilium/tree/v1.18.0-rc.0/install/kubernetes/cilium)_)
-* [v1.18.0-pre.3](https://github.com/cilium/cilium/releases/tag/v1.18.0-pre.3) (_[source](https://github.com/cilium/cilium/tree/v1.18.0-pre.3/install/kubernetes/cilium)_)
* [v1.18.0-pre.3](https://github.com/cilium/cilium/releases/tag/v1.18.0-pre.3) (_[source](https://github.com/cilium/cilium/tree/v1.18.0-pre.3/install/kubernetes/cilium)_)
* [v1.18.0-pre.2](https://github.com/cilium/cilium/releases/tag/v1.18.0-pre.2) (_[source](https://github.com/cilium/cilium/tree/v1.18.0-pre.2/install/kubernetes/cilium)_)
-* [v1.18.0-pre.2](https://github.com/cilium/cilium/releases/tag/v1.18.0-pre.2) (_[source](https://github.com/cilium/cilium/tree/v1.18.0-pre.2/install/kubernetes/cilium)_)
-* [v1.18.0-pre.1](https://github.com/cilium/cilium/releases/tag/v1.18.0-pre.1) (_[source](https://github.com/cilium/cilium/tree/v1.18.0-pre.1/install/kubernetes/cilium)_)
* [v1.18.0-pre.1](https://github.com/cilium/cilium/releases/tag/v1.18.0-pre.1) (_[source](https://github.com/cilium/cilium/tree/v1.18.0-pre.1/install/kubernetes/cilium)_)
* [v1.18.0-pre.0](https://github.com/cilium/cilium/releases/tag/v1.18.0-pre.0) (_[source](https://github.com/cilium/cilium/tree/v1.18.0-pre.0/install/kubernetes/cilium)_)
-* [v1.18.0-pre.0](https://github.com/cilium/cilium/releases/tag/v1.18.0-pre.0) (_[source](https://github.com/cilium/cilium/tree/v1.18.0-pre.0/install/kubernetes/cilium)_)
+* [v1.17.11](https://github.com/cilium/cilium/releases/tag/v1.17.11) (_[source](https://github.com/cilium/cilium/tree/v1.17.11/install/kubernetes/cilium)_)
* [v1.17.10](https://github.com/cilium/cilium/releases/tag/v1.17.10) (_[source](https://github.com/cilium/cilium/tree/v1.17.10/install/kubernetes/cilium)_)
* [v1.17.9](https://github.com/cilium/cilium/releases/tag/v1.17.9) (_[source](https://github.com/cilium/cilium/tree/v1.17.9/install/kubernetes/cilium)_)
-* [v1.17.9](https://github.com/cilium/cilium/releases/tag/v1.17.9) (_[source](https://github.com/cilium/cilium/tree/v1.17.9/install/kubernetes/cilium)_)
-* [v1.17.8](https://github.com/cilium/cilium/releases/tag/v1.17.8) (_[source](https://github.com/cilium/cilium/tree/v1.17.8/install/kubernetes/cilium)_)
* [v1.17.8](https://github.com/cilium/cilium/releases/tag/v1.17.8) (_[source](https://github.com/cilium/cilium/tree/v1.17.8/install/kubernetes/cilium)_)
* [v1.17.7](https://github.com/cilium/cilium/releases/tag/v1.17.7) (_[source](https://github.com/cilium/cilium/tree/v1.17.7/install/kubernetes/cilium)_)
-* [v1.17.7](https://github.com/cilium/cilium/releases/tag/v1.17.7) (_[source](https://github.com/cilium/cilium/tree/v1.17.7/install/kubernetes/cilium)_)
-* [v1.17.6](https://github.com/cilium/cilium/releases/tag/v1.17.6) (_[source](https://github.com/cilium/cilium/tree/v1.17.6/install/kubernetes/cilium)_)
* [v1.17.6](https://github.com/cilium/cilium/releases/tag/v1.17.6) (_[source](https://github.com/cilium/cilium/tree/v1.17.6/install/kubernetes/cilium)_)
* [v1.17.5](https://github.com/cilium/cilium/releases/tag/v1.17.5) (_[source](https://github.com/cilium/cilium/tree/v1.17.5/install/kubernetes/cilium)_)
-* [v1.17.5](https://github.com/cilium/cilium/releases/tag/v1.17.5) (_[source](https://github.com/cilium/cilium/tree/v1.17.5/install/kubernetes/cilium)_)
-* [v1.17.4](https://github.com/cilium/cilium/releases/tag/v1.17.4) (_[source](https://github.com/cilium/cilium/tree/v1.17.4/install/kubernetes/cilium)_)
* [v1.17.4](https://github.com/cilium/cilium/releases/tag/v1.17.4) (_[source](https://github.com/cilium/cilium/tree/v1.17.4/install/kubernetes/cilium)_)
* [v1.17.3](https://github.com/cilium/cilium/releases/tag/v1.17.3) (_[source](https://github.com/cilium/cilium/tree/v1.17.3/install/kubernetes/cilium)_)
-* [v1.17.3](https://github.com/cilium/cilium/releases/tag/v1.17.3) (_[source](https://github.com/cilium/cilium/tree/v1.17.3/install/kubernetes/cilium)_)
-* [v1.17.2](https://github.com/cilium/cilium/releases/tag/v1.17.2) (_[source](https://github.com/cilium/cilium/tree/v1.17.2/install/kubernetes/cilium)_)
* [v1.17.2](https://github.com/cilium/cilium/releases/tag/v1.17.2) (_[source](https://github.com/cilium/cilium/tree/v1.17.2/install/kubernetes/cilium)_)
* [v1.17.1](https://github.com/cilium/cilium/releases/tag/v1.17.1) (_[source](https://github.com/cilium/cilium/tree/v1.17.1/install/kubernetes/cilium)_)
-* [v1.17.1](https://github.com/cilium/cilium/releases/tag/v1.17.1) (_[source](https://github.com/cilium/cilium/tree/v1.17.1/install/kubernetes/cilium)_)
* [v1.17.0](https://github.com/cilium/cilium/releases/tag/v1.17.0) (_[source](https://github.com/cilium/cilium/tree/v1.17.0/install/kubernetes/cilium)_)
-* [v1.17.0](https://github.com/cilium/cilium/releases/tag/v1.17.0) (_[source](https://github.com/cilium/cilium/tree/v1.17.0/install/kubernetes/cilium)_)
-* [v1.17.0-rc.2](https://github.com/cilium/cilium/releases/tag/v1.17.0-rc.2) (_[source](https://github.com/cilium/cilium/tree/v1.17.0-rc.2/install/kubernetes/cilium)_)
* [v1.17.0-rc.2](https://github.com/cilium/cilium/releases/tag/v1.17.0-rc.2) (_[source](https://github.com/cilium/cilium/tree/v1.17.0-rc.2/install/kubernetes/cilium)_)
* [v1.17.0-rc.1](https://github.com/cilium/cilium/releases/tag/v1.17.0-rc.1) (_[source](https://github.com/cilium/cilium/tree/v1.17.0-rc.1/install/kubernetes/cilium)_)
-* [v1.17.0-rc.1](https://github.com/cilium/cilium/releases/tag/v1.17.0-rc.1) (_[source](https://github.com/cilium/cilium/tree/v1.17.0-rc.1/install/kubernetes/cilium)_)
-* [v1.17.0-rc.0](https://github.com/cilium/cilium/releases/tag/v1.17.0-rc.0) (_[source](https://github.com/cilium/cilium/tree/v1.17.0-rc.0/install/kubernetes/cilium)_)
* [v1.17.0-rc.0](https://github.com/cilium/cilium/releases/tag/v1.17.0-rc.0) (_[source](https://github.com/cilium/cilium/tree/v1.17.0-rc.0/install/kubernetes/cilium)_)
* [v1.17.0-pre.3](https://github.com/cilium/cilium/releases/tag/v1.17.0-pre.3) (_[source](https://github.com/cilium/cilium/tree/v1.17.0-pre.3/install/kubernetes/cilium)_)
-* [v1.17.0-pre.3](https://github.com/cilium/cilium/releases/tag/v1.17.0-pre.3) (_[source](https://github.com/cilium/cilium/tree/v1.17.0-pre.3/install/kubernetes/cilium)_)
* [v1.17.0-pre.2](https://github.com/cilium/cilium/releases/tag/v1.17.0-pre.2) (_[source](https://github.com/cilium/cilium/tree/v1.17.0-pre.2/install/kubernetes/cilium)_)
-* [v1.17.0-pre.2](https://github.com/cilium/cilium/releases/tag/v1.17.0-pre.2) (_[source](https://github.com/cilium/cilium/tree/v1.17.0-pre.2/install/kubernetes/cilium)_)
-* [v1.17.0-pre.1](https://github.com/cilium/cilium/releases/tag/v1.17.0-pre.1) (_[source](https://github.com/cilium/cilium/tree/v1.17.0-pre.1/install/kubernetes/cilium)_)
* [v1.17.0-pre.1](https://github.com/cilium/cilium/releases/tag/v1.17.0-pre.1) (_[source](https://github.com/cilium/cilium/tree/v1.17.0-pre.1/install/kubernetes/cilium)_)
* [v1.17.0-pre.0](https://github.com/cilium/cilium/releases/tag/v1.17.0-pre.0) (_[source](https://github.com/cilium/cilium/tree/v1.17.0-pre.0/install/kubernetes/cilium)_)
-* [v1.17.0-pre.0](https://github.com/cilium/cilium/releases/tag/v1.17.0-pre.0) (_[source](https://github.com/cilium/cilium/tree/v1.17.0-pre.0/install/kubernetes/cilium)_)
+* [v1.16.18](https://github.com/cilium/cilium/releases/tag/v1.16.18) (_[source](https://github.com/cilium/cilium/tree/v1.16.18/install/kubernetes/cilium)_)
* [v1.16.17](https://github.com/cilium/cilium/releases/tag/v1.16.17) (_[source](https://github.com/cilium/cilium/tree/v1.16.17/install/kubernetes/cilium)_)
* [v1.16.16](https://github.com/cilium/cilium/releases/tag/v1.16.16) (_[source](https://github.com/cilium/cilium/tree/v1.16.16/install/kubernetes/cilium)_)
-* [v1.16.16](https://github.com/cilium/cilium/releases/tag/v1.16.16) (_[source](https://github.com/cilium/cilium/tree/v1.16.16/install/kubernetes/cilium)_)
-* [v1.16.15](https://github.com/cilium/cilium/releases/tag/v1.16.15) (_[source](https://github.com/cilium/cilium/tree/v1.16.15/install/kubernetes/cilium)_)
* [v1.16.15](https://github.com/cilium/cilium/releases/tag/v1.16.15) (_[source](https://github.com/cilium/cilium/tree/v1.16.15/install/kubernetes/cilium)_)
* [v1.16.13](https://github.com/cilium/cilium/releases/tag/v1.16.13) (_[source](https://github.com/cilium/cilium/tree/v1.16.13/install/kubernetes/cilium)_)
-* [v1.16.13](https://github.com/cilium/cilium/releases/tag/v1.16.13) (_[source](https://github.com/cilium/cilium/tree/v1.16.13/install/kubernetes/cilium)_)
-* [v1.16.12](https://github.com/cilium/cilium/releases/tag/v1.16.12) (_[source](https://github.com/cilium/cilium/tree/v1.16.12/install/kubernetes/cilium)_)
* [v1.16.12](https://github.com/cilium/cilium/releases/tag/v1.16.12) (_[source](https://github.com/cilium/cilium/tree/v1.16.12/install/kubernetes/cilium)_)
* [v1.16.11](https://github.com/cilium/cilium/releases/tag/v1.16.11) (_[source](https://github.com/cilium/cilium/tree/v1.16.11/install/kubernetes/cilium)_)
-* [v1.16.11](https://github.com/cilium/cilium/releases/tag/v1.16.11) (_[source](https://github.com/cilium/cilium/tree/v1.16.11/install/kubernetes/cilium)_)
-* [v1.16.10](https://github.com/cilium/cilium/releases/tag/v1.16.10) (_[source](https://github.com/cilium/cilium/tree/v1.16.10/install/kubernetes/cilium)_)
* [v1.16.10](https://github.com/cilium/cilium/releases/tag/v1.16.10) (_[source](https://github.com/cilium/cilium/tree/v1.16.10/install/kubernetes/cilium)_)
* [v1.16.9](https://github.com/cilium/cilium/releases/tag/v1.16.9) (_[source](https://github.com/cilium/cilium/tree/v1.16.9/install/kubernetes/cilium)_)
-* [v1.16.9](https://github.com/cilium/cilium/releases/tag/v1.16.9) (_[source](https://github.com/cilium/cilium/tree/v1.16.9/install/kubernetes/cilium)_)
-* [v1.16.8](https://github.com/cilium/cilium/releases/tag/v1.16.8) (_[source](https://github.com/cilium/cilium/tree/v1.16.8/install/kubernetes/cilium)_)
* [v1.16.8](https://github.com/cilium/cilium/releases/tag/v1.16.8) (_[source](https://github.com/cilium/cilium/tree/v1.16.8/install/kubernetes/cilium)_)
* [v1.16.7](https://github.com/cilium/cilium/releases/tag/v1.16.7) (_[source](https://github.com/cilium/cilium/tree/v1.16.7/install/kubernetes/cilium)_)
-* [v1.16.7](https://github.com/cilium/cilium/releases/tag/v1.16.7) (_[source](https://github.com/cilium/cilium/tree/v1.16.7/install/kubernetes/cilium)_)
-* [v1.16.6](https://github.com/cilium/cilium/releases/tag/v1.16.6) (_[source](https://github.com/cilium/cilium/tree/v1.16.6/install/kubernetes/cilium)_)
* [v1.16.6](https://github.com/cilium/cilium/releases/tag/v1.16.6) (_[source](https://github.com/cilium/cilium/tree/v1.16.6/install/kubernetes/cilium)_)
* [v1.16.5](https://github.com/cilium/cilium/releases/tag/v1.16.5) (_[source](https://github.com/cilium/cilium/tree/v1.16.5/install/kubernetes/cilium)_)
-* [v1.16.5](https://github.com/cilium/cilium/releases/tag/v1.16.5) (_[source](https://github.com/cilium/cilium/tree/v1.16.5/install/kubernetes/cilium)_)
* [v1.16.4](https://github.com/cilium/cilium/releases/tag/v1.16.4) (_[source](https://github.com/cilium/cilium/tree/v1.16.4/install/kubernetes/cilium)_)
-* [v1.16.4](https://github.com/cilium/cilium/releases/tag/v1.16.4) (_[source](https://github.com/cilium/cilium/tree/v1.16.4/install/kubernetes/cilium)_)
-* [v1.16.3](https://github.com/cilium/cilium/releases/tag/v1.16.3) (_[source](https://github.com/cilium/cilium/tree/v1.16.3/install/kubernetes/cilium)_)
* [v1.16.3](https://github.com/cilium/cilium/releases/tag/v1.16.3) (_[source](https://github.com/cilium/cilium/tree/v1.16.3/install/kubernetes/cilium)_)
* [v1.16.2](https://github.com/cilium/cilium/releases/tag/v1.16.2) (_[source](https://github.com/cilium/cilium/tree/v1.16.2/install/kubernetes/cilium)_)
-* [v1.16.2](https://github.com/cilium/cilium/releases/tag/v1.16.2) (_[source](https://github.com/cilium/cilium/tree/v1.16.2/install/kubernetes/cilium)_)
-* [v1.16.1](https://github.com/cilium/cilium/releases/tag/v1.16.1) (_[source](https://github.com/cilium/cilium/tree/v1.16.1/install/kubernetes/cilium)_)
* [v1.16.1](https://github.com/cilium/cilium/releases/tag/v1.16.1) (_[source](https://github.com/cilium/cilium/tree/v1.16.1/install/kubernetes/cilium)_)
* [v1.16.0](https://github.com/cilium/cilium/releases/tag/v1.16.0) (_[source](https://github.com/cilium/cilium/tree/v1.16.0/install/kubernetes/cilium)_)
-* [v1.16.0](https://github.com/cilium/cilium/releases/tag/v1.16.0) (_[source](https://github.com/cilium/cilium/tree/v1.16.0/install/kubernetes/cilium)_)
* [v1.16.0-rc.2](https://github.com/cilium/cilium/releases/tag/v1.16.0-rc.2) (_[source](https://github.com/cilium/cilium/tree/v1.16.0-rc.2/install/kubernetes/cilium)_)
-* [v1.16.0-rc.2](https://github.com/cilium/cilium/releases/tag/v1.16.0-rc.2) (_[source](https://github.com/cilium/cilium/tree/v1.16.0-rc.2/install/kubernetes/cilium)_)
-* [v1.16.0-rc.1](https://github.com/cilium/cilium/releases/tag/v1.16.0-rc.1) (_[source](https://github.com/cilium/cilium/tree/v1.16.0-rc.1/install/kubernetes/cilium)_)
* [v1.16.0-rc.1](https://github.com/cilium/cilium/releases/tag/v1.16.0-rc.1) (_[source](https://github.com/cilium/cilium/tree/v1.16.0-rc.1/install/kubernetes/cilium)_)
* [v1.16.0-rc.0](https://github.com/cilium/cilium/releases/tag/v1.16.0-rc.0) (_[source](https://github.com/cilium/cilium/tree/v1.16.0-rc.0/install/kubernetes/cilium)_)
-* [v1.16.0-rc.0](https://github.com/cilium/cilium/releases/tag/v1.16.0-rc.0) (_[source](https://github.com/cilium/cilium/tree/v1.16.0-rc.0/install/kubernetes/cilium)_)
-* [v1.16.0-pre.3](https://github.com/cilium/cilium/releases/tag/v1.16.0-pre.3) (_[source](https://github.com/cilium/cilium/tree/v1.16.0-pre.3/install/kubernetes/cilium)_)
* [v1.16.0-pre.3](https://github.com/cilium/cilium/releases/tag/v1.16.0-pre.3) (_[source](https://github.com/cilium/cilium/tree/v1.16.0-pre.3/install/kubernetes/cilium)_)
* [v1.16.0-pre.2](https://github.com/cilium/cilium/releases/tag/v1.16.0-pre.2) (_[source](https://github.com/cilium/cilium/tree/v1.16.0-pre.2/install/kubernetes/cilium)_)
-* [v1.16.0-pre.2](https://github.com/cilium/cilium/releases/tag/v1.16.0-pre.2) (_[source](https://github.com/cilium/cilium/tree/v1.16.0-pre.2/install/kubernetes/cilium)_)
* [v1.16.0-pre.1](https://github.com/cilium/cilium/releases/tag/v1.16.0-pre.1) (_[source](https://github.com/cilium/cilium/tree/v1.16.0-pre.1/install/kubernetes/cilium)_)
-* [v1.16.0-pre.1](https://github.com/cilium/cilium/releases/tag/v1.16.0-pre.1) (_[source](https://github.com/cilium/cilium/tree/v1.16.0-pre.1/install/kubernetes/cilium)_)
-* [v1.16.0-pre.0](https://github.com/cilium/cilium/releases/tag/v1.16.0-pre.0) (_[source](https://github.com/cilium/cilium/tree/v1.16.0-pre.0/install/kubernetes/cilium)_)
* [v1.16.0-pre.0](https://github.com/cilium/cilium/releases/tag/v1.16.0-pre.0) (_[source](https://github.com/cilium/cilium/tree/v1.16.0-pre.0/install/kubernetes/cilium)_)
* [v1.15.19](https://github.com/cilium/cilium/releases/tag/v1.15.19) (_[source](https://github.com/cilium/cilium/tree/v1.15.19/install/kubernetes/cilium)_)
-* [v1.15.19](https://github.com/cilium/cilium/releases/tag/v1.15.19) (_[source](https://github.com/cilium/cilium/tree/v1.15.19/install/kubernetes/cilium)_)
-* [v1.15.18](https://github.com/cilium/cilium/releases/tag/v1.15.18) (_[source](https://github.com/cilium/cilium/tree/v1.15.18/install/kubernetes/cilium)_)
* [v1.15.18](https://github.com/cilium/cilium/releases/tag/v1.15.18) (_[source](https://github.com/cilium/cilium/tree/v1.15.18/install/kubernetes/cilium)_)
* [v1.15.17](https://github.com/cilium/cilium/releases/tag/v1.15.17) (_[source](https://github.com/cilium/cilium/tree/v1.15.17/install/kubernetes/cilium)_)
-* [v1.15.17](https://github.com/cilium/cilium/releases/tag/v1.15.17) (_[source](https://github.com/cilium/cilium/tree/v1.15.17/install/kubernetes/cilium)_)
-* [v1.15.16](https://github.com/cilium/cilium/releases/tag/v1.15.16) (_[source](https://github.com/cilium/cilium/tree/v1.15.16/install/kubernetes/cilium)_)
* [v1.15.16](https://github.com/cilium/cilium/releases/tag/v1.15.16) (_[source](https://github.com/cilium/cilium/tree/v1.15.16/install/kubernetes/cilium)_)
* [v1.15.15](https://github.com/cilium/cilium/releases/tag/v1.15.15) (_[source](https://github.com/cilium/cilium/tree/v1.15.15/install/kubernetes/cilium)_)
-* [v1.15.15](https://github.com/cilium/cilium/releases/tag/v1.15.15) (_[source](https://github.com/cilium/cilium/tree/v1.15.15/install/kubernetes/cilium)_)
-* [v1.15.14](https://github.com/cilium/cilium/releases/tag/v1.15.14) (_[source](https://github.com/cilium/cilium/tree/v1.15.14/install/kubernetes/cilium)_)
* [v1.15.14](https://github.com/cilium/cilium/releases/tag/v1.15.14) (_[source](https://github.com/cilium/cilium/tree/v1.15.14/install/kubernetes/cilium)_)
* [v1.15.13](https://github.com/cilium/cilium/releases/tag/v1.15.13) (_[source](https://github.com/cilium/cilium/tree/v1.15.13/install/kubernetes/cilium)_)
-* [v1.15.13](https://github.com/cilium/cilium/releases/tag/v1.15.13) (_[source](https://github.com/cilium/cilium/tree/v1.15.13/install/kubernetes/cilium)_)
* [v1.15.12](https://github.com/cilium/cilium/releases/tag/v1.15.12) (_[source](https://github.com/cilium/cilium/tree/v1.15.12/install/kubernetes/cilium)_)
-* [v1.15.12](https://github.com/cilium/cilium/releases/tag/v1.15.12) (_[source](https://github.com/cilium/cilium/tree/v1.15.12/install/kubernetes/cilium)_)
-* [v1.15.11](https://github.com/cilium/cilium/releases/tag/v1.15.11) (_[source](https://github.com/cilium/cilium/tree/v1.15.11/install/kubernetes/cilium)_)
* [v1.15.11](https://github.com/cilium/cilium/releases/tag/v1.15.11) (_[source](https://github.com/cilium/cilium/tree/v1.15.11/install/kubernetes/cilium)_)
* [v1.15.10](https://github.com/cilium/cilium/releases/tag/v1.15.10) (_[source](https://github.com/cilium/cilium/tree/v1.15.10/install/kubernetes/cilium)_)
-* [v1.15.10](https://github.com/cilium/cilium/releases/tag/v1.15.10) (_[source](https://github.com/cilium/cilium/tree/v1.15.10/install/kubernetes/cilium)_)
-* [v1.15.9](https://github.com/cilium/cilium/releases/tag/v1.15.9) (_[source](https://github.com/cilium/cilium/tree/v1.15.9/install/kubernetes/cilium)_)
* [v1.15.9](https://github.com/cilium/cilium/releases/tag/v1.15.9) (_[source](https://github.com/cilium/cilium/tree/v1.15.9/install/kubernetes/cilium)_)
* [v1.15.8](https://github.com/cilium/cilium/releases/tag/v1.15.8) (_[source](https://github.com/cilium/cilium/tree/v1.15.8/install/kubernetes/cilium)_)
-* [v1.15.8](https://github.com/cilium/cilium/releases/tag/v1.15.8) (_[source](https://github.com/cilium/cilium/tree/v1.15.8/install/kubernetes/cilium)_)
-* [v1.15.7](https://github.com/cilium/cilium/releases/tag/v1.15.7) (_[source](https://github.com/cilium/cilium/tree/v1.15.7/install/kubernetes/cilium)_)
* [v1.15.7](https://github.com/cilium/cilium/releases/tag/v1.15.7) (_[source](https://github.com/cilium/cilium/tree/v1.15.7/install/kubernetes/cilium)_)
* [v1.15.6](https://github.com/cilium/cilium/releases/tag/v1.15.6) (_[source](https://github.com/cilium/cilium/tree/v1.15.6/install/kubernetes/cilium)_)
-* [v1.15.6](https://github.com/cilium/cilium/releases/tag/v1.15.6) (_[source](https://github.com/cilium/cilium/tree/v1.15.6/install/kubernetes/cilium)_)
-* [v1.15.5](https://github.com/cilium/cilium/releases/tag/v1.15.5) (_[source](https://github.com/cilium/cilium/tree/v1.15.5/install/kubernetes/cilium)_)
* [v1.15.5](https://github.com/cilium/cilium/releases/tag/v1.15.5) (_[source](https://github.com/cilium/cilium/tree/v1.15.5/install/kubernetes/cilium)_)
* [v1.15.4](https://github.com/cilium/cilium/releases/tag/v1.15.4) (_[source](https://github.com/cilium/cilium/tree/v1.15.4/install/kubernetes/cilium)_)
-* [v1.15.4](https://github.com/cilium/cilium/releases/tag/v1.15.4) (_[source](https://github.com/cilium/cilium/tree/v1.15.4/install/kubernetes/cilium)_)
* [v1.15.3](https://github.com/cilium/cilium/releases/tag/v1.15.3) (_[source](https://github.com/cilium/cilium/tree/v1.15.3/install/kubernetes/cilium)_)
-* [v1.15.3](https://github.com/cilium/cilium/releases/tag/v1.15.3) (_[source](https://github.com/cilium/cilium/tree/v1.15.3/install/kubernetes/cilium)_)
-* [v1.15.2](https://github.com/cilium/cilium/releases/tag/v1.15.2) (_[source](https://github.com/cilium/cilium/tree/v1.15.2/install/kubernetes/cilium)_)
* [v1.15.2](https://github.com/cilium/cilium/releases/tag/v1.15.2) (_[source](https://github.com/cilium/cilium/tree/v1.15.2/install/kubernetes/cilium)_)
* [v1.15.1](https://github.com/cilium/cilium/releases/tag/v1.15.1) (_[source](https://github.com/cilium/cilium/tree/v1.15.1/install/kubernetes/cilium)_)
-* [v1.15.1](https://github.com/cilium/cilium/releases/tag/v1.15.1) (_[source](https://github.com/cilium/cilium/tree/v1.15.1/install/kubernetes/cilium)_)
-* [v1.15.0](https://github.com/cilium/cilium/releases/tag/v1.15.0) (_[source](https://github.com/cilium/cilium/tree/v1.15.0/install/kubernetes/cilium)_)
* [v1.15.0](https://github.com/cilium/cilium/releases/tag/v1.15.0) (_[source](https://github.com/cilium/cilium/tree/v1.15.0/install/kubernetes/cilium)_)
* [v1.15.0-rc.1](https://github.com/cilium/cilium/releases/tag/v1.15.0-rc.1) (_[source](https://github.com/cilium/cilium/tree/v1.15.0-rc.1/install/kubernetes/cilium)_)
-* [v1.15.0-rc.1](https://github.com/cilium/cilium/releases/tag/v1.15.0-rc.1) (_[source](https://github.com/cilium/cilium/tree/v1.15.0-rc.1/install/kubernetes/cilium)_)
-* [v1.15.0-rc.0](https://github.com/cilium/cilium/releases/tag/v1.15.0-rc.0) (_[source](https://github.com/cilium/cilium/tree/v1.15.0-rc.0/install/kubernetes/cilium)_)
* [v1.15.0-rc.0](https://github.com/cilium/cilium/releases/tag/v1.15.0-rc.0) (_[source](https://github.com/cilium/cilium/tree/v1.15.0-rc.0/install/kubernetes/cilium)_)
* [v1.15.0-pre.3](https://github.com/cilium/cilium/releases/tag/v1.15.0-pre.3) (_[source](https://github.com/cilium/cilium/tree/v1.15.0-pre.3/install/kubernetes/cilium)_)
-* [v1.15.0-pre.3](https://github.com/cilium/cilium/releases/tag/v1.15.0-pre.3) (_[source](https://github.com/cilium/cilium/tree/v1.15.0-pre.3/install/kubernetes/cilium)_)
-* [v1.15.0-pre.2](https://github.com/cilium/cilium/releases/tag/v1.15.0-pre.2) (_[source](https://github.com/cilium/cilium/tree/v1.15.0-pre.2/install/kubernetes/cilium)_)
* [v1.15.0-pre.2](https://github.com/cilium/cilium/releases/tag/v1.15.0-pre.2) (_[source](https://github.com/cilium/cilium/tree/v1.15.0-pre.2/install/kubernetes/cilium)_)
* [v1.15.0-pre.1](https://github.com/cilium/cilium/releases/tag/v1.15.0-pre.1) (_[source](https://github.com/cilium/cilium/tree/v1.15.0-pre.1/install/kubernetes/cilium)_)
-* [v1.15.0-pre.1](https://github.com/cilium/cilium/releases/tag/v1.15.0-pre.1) (_[source](https://github.com/cilium/cilium/tree/v1.15.0-pre.1/install/kubernetes/cilium)_)
* [v1.15.0-pre.0](https://github.com/cilium/cilium/releases/tag/v1.15.0-pre.0) (_[source](https://github.com/cilium/cilium/tree/v1.15.0-pre.0/install/kubernetes/cilium)_)
-* [v1.15.0-pre.0](https://github.com/cilium/cilium/releases/tag/v1.15.0-pre.0) (_[source](https://github.com/cilium/cilium/tree/v1.15.0-pre.0/install/kubernetes/cilium)_)
-* [v1.14.19](https://github.com/cilium/cilium/releases/tag/v1.14.19) (_[source](https://github.com/cilium/cilium/tree/v1.14.19/install/kubernetes/cilium)_)
* [v1.14.19](https://github.com/cilium/cilium/releases/tag/v1.14.19) (_[source](https://github.com/cilium/cilium/tree/v1.14.19/install/kubernetes/cilium)_)
* [v1.14.18](https://github.com/cilium/cilium/releases/tag/v1.14.18) (_[source](https://github.com/cilium/cilium/tree/v1.14.18/install/kubernetes/cilium)_)
-* [v1.14.18](https://github.com/cilium/cilium/releases/tag/v1.14.18) (_[source](https://github.com/cilium/cilium/tree/v1.14.18/install/kubernetes/cilium)_)
-* [v1.14.17](https://github.com/cilium/cilium/releases/tag/v1.14.17) (_[source](https://github.com/cilium/cilium/tree/v1.14.17/install/kubernetes/cilium)_)
* [v1.14.17](https://github.com/cilium/cilium/releases/tag/v1.14.17) (_[source](https://github.com/cilium/cilium/tree/v1.14.17/install/kubernetes/cilium)_)
* [v1.14.16](https://github.com/cilium/cilium/releases/tag/v1.14.16) (_[source](https://github.com/cilium/cilium/tree/v1.14.16/install/kubernetes/cilium)_)
-* [v1.14.16](https://github.com/cilium/cilium/releases/tag/v1.14.16) (_[source](https://github.com/cilium/cilium/tree/v1.14.16/install/kubernetes/cilium)_)
* [v1.14.15](https://github.com/cilium/cilium/releases/tag/v1.14.15) (_[source](https://github.com/cilium/cilium/tree/v1.14.15/install/kubernetes/cilium)_)
-* [v1.14.15](https://github.com/cilium/cilium/releases/tag/v1.14.15) (_[source](https://github.com/cilium/cilium/tree/v1.14.15/install/kubernetes/cilium)_)
-* [v1.14.14](https://github.com/cilium/cilium/releases/tag/v1.14.14) (_[source](https://github.com/cilium/cilium/tree/v1.14.14/install/kubernetes/cilium)_)
* [v1.14.14](https://github.com/cilium/cilium/releases/tag/v1.14.14) (_[source](https://github.com/cilium/cilium/tree/v1.14.14/install/kubernetes/cilium)_)
* [v1.14.13](https://github.com/cilium/cilium/releases/tag/v1.14.13) (_[source](https://github.com/cilium/cilium/tree/v1.14.13/install/kubernetes/cilium)_)
-* [v1.14.13](https://github.com/cilium/cilium/releases/tag/v1.14.13) (_[source](https://github.com/cilium/cilium/tree/v1.14.13/install/kubernetes/cilium)_)
-* [v1.14.12](https://github.com/cilium/cilium/releases/tag/v1.14.12) (_[source](https://github.com/cilium/cilium/tree/v1.14.12/install/kubernetes/cilium)_)
* [v1.14.12](https://github.com/cilium/cilium/releases/tag/v1.14.12) (_[source](https://github.com/cilium/cilium/tree/v1.14.12/install/kubernetes/cilium)_)
* [v1.14.11](https://github.com/cilium/cilium/releases/tag/v1.14.11) (_[source](https://github.com/cilium/cilium/tree/v1.14.11/install/kubernetes/cilium)_)
-* [v1.14.11](https://github.com/cilium/cilium/releases/tag/v1.14.11) (_[source](https://github.com/cilium/cilium/tree/v1.14.11/install/kubernetes/cilium)_)
* [v1.14.10](https://github.com/cilium/cilium/releases/tag/v1.14.10) (_[source](https://github.com/cilium/cilium/tree/v1.14.10/install/kubernetes/cilium)_)
-* [v1.14.10](https://github.com/cilium/cilium/releases/tag/v1.14.10) (_[source](https://github.com/cilium/cilium/tree/v1.14.10/install/kubernetes/cilium)_)
-* [v1.14.9](https://github.com/cilium/cilium/releases/tag/v1.14.9) (_[source](https://github.com/cilium/cilium/tree/v1.14.9/install/kubernetes/cilium)_)
* [v1.14.9](https://github.com/cilium/cilium/releases/tag/v1.14.9) (_[source](https://github.com/cilium/cilium/tree/v1.14.9/install/kubernetes/cilium)_)
* [v1.14.8](https://github.com/cilium/cilium/releases/tag/v1.14.8) (_[source](https://github.com/cilium/cilium/tree/v1.14.8/install/kubernetes/cilium)_)
-* [v1.14.8](https://github.com/cilium/cilium/releases/tag/v1.14.8) (_[source](https://github.com/cilium/cilium/tree/v1.14.8/install/kubernetes/cilium)_)
-* [v1.14.7](https://github.com/cilium/cilium/releases/tag/v1.14.7) (_[source](https://github.com/cilium/cilium/tree/v1.14.7/install/kubernetes/cilium)_)
* [v1.14.7](https://github.com/cilium/cilium/releases/tag/v1.14.7) (_[source](https://github.com/cilium/cilium/tree/v1.14.7/install/kubernetes/cilium)_)
* [v1.14.6](https://github.com/cilium/cilium/releases/tag/v1.14.6) (_[source](https://github.com/cilium/cilium/tree/v1.14.6/install/kubernetes/cilium)_)
-* [v1.14.6](https://github.com/cilium/cilium/releases/tag/v1.14.6) (_[source](https://github.com/cilium/cilium/tree/v1.14.6/install/kubernetes/cilium)_)
-* [v1.14.5](https://github.com/cilium/cilium/releases/tag/v1.14.5) (_[source](https://github.com/cilium/cilium/tree/v1.14.5/install/kubernetes/cilium)_)
* [v1.14.5](https://github.com/cilium/cilium/releases/tag/v1.14.5) (_[source](https://github.com/cilium/cilium/tree/v1.14.5/install/kubernetes/cilium)_)
* [v1.14.4](https://github.com/cilium/cilium/releases/tag/v1.14.4) (_[source](https://github.com/cilium/cilium/tree/v1.14.4/install/kubernetes/cilium)_)
-* [v1.14.4](https://github.com/cilium/cilium/releases/tag/v1.14.4) (_[source](https://github.com/cilium/cilium/tree/v1.14.4/install/kubernetes/cilium)_)
-* [v1.14.3](https://github.com/cilium/cilium/releases/tag/v1.14.3) (_[source](https://github.com/cilium/cilium/tree/v1.14.3/install/kubernetes/cilium)_)
* [v1.14.3](https://github.com/cilium/cilium/releases/tag/v1.14.3) (_[source](https://github.com/cilium/cilium/tree/v1.14.3/install/kubernetes/cilium)_)
* [v1.14.2](https://github.com/cilium/cilium/releases/tag/v1.14.2) (_[source](https://github.com/cilium/cilium/tree/v1.14.2/install/kubernetes/cilium)_)
-* [v1.14.2](https://github.com/cilium/cilium/releases/tag/v1.14.2) (_[source](https://github.com/cilium/cilium/tree/v1.14.2/install/kubernetes/cilium)_)
* [v1.14.1](https://github.com/cilium/cilium/releases/tag/v1.14.1) (_[source](https://github.com/cilium/cilium/tree/v1.14.1/install/kubernetes/cilium)_)
-* [v1.14.1](https://github.com/cilium/cilium/releases/tag/v1.14.1) (_[source](https://github.com/cilium/cilium/tree/v1.14.1/install/kubernetes/cilium)_)
-* [v1.14.0](https://github.com/cilium/cilium/releases/tag/v1.14.0) (_[source](https://github.com/cilium/cilium/tree/v1.14.0/install/kubernetes/cilium)_)
* [v1.14.0](https://github.com/cilium/cilium/releases/tag/v1.14.0) (_[source](https://github.com/cilium/cilium/tree/v1.14.0/install/kubernetes/cilium)_)
* [v1.14.0-snapshot.4](https://github.com/cilium/cilium/releases/tag/v1.14.0-snapshot.4) (_[source](https://github.com/cilium/cilium/tree/v1.14.0-snapshot.4/install/kubernetes/cilium)_)
-* [v1.14.0-snapshot.4](https://github.com/cilium/cilium/releases/tag/v1.14.0-snapshot.4) (_[source](https://github.com/cilium/cilium/tree/v1.14.0-snapshot.4/install/kubernetes/cilium)_)
-* [v1.14.0-snapshot.3](https://github.com/cilium/cilium/releases/tag/v1.14.0-snapshot.3) (_[source](https://github.com/cilium/cilium/tree/v1.14.0-snapshot.3/install/kubernetes/cilium)_)
* [v1.14.0-snapshot.3](https://github.com/cilium/cilium/releases/tag/v1.14.0-snapshot.3) (_[source](https://github.com/cilium/cilium/tree/v1.14.0-snapshot.3/install/kubernetes/cilium)_)
* [v1.14.0-snapshot.2](https://github.com/cilium/cilium/releases/tag/v1.14.0-snapshot.2) (_[source](https://github.com/cilium/cilium/tree/v1.14.0-snapshot.2/install/kubernetes/cilium)_)
-* [v1.14.0-snapshot.2](https://github.com/cilium/cilium/releases/tag/v1.14.0-snapshot.2) (_[source](https://github.com/cilium/cilium/tree/v1.14.0-snapshot.2/install/kubernetes/cilium)_)
-* [v1.14.0-snapshot.1](https://github.com/cilium/cilium/releases/tag/v1.14.0-snapshot.1) (_[source](https://github.com/cilium/cilium/tree/v1.14.0-snapshot.1/install/kubernetes/cilium)_)
* [v1.14.0-snapshot.1](https://github.com/cilium/cilium/releases/tag/v1.14.0-snapshot.1) (_[source](https://github.com/cilium/cilium/tree/v1.14.0-snapshot.1/install/kubernetes/cilium)_)
* [v1.14.0-snapshot.0](https://github.com/cilium/cilium/releases/tag/v1.14.0-snapshot.0) (_[source](https://github.com/cilium/cilium/tree/v1.14.0-snapshot.0/install/kubernetes/cilium)_)
-* [v1.14.0-snapshot.0](https://github.com/cilium/cilium/releases/tag/v1.14.0-snapshot.0) (_[source](https://github.com/cilium/cilium/tree/v1.14.0-snapshot.0/install/kubernetes/cilium)_)
-* [v1.14.0-rc.1](https://github.com/cilium/cilium/releases/tag/v1.14.0-rc.1) (_[source](https://github.com/cilium/cilium/tree/v1.14.0-rc.1/install/kubernetes/cilium)_)
* [v1.14.0-rc.1](https://github.com/cilium/cilium/releases/tag/v1.14.0-rc.1) (_[source](https://github.com/cilium/cilium/tree/v1.14.0-rc.1/install/kubernetes/cilium)_)
* [v1.14.0-rc.0](https://github.com/cilium/cilium/releases/tag/v1.14.0-rc.0) (_[source](https://github.com/cilium/cilium/tree/v1.14.0-rc.0/install/kubernetes/cilium)_)
-* [v1.14.0-rc.0](https://github.com/cilium/cilium/releases/tag/v1.14.0-rc.0) (_[source](https://github.com/cilium/cilium/tree/v1.14.0-rc.0/install/kubernetes/cilium)_)
* [v1.13.18](https://github.com/cilium/cilium/releases/tag/v1.13.18) (_[source](https://github.com/cilium/cilium/tree/v1.13.18/install/kubernetes/cilium)_)
-* [v1.13.18](https://github.com/cilium/cilium/releases/tag/v1.13.18) (_[source](https://github.com/cilium/cilium/tree/v1.13.18/install/kubernetes/cilium)_)
-* [v1.13.17](https://github.com/cilium/cilium/releases/tag/v1.13.17) (_[source](https://github.com/cilium/cilium/tree/v1.13.17/install/kubernetes/cilium)_)
* [v1.13.17](https://github.com/cilium/cilium/releases/tag/v1.13.17) (_[source](https://github.com/cilium/cilium/tree/v1.13.17/install/kubernetes/cilium)_)
* [v1.13.16](https://github.com/cilium/cilium/releases/tag/v1.13.16) (_[source](https://github.com/cilium/cilium/tree/v1.13.16/install/kubernetes/cilium)_)
-* [v1.13.16](https://github.com/cilium/cilium/releases/tag/v1.13.16) (_[source](https://github.com/cilium/cilium/tree/v1.13.16/install/kubernetes/cilium)_)
-* [v1.13.15](https://github.com/cilium/cilium/releases/tag/v1.13.15) (_[source](https://github.com/cilium/cilium/tree/v1.13.15/install/kubernetes/cilium)_)
* [v1.13.15](https://github.com/cilium/cilium/releases/tag/v1.13.15) (_[source](https://github.com/cilium/cilium/tree/v1.13.15/install/kubernetes/cilium)_)
* [v1.13.14](https://github.com/cilium/cilium/releases/tag/v1.13.14) (_[source](https://github.com/cilium/cilium/tree/v1.13.14/install/kubernetes/cilium)_)
-* [v1.13.14](https://github.com/cilium/cilium/releases/tag/v1.13.14) (_[source](https://github.com/cilium/cilium/tree/v1.13.14/install/kubernetes/cilium)_)
-* [v1.13.13](https://github.com/cilium/cilium/releases/tag/v1.13.13) (_[source](https://github.com/cilium/cilium/tree/v1.13.13/install/kubernetes/cilium)_)
* [v1.13.13](https://github.com/cilium/cilium/releases/tag/v1.13.13) (_[source](https://github.com/cilium/cilium/tree/v1.13.13/install/kubernetes/cilium)_)
* [v1.13.12](https://github.com/cilium/cilium/releases/tag/v1.13.12) (_[source](https://github.com/cilium/cilium/tree/v1.13.12/install/kubernetes/cilium)_)
-* [v1.13.12](https://github.com/cilium/cilium/releases/tag/v1.13.12) (_[source](https://github.com/cilium/cilium/tree/v1.13.12/install/kubernetes/cilium)_)
-* [v1.13.11](https://github.com/cilium/cilium/releases/tag/v1.13.11) (_[source](https://github.com/cilium/cilium/tree/v1.13.11/install/kubernetes/cilium)_)
* [v1.13.11](https://github.com/cilium/cilium/releases/tag/v1.13.11) (_[source](https://github.com/cilium/cilium/tree/v1.13.11/install/kubernetes/cilium)_)
* [v1.13.10](https://github.com/cilium/cilium/releases/tag/v1.13.10) (_[source](https://github.com/cilium/cilium/tree/v1.13.10/install/kubernetes/cilium)_)
-* [v1.13.10](https://github.com/cilium/cilium/releases/tag/v1.13.10) (_[source](https://github.com/cilium/cilium/tree/v1.13.10/install/kubernetes/cilium)_)
* [v1.13.9](https://github.com/cilium/cilium/releases/tag/v1.13.9) (_[source](https://github.com/cilium/cilium/tree/v1.13.9/install/kubernetes/cilium)_)
-* [v1.13.9](https://github.com/cilium/cilium/releases/tag/v1.13.9) (_[source](https://github.com/cilium/cilium/tree/v1.13.9/install/kubernetes/cilium)_)
-* [v1.13.8](https://github.com/cilium/cilium/releases/tag/v1.13.8) (_[source](https://github.com/cilium/cilium/tree/v1.13.8/install/kubernetes/cilium)_)
* [v1.13.8](https://github.com/cilium/cilium/releases/tag/v1.13.8) (_[source](https://github.com/cilium/cilium/tree/v1.13.8/install/kubernetes/cilium)_)
* [v1.13.7](https://github.com/cilium/cilium/releases/tag/v1.13.7) (_[source](https://github.com/cilium/cilium/tree/v1.13.7/install/kubernetes/cilium)_)
-* [v1.13.7](https://github.com/cilium/cilium/releases/tag/v1.13.7) (_[source](https://github.com/cilium/cilium/tree/v1.13.7/install/kubernetes/cilium)_)
-* [v1.13.6](https://github.com/cilium/cilium/releases/tag/v1.13.6) (_[source](https://github.com/cilium/cilium/tree/v1.13.6/install/kubernetes/cilium)_)
* [v1.13.6](https://github.com/cilium/cilium/releases/tag/v1.13.6) (_[source](https://github.com/cilium/cilium/tree/v1.13.6/install/kubernetes/cilium)_)
* [v1.13.5](https://github.com/cilium/cilium/releases/tag/v1.13.5) (_[source](https://github.com/cilium/cilium/tree/v1.13.5/install/kubernetes/cilium)_)
-* [v1.13.5](https://github.com/cilium/cilium/releases/tag/v1.13.5) (_[source](https://github.com/cilium/cilium/tree/v1.13.5/install/kubernetes/cilium)_)
* [v1.13.4](https://github.com/cilium/cilium/releases/tag/v1.13.4) (_[source](https://github.com/cilium/cilium/tree/v1.13.4/install/kubernetes/cilium)_)
-* [v1.13.4](https://github.com/cilium/cilium/releases/tag/v1.13.4) (_[source](https://github.com/cilium/cilium/tree/v1.13.4/install/kubernetes/cilium)_)
-* [v1.13.3](https://github.com/cilium/cilium/releases/tag/v1.13.3) (_[source](https://github.com/cilium/cilium/tree/v1.13.3/install/kubernetes/cilium)_)
* [v1.13.3](https://github.com/cilium/cilium/releases/tag/v1.13.3) (_[source](https://github.com/cilium/cilium/tree/v1.13.3/install/kubernetes/cilium)_)
* [v1.13.2](https://github.com/cilium/cilium/releases/tag/v1.13.2) (_[source](https://github.com/cilium/cilium/tree/v1.13.2/install/kubernetes/cilium)_)
-* [v1.13.2](https://github.com/cilium/cilium/releases/tag/v1.13.2) (_[source](https://github.com/cilium/cilium/tree/v1.13.2/install/kubernetes/cilium)_)
-* [v1.13.1](https://github.com/cilium/cilium/releases/tag/v1.13.1) (_[source](https://github.com/cilium/cilium/tree/v1.13.1/install/kubernetes/cilium)_)
* [v1.13.1](https://github.com/cilium/cilium/releases/tag/v1.13.1) (_[source](https://github.com/cilium/cilium/tree/v1.13.1/install/kubernetes/cilium)_)
* [v1.13.0](https://github.com/cilium/cilium/releases/tag/v1.13.0) (_[source](https://github.com/cilium/cilium/tree/v1.13.0/install/kubernetes/cilium)_)
-* [v1.13.0](https://github.com/cilium/cilium/releases/tag/v1.13.0) (_[source](https://github.com/cilium/cilium/tree/v1.13.0/install/kubernetes/cilium)_)
* [v1.13.0-rc5](https://github.com/cilium/cilium/releases/tag/v1.13.0-rc5) (_[source](https://github.com/cilium/cilium/tree/v1.13.0-rc5/install/kubernetes/cilium)_)
-* [v1.13.0-rc5](https://github.com/cilium/cilium/releases/tag/v1.13.0-rc5) (_[source](https://github.com/cilium/cilium/tree/v1.13.0-rc5/install/kubernetes/cilium)_)
-* [v1.13.0-rc4](https://github.com/cilium/cilium/releases/tag/v1.13.0-rc4) (_[source](https://github.com/cilium/cilium/tree/v1.13.0-rc4/install/kubernetes/cilium)_)
* [v1.13.0-rc4](https://github.com/cilium/cilium/releases/tag/v1.13.0-rc4) (_[source](https://github.com/cilium/cilium/tree/v1.13.0-rc4/install/kubernetes/cilium)_)
* [v1.13.0-rc3](https://github.com/cilium/cilium/releases/tag/v1.13.0-rc3) (_[source](https://github.com/cilium/cilium/tree/v1.13.0-rc3/install/kubernetes/cilium)_)
-* [v1.13.0-rc3](https://github.com/cilium/cilium/releases/tag/v1.13.0-rc3) (_[source](https://github.com/cilium/cilium/tree/v1.13.0-rc3/install/kubernetes/cilium)_)
-* [v1.13.0-rc2](https://github.com/cilium/cilium/releases/tag/v1.13.0-rc2) (_[source](https://github.com/cilium/cilium/tree/v1.13.0-rc2/install/kubernetes/cilium)_)
* [v1.13.0-rc2](https://github.com/cilium/cilium/releases/tag/v1.13.0-rc2) (_[source](https://github.com/cilium/cilium/tree/v1.13.0-rc2/install/kubernetes/cilium)_)
* [v1.13.0-rc1](https://github.com/cilium/cilium/releases/tag/v1.13.0-rc1) (_[source](https://github.com/cilium/cilium/tree/v1.13.0-rc1/install/kubernetes/cilium)_)
-* [v1.13.0-rc1](https://github.com/cilium/cilium/releases/tag/v1.13.0-rc1) (_[source](https://github.com/cilium/cilium/tree/v1.13.0-rc1/install/kubernetes/cilium)_)
-* [v1.13.0-rc0](https://github.com/cilium/cilium/releases/tag/v1.13.0-rc0) (_[source](https://github.com/cilium/cilium/tree/v1.13.0-rc0/install/kubernetes/cilium)_)
* [v1.13.0-rc0](https://github.com/cilium/cilium/releases/tag/v1.13.0-rc0) (_[source](https://github.com/cilium/cilium/tree/v1.13.0-rc0/install/kubernetes/cilium)_)
* [v1.12.19](https://github.com/cilium/cilium/releases/tag/v1.12.19) (_[source](https://github.com/cilium/cilium/tree/v1.12.19/install/kubernetes/cilium)_)
-* [v1.12.19](https://github.com/cilium/cilium/releases/tag/v1.12.19) (_[source](https://github.com/cilium/cilium/tree/v1.12.19/install/kubernetes/cilium)_)
-* [v1.12.18](https://github.com/cilium/cilium/releases/tag/v1.12.18) (_[source](https://github.com/cilium/cilium/tree/v1.12.18/install/kubernetes/cilium)_)
* [v1.12.18](https://github.com/cilium/cilium/releases/tag/v1.12.18) (_[source](https://github.com/cilium/cilium/tree/v1.12.18/install/kubernetes/cilium)_)
* [v1.12.17](https://github.com/cilium/cilium/releases/tag/v1.12.17) (_[source](https://github.com/cilium/cilium/tree/v1.12.17/install/kubernetes/cilium)_)
-* [v1.12.17](https://github.com/cilium/cilium/releases/tag/v1.12.17) (_[source](https://github.com/cilium/cilium/tree/v1.12.17/install/kubernetes/cilium)_)
* [v1.12.16](https://github.com/cilium/cilium/releases/tag/v1.12.16) (_[source](https://github.com/cilium/cilium/tree/v1.12.16/install/kubernetes/cilium)_)
-* [v1.12.16](https://github.com/cilium/cilium/releases/tag/v1.12.16) (_[source](https://github.com/cilium/cilium/tree/v1.12.16/install/kubernetes/cilium)_)
-* [v1.12.15](https://github.com/cilium/cilium/releases/tag/v1.12.15) (_[source](https://github.com/cilium/cilium/tree/v1.12.15/install/kubernetes/cilium)_)
* [v1.12.15](https://github.com/cilium/cilium/releases/tag/v1.12.15) (_[source](https://github.com/cilium/cilium/tree/v1.12.15/install/kubernetes/cilium)_)
* [v1.12.14](https://github.com/cilium/cilium/releases/tag/v1.12.14) (_[source](https://github.com/cilium/cilium/tree/v1.12.14/install/kubernetes/cilium)_)
-* [v1.12.14](https://github.com/cilium/cilium/releases/tag/v1.12.14) (_[source](https://github.com/cilium/cilium/tree/v1.12.14/install/kubernetes/cilium)_)
-* [v1.12.13](https://github.com/cilium/cilium/releases/tag/v1.12.13) (_[source](https://github.com/cilium/cilium/tree/v1.12.13/install/kubernetes/cilium)_)
* [v1.12.13](https://github.com/cilium/cilium/releases/tag/v1.12.13) (_[source](https://github.com/cilium/cilium/tree/v1.12.13/install/kubernetes/cilium)_)
* [v1.12.12](https://github.com/cilium/cilium/releases/tag/v1.12.12) (_[source](https://github.com/cilium/cilium/tree/v1.12.12/install/kubernetes/cilium)_)
-* [v1.12.12](https://github.com/cilium/cilium/releases/tag/v1.12.12) (_[source](https://github.com/cilium/cilium/tree/v1.12.12/install/kubernetes/cilium)_)
-* [v1.12.11](https://github.com/cilium/cilium/releases/tag/v1.12.11) (_[source](https://github.com/cilium/cilium/tree/v1.12.11/install/kubernetes/cilium)_)
* [v1.12.11](https://github.com/cilium/cilium/releases/tag/v1.12.11) (_[source](https://github.com/cilium/cilium/tree/v1.12.11/install/kubernetes/cilium)_)
* [v1.12.10](https://github.com/cilium/cilium/releases/tag/v1.12.10) (_[source](https://github.com/cilium/cilium/tree/v1.12.10/install/kubernetes/cilium)_)
-* [v1.12.10](https://github.com/cilium/cilium/releases/tag/v1.12.10) (_[source](https://github.com/cilium/cilium/tree/v1.12.10/install/kubernetes/cilium)_)
-* [v1.12.9](https://github.com/cilium/cilium/releases/tag/v1.12.9) (_[source](https://github.com/cilium/cilium/tree/v1.12.9/install/kubernetes/cilium)_)
* [v1.12.9](https://github.com/cilium/cilium/releases/tag/v1.12.9) (_[source](https://github.com/cilium/cilium/tree/v1.12.9/install/kubernetes/cilium)_)
* [v1.12.8](https://github.com/cilium/cilium/releases/tag/v1.12.8) (_[source](https://github.com/cilium/cilium/tree/v1.12.8/install/kubernetes/cilium)_)
-* [v1.12.8](https://github.com/cilium/cilium/releases/tag/v1.12.8) (_[source](https://github.com/cilium/cilium/tree/v1.12.8/install/kubernetes/cilium)_)
* [v1.12.7](https://github.com/cilium/cilium/releases/tag/v1.12.7) (_[source](https://github.com/cilium/cilium/tree/v1.12.7/install/kubernetes/cilium)_)
-* [v1.12.7](https://github.com/cilium/cilium/releases/tag/v1.12.7) (_[source](https://github.com/cilium/cilium/tree/v1.12.7/install/kubernetes/cilium)_)
-* [v1.12.6](https://github.com/cilium/cilium/releases/tag/v1.12.6) (_[source](https://github.com/cilium/cilium/tree/v1.12.6/install/kubernetes/cilium)_)
* [v1.12.6](https://github.com/cilium/cilium/releases/tag/v1.12.6) (_[source](https://github.com/cilium/cilium/tree/v1.12.6/install/kubernetes/cilium)_)
* [v1.12.5](https://github.com/cilium/cilium/releases/tag/v1.12.5) (_[source](https://github.com/cilium/cilium/tree/v1.12.5/install/kubernetes/cilium)_)
-* [v1.12.5](https://github.com/cilium/cilium/releases/tag/v1.12.5) (_[source](https://github.com/cilium/cilium/tree/v1.12.5/install/kubernetes/cilium)_)
-* [v1.12.4](https://github.com/cilium/cilium/releases/tag/v1.12.4) (_[source](https://github.com/cilium/cilium/tree/v1.12.4/install/kubernetes/cilium)_)
* [v1.12.4](https://github.com/cilium/cilium/releases/tag/v1.12.4) (_[source](https://github.com/cilium/cilium/tree/v1.12.4/install/kubernetes/cilium)_)
* [v1.12.3](https://github.com/cilium/cilium/releases/tag/v1.12.3) (_[source](https://github.com/cilium/cilium/tree/v1.12.3/install/kubernetes/cilium)_)
-* [v1.12.3](https://github.com/cilium/cilium/releases/tag/v1.12.3) (_[source](https://github.com/cilium/cilium/tree/v1.12.3/install/kubernetes/cilium)_)
-* [v1.12.2](https://github.com/cilium/cilium/releases/tag/v1.12.2) (_[source](https://github.com/cilium/cilium/tree/v1.12.2/install/kubernetes/cilium)_)
* [v1.12.2](https://github.com/cilium/cilium/releases/tag/v1.12.2) (_[source](https://github.com/cilium/cilium/tree/v1.12.2/install/kubernetes/cilium)_)
* [v1.12.1](https://github.com/cilium/cilium/releases/tag/v1.12.1) (_[source](https://github.com/cilium/cilium/tree/v1.12.1/install/kubernetes/cilium)_)
-* [v1.12.1](https://github.com/cilium/cilium/releases/tag/v1.12.1) (_[source](https://github.com/cilium/cilium/tree/v1.12.1/install/kubernetes/cilium)_)
-* [v1.12.0](https://github.com/cilium/cilium/releases/tag/v1.12.0) (_[source](https://github.com/cilium/cilium/tree/v1.12.0/install/kubernetes/cilium)_)
* [v1.12.0](https://github.com/cilium/cilium/releases/tag/v1.12.0) (_[source](https://github.com/cilium/cilium/tree/v1.12.0/install/kubernetes/cilium)_)
* [v1.12.0-rc3](https://github.com/cilium/cilium/releases/tag/v1.12.0-rc3) (_[source](https://github.com/cilium/cilium/tree/v1.12.0-rc3/install/kubernetes/cilium)_)
-* [v1.12.0-rc3](https://github.com/cilium/cilium/releases/tag/v1.12.0-rc3) (_[source](https://github.com/cilium/cilium/tree/v1.12.0-rc3/install/kubernetes/cilium)_)
* [v1.12.0-rc2](https://github.com/cilium/cilium/releases/tag/v1.12.0-rc2) (_[source](https://github.com/cilium/cilium/tree/v1.12.0-rc2/install/kubernetes/cilium)_)
-* [v1.12.0-rc2](https://github.com/cilium/cilium/releases/tag/v1.12.0-rc2) (_[source](https://github.com/cilium/cilium/tree/v1.12.0-rc2/install/kubernetes/cilium)_)
-* [v1.12.0-rc1](https://github.com/cilium/cilium/releases/tag/v1.12.0-rc1) (_[source](https://github.com/cilium/cilium/tree/v1.12.0-rc1/install/kubernetes/cilium)_)
* [v1.12.0-rc1](https://github.com/cilium/cilium/releases/tag/v1.12.0-rc1) (_[source](https://github.com/cilium/cilium/tree/v1.12.0-rc1/install/kubernetes/cilium)_)
* [v1.12.0-rc0](https://github.com/cilium/cilium/releases/tag/v1.12.0-rc0) (_[source](https://github.com/cilium/cilium/tree/v1.12.0-rc0/install/kubernetes/cilium)_)
-* [v1.12.0-rc0](https://github.com/cilium/cilium/releases/tag/v1.12.0-rc0) (_[source](https://github.com/cilium/cilium/tree/v1.12.0-rc0/install/kubernetes/cilium)_)
-* [v1.11.20](https://github.com/cilium/cilium/releases/tag/v1.11.20) (_[source](https://github.com/cilium/cilium/tree/v1.11.20/install/kubernetes/cilium)_)
* [v1.11.20](https://github.com/cilium/cilium/releases/tag/v1.11.20) (_[source](https://github.com/cilium/cilium/tree/v1.11.20/install/kubernetes/cilium)_)
* [v1.11.19](https://github.com/cilium/cilium/releases/tag/v1.11.19) (_[source](https://github.com/cilium/cilium/tree/v1.11.19/install/kubernetes/cilium)_)
-* [v1.11.19](https://github.com/cilium/cilium/releases/tag/v1.11.19) (_[source](https://github.com/cilium/cilium/tree/v1.11.19/install/kubernetes/cilium)_)
* [v1.11.18](https://github.com/cilium/cilium/releases/tag/v1.11.18) (_[source](https://github.com/cilium/cilium/tree/v1.11.18/install/kubernetes/cilium)_)
-* [v1.11.18](https://github.com/cilium/cilium/releases/tag/v1.11.18) (_[source](https://github.com/cilium/cilium/tree/v1.11.18/install/kubernetes/cilium)_)
-* [v1.11.17](https://github.com/cilium/cilium/releases/tag/v1.11.17) (_[source](https://github.com/cilium/cilium/tree/v1.11.17/install/kubernetes/cilium)_)
* [v1.11.17](https://github.com/cilium/cilium/releases/tag/v1.11.17) (_[source](https://github.com/cilium/cilium/tree/v1.11.17/install/kubernetes/cilium)_)
* [v1.11.16](https://github.com/cilium/cilium/releases/tag/v1.11.16) (_[source](https://github.com/cilium/cilium/tree/v1.11.16/install/kubernetes/cilium)_)
-* [v1.11.16](https://github.com/cilium/cilium/releases/tag/v1.11.16) (_[source](https://github.com/cilium/cilium/tree/v1.11.16/install/kubernetes/cilium)_)
-* [v1.11.15](https://github.com/cilium/cilium/releases/tag/v1.11.15) (_[source](https://github.com/cilium/cilium/tree/v1.11.15/install/kubernetes/cilium)_)
* [v1.11.15](https://github.com/cilium/cilium/releases/tag/v1.11.15) (_[source](https://github.com/cilium/cilium/tree/v1.11.15/install/kubernetes/cilium)_)
* [v1.11.14](https://github.com/cilium/cilium/releases/tag/v1.11.14) (_[source](https://github.com/cilium/cilium/tree/v1.11.14/install/kubernetes/cilium)_)
-* [v1.11.14](https://github.com/cilium/cilium/releases/tag/v1.11.14) (_[source](https://github.com/cilium/cilium/tree/v1.11.14/install/kubernetes/cilium)_)
* [v1.11.13](https://github.com/cilium/cilium/releases/tag/v1.11.13) (_[source](https://github.com/cilium/cilium/tree/v1.11.13/install/kubernetes/cilium)_)
-* [v1.11.13](https://github.com/cilium/cilium/releases/tag/v1.11.13) (_[source](https://github.com/cilium/cilium/tree/v1.11.13/install/kubernetes/cilium)_)
-* [v1.11.12](https://github.com/cilium/cilium/releases/tag/v1.11.12) (_[source](https://github.com/cilium/cilium/tree/v1.11.12/install/kubernetes/cilium)_)
* [v1.11.12](https://github.com/cilium/cilium/releases/tag/v1.11.12) (_[source](https://github.com/cilium/cilium/tree/v1.11.12/install/kubernetes/cilium)_)
* [v1.11.11](https://github.com/cilium/cilium/releases/tag/v1.11.11) (_[source](https://github.com/cilium/cilium/tree/v1.11.11/install/kubernetes/cilium)_)
-* [v1.11.11](https://github.com/cilium/cilium/releases/tag/v1.11.11) (_[source](https://github.com/cilium/cilium/tree/v1.11.11/install/kubernetes/cilium)_)
-* [v1.11.10](https://github.com/cilium/cilium/releases/tag/v1.11.10) (_[source](https://github.com/cilium/cilium/tree/v1.11.10/install/kubernetes/cilium)_)
* [v1.11.10](https://github.com/cilium/cilium/releases/tag/v1.11.10) (_[source](https://github.com/cilium/cilium/tree/v1.11.10/install/kubernetes/cilium)_)
* [v1.11.9](https://github.com/cilium/cilium/releases/tag/v1.11.9) (_[source](https://github.com/cilium/cilium/tree/v1.11.9/install/kubernetes/cilium)_)
-* [v1.11.9](https://github.com/cilium/cilium/releases/tag/v1.11.9) (_[source](https://github.com/cilium/cilium/tree/v1.11.9/install/kubernetes/cilium)_)
-* [v1.11.8](https://github.com/cilium/cilium/releases/tag/v1.11.8) (_[source](https://github.com/cilium/cilium/tree/v1.11.8/install/kubernetes/cilium)_)
* [v1.11.8](https://github.com/cilium/cilium/releases/tag/v1.11.8) (_[source](https://github.com/cilium/cilium/tree/v1.11.8/install/kubernetes/cilium)_)
* [v1.11.7](https://github.com/cilium/cilium/releases/tag/v1.11.7) (_[source](https://github.com/cilium/cilium/tree/v1.11.7/install/kubernetes/cilium)_)
-* [v1.11.7](https://github.com/cilium/cilium/releases/tag/v1.11.7) (_[source](https://github.com/cilium/cilium/tree/v1.11.7/install/kubernetes/cilium)_)
-* [v1.11.6](https://github.com/cilium/cilium/releases/tag/v1.11.6) (_[source](https://github.com/cilium/cilium/tree/v1.11.6/install/kubernetes/cilium)_)
* [v1.11.6](https://github.com/cilium/cilium/releases/tag/v1.11.6) (_[source](https://github.com/cilium/cilium/tree/v1.11.6/install/kubernetes/cilium)_)
* [v1.11.5](https://github.com/cilium/cilium/releases/tag/v1.11.5) (_[source](https://github.com/cilium/cilium/tree/v1.11.5/install/kubernetes/cilium)_)
-* [v1.11.5](https://github.com/cilium/cilium/releases/tag/v1.11.5) (_[source](https://github.com/cilium/cilium/tree/v1.11.5/install/kubernetes/cilium)_)
* [v1.11.4](https://github.com/cilium/cilium/releases/tag/v1.11.4) (_[source](https://github.com/cilium/cilium/tree/v1.11.4/install/kubernetes/cilium)_)
-* [v1.11.4](https://github.com/cilium/cilium/releases/tag/v1.11.4) (_[source](https://github.com/cilium/cilium/tree/v1.11.4/install/kubernetes/cilium)_)
-* [v1.11.3](https://github.com/cilium/cilium/releases/tag/v1.11.3) (_[source](https://github.com/cilium/cilium/tree/v1.11.3/install/kubernetes/cilium)_)
* [v1.11.3](https://github.com/cilium/cilium/releases/tag/v1.11.3) (_[source](https://github.com/cilium/cilium/tree/v1.11.3/install/kubernetes/cilium)_)
* [v1.11.2](https://github.com/cilium/cilium/releases/tag/v1.11.2) (_[source](https://github.com/cilium/cilium/tree/v1.11.2/install/kubernetes/cilium)_)
-* [v1.11.2](https://github.com/cilium/cilium/releases/tag/v1.11.2) (_[source](https://github.com/cilium/cilium/tree/v1.11.2/install/kubernetes/cilium)_)
-* [v1.11.1](https://github.com/cilium/cilium/releases/tag/v1.11.1) (_[source](https://github.com/cilium/cilium/tree/v1.11.1/install/kubernetes/cilium)_)
* [v1.11.1](https://github.com/cilium/cilium/releases/tag/v1.11.1) (_[source](https://github.com/cilium/cilium/tree/v1.11.1/install/kubernetes/cilium)_)
* [v1.11.0](https://github.com/cilium/cilium/releases/tag/v1.11.0) (_[source](https://github.com/cilium/cilium/tree/v1.11.0/install/kubernetes/cilium)_)
-* [v1.11.0](https://github.com/cilium/cilium/releases/tag/v1.11.0) (_[source](https://github.com/cilium/cilium/tree/v1.11.0/install/kubernetes/cilium)_)
* [v1.11.0-rc3](https://github.com/cilium/cilium/releases/tag/v1.11.0-rc3) (_[source](https://github.com/cilium/cilium/tree/v1.11.0-rc3/install/kubernetes/cilium)_)
-* [v1.11.0-rc3](https://github.com/cilium/cilium/releases/tag/v1.11.0-rc3) (_[source](https://github.com/cilium/cilium/tree/v1.11.0-rc3/install/kubernetes/cilium)_)
-* [v1.11.0-rc2](https://github.com/cilium/cilium/releases/tag/v1.11.0-rc2) (_[source](https://github.com/cilium/cilium/tree/v1.11.0-rc2/install/kubernetes/cilium)_)
* [v1.11.0-rc2](https://github.com/cilium/cilium/releases/tag/v1.11.0-rc2) (_[source](https://github.com/cilium/cilium/tree/v1.11.0-rc2/install/kubernetes/cilium)_)
* [v1.11.0-rc1](https://github.com/cilium/cilium/releases/tag/v1.11.0-rc1) (_[source](https://github.com/cilium/cilium/tree/v1.11.0-rc1/install/kubernetes/cilium)_)
-* [v1.11.0-rc1](https://github.com/cilium/cilium/releases/tag/v1.11.0-rc1) (_[source](https://github.com/cilium/cilium/tree/v1.11.0-rc1/install/kubernetes/cilium)_)
-* [v1.11.0-rc0](https://github.com/cilium/cilium/releases/tag/v1.11.0-rc0) (_[source](https://github.com/cilium/cilium/tree/v1.11.0-rc0/install/kubernetes/cilium)_)
* [v1.11.0-rc0](https://github.com/cilium/cilium/releases/tag/v1.11.0-rc0) (_[source](https://github.com/cilium/cilium/tree/v1.11.0-rc0/install/kubernetes/cilium)_)
* [v1.10.20](https://github.com/cilium/cilium/releases/tag/v1.10.20) (_[source](https://github.com/cilium/cilium/tree/v1.10.20/install/kubernetes/cilium)_)
-* [v1.10.20](https://github.com/cilium/cilium/releases/tag/v1.10.20) (_[source](https://github.com/cilium/cilium/tree/v1.10.20/install/kubernetes/cilium)_)
* [v1.10.19](https://github.com/cilium/cilium/releases/tag/v1.10.19) (_[source](https://github.com/cilium/cilium/tree/v1.10.19/install/kubernetes/cilium)_)
-* [v1.10.19](https://github.com/cilium/cilium/releases/tag/v1.10.19) (_[source](https://github.com/cilium/cilium/tree/v1.10.19/install/kubernetes/cilium)_)
-* [v1.10.18](https://github.com/cilium/cilium/releases/tag/v1.10.18) (_[source](https://github.com/cilium/cilium/tree/v1.10.18/install/kubernetes/cilium)_)
* [v1.10.18](https://github.com/cilium/cilium/releases/tag/v1.10.18) (_[source](https://github.com/cilium/cilium/tree/v1.10.18/install/kubernetes/cilium)_)
* [v1.10.17](https://github.com/cilium/cilium/releases/tag/v1.10.17) (_[source](https://github.com/cilium/cilium/tree/v1.10.17/install/kubernetes/cilium)_)
-* [v1.10.17](https://github.com/cilium/cilium/releases/tag/v1.10.17) (_[source](https://github.com/cilium/cilium/tree/v1.10.17/install/kubernetes/cilium)_)
-* [v1.10.16](https://github.com/cilium/cilium/releases/tag/v1.10.16) (_[source](https://github.com/cilium/cilium/tree/v1.10.16/install/kubernetes/cilium)_)
* [v1.10.16](https://github.com/cilium/cilium/releases/tag/v1.10.16) (_[source](https://github.com/cilium/cilium/tree/v1.10.16/install/kubernetes/cilium)_)
* [v1.10.15](https://github.com/cilium/cilium/releases/tag/v1.10.15) (_[source](https://github.com/cilium/cilium/tree/v1.10.15/install/kubernetes/cilium)_)
-* [v1.10.15](https://github.com/cilium/cilium/releases/tag/v1.10.15) (_[source](https://github.com/cilium/cilium/tree/v1.10.15/install/kubernetes/cilium)_)
-* [v1.10.14](https://github.com/cilium/cilium/releases/tag/v1.10.14) (_[source](https://github.com/cilium/cilium/tree/v1.10.14/install/kubernetes/cilium)_)
* [v1.10.14](https://github.com/cilium/cilium/releases/tag/v1.10.14) (_[source](https://github.com/cilium/cilium/tree/v1.10.14/install/kubernetes/cilium)_)
* [v1.10.13](https://github.com/cilium/cilium/releases/tag/v1.10.13) (_[source](https://github.com/cilium/cilium/tree/v1.10.13/install/kubernetes/cilium)_)
-* [v1.10.13](https://github.com/cilium/cilium/releases/tag/v1.10.13) (_[source](https://github.com/cilium/cilium/tree/v1.10.13/install/kubernetes/cilium)_)
-* [v1.10.12](https://github.com/cilium/cilium/releases/tag/v1.10.12) (_[source](https://github.com/cilium/cilium/tree/v1.10.12/install/kubernetes/cilium)_)
* [v1.10.12](https://github.com/cilium/cilium/releases/tag/v1.10.12) (_[source](https://github.com/cilium/cilium/tree/v1.10.12/install/kubernetes/cilium)_)
* [v1.10.11](https://github.com/cilium/cilium/releases/tag/v1.10.11) (_[source](https://github.com/cilium/cilium/tree/v1.10.11/install/kubernetes/cilium)_)
-* [v1.10.11](https://github.com/cilium/cilium/releases/tag/v1.10.11) (_[source](https://github.com/cilium/cilium/tree/v1.10.11/install/kubernetes/cilium)_)
* [v1.10.10](https://github.com/cilium/cilium/releases/tag/v1.10.10) (_[source](https://github.com/cilium/cilium/tree/v1.10.10/install/kubernetes/cilium)_)
-* [v1.10.10](https://github.com/cilium/cilium/releases/tag/v1.10.10) (_[source](https://github.com/cilium/cilium/tree/v1.10.10/install/kubernetes/cilium)_)
-* [v1.10.9](https://github.com/cilium/cilium/releases/tag/v1.10.9) (_[source](https://github.com/cilium/cilium/tree/v1.10.9/install/kubernetes/cilium)_)
* [v1.10.9](https://github.com/cilium/cilium/releases/tag/v1.10.9) (_[source](https://github.com/cilium/cilium/tree/v1.10.9/install/kubernetes/cilium)_)
* [v1.10.8](https://github.com/cilium/cilium/releases/tag/v1.10.8) (_[source](https://github.com/cilium/cilium/tree/v1.10.8/install/kubernetes/cilium)_)
-* [v1.10.8](https://github.com/cilium/cilium/releases/tag/v1.10.8) (_[source](https://github.com/cilium/cilium/tree/v1.10.8/install/kubernetes/cilium)_)
-* [v1.10.7](https://github.com/cilium/cilium/releases/tag/v1.10.7) (_[source](https://github.com/cilium/cilium/tree/v1.10.7/install/kubernetes/cilium)_)
* [v1.10.7](https://github.com/cilium/cilium/releases/tag/v1.10.7) (_[source](https://github.com/cilium/cilium/tree/v1.10.7/install/kubernetes/cilium)_)
* [v1.10.6](https://github.com/cilium/cilium/releases/tag/v1.10.6) (_[source](https://github.com/cilium/cilium/tree/v1.10.6/install/kubernetes/cilium)_)
-* [v1.10.6](https://github.com/cilium/cilium/releases/tag/v1.10.6) (_[source](https://github.com/cilium/cilium/tree/v1.10.6/install/kubernetes/cilium)_)
* [v1.10.5](https://github.com/cilium/cilium/releases/tag/v1.10.5) (_[source](https://github.com/cilium/cilium/tree/v1.10.5/install/kubernetes/cilium)_)
-* [v1.10.5](https://github.com/cilium/cilium/releases/tag/v1.10.5) (_[source](https://github.com/cilium/cilium/tree/v1.10.5/install/kubernetes/cilium)_)
-* [v1.10.4](https://github.com/cilium/cilium/releases/tag/v1.10.4) (_[source](https://github.com/cilium/cilium/tree/v1.10.4/install/kubernetes/cilium)_)
* [v1.10.4](https://github.com/cilium/cilium/releases/tag/v1.10.4) (_[source](https://github.com/cilium/cilium/tree/v1.10.4/install/kubernetes/cilium)_)
* [v1.10.3](https://github.com/cilium/cilium/releases/tag/v1.10.3) (_[source](https://github.com/cilium/cilium/tree/v1.10.3/install/kubernetes/cilium)_)
-* [v1.10.3](https://github.com/cilium/cilium/releases/tag/v1.10.3) (_[source](https://github.com/cilium/cilium/tree/v1.10.3/install/kubernetes/cilium)_)
-* [v1.10.2](https://github.com/cilium/cilium/releases/tag/v1.10.2) (_[source](https://github.com/cilium/cilium/tree/v1.10.2/install/kubernetes/cilium)_)
* [v1.10.2](https://github.com/cilium/cilium/releases/tag/v1.10.2) (_[source](https://github.com/cilium/cilium/tree/v1.10.2/install/kubernetes/cilium)_)
* [v1.10.1](https://github.com/cilium/cilium/releases/tag/v1.10.1) (_[source](https://github.com/cilium/cilium/tree/v1.10.1/install/kubernetes/cilium)_)
-* [v1.10.1](https://github.com/cilium/cilium/releases/tag/v1.10.1) (_[source](https://github.com/cilium/cilium/tree/v1.10.1/install/kubernetes/cilium)_)
* [v1.10.0](https://github.com/cilium/cilium/releases/tag/v1.10.0) (_[source](https://github.com/cilium/cilium/tree/v1.10.0/install/kubernetes/cilium)_)
-* [v1.10.0](https://github.com/cilium/cilium/releases/tag/v1.10.0) (_[source](https://github.com/cilium/cilium/tree/v1.10.0/install/kubernetes/cilium)_)
-* [v1.10.0-rc2](https://github.com/cilium/cilium/releases/tag/v1.10.0-rc2) (_[source](https://github.com/cilium/cilium/tree/v1.10.0-rc2/install/kubernetes/cilium)_)
* [v1.10.0-rc2](https://github.com/cilium/cilium/releases/tag/v1.10.0-rc2) (_[source](https://github.com/cilium/cilium/tree/v1.10.0-rc2/install/kubernetes/cilium)_)
* [v1.10.0-rc1](https://github.com/cilium/cilium/releases/tag/v1.10.0-rc1) (_[source](https://github.com/cilium/cilium/tree/v1.10.0-rc1/install/kubernetes/cilium)_)
-* [v1.10.0-rc1](https://github.com/cilium/cilium/releases/tag/v1.10.0-rc1) (_[source](https://github.com/cilium/cilium/tree/v1.10.0-rc1/install/kubernetes/cilium)_)
-* [v1.10.0-rc0](https://github.com/cilium/cilium/releases/tag/v1.10.0-rc0) (_[source](https://github.com/cilium/cilium/tree/v1.10.0-rc0/install/kubernetes/cilium)_)
* [v1.10.0-rc0](https://github.com/cilium/cilium/releases/tag/v1.10.0-rc0) (_[source](https://github.com/cilium/cilium/tree/v1.10.0-rc0/install/kubernetes/cilium)_)
* [v1.9.18](https://github.com/cilium/cilium/releases/tag/v1.9.18) (_[source](https://github.com/cilium/cilium/tree/v1.9.18/install/kubernetes/cilium)_)
-* [v1.9.18](https://github.com/cilium/cilium/releases/tag/v1.9.18) (_[source](https://github.com/cilium/cilium/tree/v1.9.18/install/kubernetes/cilium)_)
-* [v1.9.17](https://github.com/cilium/cilium/releases/tag/v1.9.17) (_[source](https://github.com/cilium/cilium/tree/v1.9.17/install/kubernetes/cilium)_)
* [v1.9.17](https://github.com/cilium/cilium/releases/tag/v1.9.17) (_[source](https://github.com/cilium/cilium/tree/v1.9.17/install/kubernetes/cilium)_)
* [v1.9.16](https://github.com/cilium/cilium/releases/tag/v1.9.16) (_[source](https://github.com/cilium/cilium/tree/v1.9.16/install/kubernetes/cilium)_)
-* [v1.9.16](https://github.com/cilium/cilium/releases/tag/v1.9.16) (_[source](https://github.com/cilium/cilium/tree/v1.9.16/install/kubernetes/cilium)_)
-* [v1.9.15](https://github.com/cilium/cilium/releases/tag/v1.9.15) (_[source](https://github.com/cilium/cilium/tree/v1.9.15/install/kubernetes/cilium)_)
* [v1.9.15](https://github.com/cilium/cilium/releases/tag/v1.9.15) (_[source](https://github.com/cilium/cilium/tree/v1.9.15/install/kubernetes/cilium)_)
* [v1.9.14](https://github.com/cilium/cilium/releases/tag/v1.9.14) (_[source](https://github.com/cilium/cilium/tree/v1.9.14/install/kubernetes/cilium)_)
-* [v1.9.14](https://github.com/cilium/cilium/releases/tag/v1.9.14) (_[source](https://github.com/cilium/cilium/tree/v1.9.14/install/kubernetes/cilium)_)
* [v1.9.13](https://github.com/cilium/cilium/releases/tag/v1.9.13) (_[source](https://github.com/cilium/cilium/tree/v1.9.13/install/kubernetes/cilium)_)
-* [v1.9.13](https://github.com/cilium/cilium/releases/tag/v1.9.13) (_[source](https://github.com/cilium/cilium/tree/v1.9.13/install/kubernetes/cilium)_)
-* [v1.9.12](https://github.com/cilium/cilium/releases/tag/v1.9.12) (_[source](https://github.com/cilium/cilium/tree/v1.9.12/install/kubernetes/cilium)_)
* [v1.9.12](https://github.com/cilium/cilium/releases/tag/v1.9.12) (_[source](https://github.com/cilium/cilium/tree/v1.9.12/install/kubernetes/cilium)_)
* [v1.9.11](https://github.com/cilium/cilium/releases/tag/v1.9.11) (_[source](https://github.com/cilium/cilium/tree/v1.9.11/install/kubernetes/cilium)_)
-* [v1.9.11](https://github.com/cilium/cilium/releases/tag/v1.9.11) (_[source](https://github.com/cilium/cilium/tree/v1.9.11/install/kubernetes/cilium)_)
-* [v1.9.10](https://github.com/cilium/cilium/releases/tag/v1.9.10) (_[source](https://github.com/cilium/cilium/tree/v1.9.10/install/kubernetes/cilium)_)
* [v1.9.10](https://github.com/cilium/cilium/releases/tag/v1.9.10) (_[source](https://github.com/cilium/cilium/tree/v1.9.10/install/kubernetes/cilium)_)
* [v1.9.9](https://github.com/cilium/cilium/releases/tag/v1.9.9) (_[source](https://github.com/cilium/cilium/tree/v1.9.9/install/kubernetes/cilium)_)
-* [v1.9.9](https://github.com/cilium/cilium/releases/tag/v1.9.9) (_[source](https://github.com/cilium/cilium/tree/v1.9.9/install/kubernetes/cilium)_)
-* [v1.9.8](https://github.com/cilium/cilium/releases/tag/v1.9.8) (_[source](https://github.com/cilium/cilium/tree/v1.9.8/install/kubernetes/cilium)_)
* [v1.9.8](https://github.com/cilium/cilium/releases/tag/v1.9.8) (_[source](https://github.com/cilium/cilium/tree/v1.9.8/install/kubernetes/cilium)_)
* [v1.9.7](https://github.com/cilium/cilium/releases/tag/v1.9.7) (_[source](https://github.com/cilium/cilium/tree/v1.9.7/install/kubernetes/cilium)_)
-* [v1.9.7](https://github.com/cilium/cilium/releases/tag/v1.9.7) (_[source](https://github.com/cilium/cilium/tree/v1.9.7/install/kubernetes/cilium)_)
-* [v1.9.6](https://github.com/cilium/cilium/releases/tag/v1.9.6) (_[source](https://github.com/cilium/cilium/tree/v1.9.6/install/kubernetes/cilium)_)
* [v1.9.6](https://github.com/cilium/cilium/releases/tag/v1.9.6) (_[source](https://github.com/cilium/cilium/tree/v1.9.6/install/kubernetes/cilium)_)
* [v1.9.5](https://github.com/cilium/cilium/releases/tag/v1.9.5) (_[source](https://github.com/cilium/cilium/tree/v1.9.5/install/kubernetes/cilium)_)
-* [v1.9.5](https://github.com/cilium/cilium/releases/tag/v1.9.5) (_[source](https://github.com/cilium/cilium/tree/v1.9.5/install/kubernetes/cilium)_)
* [v1.9.4](https://github.com/cilium/cilium/releases/tag/v1.9.4) (_[source](https://github.com/cilium/cilium/tree/v1.9.4/install/kubernetes/cilium)_)
-* [v1.9.4](https://github.com/cilium/cilium/releases/tag/v1.9.4) (_[source](https://github.com/cilium/cilium/tree/v1.9.4/install/kubernetes/cilium)_)
-* [v1.9.3](https://github.com/cilium/cilium/releases/tag/v1.9.3) (_[source](https://github.com/cilium/cilium/tree/v1.9.3/install/kubernetes/cilium)_)
* [v1.9.3](https://github.com/cilium/cilium/releases/tag/v1.9.3) (_[source](https://github.com/cilium/cilium/tree/v1.9.3/install/kubernetes/cilium)_)
* [v1.9.2](https://github.com/cilium/cilium/releases/tag/v1.9.2) (_[source](https://github.com/cilium/cilium/tree/v1.9.2/install/kubernetes/cilium)_)
-* [v1.9.2](https://github.com/cilium/cilium/releases/tag/v1.9.2) (_[source](https://github.com/cilium/cilium/tree/v1.9.2/install/kubernetes/cilium)_)
-* [v1.9.1](https://github.com/cilium/cilium/releases/tag/v1.9.1) (_[source](https://github.com/cilium/cilium/tree/v1.9.1/install/kubernetes/cilium)_)
* [v1.9.1](https://github.com/cilium/cilium/releases/tag/v1.9.1) (_[source](https://github.com/cilium/cilium/tree/v1.9.1/install/kubernetes/cilium)_)
* [v1.9.0](https://github.com/cilium/cilium/releases/tag/v1.9.0) (_[source](https://github.com/cilium/cilium/tree/v1.9.0/install/kubernetes/cilium)_)
-* [v1.9.0](https://github.com/cilium/cilium/releases/tag/v1.9.0) (_[source](https://github.com/cilium/cilium/tree/v1.9.0/install/kubernetes/cilium)_)
-* [v1.9.0-rc3](https://github.com/cilium/cilium/releases/tag/v1.9.0-rc3) (_[source](https://github.com/cilium/cilium/tree/v1.9.0-rc3/install/kubernetes/cilium)_)
* [v1.9.0-rc3](https://github.com/cilium/cilium/releases/tag/v1.9.0-rc3) (_[source](https://github.com/cilium/cilium/tree/v1.9.0-rc3/install/kubernetes/cilium)_)
* [v1.9.0-rc2](https://github.com/cilium/cilium/releases/tag/v1.9.0-rc2) (_[source](https://github.com/cilium/cilium/tree/v1.9.0-rc2/install/kubernetes/cilium)_)
-* [v1.9.0-rc2](https://github.com/cilium/cilium/releases/tag/v1.9.0-rc2) (_[source](https://github.com/cilium/cilium/tree/v1.9.0-rc2/install/kubernetes/cilium)_)
-* [v1.9.0-rc1](https://github.com/cilium/cilium/releases/tag/v1.9.0-rc1) (_[source](https://github.com/cilium/cilium/tree/v1.9.0-rc1/install/kubernetes/cilium)_)
* [v1.9.0-rc1](https://github.com/cilium/cilium/releases/tag/v1.9.0-rc1) (_[source](https://github.com/cilium/cilium/tree/v1.9.0-rc1/install/kubernetes/cilium)_)
* [v1.9.0-rc0](https://github.com/cilium/cilium/releases/tag/v1.9.0-rc0) (_[source](https://github.com/cilium/cilium/tree/v1.9.0-rc0/install/kubernetes/cilium)_)
-* [v1.9.0-rc0](https://github.com/cilium/cilium/releases/tag/v1.9.0-rc0) (_[source](https://github.com/cilium/cilium/tree/v1.9.0-rc0/install/kubernetes/cilium)_)
* [v1.8.13](https://github.com/cilium/cilium/releases/tag/v1.8.13) (_[source](https://github.com/cilium/cilium/tree/v1.8.13/install/kubernetes/cilium)_)
-* [v1.8.13](https://github.com/cilium/cilium/releases/tag/v1.8.13) (_[source](https://github.com/cilium/cilium/tree/v1.8.13/install/kubernetes/cilium)_)
-* [v1.8.12](https://github.com/cilium/cilium/releases/tag/v1.8.12) (_[source](https://github.com/cilium/cilium/tree/v1.8.12/install/kubernetes/cilium)_)
* [v1.8.12](https://github.com/cilium/cilium/releases/tag/v1.8.12) (_[source](https://github.com/cilium/cilium/tree/v1.8.12/install/kubernetes/cilium)_)
* [v1.8.11](https://github.com/cilium/cilium/releases/tag/v1.8.11) (_[source](https://github.com/cilium/cilium/tree/v1.8.11/install/kubernetes/cilium)_)
-* [v1.8.11](https://github.com/cilium/cilium/releases/tag/v1.8.11) (_[source](https://github.com/cilium/cilium/tree/v1.8.11/install/kubernetes/cilium)_)
-* [v1.8.10](https://github.com/cilium/cilium/releases/tag/v1.8.10) (_[source](https://github.com/cilium/cilium/tree/v1.8.10/install/kubernetes/cilium)_)
* [v1.8.10](https://github.com/cilium/cilium/releases/tag/v1.8.10) (_[source](https://github.com/cilium/cilium/tree/v1.8.10/install/kubernetes/cilium)_)
* [v1.8.9](https://github.com/cilium/cilium/releases/tag/v1.8.9) (_[source](https://github.com/cilium/cilium/tree/v1.8.9/install/kubernetes/cilium)_)
-* [v1.8.9](https://github.com/cilium/cilium/releases/tag/v1.8.9) (_[source](https://github.com/cilium/cilium/tree/v1.8.9/install/kubernetes/cilium)_)
* [v1.8.8](https://github.com/cilium/cilium/releases/tag/v1.8.8) (_[source](https://github.com/cilium/cilium/tree/v1.8.8/install/kubernetes/cilium)_)
-* [v1.8.8](https://github.com/cilium/cilium/releases/tag/v1.8.8) (_[source](https://github.com/cilium/cilium/tree/v1.8.8/install/kubernetes/cilium)_)
-* [v1.8.7](https://github.com/cilium/cilium/releases/tag/v1.8.7) (_[source](https://github.com/cilium/cilium/tree/v1.8.7/install/kubernetes/cilium)_)
* [v1.8.7](https://github.com/cilium/cilium/releases/tag/v1.8.7) (_[source](https://github.com/cilium/cilium/tree/v1.8.7/install/kubernetes/cilium)_)
* [v1.8.6](https://github.com/cilium/cilium/releases/tag/v1.8.6) (_[source](https://github.com/cilium/cilium/tree/v1.8.6/install/kubernetes/cilium)_)
-* [v1.8.6](https://github.com/cilium/cilium/releases/tag/v1.8.6) (_[source](https://github.com/cilium/cilium/tree/v1.8.6/install/kubernetes/cilium)_)
-* [v1.8.5](https://github.com/cilium/cilium/releases/tag/v1.8.5) (_[source](https://github.com/cilium/cilium/tree/v1.8.5/install/kubernetes/cilium)_)
* [v1.8.5](https://github.com/cilium/cilium/releases/tag/v1.8.5) (_[source](https://github.com/cilium/cilium/tree/v1.8.5/install/kubernetes/cilium)_)
* [v1.8.4](https://github.com/cilium/cilium/releases/tag/v1.8.4) (_[source](https://github.com/cilium/cilium/tree/v1.8.4/install/kubernetes/cilium)_)
-* [v1.8.4](https://github.com/cilium/cilium/releases/tag/v1.8.4) (_[source](https://github.com/cilium/cilium/tree/v1.8.4/install/kubernetes/cilium)_)
* [v1.8.3](https://github.com/cilium/cilium/releases/tag/v1.8.3) (_[source](https://github.com/cilium/cilium/tree/v1.8.3/install/kubernetes/cilium)_)
-* [v1.8.3](https://github.com/cilium/cilium/releases/tag/v1.8.3) (_[source](https://github.com/cilium/cilium/tree/v1.8.3/install/kubernetes/cilium)_)
-* [v1.8.2](https://github.com/cilium/cilium/releases/tag/v1.8.2) (_[source](https://github.com/cilium/cilium/tree/v1.8.2/install/kubernetes/cilium)_)
* [v1.8.2](https://github.com/cilium/cilium/releases/tag/v1.8.2) (_[source](https://github.com/cilium/cilium/tree/v1.8.2/install/kubernetes/cilium)_)
* [v1.8.1](https://github.com/cilium/cilium/releases/tag/v1.8.1) (_[source](https://github.com/cilium/cilium/tree/v1.8.1/install/kubernetes/cilium)_)
-* [v1.8.1](https://github.com/cilium/cilium/releases/tag/v1.8.1) (_[source](https://github.com/cilium/cilium/tree/v1.8.1/install/kubernetes/cilium)_)
-* [v1.8.0](https://github.com/cilium/cilium/releases/tag/v1.8.0) (_[source](https://github.com/cilium/cilium/tree/v1.8.0/install/kubernetes/cilium)_)
* [v1.8.0](https://github.com/cilium/cilium/releases/tag/v1.8.0) (_[source](https://github.com/cilium/cilium/tree/v1.8.0/install/kubernetes/cilium)_)
* [v1.8.0-rc4](https://github.com/cilium/cilium/releases/tag/v1.8.0-rc4) (_[source](https://github.com/cilium/cilium/tree/v1.8.0-rc4/install/kubernetes/cilium)_)
-* [v1.8.0-rc4](https://github.com/cilium/cilium/releases/tag/v1.8.0-rc4) (_[source](https://github.com/cilium/cilium/tree/v1.8.0-rc4/install/kubernetes/cilium)_)
-* [v1.8.0-rc3](https://github.com/cilium/cilium/releases/tag/v1.8.0-rc3) (_[source](https://github.com/cilium/cilium/tree/v1.8.0-rc3/install/kubernetes/cilium)_)
* [v1.8.0-rc3](https://github.com/cilium/cilium/releases/tag/v1.8.0-rc3) (_[source](https://github.com/cilium/cilium/tree/v1.8.0-rc3/install/kubernetes/cilium)_)
* [v1.8.0-rc2](https://github.com/cilium/cilium/releases/tag/v1.8.0-rc2) (_[source](https://github.com/cilium/cilium/tree/v1.8.0-rc2/install/kubernetes/cilium)_)
-* [v1.8.0-rc2](https://github.com/cilium/cilium/releases/tag/v1.8.0-rc2) (_[source](https://github.com/cilium/cilium/tree/v1.8.0-rc2/install/kubernetes/cilium)_)
-* [v1.8.0-rc1](https://github.com/cilium/cilium/releases/tag/v1.8.0-rc1) (_[source](https://github.com/cilium/cilium/tree/v1.8.0-rc1/install/kubernetes/cilium)_)
* [v1.8.0-rc1](https://github.com/cilium/cilium/releases/tag/v1.8.0-rc1) (_[source](https://github.com/cilium/cilium/tree/v1.8.0-rc1/install/kubernetes/cilium)_)
* [v1.7.16](https://github.com/cilium/cilium/releases/tag/v1.7.16) (_[source](https://github.com/cilium/cilium/tree/v1.7.16/install/kubernetes/cilium)_)
-* [v1.7.16](https://github.com/cilium/cilium/releases/tag/v1.7.16) (_[source](https://github.com/cilium/cilium/tree/v1.7.16/install/kubernetes/cilium)_)
* [v1.7.15](https://github.com/cilium/cilium/releases/tag/v1.7.15) (_[source](https://github.com/cilium/cilium/tree/v1.7.15/install/kubernetes/cilium)_)
-* [v1.7.15](https://github.com/cilium/cilium/releases/tag/v1.7.15) (_[source](https://github.com/cilium/cilium/tree/v1.7.15/install/kubernetes/cilium)_)
-* [v1.7.14](https://github.com/cilium/cilium/releases/tag/v1.7.14) (_[source](https://github.com/cilium/cilium/tree/v1.7.14/install/kubernetes/cilium)_)
* [v1.7.14](https://github.com/cilium/cilium/releases/tag/v1.7.14) (_[source](https://github.com/cilium/cilium/tree/v1.7.14/install/kubernetes/cilium)_)
* [v1.7.13](https://github.com/cilium/cilium/releases/tag/v1.7.13) (_[source](https://github.com/cilium/cilium/tree/v1.7.13/install/kubernetes/cilium)_)
-* [v1.7.13](https://github.com/cilium/cilium/releases/tag/v1.7.13) (_[source](https://github.com/cilium/cilium/tree/v1.7.13/install/kubernetes/cilium)_)
-* [v1.7.12](https://github.com/cilium/cilium/releases/tag/v1.7.12) (_[source](https://github.com/cilium/cilium/tree/v1.7.12/install/kubernetes/cilium)_)
* [v1.7.12](https://github.com/cilium/cilium/releases/tag/v1.7.12) (_[source](https://github.com/cilium/cilium/tree/v1.7.12/install/kubernetes/cilium)_)
* [v1.7.11](https://github.com/cilium/cilium/releases/tag/v1.7.11) (_[source](https://github.com/cilium/cilium/tree/v1.7.11/install/kubernetes/cilium)_)
-* [v1.7.11](https://github.com/cilium/cilium/releases/tag/v1.7.11) (_[source](https://github.com/cilium/cilium/tree/v1.7.11/install/kubernetes/cilium)_)
-* [v1.7.10](https://github.com/cilium/cilium/releases/tag/v1.7.10) (_[source](https://github.com/cilium/cilium/tree/v1.7.10/install/kubernetes/cilium)_)
* [v1.7.10](https://github.com/cilium/cilium/releases/tag/v1.7.10) (_[source](https://github.com/cilium/cilium/tree/v1.7.10/install/kubernetes/cilium)_)
* [v1.7.9](https://github.com/cilium/cilium/releases/tag/v1.7.9) (_[source](https://github.com/cilium/cilium/tree/v1.7.9/install/kubernetes/cilium)_)
-* [v1.7.9](https://github.com/cilium/cilium/releases/tag/v1.7.9) (_[source](https://github.com/cilium/cilium/tree/v1.7.9/install/kubernetes/cilium)_)
-* [v1.7.8](https://github.com/cilium/cilium/releases/tag/v1.7.8) (_[source](https://github.com/cilium/cilium/tree/v1.7.8/install/kubernetes/cilium)_)
* [v1.7.8](https://github.com/cilium/cilium/releases/tag/v1.7.8) (_[source](https://github.com/cilium/cilium/tree/v1.7.8/install/kubernetes/cilium)_)
* [v1.7.7](https://github.com/cilium/cilium/releases/tag/v1.7.7) (_[source](https://github.com/cilium/cilium/tree/v1.7.7/install/kubernetes/cilium)_)
-* [v1.7.7](https://github.com/cilium/cilium/releases/tag/v1.7.7) (_[source](https://github.com/cilium/cilium/tree/v1.7.7/install/kubernetes/cilium)_)
* [v1.7.6](https://github.com/cilium/cilium/releases/tag/v1.7.6) (_[source](https://github.com/cilium/cilium/tree/v1.7.6/install/kubernetes/cilium)_)
-* [v1.7.6](https://github.com/cilium/cilium/releases/tag/v1.7.6) (_[source](https://github.com/cilium/cilium/tree/v1.7.6/install/kubernetes/cilium)_)
-* [v1.7.5](https://github.com/cilium/cilium/releases/tag/v1.7.5) (_[source](https://github.com/cilium/cilium/tree/v1.7.5/install/kubernetes/cilium)_)
* [v1.7.5](https://github.com/cilium/cilium/releases/tag/v1.7.5) (_[source](https://github.com/cilium/cilium/tree/v1.7.5/install/kubernetes/cilium)_)
* [v1.7.4](https://github.com/cilium/cilium/releases/tag/v1.7.4) (_[source](https://github.com/cilium/cilium/tree/v1.7.4/install/kubernetes/cilium)_)
-* [v1.7.4](https://github.com/cilium/cilium/releases/tag/v1.7.4) (_[source](https://github.com/cilium/cilium/tree/v1.7.4/install/kubernetes/cilium)_)
-* [v1.7.3](https://github.com/cilium/cilium/releases/tag/v1.7.3) (_[source](https://github.com/cilium/cilium/tree/v1.7.3/install/kubernetes/cilium)_)
* [v1.7.3](https://github.com/cilium/cilium/releases/tag/v1.7.3) (_[source](https://github.com/cilium/cilium/tree/v1.7.3/install/kubernetes/cilium)_)
* [v1.7.2](https://github.com/cilium/cilium/releases/tag/v1.7.2) (_[source](https://github.com/cilium/cilium/tree/v1.7.2/install/kubernetes/cilium)_)
-* [v1.7.2](https://github.com/cilium/cilium/releases/tag/v1.7.2) (_[source](https://github.com/cilium/cilium/tree/v1.7.2/install/kubernetes/cilium)_)
-* [v1.7.1](https://github.com/cilium/cilium/releases/tag/v1.7.1) (_[source](https://github.com/cilium/cilium/tree/v1.7.1/install/kubernetes/cilium)_)
* [v1.7.1](https://github.com/cilium/cilium/releases/tag/v1.7.1) (_[source](https://github.com/cilium/cilium/tree/v1.7.1/install/kubernetes/cilium)_)
* [v1.7.0](https://github.com/cilium/cilium/releases/tag/v1.7.0) (_[source](https://github.com/cilium/cilium/tree/v1.7.0/install/kubernetes/cilium)_)
-* [v1.7.0](https://github.com/cilium/cilium/releases/tag/v1.7.0) (_[source](https://github.com/cilium/cilium/tree/v1.7.0/install/kubernetes/cilium)_)
-* [v1.7.0-rc4](https://github.com/cilium/cilium/releases/tag/v1.7.0-rc4) (_[source](https://github.com/cilium/cilium/tree/v1.7.0-rc4/install/kubernetes/cilium)_)
* [v1.7.0-rc4](https://github.com/cilium/cilium/releases/tag/v1.7.0-rc4) (_[source](https://github.com/cilium/cilium/tree/v1.7.0-rc4/install/kubernetes/cilium)_)
* [v1.7.0-rc3](https://github.com/cilium/cilium/releases/tag/v1.7.0-rc3) (_[source](https://github.com/cilium/cilium/tree/v1.7.0-rc3/install/kubernetes/cilium)_)
-* [v1.7.0-rc3](https://github.com/cilium/cilium/releases/tag/v1.7.0-rc3) (_[source](https://github.com/cilium/cilium/tree/v1.7.0-rc3/install/kubernetes/cilium)_)
* [v1.6.12](https://github.com/cilium/cilium/releases/tag/v1.6.12) (_[source](https://github.com/cilium/cilium/tree/v1.6.12/install/kubernetes/cilium)_)
-* [v1.6.12](https://github.com/cilium/cilium/releases/tag/v1.6.12) (_[source](https://github.com/cilium/cilium/tree/v1.6.12/install/kubernetes/cilium)_)
-* [v1.6.11](https://github.com/cilium/cilium/releases/tag/v1.6.11) (_[source](https://github.com/cilium/cilium/tree/v1.6.11/install/kubernetes/cilium)_)
* [v1.6.11](https://github.com/cilium/cilium/releases/tag/v1.6.11) (_[source](https://github.com/cilium/cilium/tree/v1.6.11/install/kubernetes/cilium)_)
* [v1.6.10](https://github.com/cilium/cilium/releases/tag/v1.6.10) (_[source](https://github.com/cilium/cilium/tree/v1.6.10/install/kubernetes/cilium)_)
-* [v1.6.10](https://github.com/cilium/cilium/releases/tag/v1.6.10) (_[source](https://github.com/cilium/cilium/tree/v1.6.10/install/kubernetes/cilium)_)
-* [v1.6.9](https://github.com/cilium/cilium/releases/tag/v1.6.9) (_[source](https://github.com/cilium/cilium/tree/v1.6.9/install/kubernetes/cilium)_)
* [v1.6.9](https://github.com/cilium/cilium/releases/tag/v1.6.9) (_[source](https://github.com/cilium/cilium/tree/v1.6.9/install/kubernetes/cilium)_)
* [v1.6.8](https://github.com/cilium/cilium/releases/tag/v1.6.8) (_[source](https://github.com/cilium/cilium/tree/v1.6.8/install/kubernetes/cilium)_)
-* [v1.6.8](https://github.com/cilium/cilium/releases/tag/v1.6.8) (_[source](https://github.com/cilium/cilium/tree/v1.6.8/install/kubernetes/cilium)_)
* [v1.6.7](https://github.com/cilium/cilium/releases/tag/v1.6.7) (_[source](https://github.com/cilium/cilium/tree/v1.6.7/install/kubernetes/cilium)_)
-* [v1.6.7](https://github.com/cilium/cilium/releases/tag/v1.6.7) (_[source](https://github.com/cilium/cilium/tree/v1.6.7/install/kubernetes/cilium)_)
-* [v1.6.6](https://github.com/cilium/cilium/releases/tag/v1.6.6) (_[source](https://github.com/cilium/cilium/tree/v1.6.6/install/kubernetes/cilium)_)
* [v1.6.6](https://github.com/cilium/cilium/releases/tag/v1.6.6) (_[source](https://github.com/cilium/cilium/tree/v1.6.6/install/kubernetes/cilium)_)
* [v1.6.5](https://github.com/cilium/cilium/releases/tag/v1.6.5) (_[source](https://github.com/cilium/cilium/tree/v1.6.5/install/kubernetes/cilium)_)
-* [v1.6.5](https://github.com/cilium/cilium/releases/tag/v1.6.5) (_[source](https://github.com/cilium/cilium/tree/v1.6.5/install/kubernetes/cilium)_)
This repository holds helm templates for the following Tetragon releases:
* [v1.6.0](https://github.com/cilium/tetragon/releases/tag/v1.6.0) (_[source](https://github.com/cilium/tetragon/tree/v1.6.0/install/kubernetes/tetragon)_)
-* [v1.6.0](https://github.com/cilium/tetragon/releases/tag/v1.6.0) (_[source](https://github.com/cilium/tetragon/tree/v1.6.0/install/kubernetes/tetragon)_)
-* [v1.6.0-rc.1](https://github.com/cilium/tetragon/releases/tag/v1.6.0-rc.1) (_[source](https://github.com/cilium/tetragon/tree/v1.6.0-rc.1/install/kubernetes/tetragon)_)
* [v1.6.0-rc.1](https://github.com/cilium/tetragon/releases/tag/v1.6.0-rc.1) (_[source](https://github.com/cilium/tetragon/tree/v1.6.0-rc.1/install/kubernetes/tetragon)_)
* [v1.5.0](https://github.com/cilium/tetragon/releases/tag/v1.5.0) (_[source](https://github.com/cilium/tetragon/tree/v1.5.0/install/kubernetes/tetragon)_)
-* [v1.5.0](https://github.com/cilium/tetragon/releases/tag/v1.5.0) (_[source](https://github.com/cilium/tetragon/tree/v1.5.0/install/kubernetes/tetragon)_)
-* [v1.4.1](https://github.com/cilium/tetragon/releases/tag/v1.4.1) (_[source](https://github.com/cilium/tetragon/tree/v1.4.1/install/kubernetes/tetragon)_)
* [v1.4.1](https://github.com/cilium/tetragon/releases/tag/v1.4.1) (_[source](https://github.com/cilium/tetragon/tree/v1.4.1/install/kubernetes/tetragon)_)
* [v1.4.0](https://github.com/cilium/tetragon/releases/tag/v1.4.0) (_[source](https://github.com/cilium/tetragon/tree/v1.4.0/install/kubernetes/tetragon)_)
-* [v1.4.0](https://github.com/cilium/tetragon/releases/tag/v1.4.0) (_[source](https://github.com/cilium/tetragon/tree/v1.4.0/install/kubernetes/tetragon)_)
-* [v1.3.0](https://github.com/cilium/tetragon/releases/tag/v1.3.0) (_[source](https://github.com/cilium/tetragon/tree/v1.3.0/install/kubernetes/tetragon)_)
* [v1.3.0](https://github.com/cilium/tetragon/releases/tag/v1.3.0) (_[source](https://github.com/cilium/tetragon/tree/v1.3.0/install/kubernetes/tetragon)_)
* [v1.2.1](https://github.com/cilium/tetragon/releases/tag/v1.2.1) (_[source](https://github.com/cilium/tetragon/tree/v1.2.1/install/kubernetes/tetragon)_)
-* [v1.2.1](https://github.com/cilium/tetragon/releases/tag/v1.2.1) (_[source](https://github.com/cilium/tetragon/tree/v1.2.1/install/kubernetes/tetragon)_)
-* [v1.2.0](https://github.com/cilium/tetragon/releases/tag/v1.2.0) (_[source](https://github.com/cilium/tetragon/tree/v1.2.0/install/kubernetes/tetragon)_)
* [v1.2.0](https://github.com/cilium/tetragon/releases/tag/v1.2.0) (_[source](https://github.com/cilium/tetragon/tree/v1.2.0/install/kubernetes/tetragon)_)
* [v1.1.2](https://github.com/cilium/tetragon/releases/tag/v1.1.2) (_[source](https://github.com/cilium/tetragon/tree/v1.1.2/install/kubernetes/tetragon)_)
-* [v1.1.2](https://github.com/cilium/tetragon/releases/tag/v1.1.2) (_[source](https://github.com/cilium/tetragon/tree/v1.1.2/install/kubernetes/tetragon)_)
-* [v1.1.0](https://github.com/cilium/tetragon/releases/tag/v1.1.0) (_[source](https://github.com/cilium/tetragon/tree/v1.1.0/install/kubernetes/tetragon)_)
* [v1.1.0](https://github.com/cilium/tetragon/releases/tag/v1.1.0) (_[source](https://github.com/cilium/tetragon/tree/v1.1.0/install/kubernetes/tetragon)_)
* [v1.0.3](https://github.com/cilium/tetragon/releases/tag/v1.0.3) (_[source](https://github.com/cilium/tetragon/tree/v1.0.3/install/kubernetes)_)
-* [v1.0.3](https://github.com/cilium/tetragon/releases/tag/v1.0.3) (_[source](https://github.com/cilium/tetragon/tree/v1.0.3/install/kubernetes)_)
* [v1.0.2](https://github.com/cilium/tetragon/releases/tag/v1.0.2) (_[source](https://github.com/cilium/tetragon/tree/v1.0.2/install/kubernetes)_)
-* [v1.0.2](https://github.com/cilium/tetragon/releases/tag/v1.0.2) (_[source](https://github.com/cilium/tetragon/tree/v1.0.2/install/kubernetes)_)
-* [v1.0.1](https://github.com/cilium/tetragon/releases/tag/v1.0.1) (_[source](https://github.com/cilium/tetragon/tree/v1.0.1/install/kubernetes)_)
* [v1.0.1](https://github.com/cilium/tetragon/releases/tag/v1.0.1) (_[source](https://github.com/cilium/tetragon/tree/v1.0.1/install/kubernetes)_)
* [v1.0.0](https://github.com/cilium/tetragon/releases/tag/v1.0.0) (_[source](https://github.com/cilium/tetragon/tree/v1.0.0/install/kubernetes)_)
-* [v1.0.0](https://github.com/cilium/tetragon/releases/tag/v1.0.0) (_[source](https://github.com/cilium/tetragon/tree/v1.0.0/install/kubernetes)_)
-* [v1.0.0-rc.5](https://github.com/cilium/tetragon/releases/tag/v1.0.0-rc.5) (_[source](https://github.com/cilium/tetragon/tree/v1.0.0-rc.5/install/kubernetes)_)
* [v1.0.0-rc.5](https://github.com/cilium/tetragon/releases/tag/v1.0.0-rc.5) (_[source](https://github.com/cilium/tetragon/tree/v1.0.0-rc.5/install/kubernetes)_)
* [v1.0.0-rc.3](https://github.com/cilium/tetragon/releases/tag/v1.0.0-rc.3) (_[source](https://github.com/cilium/tetragon/tree/v1.0.0-rc.3/install/kubernetes)_)
-* [v1.0.0-rc.3](https://github.com/cilium/tetragon/releases/tag/v1.0.0-rc.3) (_[source](https://github.com/cilium/tetragon/tree/v1.0.0-rc.3/install/kubernetes)_)
-* [v1.0.0-rc.2](https://github.com/cilium/tetragon/releases/tag/v1.0.0-rc.2) (_[source](https://github.com/cilium/tetragon/tree/v1.0.0-rc.2/install/kubernetes)_)
* [v1.0.0-rc.2](https://github.com/cilium/tetragon/releases/tag/v1.0.0-rc.2) (_[source](https://github.com/cilium/tetragon/tree/v1.0.0-rc.2/install/kubernetes)_)
* [v1.0.0-rc.1](https://github.com/cilium/tetragon/releases/tag/v1.0.0-rc.1) (_[source](https://github.com/cilium/tetragon/tree/v1.0.0-rc.1/install/kubernetes)_)
-* [v1.0.0-rc.1](https://github.com/cilium/tetragon/releases/tag/v1.0.0-rc.1) (_[source](https://github.com/cilium/tetragon/tree/v1.0.0-rc.1/install/kubernetes)_)
-* [v0.11.0](https://github.com/cilium/tetragon/releases/tag/v0.11.0) (_[source](https://github.com/cilium/tetragon/tree/v0.11.0/install/kubernetes)_)
* [v0.11.0](https://github.com/cilium/tetragon/releases/tag/v0.11.0) (_[source](https://github.com/cilium/tetragon/tree/v0.11.0/install/kubernetes)_)
* [v0.10.0](https://github.com/cilium/tetragon/releases/tag/v0.10.0) (_[source](https://github.com/cilium/tetragon/tree/v0.10.0/install/kubernetes)_)
-* [v0.10.0](https://github.com/cilium/tetragon/releases/tag/v0.10.0) (_[source](https://github.com/cilium/tetragon/tree/v0.10.0/install/kubernetes)_)
* [v0.9.0](https://github.com/cilium/tetragon/releases/tag/v0.9.0) (_[source](https://github.com/cilium/tetragon/tree/v0.9.0/install/kubernetes)_)
-* [v0.9.0](https://github.com/cilium/tetragon/releases/tag/v0.9.0) (_[source](https://github.com/cilium/tetragon/tree/v0.9.0/install/kubernetes)_)
-* [v0.8.4](https://github.com/cilium/tetragon/releases/tag/v0.8.4) (_[source](https://github.com/cilium/tetragon/tree/v0.8.4/install/kubernetes)_)
* [v0.8.4](https://github.com/cilium/tetragon/releases/tag/v0.8.4) (_[source](https://github.com/cilium/tetragon/tree/v0.8.4/install/kubernetes)_)
* [v0.8.3](https://github.com/cilium/tetragon/releases/tag/v0.8.3) (_[source](https://github.com/cilium/tetragon/tree/v0.8.3/install/kubernetes)_)
-* [v0.8.3](https://github.com/cilium/tetragon/releases/tag/v0.8.3) (_[source](https://github.com/cilium/tetragon/tree/v0.8.3/install/kubernetes)_)
-* [v0.8.2](https://github.com/cilium/tetragon/releases/tag/v0.8.2) (_[source](https://github.com/cilium/tetragon/tree/v0.8.2/install/kubernetes)_)
* [v0.8.2](https://github.com/cilium/tetragon/releases/tag/v0.8.2) (_[source](https://github.com/cilium/tetragon/tree/v0.8.2/install/kubernetes)_)
* [v0.8.1](https://github.com/cilium/tetragon/releases/tag/v0.8.1) (_[source](https://github.com/cilium/tetragon/tree/v0.8.1/install/kubernetes)_)
-* [v0.8.1](https://github.com/cilium/tetragon/releases/tag/v0.8.1) (_[source](https://github.com/cilium/tetragon/tree/v0.8.1/install/kubernetes)_)
-* [v0.8.0](https://github.com/cilium/tetragon/releases/tag/v0.8.0) (_[source](https://github.com/cilium/tetragon/tree/v0.8.0/install/kubernetes)_)
* [v0.8.0](https://github.com/cilium/tetragon/releases/tag/v0.8.0) (_[source](https://github.com/cilium/tetragon/tree/v0.8.0/install/kubernetes)_)
urls:
- cilium-1.19.0-pre.0.tgz
version: 1.19.0-pre.0
+ - annotations:
+ artifacthub.io/crds: "- kind: CiliumNetworkPolicy\n version: v2\n name: ciliumnetworkpolicies.cilium.io\n
+ \ displayName: Cilium Network Policy\n description: |\n Cilium Network
+ Policies provide additional functionality beyond what\n is provided by
+ standard Kubernetes NetworkPolicy such as the ability\n to allow traffic
+ based on FQDNs, or to filter at Layer 7.\n- kind: CiliumClusterwideNetworkPolicy\n
+ \ version: v2\n name: ciliumclusterwidenetworkpolicies.cilium.io\n displayName:
+ Cilium Clusterwide Network Policy\n description: |\n Cilium Clusterwide
+ Network Policies support configuring network traffic\n policiies across
+ the entire cluster, including applying node firewalls.\n- kind: CiliumLocalRedirectPolicy\n
+ \ version: v2\n name: ciliumlocalredirectpolicies.cilium.io\n displayName:
+ Cilium Local Redirect Policy\n description: |\n Cilium Local Redirect
+ Policy allows local redirects to be configured\n within a node to support
+ use cases like Node-Local DNS.\n- kind: CiliumNode\n version: v2\n name:
+ ciliumnodes.cilium.io\n displayName: Cilium Node\n description: |\n Cilium
+ Node represents a node managed by Cilium. It contains a\n specification
+ to control various node specific configuration aspects\n and a status section
+ to represent the status of the node.\n- kind: CiliumIdentity\n version: v2\n
+ \ name: ciliumidentities.cilium.io\n displayName: Cilium Identity\n description:
+ |\n Cilium Identity allows introspection into security identities that\n
+ \ Cilium allocates which identify sets of labels that are assigned to\n
+ \ individual endpoints in the cluster.\n- kind: CiliumEndpoint\n version:
+ v2\n name: ciliumendpoints.cilium.io\n displayName: Cilium Endpoint\n description:
+ |\n Cilium Endpoint represents the status of individual pods or nodes in\n
+ \ the cluster which are managed by Cilium, including enforcement status,\n
+ \ IP addressing and whether the networking is successfully operational.\n-
+ kind: CiliumEndpointSlice\n version: v2alpha1\n name: ciliumendpointslices.cilium.io\n
+ \ displayName: Cilium Endpoint Slice\n description: |\n Cilium Endpoint
+ Slice represents the status of groups of pods or nodes\n in the cluster
+ which are managed by Cilium, including enforcement status,\n IP addressing
+ and whether the networking is successfully operational.\n- kind: CiliumEgressGatewayPolicy\n
+ \ version: v2\n name: ciliumegressgatewaypolicies.cilium.io\n displayName:
+ Cilium Egress Gateway Policy\n description: |\n Cilium Egress Gateway
+ Policy provides control over the way that traffic\n leaves the cluster
+ and which source addresses to use for that traffic.\n- kind: CiliumClusterwideEnvoyConfig\n
+ \ version: v2\n name: ciliumclusterwideenvoyconfigs.cilium.io\n displayName:
+ Cilium Clusterwide Envoy Config\n description: |\n Cilium Clusterwide
+ Envoy Config specifies Envoy resources and K8s service mappings\n to be
+ provisioned into Cilium host proxy instances in cluster context.\n- kind:
+ CiliumEnvoyConfig\n version: v2\n name: ciliumenvoyconfigs.cilium.io\n displayName:
+ Cilium Envoy Config\n description: |\n Cilium Envoy Config specifies Envoy
+ resources and K8s service mappings\n to be provisioned into Cilium host
+ proxy instances in namespace context.\n- kind: CiliumNodeConfig\n version:
+ v2\n name: ciliumnodeconfigs.cilium.io\n displayName: Cilium Node Configuration\n
+ \ description: |\n CiliumNodeConfig is a list of configuration key-value
+ pairs. It is applied to\n nodes indicated by a label selector.\n- kind:
+ CiliumBGPPeeringPolicy\n version: v2alpha1\n name: ciliumbgppeeringpolicies.cilium.io\n
+ \ displayName: Cilium BGP Peering Policy\n description: |\n Cilium BGP
+ Peering Policy instructs Cilium to create specific BGP peering\n configurations.\n-
+ kind: CiliumBGPClusterConfig\n version: v2alpha1\n name: ciliumbgpclusterconfigs.cilium.io\n
+ \ displayName: Cilium BGP Cluster Config\n description: |\n Cilium BGP
+ Cluster Config instructs Cilium operator to create specific BGP cluster\n
+ \ configurations.\n- kind: CiliumBGPPeerConfig\n version: v2alpha1\n name:
+ ciliumbgppeerconfigs.cilium.io\n displayName: Cilium BGP Peer Config\n description:
+ |\n CiliumBGPPeerConfig is a common set of BGP peer configurations. It
+ can be referenced \n by multiple peers from CiliumBGPClusterConfig.\n-
+ kind: CiliumBGPAdvertisement\n version: v2alpha1\n name: ciliumbgpadvertisements.cilium.io\n
+ \ displayName: Cilium BGP Advertisement\n description: |\n CiliumBGPAdvertisement
+ is used to define source of BGP advertisement as well as BGP attributes \n
+ \ to be advertised with those prefixes.\n- kind: CiliumBGPNodeConfig\n version:
+ v2alpha1\n name: ciliumbgpnodeconfigs.cilium.io\n displayName: Cilium BGP
+ Node Config\n description: |\n CiliumBGPNodeConfig is read only node specific
+ BGP configuration. It is constructed by Cilium operator.\n It will also
+ contain node local BGP state information.\n- kind: CiliumBGPNodeConfigOverride\n
+ \ version: v2alpha1\n name: ciliumbgpnodeconfigoverrides.cilium.io\n displayName:
+ Cilium BGP Node Config Override\n description: |\n CiliumBGPNodeConfigOverride
+ can be used to override node specific BGP configuration.\n- kind: CiliumLoadBalancerIPPool\n
+ \ version: v2\n name: ciliumloadbalancerippools.cilium.io\n displayName:
+ Cilium Load Balancer IP Pool\n description: |\n Defining a Cilium Load
+ Balancer IP Pool instructs Cilium to assign IPs to LoadBalancer Services.\n-
+ kind: CiliumCIDRGroup\n version: v2alpha1\n name: ciliumcidrgroups.cilium.io\n
+ \ displayName: Cilium CIDR Group\n description: |\n CiliumCIDRGroup is
+ a list of CIDRs that can be referenced as a single entity from CiliumNetworkPolicies.\n-
+ kind: CiliumL2AnnouncementPolicy\n version: v2alpha1\n name: ciliuml2announcementpolicies.cilium.io\n
+ \ displayName: Cilium L2 Announcement Policy\n description: |\n CiliumL2AnnouncementPolicy
+ is a policy which determines which service IPs will be announced to\n the
+ local area network, by which nodes, and via which interfaces.\n- kind: CiliumPodIPPool\n
+ \ version: v2alpha1\n name: ciliumpodippools.cilium.io\n displayName: Cilium
+ Pod IP Pool\n description: |\n CiliumPodIPPool defines an IP pool that
+ can be used for pooled IPAM (i.e. the multi-pool IPAM mode).\n- kind: CiliumGatewayClassConfig\n
+ \ version: v2alpha1\n name: ciliumgatewayclassconfigs.cilium.io\n displayName:
+ Cilium Gateway Class Config\n description: |\n CiliumGatewayClassConfig
+ defines a configuration for Gateway API GatewayClass.\n"
+ apiVersion: v2
+ appVersion: 1.18.5
+ created: "2025-12-17T10:24:52.321001762Z"
+ description: eBPF-based Networking, Security, and Observability
+ digest: 7eaf545fe0b152da6c33f93621e4c965ec04bdee37003b5da35041e9680f3244
+ home: https://cilium.io/
+ icon: https://cdn.jsdelivr.net/gh/cilium/cilium@main/Documentation/images/logo-solo.svg
+ keywords:
+ - BPF
+ - eBPF
+ - Kubernetes
+ - Networking
+ - Security
+ - Observability
+ - Troubleshooting
+ kubeVersion: '>= 1.21.0-0'
+ name: cilium
+ sources:
+ - https://github.com/cilium/cilium
+ urls:
+ - cilium-1.18.5.tgz
+ version: 1.18.5
- annotations:
artifacthub.io/crds: "- kind: CiliumNetworkPolicy\n version: v2\n name: ciliumnetworkpolicies.cilium.io\n
\ displayName: Cilium Network Policy\n description: |\n Cilium Network
urls:
- cilium-1.18.0-pre.0.tgz
version: 1.18.0-pre.0
+ - annotations:
+ artifacthub.io/crds: "- kind: CiliumNetworkPolicy\n version: v2\n name: ciliumnetworkpolicies.cilium.io\n
+ \ displayName: Cilium Network Policy\n description: |\n Cilium Network
+ Policies provide additional functionality beyond what\n is provided by
+ standard Kubernetes NetworkPolicy such as the ability\n to allow traffic
+ based on FQDNs, or to filter at Layer 7.\n- kind: CiliumClusterwideNetworkPolicy\n
+ \ version: v2\n name: ciliumclusterwidenetworkpolicies.cilium.io\n displayName:
+ Cilium Clusterwide Network Policy\n description: |\n Cilium Clusterwide
+ Network Policies support configuring network traffic\n policiies across
+ the entire cluster, including applying node firewalls.\n- kind: CiliumExternalWorkload\n
+ \ version: v2\n name: ciliumexternalworkloads.cilium.io\n displayName: Cilium
+ External Workload\n description: |\n Cilium External Workload supports
+ configuring the ability for external\n non-Kubernetes workloads to join
+ the cluster.\n- kind: CiliumLocalRedirectPolicy\n version: v2\n name: ciliumlocalredirectpolicies.cilium.io\n
+ \ displayName: Cilium Local Redirect Policy\n description: |\n Cilium
+ Local Redirect Policy allows local redirects to be configured\n within
+ a node to support use cases like Node-Local DNS or KIAM.\n- kind: CiliumNode\n
+ \ version: v2\n name: ciliumnodes.cilium.io\n displayName: Cilium Node\n
+ \ description: |\n Cilium Node represents a node managed by Cilium. It
+ contains a\n specification to control various node specific configuration
+ aspects\n and a status section to represent the status of the node.\n-
+ kind: CiliumIdentity\n version: v2\n name: ciliumidentities.cilium.io\n
+ \ displayName: Cilium Identity\n description: |\n Cilium Identity allows
+ introspection into security identities that\n Cilium allocates which identify
+ sets of labels that are assigned to\n individual endpoints in the cluster.\n-
+ kind: CiliumEndpoint\n version: v2\n name: ciliumendpoints.cilium.io\n displayName:
+ Cilium Endpoint\n description: |\n Cilium Endpoint represents the status
+ of individual pods or nodes in\n the cluster which are managed by Cilium,
+ including enforcement status,\n IP addressing and whether the networking
+ is successfully operational.\n- kind: CiliumEndpointSlice\n version: v2alpha1\n
+ \ name: ciliumendpointslices.cilium.io\n displayName: Cilium Endpoint Slice\n
+ \ description: |\n Cilium Endpoint Slice represents the status of groups
+ of pods or nodes\n in the cluster which are managed by Cilium, including
+ enforcement status,\n IP addressing and whether the networking is successfully
+ operational.\n- kind: CiliumEgressGatewayPolicy\n version: v2\n name: ciliumegressgatewaypolicies.cilium.io\n
+ \ displayName: Cilium Egress Gateway Policy\n description: |\n Cilium
+ Egress Gateway Policy provides control over the way that traffic\n leaves
+ the cluster and which source addresses to use for that traffic.\n- kind: CiliumClusterwideEnvoyConfig\n
+ \ version: v2\n name: ciliumclusterwideenvoyconfigs.cilium.io\n displayName:
+ Cilium Clusterwide Envoy Config\n description: |\n Cilium Clusterwide
+ Envoy Config specifies Envoy resources and K8s service mappings\n to be
+ provisioned into Cilium host proxy instances in cluster context.\n- kind:
+ CiliumEnvoyConfig\n version: v2\n name: ciliumenvoyconfigs.cilium.io\n displayName:
+ Cilium Envoy Config\n description: |\n Cilium Envoy Config specifies Envoy
+ resources and K8s service mappings\n to be provisioned into Cilium host
+ proxy instances in namespace context.\n- kind: CiliumNodeConfig\n version:
+ v2\n name: ciliumnodeconfigs.cilium.io\n displayName: Cilium Node Configuration\n
+ \ description: |\n CiliumNodeConfig is a list of configuration key-value
+ pairs. It is applied to\n nodes indicated by a label selector.\n- kind:
+ CiliumBGPPeeringPolicy\n version: v2alpha1\n name: ciliumbgppeeringpolicies.cilium.io\n
+ \ displayName: Cilium BGP Peering Policy\n description: |\n Cilium BGP
+ Peering Policy instructs Cilium to create specific BGP peering\n configurations.\n-
+ kind: CiliumBGPClusterConfig\n version: v2alpha1\n name: ciliumbgpclusterconfigs.cilium.io\n
+ \ displayName: Cilium BGP Cluster Config\n description: |\n Cilium BGP
+ Cluster Config instructs Cilium operator to create specific BGP cluster\n
+ \ configurations.\n- kind: CiliumBGPPeerConfig\n version: v2alpha1\n name:
+ ciliumbgppeerconfigs.cilium.io\n displayName: Cilium BGP Peer Config\n description:
+ |\n CiliumBGPPeerConfig is a common set of BGP peer configurations. It
+ can be referenced \n by multiple peers from CiliumBGPClusterConfig.\n-
+ kind: CiliumBGPAdvertisement\n version: v2alpha1\n name: ciliumbgpadvertisements.cilium.io\n
+ \ displayName: Cilium BGP Advertisement\n description: |\n CiliumBGPAdvertisement
+ is used to define source of BGP advertisement as well as BGP attributes \n
+ \ to be advertised with those prefixes.\n- kind: CiliumBGPNodeConfig\n version:
+ v2alpha1\n name: ciliumbgpnodeconfigs.cilium.io\n displayName: Cilium BGP
+ Node Config\n description: |\n CiliumBGPNodeConfig is read only node specific
+ BGP configuration. It is constructed by Cilium operator.\n It will also
+ contain node local BGP state information.\n- kind: CiliumBGPNodeConfigOverride\n
+ \ version: v2alpha1\n name: ciliumbgpnodeconfigoverrides.cilium.io\n displayName:
+ Cilium BGP Node Config Override\n description: |\n CiliumBGPNodeConfigOverride
+ can be used to override node specific BGP configuration.\n- kind: CiliumLoadBalancerIPPool\n
+ \ version: v2alpha1\n name: ciliumloadbalancerippools.cilium.io\n displayName:
+ Cilium Load Balancer IP Pool\n description: |\n Defining a Cilium Load
+ Balancer IP Pool instructs Cilium to assign IPs to LoadBalancer Services.\n-
+ kind: CiliumCIDRGroup\n version: v2alpha1\n name: ciliumcidrgroups.cilium.io\n
+ \ displayName: Cilium CIDR Group\n description: |\n CiliumCIDRGroup is
+ a list of CIDRs that can be referenced as a single entity from CiliumNetworkPolicies.\n-
+ kind: CiliumL2AnnouncementPolicy\n version: v2alpha1\n name: ciliuml2announcementpolicies.cilium.io\n
+ \ displayName: Cilium L2 Announcement Policy\n description: |\n CiliumL2AnnouncementPolicy
+ is a policy which determines which service IPs will be announced to\n the
+ local area network, by which nodes, and via which interfaces.\n- kind: CiliumPodIPPool\n
+ \ version: v2alpha1\n name: ciliumpodippools.cilium.io\n displayName: Cilium
+ Pod IP Pool\n description: |\n CiliumPodIPPool defines an IP pool that
+ can be used for pooled IPAM (i.e. the multi-pool IPAM mode).\n"
+ apiVersion: v2
+ appVersion: 1.17.11
+ created: "2025-12-17T10:13:42.3922474Z"
+ description: eBPF-based Networking, Security, and Observability
+ digest: 8211f48dc346a6da04106310356910bff620b5812aeb538c365331dce0dc0bfc
+ home: https://cilium.io/
+ icon: https://cdn.jsdelivr.net/gh/cilium/cilium@main/Documentation/images/logo-solo.svg
+ keywords:
+ - BPF
+ - eBPF
+ - Kubernetes
+ - Networking
+ - Security
+ - Observability
+ - Troubleshooting
+ kubeVersion: '>= 1.21.0-0'
+ name: cilium
+ sources:
+ - https://github.com/cilium/cilium
+ urls:
+ - cilium-1.17.11.tgz
+ version: 1.17.11
- annotations:
artifacthub.io/crds: "- kind: CiliumNetworkPolicy\n version: v2\n name: ciliumnetworkpolicies.cilium.io\n
\ displayName: Cilium Network Policy\n description: |\n Cilium Network
urls:
- cilium-1.17.0-pre.0.tgz
version: 1.17.0-pre.0
+ - annotations:
+ artifacthub.io/crds: "- kind: CiliumNetworkPolicy\n version: v2\n name: ciliumnetworkpolicies.cilium.io\n
+ \ displayName: Cilium Network Policy\n description: |\n Cilium Network
+ Policies provide additional functionality beyond what\n is provided by
+ standard Kubernetes NetworkPolicy such as the ability\n to allow traffic
+ based on FQDNs, or to filter at Layer 7.\n- kind: CiliumClusterwideNetworkPolicy\n
+ \ version: v2\n name: ciliumclusterwidenetworkpolicies.cilium.io\n displayName:
+ Cilium Clusterwide Network Policy\n description: |\n Cilium Clusterwide
+ Network Policies support configuring network traffic\n policiies across
+ the entire cluster, including applying node firewalls.\n- kind: CiliumExternalWorkload\n
+ \ version: v2\n name: ciliumexternalworkloads.cilium.io\n displayName: Cilium
+ External Workload\n description: |\n Cilium External Workload supports
+ configuring the ability for external\n non-Kubernetes workloads to join
+ the cluster.\n- kind: CiliumLocalRedirectPolicy\n version: v2\n name: ciliumlocalredirectpolicies.cilium.io\n
+ \ displayName: Cilium Local Redirect Policy\n description: |\n Cilium
+ Local Redirect Policy allows local redirects to be configured\n within
+ a node to support use cases like Node-Local DNS or KIAM.\n- kind: CiliumNode\n
+ \ version: v2\n name: ciliumnodes.cilium.io\n displayName: Cilium Node\n
+ \ description: |\n Cilium Node represents a node managed by Cilium. It
+ contains a\n specification to control various node specific configuration
+ aspects\n and a status section to represent the status of the node.\n-
+ kind: CiliumIdentity\n version: v2\n name: ciliumidentities.cilium.io\n
+ \ displayName: Cilium Identity\n description: |\n Cilium Identity allows
+ introspection into security identities that\n Cilium allocates which identify
+ sets of labels that are assigned to\n individual endpoints in the cluster.\n-
+ kind: CiliumEndpoint\n version: v2\n name: ciliumendpoints.cilium.io\n displayName:
+ Cilium Endpoint\n description: |\n Cilium Endpoint represents the status
+ of individual pods or nodes in\n the cluster which are managed by Cilium,
+ including enforcement status,\n IP addressing and whether the networking
+ is successfully operational.\n- kind: CiliumEndpointSlice\n version: v2alpha1\n
+ \ name: ciliumendpointslices.cilium.io\n displayName: Cilium Endpoint Slice\n
+ \ description: |\n Cilium Endpoint Slice represents the status of groups
+ of pods or nodes\n in the cluster which are managed by Cilium, including
+ enforcement status,\n IP addressing and whether the networking is successfully
+ operational.\n- kind: CiliumEgressGatewayPolicy\n version: v2\n name: ciliumegressgatewaypolicies.cilium.io\n
+ \ displayName: Cilium Egress Gateway Policy\n description: |\n Cilium
+ Egress Gateway Policy provides control over the way that traffic\n leaves
+ the cluster and which source addresses to use for that traffic.\n- kind: CiliumClusterwideEnvoyConfig\n
+ \ version: v2\n name: ciliumclusterwideenvoyconfigs.cilium.io\n displayName:
+ Cilium Clusterwide Envoy Config\n description: |\n Cilium Clusterwide
+ Envoy Config specifies Envoy resources and K8s service mappings\n to be
+ provisioned into Cilium host proxy instances in cluster context.\n- kind:
+ CiliumEnvoyConfig\n version: v2\n name: ciliumenvoyconfigs.cilium.io\n displayName:
+ Cilium Envoy Config\n description: |\n Cilium Envoy Config specifies Envoy
+ resources and K8s service mappings\n to be provisioned into Cilium host
+ proxy instances in namespace context.\n- kind: CiliumBGPPeeringPolicy\n version:
+ v2alpha1\n name: ciliumbgppeeringpolicies.cilium.io\n displayName: Cilium
+ BGP Peering Policy\n description: |\n Cilium BGP Peering Policy instructs
+ Cilium to create specific BGP peering\n configurations.\n- kind: CiliumBGPClusterConfig\n
+ \ version: v2alpha1\n name: ciliumbgpclusterconfigs.cilium.io\n displayName:
+ Cilium BGP Cluster Config\n description: |\n Cilium BGP Cluster Config
+ instructs Cilium operator to create specific BGP cluster\n configurations.\n-
+ kind: CiliumBGPPeerConfig\n version: v2alpha1\n name: ciliumbgppeerconfigs.cilium.io\n
+ \ displayName: Cilium BGP Peer Config\n description: |\n CiliumBGPPeerConfig
+ is a common set of BGP peer configurations. It can be referenced \n by
+ multiple peers from CiliumBGPClusterConfig.\n- kind: CiliumBGPAdvertisement\n
+ \ version: v2alpha1\n name: ciliumbgpadvertisements.cilium.io\n displayName:
+ Cilium BGP Advertisement\n description: |\n CiliumBGPAdvertisement is
+ used to define source of BGP advertisement as well as BGP attributes \n to
+ be advertised with those prefixes.\n- kind: CiliumBGPNodeConfig\n version:
+ v2alpha1\n name: ciliumbgpnodeconfigs.cilium.io\n displayName: Cilium BGP
+ Node Config\n description: |\n CiliumBGPNodeConfig is read only node specific
+ BGP configuration. It is constructed by Cilium operator.\n It will also
+ contain node local BGP state information.\n- kind: CiliumBGPNodeConfigOverride\n
+ \ version: v2alpha1\n name: ciliumbgpnodeconfigoverrides.cilium.io\n displayName:
+ Cilium BGP Node Config Override\n description: |\n CiliumBGPNodeConfigOverride
+ can be used to override node specific BGP configuration.\n- kind: CiliumLoadBalancerIPPool\n
+ \ version: v2alpha1\n name: ciliumloadbalancerippools.cilium.io\n displayName:
+ Cilium Load Balancer IP Pool\n description: |\n Defining a Cilium Load
+ Balancer IP Pool instructs Cilium to assign IPs to LoadBalancer Services.\n-
+ kind: CiliumNodeConfig\n version: v2alpha1\n name: ciliumnodeconfigs.cilium.io\n
+ \ displayName: Cilium Node Configuration\n description: |\n CiliumNodeConfig
+ is a list of configuration key-value pairs. It is applied to\n nodes indicated
+ by a label selector.\n- kind: CiliumCIDRGroup\n version: v2alpha1\n name:
+ ciliumcidrgroups.cilium.io\n displayName: Cilium CIDR Group\n description:
+ |\n CiliumCIDRGroup is a list of CIDRs that can be referenced as a single
+ entity from CiliumNetworkPolicies.\n- kind: CiliumL2AnnouncementPolicy\n version:
+ v2alpha1\n name: ciliuml2announcementpolicies.cilium.io\n displayName: Cilium
+ L2 Announcement Policy\n description: |\n CiliumL2AnnouncementPolicy is
+ a policy which determines which service IPs will be announced to\n the
+ local area network, by which nodes, and via which interfaces.\n- kind: CiliumPodIPPool\n
+ \ version: v2alpha1\n name: ciliumpodippools.cilium.io\n displayName: Cilium
+ Pod IP Pool\n description: |\n CiliumPodIPPool defines an IP pool that
+ can be used for pooled IPAM (i.e. the multi-pool IPAM mode).\n"
+ apiVersion: v2
+ appVersion: 1.16.18
+ created: "2025-12-17T10:37:25.982563684Z"
+ description: eBPF-based Networking, Security, and Observability
+ digest: b6ac1c7f20e60e58f20e3288c4a5016d5de869e20affd88efce38efb1eacd863
+ home: https://cilium.io/
+ icon: https://cdn.jsdelivr.net/gh/cilium/cilium@main/Documentation/images/logo-solo.svg
+ keywords:
+ - BPF
+ - eBPF
+ - Kubernetes
+ - Networking
+ - Security
+ - Observability
+ - Troubleshooting
+ kubeVersion: '>= 1.21.0-0'
+ name: cilium
+ sources:
+ - https://github.com/cilium/cilium
+ urls:
+ - cilium-1.16.18.tgz
+ version: 1.16.18
- annotations:
artifacthub.io/crds: "- kind: CiliumNetworkPolicy\n version: v2\n name: ciliumnetworkpolicies.cilium.io\n
\ displayName: Cilium Network Policy\n description: |\n Cilium Network
urls:
- tetragon-0.8.0.tgz
version: 0.8.0
-generated: "2025-12-01T14:40:15.855828194Z"
+generated: "2025-12-17T10:37:25.971821556Z"
continue
}
line, ended := strings.CutSuffix(line, endMarker)
+ line, errored := strings.CutSuffix(line, errorMarker)
if isPrefix {
// Partial line, don't print \n yet.
_, err = fmt.Fprint(w, line)
if ended {
return nil
}
+ if errored {
+ return errors.New(line)
+ }
}
}
err := ShellExchange(cfg, os.Stdout, "%s", strings.Join(args, " "))
if err != nil {
fmt.Fprintf(os.Stdout, "error: %s\n", err)
+ os.Exit(1)
}
} else {
os.Exit(interactiveShell(cfg, prompt, printGreeting))
// endMarker marks the end of output from a command.
endMarker = "<<end>>"
+ // errorMarker marks the command as failed. If the command
+ // fails this acts as the end of output mark.
+ errorMarker = "<<error>>"
+
// stdoutMarker marks the output to be from the stdout buffer.
stdoutMarker = "[stdout]"
}
func (sh shell) handleConn(ctx context.Context, clientID int, conn net.Conn) {
- sh.log.Info("Client connected", "id", clientID)
- defer sh.log.Info("client disconnected", "id", clientID)
+ sh.log.Debug("Client connected", "id", clientID)
+ defer sh.log.Debug("client disconnected", "id", clientID)
ctx, cancel := context.WithCancel(ctx)
}
err = sh.engine.ExecuteLine(s, line, writer)
if err != nil {
- _, err = fmt.Fprintln(writer, err)
+ // Send the error and the error marker
+ _, err = fmt.Fprintf(writer, "%s%s\n", err, errorMarker)
+ if err != nil {
+ break
+ }
+ } else {
+ // Send the "end of command output" marker
+ _, err = fmt.Fprintln(writer, endMarker)
if err != nil {
break
}
- }
- // Send the "end of command output" marker
- _, err = fmt.Fprintln(writer, endMarker)
- if err != nil {
- break
}
}
}
secrets.yml
-coverage.out
+*.out
+settings.local.json
--- /dev/null
+# Contributors
+
+- Repository: ['go-openapi/errors']
+
+| Total Contributors | Total Contributions |
+| --- | --- |
+| 12 | 105 |
+
+| Username | All Time Contribution Count | All Commits |
+| --- | --- | --- |
+| @casualjim | 58 | https://github.com/go-openapi/errors/commits?author=casualjim |
+| @fredbi | 32 | https://github.com/go-openapi/errors/commits?author=fredbi |
+| @youyuanwu | 5 | https://github.com/go-openapi/errors/commits?author=youyuanwu |
+| @alexandear | 2 | https://github.com/go-openapi/errors/commits?author=alexandear |
+| @fiorix | 1 | https://github.com/go-openapi/errors/commits?author=fiorix |
+| @ligustah | 1 | https://github.com/go-openapi/errors/commits?author=ligustah |
+| @artemseleznev | 1 | https://github.com/go-openapi/errors/commits?author=artemseleznev |
+| @gautierdelorme | 1 | https://github.com/go-openapi/errors/commits?author=gautierdelorme |
+| @guillemj | 1 | https://github.com/go-openapi/errors/commits?author=guillemj |
+| @maxatome | 1 | https://github.com/go-openapi/errors/commits?author=maxatome |
+| @Simon-Li | 1 | https://github.com/go-openapi/errors/commits?author=Simon-Li |
+| @ujjwalsh | 1 | https://github.com/go-openapi/errors/commits?author=ujjwalsh |
+
+ _this file was generated by the [Contributors GitHub Action](https://github.com/github/contributors)_
[![Release][release-badge]][release-url] [![Go Report Card][gocard-badge]][gocard-url] [![CodeFactor Grade][codefactor-badge]][codefactor-url] [![License][license-badge]][license-url]
<!-- Badges: documentation & support -->
<!-- Badges: others & stats -->
-[![GoDoc][godoc-badge]][godoc-url] [![Slack Channel][slack-logo]![slack-badge]][slack-url] [![go version][goversion-badge]][goversion-url] ![Top language][top-badge] ![Commits since latest release][commits-badge]
+[![GoDoc][godoc-badge]][godoc-url] [![Discord Channel][discord-badge]][discord-url] [![go version][goversion-badge]][goversion-url] ![Top language][top-badge] ![Commits since latest release][commits-badge]
---
Shared errors and error interface used throughout the various libraries found in the go-openapi toolkit.
+## Announcements
+
+* **2025-12-19** : new community chat on discord
+ * a new discord community channel is available to be notified of changes and support users
+ * our venerable Slack channel remains open, and will be eventually discontinued on **2026-03-31**
+
+You may join the discord community by clicking the invite link on the discord badge (also above). [![Discord Channel][discord-badge]][discord-url]
+
+Or join our Slack channel: [![Slack Channel][slack-logo]![slack-badge]][slack-url]
+
## Status
API is stable.
## Basic usage
```go
+const url = "https://www.example.com/#"
+
+errGeneric := New(401,"onvalid argument: %s", url)
+
+errNotFound := NotFound("resource not found: %s", url)
+
+errNotImplemented := NotImplemented("method: %s", url)
```
## Change log
[slack-logo]: https://a.slack-edge.com/e6a93c1/img/icons/favicon-32.png
[slack-badge]: https://img.shields.io/badge/slack-blue?link=https%3A%2F%2Fgoswagger.slack.com%2Farchives%2FC04R30YM
[slack-url]: https://goswagger.slack.com/archives/C04R30YMU
+[discord-badge]: https://img.shields.io/discord/1446918742398341256?logo=discord&label=discord&color=blue
+[discord-url]: https://discord.gg/DrafRmZx
+
<!-- Badges: license & compliance -->
[license-badge]: http://img.shields.io/badge/license-Apache%20v2-orange.svg
[license-url]: https://github.com/go-openapi/errors/?tab=Apache-2.0-1-ov-file#readme
message string
}
+// Error implements the standard error interface.
func (a *apiError) Error() string {
return a.message
}
+// Code returns the HTTP status code associated with this error.
func (a *apiError) Code() int32 {
return a.code
}
message string
}
+// Error implements the standard error interface.
func (m *MethodNotAllowedError) Error() string {
return m.message
}
-// Code the error code.
+// Code returns 405 (Method Not Allowed) as the HTTP status code.
func (m *MethodNotAllowedError) Code() int32 {
return m.code
}
Values []any
}
+// Error implements the standard error interface.
func (e *Validation) Error() string {
return e.message
}
-// Code the error code.
+// Code returns the HTTP status code for this validation error.
+// Returns 422 (Unprocessable Entity) by default.
func (e *Validation) Code() int32 {
return e.code
}
MissingRegistration []string `json:"missingRegistration,omitempty"`
}
+// Error implements the standard error interface.
func (v *APIVerificationFailed) Error() string {
buf := bytes.NewBuffer(nil)
}
}
+// Error implements the standard error interface.
func (e *ParseError) Error() string {
return e.message
}
-// Code returns the http status code for this error.
+// Code returns 400 (Bad Request) as the HTTP status code for parsing errors.
func (e *ParseError) Code() int32 {
return e.code
}
// InvalidTypeCode is used for any subclass of invalid types.
InvalidTypeCode = maximumValidHTTPCode + iota
+ // RequiredFailCode indicates a required field is missing.
RequiredFailCode
TooLongFailCode
TooShortFailCode
message string
}
-// Code for this error.
+// Code returns the HTTP status code for this composite error.
func (c *CompositeError) Code() int32 {
return c.code
}
+// Error implements the standard error interface.
func (c *CompositeError) Error() string {
if len(c.Errors) > 0 {
msgs := []string{c.message + ":"}
return c.message
}
+// Unwrap implements the [errors.Unwrap] interface.
func (c *CompositeError) Unwrap() []error {
return c.Errors
}
}
}
-// ExceedsMaximumInt error for when maximumimum validation fails.
+// ExceedsMaximumInt error for when maximum validation fails.
func ExceedsMaximumInt(name, in string, maximum int64, exclusive bool, value any) *Validation {
var message string
if in == "" {
}
}
-// ExceedsMaximumUint error for when maximumimum validation fails.
+// ExceedsMaximumUint error for when maximum validation fails.
func ExceedsMaximumUint(name, in string, maximum uint64, exclusive bool, value any) *Validation {
var message string
if in == "" {
}
}
-// ExceedsMaximum error for when maximumimum validation fails.
+// ExceedsMaximum error for when maximum validation fails.
func ExceedsMaximum(name, in string, maximum float64, exclusive bool, value any) *Validation {
var message string
if in == "" {
--- /dev/null
+# git-cliff ~ configuration file
+# https://git-cliff.org/docs/configuration
+
+[changelog]
+header = """
+"""
+
+footer = """
+
+-----
+
+**[{{ remote.github.repo }}]({{ self::remote_url() }}) license terms**
+
+[![License][license-badge]][license-url]
+
+[license-badge]: http://img.shields.io/badge/license-Apache%20v2-orange.svg
+[license-url]: {{ self::remote_url() }}/?tab=Apache-2.0-1-ov-file#readme
+
+{%- macro remote_url() -%}
+ https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }}
+{%- endmacro -%}
+"""
+
+body = """
+{%- if version %}
+## [{{ version | trim_start_matches(pat="v") }}]({{ self::remote_url() }}/tree/{{ version }}) - {{ timestamp | date(format="%Y-%m-%d") }}
+{%- else %}
+## [unreleased]
+{%- endif %}
+{%- if message %}
+ {%- raw %}\n{% endraw %}
+{{ message }}
+ {%- raw %}\n{% endraw %}
+{%- endif %}
+{%- if version %}
+ {%- if previous.version %}
+
+**Full Changelog**: <{{ self::remote_url() }}/compare/{{ previous.version }}...{{ version }}>
+ {%- endif %}
+{%- else %}
+ {%- raw %}\n{% endraw %}
+{%- endif %}
+
+{%- if statistics %}{% if statistics.commit_count %}
+ {%- raw %}\n{% endraw %}
+{{ statistics.commit_count }} commits in this release.
+ {%- raw %}\n{% endraw %}
+{%- endif %}{% endif %}
+-----
+
+{%- for group, commits in commits | group_by(attribute="group") %}
+ {%- raw %}\n{% endraw %}
+### {{ group | upper_first }}
+ {%- raw %}\n{% endraw %}
+ {%- for commit in commits %}
+ {%- if commit.remote.pr_title %}
+ {%- set commit_message = commit.remote.pr_title %}
+ {%- else %}
+ {%- set commit_message = commit.message %}
+ {%- endif %}
+* {{ commit_message | split(pat="\n") | first | trim }}
+ {%- if commit.remote.username %}
+{%- raw %} {% endraw %}by [@{{ commit.remote.username }}](https://github.com/{{ commit.remote.username }})
+ {%- endif %}
+ {%- if commit.remote.pr_number %}
+{%- raw %} {% endraw %}in [#{{ commit.remote.pr_number }}]({{ self::remote_url() }}/pull/{{ commit.remote.pr_number }})
+ {%- endif %}
+{%- raw %} {% endraw %}[...]({{ self::remote_url() }}/commit/{{ commit.id }})
+ {%- endfor %}
+{%- endfor %}
+
+{%- if github %}
+{%- raw %}\n{% endraw -%}
+ {%- set all_contributors = github.contributors | length %}
+ {%- if github.contributors | filter(attribute="username", value="dependabot[bot]") | length < all_contributors %}
+-----
+
+### People who contributed to this release
+ {% endif %}
+ {%- for contributor in github.contributors | filter(attribute="username") | sort(attribute="username") %}
+ {%- if contributor.username != "dependabot[bot]" and contributor.username != "github-actions[bot]" %}
+* [@{{ contributor.username }}](https://github.com/{{ contributor.username }})
+ {%- endif %}
+ {%- endfor %}
+
+ {% if github.contributors | filter(attribute="is_first_time", value=true) | length != 0 %}
+-----
+ {%- raw %}\n{% endraw %}
+
+### New Contributors
+ {%- endif %}
+
+ {%- for contributor in github.contributors | filter(attribute="is_first_time", value=true) %}
+ {%- if contributor.username != "dependabot[bot]" and contributor.username != "github-actions[bot]" %}
+* @{{ contributor.username }} made their first contribution
+ {%- if contributor.pr_number %}
+ in [#{{ contributor.pr_number }}]({{ self::remote_url() }}/pull/{{ contributor.pr_number }}) \
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+{%- endif %}
+
+{%- raw %}\n{% endraw %}
+
+{%- macro remote_url() -%}
+ https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }}
+{%- endmacro -%}
+"""
+# Remove leading and trailing whitespaces from the changelog's body.
+trim = true
+# Render body even when there are no releases to process.
+render_always = true
+# An array of regex based postprocessors to modify the changelog.
+postprocessors = [
+ # Replace the placeholder <REPO> with a URL.
+ #{ pattern = '<REPO>', replace = "https://github.com/orhun/git-cliff" },
+]
+# output file path
+# output = "test.md"
+
+[git]
+# Parse commits according to the conventional commits specification.
+# See https://www.conventionalcommits.org
+conventional_commits = false
+# Exclude commits that do not match the conventional commits specification.
+filter_unconventional = false
+# Require all commits to be conventional.
+# Takes precedence over filter_unconventional.
+require_conventional = false
+# Split commits on newlines, treating each line as an individual commit.
+split_commits = false
+# An array of regex based parsers to modify commit messages prior to further processing.
+commit_preprocessors = [
+ # Replace issue numbers with link templates to be updated in `changelog.postprocessors`.
+ #{ pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](<REPO>/issues/${2}))"},
+ # Check spelling of the commit message using https://github.com/crate-ci/typos.
+ # If the spelling is incorrect, it will be fixed automatically.
+ #{ pattern = '.*', replace_command = 'typos --write-changes -' }
+]
+# Prevent commits that are breaking from being excluded by commit parsers.
+protect_breaking_commits = false
+# An array of regex based parsers for extracting data from the commit message.
+# Assigns commits to groups.
+# Optionally sets the commit's scope and can decide to exclude commits from further processing.
+commit_parsers = [
+ { message = "^[Cc]hore\\([Rr]elease\\): prepare for", skip = true },
+ { message = "(^[Mm]erge)|([Mm]erge conflict)", skip = true },
+ { field = "author.name", pattern = "dependabot*", group = "<!-- 0A -->Updates" },
+ { message = "([Ss]ecurity)|([Vv]uln)", group = "<!-- 08 -->Security" },
+ { body = "(.*[Ss]ecurity)|([Vv]uln)", group = "<!-- 08 -->Security" },
+ { message = "([Cc]hore\\(lint\\))|(style)|(lint)|(codeql)|(golangci)", group = "<!-- 05 -->Code quality" },
+ { message = "(^[Dd]oc)|((?i)readme)|(badge)|(typo)|(documentation)", group = "<!-- 03 -->Documentation" },
+ { message = "(^[Ff]eat)|(^[Ee]nhancement)", group = "<!-- 00 -->Implemented enhancements" },
+ { message = "(^ci)|(\\(ci\\))|(fixup\\s+ci)|(fix\\s+ci)|(license)|(example)", group = "<!-- 07 -->Miscellaneous tasks" },
+ { message = "^test", group = "<!-- 06 -->Testing" },
+ { message = "(^fix)|(panic)", group = "<!-- 01 -->Fixed bugs" },
+ { message = "(^refact)|(rework)", group = "<!-- 02 -->Refactor" },
+ { message = "(^[Pp]erf)|(performance)", group = "<!-- 04 -->Performance" },
+ { message = "(^[Cc]hore)", group = "<!-- 07 -->Miscellaneous tasks" },
+ { message = "^[Rr]evert", group = "<!-- 09 -->Reverted changes" },
+ { message = "(upgrade.*?go)|(go\\s+version)", group = "<!-- 0A -->Updates" },
+ { message = ".*", group = "<!-- 0B -->Other" },
+]
+# Exclude commits that are not matched by any commit parser.
+filter_commits = false
+# An array of link parsers for extracting external references, and turning them into URLs, using regex.
+link_parsers = []
+# Include only the tags that belong to the current branch.
+use_branch_tags = false
+# Order releases topologically instead of chronologically.
+topo_order = false
+# Order releases topologically instead of chronologically.
+topo_order_commits = true
+# Order of commits in each group/release within the changelog.
+# Allowed values: newest, oldest
+sort_commits = "newest"
+# Process submodules commits
+recurse_submodules = false
+
+#[remote.github]
+#owner = "go-openapi"
-secrets.yml
+*.out
+*.cov
+.idea
+.env
linters:
default: all
disable:
- - cyclop
- depguard
- - errchkjson
- - errorlint
- - exhaustruct
- - forcetypeassert
- funlen
- - gochecknoglobals
- - gochecknoinits
- - gocognit
- - godot
- godox
- - gosmopolitan
- - inamedparam
- #- intrange # disabled while < go1.22
- - ireturn
- - lll
- - musttag
- - nestif
+ - exhaustruct
- nlreturn
- nonamedreturns
- noinlineerr
- paralleltest
- recvcheck
- testpackage
- - thelper
- tparallel
- - unparam
- varnamelen
- whitespace
- wrapcheck
goconst:
min-len: 2
min-occurrences: 3
+ cyclop:
+ max-complexity: 20
gocyclo:
- min-complexity: 45
+ min-complexity: 20
+ exhaustive:
+ default-signifies-exhaustive: true
+ default-case-required: true
+ lll:
+ line-length: 180
exclusions:
generated: lax
presets:
enable:
- gofmt
- goimports
+ - gofumpt
exclusions:
generated: lax
paths:
--- /dev/null
+# Contributors
+
+- Repository: ['go-openapi/jsonpointer']
+
+| Total Contributors | Total Contributions |
+| --- | --- |
+| 12 | 95 |
+
+| Username | All Time Contribution Count | All Commits |
+| --- | --- | --- |
+| @fredbi | 48 | https://github.com/go-openapi/jsonpointer/commits?author=fredbi |
+| @casualjim | 33 | https://github.com/go-openapi/jsonpointer/commits?author=casualjim |
+| @magodo | 3 | https://github.com/go-openapi/jsonpointer/commits?author=magodo |
+| @youyuanwu | 3 | https://github.com/go-openapi/jsonpointer/commits?author=youyuanwu |
+| @gaiaz-iusipov | 1 | https://github.com/go-openapi/jsonpointer/commits?author=gaiaz-iusipov |
+| @gbjk | 1 | https://github.com/go-openapi/jsonpointer/commits?author=gbjk |
+| @gordallott | 1 | https://github.com/go-openapi/jsonpointer/commits?author=gordallott |
+| @ianlancetaylor | 1 | https://github.com/go-openapi/jsonpointer/commits?author=ianlancetaylor |
+| @mfleader | 1 | https://github.com/go-openapi/jsonpointer/commits?author=mfleader |
+| @Neo2308 | 1 | https://github.com/go-openapi/jsonpointer/commits?author=Neo2308 |
+| @olivierlemasle | 1 | https://github.com/go-openapi/jsonpointer/commits?author=olivierlemasle |
+| @testwill | 1 | https://github.com/go-openapi/jsonpointer/commits?author=testwill |
+
+ _this file was generated by the [Contributors GitHub Action](https://github.com/github/contributors)_
-
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
--- /dev/null
+Copyright 2015-2025 go-swagger maintainers
+
+// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
+// SPDX-License-Identifier: Apache-2.0
+
+This software library, github.com/go-openapi/jsonpointer, includes software developed
+by the go-swagger and go-openapi maintainers ("go-swagger maintainers").
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this software except in compliance with the License.
+
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0.
+
+This software is copied from, derived from, and inspired by other original software products.
+It ships with copies of other software which license terms are recalled below.
+
+The original software was authored on 25-02-2013 by sigu-399 (https://github.com/sigu-399, sigu.399@gmail.com).
+
+github.com/sigh-399/jsonpointer
+===========================
+
+// SPDX-FileCopyrightText: Copyright 2013 sigu-399 ( https://github.com/sigu-399 )
+// SPDX-License-Identifier: Apache-2.0
+
+Copyright 2013 sigu-399 ( https://github.com/sigu-399 )
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
-# gojsonpointer [](https://github.com/go-openapi/jsonpointer/actions?query=workflow%3A"go+test") [](https://codecov.io/gh/go-openapi/jsonpointer)
+# jsonpointer
-[](https://slackin.goswagger.io)
-[](https://raw.githubusercontent.com/go-openapi/jsonpointer/master/LICENSE)
-[](https://pkg.go.dev/github.com/go-openapi/jsonpointer)
-[](https://goreportcard.com/report/github.com/go-openapi/jsonpointer)
+<!-- Badges: status -->
+[![Tests][test-badge]][test-url] [![Coverage][cov-badge]][cov-url] [![CI vuln scan][vuln-scan-badge]][vuln-scan-url] [![CodeQL][codeql-badge]][codeql-url]
+<!-- Badges: release & docker images -->
+<!-- Badges: code quality -->
+<!-- Badges: license & compliance -->
+[![Release][release-badge]][release-url] [![Go Report Card][gocard-badge]][gocard-url] [![CodeFactor Grade][codefactor-badge]][codefactor-url] [![License][license-badge]][license-url]
+<!-- Badges: documentation & support -->
+<!-- Badges: others & stats -->
+[![GoDoc][godoc-badge]][godoc-url] [![Slack Channel][slack-logo]![slack-badge]][slack-url] [![go version][goversion-badge]][goversion-url] ![Top language][top-badge] ![Commits since latest release][commits-badge]
-An implementation of JSON Pointer - Go language
+---
+
+An implementation of JSON Pointer for golang, which supports go `struct`.
## Status
-Completed YES
-Tested YES
+API is stable.
+
+## Import this library in your project
+
+```cmd
+go get github.com/go-openapi/jsonpointer
+```
+
+## Basic usage
+
+See also some [examples](./examples_test.go)
+
+### Retrieving a value
+
+```go
+ import (
+ "github.com/go-openapi/jsonpointer"
+ )
+
+
+ var doc any
+
+ ...
+
+ pointer, err := jsonpointer.New("/foo/1")
+ if err != nil {
+ ... // error: e.g. invalid JSON pointer specification
+ }
+
+ value, kind, err := pointer.Get(doc)
+ if err != nil {
+ ... // error: e.g. key not found, index out of bounds, etc.
+ }
+
+ ...
+```
+
+### Setting a value
+
+```go
+ ...
+ var doc any
+ ...
+ pointer, err := jsonpointer.New("/foo/1")
+ if err != nil {
+ ... // error: e.g. invalid JSON pointer specification
+ }
+
+ doc, err = p.Set(doc, "value")
+ if err != nil {
+ ... // error: e.g. key not found, index out of bounds, etc.
+ }
+```
+
+## Change log
+
+See <https://github.com/go-openapi/jsonpointer/releases>
## References
also known as [RFC6901](https://www.rfc-editor.org/rfc/rfc6901)
-### Note
+## Licensing
+
+This library ships under the [SPDX-License-Identifier: Apache-2.0](./LICENSE).
+
+See the license [NOTICE](./NOTICE), which recalls the licensing terms of all the pieces of software
+on top of which it has been built.
+
+## Limitations
+
+The 4.Evaluation part of the previous reference, starting with 'If the currently referenced value is a JSON array,
+the reference token MUST contain either...' is not implemented.
+
+That is because our implementation of the JSON pointer only supports explicit references to array elements:
+the provision in the spec to resolve non-existent members as "the last element in the array",
+using the special trailing character "-" is not implemented.
+
+## Other documentation
+
+* [All-time contributors](./CONTRIBUTORS.md)
+* [Contributing guidelines](.github/CONTRIBUTING.md)
+* [Maintainers documentation](docs/MAINTAINERS.md)
+* [Code style](docs/STYLE.md)
+
+## Cutting a new release
+
+Maintainers can cut a new release by either:
-The 4.Evaluation part of the previous reference, starting with 'If the currently referenced value is a JSON array, the reference token MUST contain either...' is not implemented.
+* running [this workflow](https://github.com/go-openapi/jsonpointer/actions/workflows/bump-release.yml)
+* or pushing a semver tag
+ * signed tags are preferred
+ * The tag message is prepended to release notes
-That is because our implementation of the JSON pointer only supports explicit references to array elements: the provision in the spec
-to resolve non-existent members as "the last element in the array", using the special trailing character "-".
+<!-- Badges: status -->
+[test-badge]: https://github.com/go-openapi/jsonpointer/actions/workflows/go-test.yml/badge.svg
+[test-url]: https://github.com/go-openapi/jsonpointer/actions/workflows/go-test.yml
+[cov-badge]: https://codecov.io/gh/go-openapi/jsonpointer/branch/master/graph/badge.svg
+[cov-url]: https://codecov.io/gh/go-openapi/jsonpointer
+[vuln-scan-badge]: https://github.com/go-openapi/jsonpointer/actions/workflows/scanner.yml/badge.svg
+[vuln-scan-url]: https://github.com/go-openapi/jsonpointer/actions/workflows/scanner.yml
+[codeql-badge]: https://github.com/go-openapi/jsonpointer/actions/workflows/codeql.yml/badge.svg
+[codeql-url]: https://github.com/go-openapi/jsonpointer/actions/workflows/codeql.yml
+<!-- Badges: release & docker images -->
+[release-badge]: https://badge.fury.io/gh/go-openapi%2Fjsonpointer.svg
+[release-url]: https://badge.fury.io/gh/go-openapi%2Fjsonpointer
+[gomod-badge]: https://badge.fury.io/go/github.com%2Fgo-openapi%2Fjsonpointer.svg
+[gomod-url]: https://badge.fury.io/go/github.com%2Fgo-openapi%2Fjsonpointer
+<!-- Badges: code quality -->
+[gocard-badge]: https://goreportcard.com/badge/github.com/go-openapi/jsonpointer
+[gocard-url]: https://goreportcard.com/report/github.com/go-openapi/jsonpointer
+[codefactor-badge]: https://img.shields.io/codefactor/grade/github/go-openapi/jsonpointer
+[codefactor-url]: https://www.codefactor.io/repository/github/go-openapi/jsonpointer
+<!-- Badges: documentation & support -->
+[doc-badge]: https://img.shields.io/badge/doc-site-blue?link=https%3A%2F%2Fgoswagger.io%2Fgo-openapi%2F
+[doc-url]: https://goswagger.io/go-openapi
+[godoc-badge]: https://pkg.go.dev/badge/github.com/go-openapi/jsonpointer
+[godoc-url]: http://pkg.go.dev/github.com/go-openapi/jsonpointer
+[slack-logo]: https://a.slack-edge.com/e6a93c1/img/icons/favicon-32.png
+[slack-badge]: https://img.shields.io/badge/slack-blue?link=https%3A%2F%2Fgoswagger.slack.com%2Farchives%2FC04R30YM
+[slack-url]: https://goswagger.slack.com/archives/C04R30YMU
+<!-- Badges: license & compliance -->
+[license-badge]: http://img.shields.io/badge/license-Apache%20v2-orange.svg
+[license-url]: https://github.com/go-openapi/jsonpointer/?tab=Apache-2.0-1-ov-file#readme
+<!-- Badges: others & stats -->
+[goversion-badge]: https://img.shields.io/github/go-mod/go-version/go-openapi/jsonpointer
+[goversion-url]: https://github.com/go-openapi/jsonpointer/blob/master/go.mod
+[top-badge]: https://img.shields.io/github/languages/top/go-openapi/jsonpointer
+[commits-badge]: https://img.shields.io/github/commits-since/go-openapi/jsonpointer/latest
--- /dev/null
+# Security Policy
+
+This policy outlines the commitment and practices of the go-openapi maintainers regarding security.
+
+## Supported Versions
+
+| Version | Supported |
+| ------- | ------------------ |
+| 0.22.x | :white_check_mark: |
+
+## Reporting a vulnerability
+
+If you become aware of a security vulnerability that affects the current repository,
+please report it privately to the maintainers.
+
+Please follow the instructions provided by github to
+[Privately report a security vulnerability](https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing-information-about-vulnerabilities/privately-reporting-a-security-vulnerability#privately-reporting-a-security-vulnerability).
+
+TL;DR: on Github, navigate to the project's "Security" tab then click on "Report a vulnerability".
+// SPDX-FileCopyrightText: Copyright (c) 2015-2025 go-swagger maintainers
+// SPDX-License-Identifier: Apache-2.0
+
package jsonpointer
+import "fmt"
+
type pointerError string
func (e pointerError) Error() string {
}
const (
- // ErrPointer is an error raised by the jsonpointer package
+ // ErrPointer is a sentinel error raised by all errors from this package.
ErrPointer pointerError = "JSON pointer error"
- // ErrInvalidStart states that a JSON pointer must start with a separator ("/")
+ // ErrInvalidStart states that a JSON pointer must start with a separator ("/").
ErrInvalidStart pointerError = `JSON pointer must be empty or start with a "` + pointerSeparator
- // ErrUnsupportedValueType indicates that a value of the wrong type is being set
+ // ErrUnsupportedValueType indicates that a value of the wrong type is being set.
ErrUnsupportedValueType pointerError = "only structs, pointers, maps and slices are supported for setting values"
)
+
+func errNoKey(key string) error {
+ return fmt.Errorf("object has no key %q: %w", key, ErrPointer)
+}
+
+func errOutOfBounds(length, idx int) error {
+ return fmt.Errorf("index out of bounds array[0,%d] index '%d': %w", length-1, idx, ErrPointer)
+}
+
+func errInvalidReference(token string) error {
+ return fmt.Errorf("invalid token reference %q: %w", token, ErrPointer)
+}
-// Copyright 2013 sigu-399 ( https://github.com/sigu-399 )
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// author sigu-399
-// author-github https://github.com/sigu-399
-// author-mail sigu.399@gmail.com
-//
-// repository-name jsonpointer
-// repository-desc An implementation of JSON Pointer - Go language
-//
-// description Main and unique file.
-//
-// created 25-02-2013
+// SPDX-FileCopyrightText: Copyright (c) 2015-2025 go-swagger maintainers
+// SPDX-License-Identifier: Apache-2.0
+// Package jsonpointer provides a golang implementation for json pointers.
package jsonpointer
import (
pointerSeparator = `/`
)
-var (
- jsonPointableType = reflect.TypeOf(new(JSONPointable)).Elem()
- jsonSetableType = reflect.TypeOf(new(JSONSetable)).Elem()
-)
-
-// JSONPointable is an interface for structs to implement when they need to customize the
-// json pointer process
+// JSONPointable is an interface for structs to implement,
+// when they need to customize the json pointer process or want to avoid the use of reflection.
type JSONPointable interface {
- JSONLookup(string) (any, error)
+ // JSONLookup returns a value pointed at this (unescaped) key.
+ JSONLookup(key string) (any, error)
}
-// JSONSetable is an interface for structs to implement when they need to customize the
-// json pointer process
+// JSONSetable is an interface for structs to implement,
+// when they need to customize the json pointer process or want to avoid the use of reflection.
type JSONSetable interface {
- JSONSet(string, any) error
+ // JSONSet sets the value pointed at the (unescaped) key.
+ JSONSet(key string, value any) error
}
-// Pointer is a representation of a json pointer
+// Pointer is a representation of a json pointer.
+//
+// Use [Pointer.Get] to retrieve a value or [Pointer.Set] to set a value.
+//
+// It works with any go type interpreted as a JSON document, which means:
+//
+// - if a type implements [JSONPointable], its [JSONPointable.JSONLookup] method is used to resolve [Pointer.Get]
+// - if a type implements [JSONSetable], its [JSONPointable.JSONSet] method is used to resolve [Pointer.Set]
+// - a go map[K]V is interpreted as an object, with type K assignable to a string
+// - a go slice []T is interpreted as an array
+// - a go struct is interpreted as an object, with exported fields interpreted as keys
+// - promoted fields from an embedded struct are traversed
+// - scalars (e.g. int, float64 ...), channels, functions and go arrays cannot be traversed
+//
+// For struct s resolved by reflection, key mappings honor the conventional struct tag `json`.
+//
+// Fields that do not specify a `json` tag, or specify an empty one, or are tagged as `json:"-"` are ignored.
+//
+// # Limitations
+//
+// - Unlike go standard marshaling, untagged fields do not default to the go field name and are ignored.
+// - anonymous fields are not traversed if untagged
type Pointer struct {
referenceTokens []string
}
-// New creates a new json pointer for the given string
+// New creates a new json pointer from its string representation.
func New(jsonPointerString string) (Pointer, error) {
var p Pointer
err := p.parse(jsonPointerString)
return p, err
}
-// Get uses the pointer to retrieve a value from a JSON document
+// Get uses the pointer to retrieve a value from a JSON document.
+//
+// It returns the value with its type as a [reflect.Kind] or an error.
func (p *Pointer) Get(document any) (any, reflect.Kind, error) {
return p.get(document, jsonname.DefaultJSONNameProvider)
}
-// Set uses the pointer to set a value from a JSON document
+// Set uses the pointer to set a value from a data type
+// that represent a JSON document.
+//
+// It returns the updated document.
func (p *Pointer) Set(document any, value any) (any, error) {
return document, p.set(document, value, jsonname.DefaultJSONNameProvider)
}
-// DecodedTokens returns the decoded tokens of this JSON pointer
+// DecodedTokens returns the decoded (unescaped) tokens of this JSON pointer.
func (p *Pointer) DecodedTokens() []string {
result := make([]string, 0, len(p.referenceTokens))
- for _, t := range p.referenceTokens {
- result = append(result, Unescape(t))
+ for _, token := range p.referenceTokens {
+ result = append(result, Unescape(token))
}
+
return result
}
-// IsEmpty returns true if this is an empty json pointer
-// this indicates that it points to the root document
+// IsEmpty returns true if this is an empty json pointer.
+//
+// This indicates that it points to the root document.
func (p *Pointer) IsEmpty() bool {
return len(p.referenceTokens) == 0
}
-// Pointer to string representation function
+// String representation of a pointer.
func (p *Pointer) String() string {
-
if len(p.referenceTokens) == 0 {
return emptyPointer
}
return offset, nil
}
-// "Constructor", parses the given string JSON pointer
+// "Constructor", parses the given string JSON pointer.
func (p *Pointer) parse(jsonPointerString string) error {
- var err error
-
- if jsonPointerString != emptyPointer {
- if !strings.HasPrefix(jsonPointerString, pointerSeparator) {
- err = errors.Join(ErrInvalidStart, ErrPointer)
- } else {
- referenceTokens := strings.Split(jsonPointerString, pointerSeparator)
- p.referenceTokens = append(p.referenceTokens, referenceTokens[1:]...)
- }
+ if jsonPointerString == emptyPointer {
+ return nil
+ }
+
+ if !strings.HasPrefix(jsonPointerString, pointerSeparator) {
+ // non empty pointer must start with "/"
+ return errors.Join(ErrInvalidStart, ErrPointer)
}
- return err
+ referenceTokens := strings.Split(jsonPointerString, pointerSeparator)
+ p.referenceTokens = append(p.referenceTokens, referenceTokens[1:]...)
+
+ return nil
}
func (p *Pointer) get(node any, nameProvider *jsonname.NameProvider) (any, reflect.Kind, error) {
kind := reflect.Invalid
- // Full document when empty
+ // full document when empty
if len(p.referenceTokens) == 0 {
return node, kind, nil
}
if knd != reflect.Pointer && knd != reflect.Struct && knd != reflect.Map && knd != reflect.Slice && knd != reflect.Array {
return errors.Join(
+ fmt.Errorf("unexpected type: %T", node), //nolint:err113 // err wrapping is carried out by errors.Join, not fmt.Errorf.
ErrUnsupportedValueType,
ErrPointer,
)
}
+ l := len(p.referenceTokens)
+
+ // full document when empty
+ if l == 0 {
+ return nil
+ }
+
if nameProvider == nil {
nameProvider = jsonname.DefaultJSONNameProvider
}
- // Full document when empty
- if len(p.referenceTokens) == 0 {
- return nil
+ var decodedToken string
+ lastIndex := l - 1
+
+ if lastIndex > 0 { // skip if we only have one token in pointer
+ for _, token := range p.referenceTokens[:lastIndex] {
+ decodedToken = Unescape(token)
+ next, err := p.resolveNodeForToken(node, decodedToken, nameProvider)
+ if err != nil {
+ return err
+ }
+
+ node = next
+ }
}
- lastI := len(p.referenceTokens) - 1
- for i, token := range p.referenceTokens {
- isLastToken := i == lastI
- decodedToken := Unescape(token)
+ // last token
+ decodedToken = Unescape(p.referenceTokens[lastIndex])
- if isLastToken {
+ return setSingleImpl(node, data, decodedToken, nameProvider)
+}
- return setSingleImpl(node, data, decodedToken, nameProvider)
+func (p *Pointer) resolveNodeForToken(node any, decodedToken string, nameProvider *jsonname.NameProvider) (next any, err error) {
+ // check for nil during traversal
+ if isNil(node) {
+ return nil, fmt.Errorf("cannot traverse through nil value at %q: %w", decodedToken, ErrPointer)
+ }
+
+ pointable, ok := node.(JSONPointable)
+ if ok {
+ r, err := pointable.JSONLookup(decodedToken)
+ if err != nil {
+ return nil, err
}
- // Check for nil during traversal
- if isNil(node) {
- return fmt.Errorf("cannot traverse through nil value at %q: %w", decodedToken, ErrPointer)
+ fld := reflect.ValueOf(r)
+ if fld.CanAddr() && fld.Kind() != reflect.Interface && fld.Kind() != reflect.Map && fld.Kind() != reflect.Slice && fld.Kind() != reflect.Pointer {
+ return fld.Addr().Interface(), nil
}
- rValue := reflect.Indirect(reflect.ValueOf(node))
- kind := rValue.Kind()
+ return r, nil
+ }
- if rValue.Type().Implements(jsonPointableType) {
- r, err := node.(JSONPointable).JSONLookup(decodedToken)
- if err != nil {
- return err
- }
- fld := reflect.ValueOf(r)
- if fld.CanAddr() && fld.Kind() != reflect.Interface && fld.Kind() != reflect.Map && fld.Kind() != reflect.Slice && fld.Kind() != reflect.Pointer {
- node = fld.Addr().Interface()
- continue
- }
- node = r
- continue
+ rValue := reflect.Indirect(reflect.ValueOf(node))
+ kind := rValue.Kind()
+
+ switch kind {
+ case reflect.Struct:
+ nm, ok := nameProvider.GetGoNameForType(rValue.Type(), decodedToken)
+ if !ok {
+ return nil, fmt.Errorf("object has no field %q: %w", decodedToken, ErrPointer)
}
- switch kind { //nolint:exhaustive
- case reflect.Struct:
- nm, ok := nameProvider.GetGoNameForType(rValue.Type(), decodedToken)
- if !ok {
- return fmt.Errorf("object has no field %q: %w", decodedToken, ErrPointer)
- }
- fld := rValue.FieldByName(nm)
- if fld.CanAddr() && fld.Kind() != reflect.Interface && fld.Kind() != reflect.Map && fld.Kind() != reflect.Slice && fld.Kind() != reflect.Pointer {
- node = fld.Addr().Interface()
- continue
- }
- node = fld.Interface()
+ return typeFromValue(rValue.FieldByName(nm)), nil
- case reflect.Map:
- kv := reflect.ValueOf(decodedToken)
- mv := rValue.MapIndex(kv)
+ case reflect.Map:
+ kv := reflect.ValueOf(decodedToken)
+ mv := rValue.MapIndex(kv)
- if !mv.IsValid() {
- return fmt.Errorf("object has no key %q: %w", decodedToken, ErrPointer)
- }
- if mv.CanAddr() && mv.Kind() != reflect.Interface && mv.Kind() != reflect.Map && mv.Kind() != reflect.Slice && mv.Kind() != reflect.Pointer {
- node = mv.Addr().Interface()
- continue
- }
- node = mv.Interface()
+ if !mv.IsValid() {
+ return nil, errNoKey(decodedToken)
+ }
- case reflect.Slice:
- tokenIndex, err := strconv.Atoi(decodedToken)
- if err != nil {
- return err
- }
- sLength := rValue.Len()
- if tokenIndex < 0 || tokenIndex >= sLength {
- return fmt.Errorf("index out of bounds array[0,%d] index '%d': %w", sLength, tokenIndex, ErrPointer)
- }
+ return typeFromValue(mv), nil
- elem := rValue.Index(tokenIndex)
- if elem.CanAddr() && elem.Kind() != reflect.Interface && elem.Kind() != reflect.Map && elem.Kind() != reflect.Slice && elem.Kind() != reflect.Pointer {
- node = elem.Addr().Interface()
- continue
- }
- node = elem.Interface()
+ case reflect.Slice:
+ tokenIndex, err := strconv.Atoi(decodedToken)
+ if err != nil {
+ return nil, errors.Join(err, ErrPointer)
+ }
- default:
- return fmt.Errorf("invalid token reference %q: %w", decodedToken, ErrPointer)
+ sLength := rValue.Len()
+ if tokenIndex < 0 || tokenIndex >= sLength {
+ return nil, errOutOfBounds(sLength, tokenIndex)
}
- }
- return nil
+ return typeFromValue(rValue.Index(tokenIndex)), nil
+
+ default:
+ return nil, errInvalidReference(decodedToken)
+ }
}
func isNil(input any) bool {
}
kind := reflect.TypeOf(input).Kind()
- switch kind { //nolint:exhaustive
+ switch kind {
case reflect.Pointer, reflect.Map, reflect.Slice, reflect.Chan:
return reflect.ValueOf(input).IsNil()
default:
}
}
-// GetForToken gets a value for a json pointer token 1 level deep
+func typeFromValue(v reflect.Value) any {
+ if v.CanAddr() && v.Kind() != reflect.Interface && v.Kind() != reflect.Map && v.Kind() != reflect.Slice && v.Kind() != reflect.Pointer {
+ return v.Addr().Interface()
+ }
+
+ return v.Interface()
+}
+
+// GetForToken gets a value for a json pointer token 1 level deep.
func GetForToken(document any, decodedToken string) (any, reflect.Kind, error) {
return getSingleImpl(document, decodedToken, jsonname.DefaultJSONNameProvider)
}
-// SetForToken gets a value for a json pointer token 1 level deep
+// SetForToken sets a value for a json pointer token 1 level deep.
func SetForToken(document any, decodedToken string, value any) (any, error) {
return document, setSingleImpl(document, value, decodedToken, jsonname.DefaultJSONNameProvider)
}
return getSingleImpl(*typed, decodedToken, nameProvider)
}
- switch kind { //nolint:exhaustive
+ switch kind {
case reflect.Struct:
nm, ok := nameProvider.GetGoNameForType(rValue.Type(), decodedToken)
if !ok {
return nil, kind, fmt.Errorf("object has no field %q: %w", decodedToken, ErrPointer)
}
+
fld := rValue.FieldByName(nm)
+
return fld.Interface(), kind, nil
case reflect.Map:
if mv.IsValid() {
return mv.Interface(), kind, nil
}
- return nil, kind, fmt.Errorf("object has no key %q: %w", decodedToken, ErrPointer)
+
+ return nil, kind, errNoKey(decodedToken)
case reflect.Slice:
tokenIndex, err := strconv.Atoi(decodedToken)
if err != nil {
- return nil, kind, err
+ return nil, kind, errors.Join(err, ErrPointer)
}
sLength := rValue.Len()
if tokenIndex < 0 || tokenIndex >= sLength {
- return nil, kind, fmt.Errorf("index out of bounds array[0,%d] index '%d': %w", sLength-1, tokenIndex, ErrPointer)
+ return nil, kind, errOutOfBounds(sLength, tokenIndex)
}
elem := rValue.Index(tokenIndex)
return elem.Interface(), kind, nil
default:
- return nil, kind, fmt.Errorf("invalid token reference %q: %w", decodedToken, ErrPointer)
+ return nil, kind, errInvalidReference(decodedToken)
}
}
func setSingleImpl(node, data any, decodedToken string, nameProvider *jsonname.NameProvider) error {
- rValue := reflect.Indirect(reflect.ValueOf(node))
-
- // Check for nil to prevent panic when calling rValue.Type()
+ // check for nil to prevent panic when calling rValue.Type()
if isNil(node) {
return fmt.Errorf("cannot set field %q on nil value: %w", decodedToken, ErrPointer)
}
- if ns, ok := node.(JSONSetable); ok { // pointer impl
+ if ns, ok := node.(JSONSetable); ok {
return ns.JSONSet(decodedToken, data)
}
- if rValue.Type().Implements(jsonSetableType) {
- return node.(JSONSetable).JSONSet(decodedToken, data)
- }
+ rValue := reflect.Indirect(reflect.ValueOf(node))
- switch rValue.Kind() { //nolint:exhaustive
+ switch rValue.Kind() {
case reflect.Struct:
nm, ok := nameProvider.GetGoNameForType(rValue.Type(), decodedToken)
if !ok {
return fmt.Errorf("object has no field %q: %w", decodedToken, ErrPointer)
}
+
fld := rValue.FieldByName(nm)
- if fld.IsValid() {
- fld.Set(reflect.ValueOf(data))
+ if !fld.CanSet() {
+ return fmt.Errorf("can't set struct field %s to %v: %w", nm, data, ErrPointer)
+ }
+
+ value := reflect.ValueOf(data)
+ valueType := value.Type()
+ assignedType := fld.Type()
+
+ if !valueType.AssignableTo(assignedType) {
+ return fmt.Errorf("can't set value with type %T to field %s with type %v: %w", data, nm, assignedType, ErrPointer)
}
+
+ fld.Set(value)
+
return nil
case reflect.Map:
kv := reflect.ValueOf(decodedToken)
rValue.SetMapIndex(kv, reflect.ValueOf(data))
+
return nil
case reflect.Slice:
tokenIndex, err := strconv.Atoi(decodedToken)
if err != nil {
- return err
+ return errors.Join(err, ErrPointer)
}
+
sLength := rValue.Len()
if tokenIndex < 0 || tokenIndex >= sLength {
- return fmt.Errorf("index out of bounds array[0,%d] index '%d': %w", sLength, tokenIndex, ErrPointer)
+ return errOutOfBounds(sLength, tokenIndex)
}
elem := rValue.Index(tokenIndex)
if !elem.CanSet() {
return fmt.Errorf("can't set slice index %s to %v: %w", decodedToken, data, ErrPointer)
}
- elem.Set(reflect.ValueOf(data))
+
+ value := reflect.ValueOf(data)
+ valueType := value.Type()
+ assignedType := elem.Type()
+
+ if !valueType.AssignableTo(assignedType) {
+ return fmt.Errorf("can't set value with type %T to slice element %d with type %v: %w", data, tokenIndex, assignedType, ErrPointer)
+ }
+
+ elem.Set(value)
+
return nil
default:
- return fmt.Errorf("invalid token reference %q: %w", decodedToken, ErrPointer)
+ return errInvalidReference(decodedToken)
}
}
return 0, fmt.Errorf("invalid token %#v: %w", tk, ErrPointer)
}
}
+
return 0, fmt.Errorf("token reference %q not found: %w", decodedToken, ErrPointer)
}
func offsetSingleArray(dec *json.Decoder, decodedToken string) (int64, error) {
idx, err := strconv.Atoi(decodedToken)
if err != nil {
- return 0, fmt.Errorf("token reference %q is not a number: %v: %w", decodedToken, err, ErrPointer)
+ return 0, fmt.Errorf("token reference %q is not a number: %w: %w", decodedToken, err, ErrPointer)
}
var i int
for i = 0; i < idx && dec.More(); i++ {
if !dec.More() {
return 0, fmt.Errorf("token reference %q not found: %w", decodedToken, ErrPointer)
}
+
return dec.InputOffset(), nil
}
// drainSingle drains a single level of object or array.
+//
// The decoder has to guarantee the beginning delim (i.e. '{' or '[') has been consumed.
func drainSingle(dec *json.Decoder) error {
for dec.More() {
}
}
- // Consumes the ending delim
+ // consumes the ending delim
if _, err := dec.Token(); err != nil {
return err
}
+
return nil
}
-// Specific JSON pointer encoding here
+// JSON pointer encoding:
// ~0 => ~
// ~1 => /
// ... and vice versa
)
var (
- encRefTokReplacer = strings.NewReplacer(encRefTok1, decRefTok1, encRefTok0, decRefTok0)
- decRefTokReplacer = strings.NewReplacer(decRefTok1, encRefTok1, decRefTok0, encRefTok0)
+ encRefTokReplacer = strings.NewReplacer(encRefTok1, decRefTok1, encRefTok0, decRefTok0) //nolint:gochecknoglobals // it's okay to declare a replacer as a private global
+ decRefTokReplacer = strings.NewReplacer(decRefTok1, encRefTok1, decRefTok0, encRefTok0) //nolint:gochecknoglobals // it's okay to declare a replacer as a private global
)
-// Unescape unescapes a json pointer reference token string to the original representation
+// Unescape unescapes a json pointer reference token string to the original representation.
func Unescape(token string) string {
return encRefTokReplacer.Replace(token)
}
-// Escape escapes a pointer reference token string
+// Escape escapes a pointer reference token string.
+//
+// The JSONPointer specification defines "/" as a separator and "~" as an escape prefix.
+//
+// Keys containing such characters are escaped with the following rules:
+//
+// - "~" is escaped as "~0"
+// - "/" is escaped as "~1"
func Escape(token string) string {
return decRefTokReplacer.Replace(token)
}
--- /dev/null
+# git-cliff ~ configuration file
+# https://git-cliff.org/docs/configuration
+
+[changelog]
+header = """
+"""
+
+footer = """
+
+-----
+
+**[{{ remote.github.repo }}]({{ self::remote_url() }}) license terms**
+
+[![License][license-badge]][license-url]
+
+[license-badge]: http://img.shields.io/badge/license-Apache%20v2-orange.svg
+[license-url]: {{ self::remote_url() }}/?tab=Apache-2.0-1-ov-file#readme
+
+{%- macro remote_url() -%}
+ https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }}
+{%- endmacro -%}
+"""
+
+body = """
+{%- if version %}
+## [{{ version | trim_start_matches(pat="v") }}]({{ self::remote_url() }}/tree/{{ version }}) - {{ timestamp | date(format="%Y-%m-%d") }}
+{%- else %}
+## [unreleased]
+{%- endif %}
+{%- if message %}
+ {%- raw %}\n{% endraw %}
+{{ message }}
+ {%- raw %}\n{% endraw %}
+{%- endif %}
+{%- if version %}
+ {%- if previous.version %}
+
+**Full Changelog**: <{{ self::remote_url() }}/compare/{{ previous.version }}...{{ version }}>
+ {%- endif %}
+{%- else %}
+ {%- raw %}\n{% endraw %}
+{%- endif %}
+
+{%- if statistics %}{% if statistics.commit_count %}
+ {%- raw %}\n{% endraw %}
+{{ statistics.commit_count }} commits in this release.
+ {%- raw %}\n{% endraw %}
+{%- endif %}{% endif %}
+-----
+
+{%- for group, commits in commits | group_by(attribute="group") %}
+ {%- raw %}\n{% endraw %}
+### {{ group | upper_first }}
+ {%- raw %}\n{% endraw %}
+ {%- for commit in commits %}
+ {%- if commit.remote.pr_title %}
+ {%- set commit_message = commit.remote.pr_title %}
+ {%- else %}
+ {%- set commit_message = commit.message %}
+ {%- endif %}
+* {{ commit_message | split(pat="\n") | first | trim }}
+ {%- if commit.remote.username %}
+{%- raw %} {% endraw %}by [@{{ commit.remote.username }}](https://github.com/{{ commit.remote.username }})
+ {%- endif %}
+ {%- if commit.remote.pr_number %}
+{%- raw %} {% endraw %}in [#{{ commit.remote.pr_number }}]({{ self::remote_url() }}/pull/{{ commit.remote.pr_number }})
+ {%- endif %}
+{%- raw %} {% endraw %}[...]({{ self::remote_url() }}/commit/{{ commit.id }})
+ {%- endfor %}
+{%- endfor %}
+
+{%- if github %}
+{%- raw %}\n{% endraw -%}
+ {%- set all_contributors = github.contributors | length %}
+ {%- if github.contributors | filter(attribute="username", value="dependabot[bot]") | length < all_contributors %}
+-----
+
+### People who contributed to this release
+ {% endif %}
+ {%- for contributor in github.contributors | filter(attribute="username") | sort(attribute="username") %}
+ {%- if contributor.username != "dependabot[bot]" and contributor.username != "github-actions[bot]" %}
+* [@{{ contributor.username }}](https://github.com/{{ contributor.username }})
+ {%- endif %}
+ {%- endfor %}
+
+ {% if github.contributors | filter(attribute="is_first_time", value=true) | length != 0 %}
+-----
+ {%- raw %}\n{% endraw %}
+
+### New Contributors
+ {%- endif %}
+
+ {%- for contributor in github.contributors | filter(attribute="is_first_time", value=true) %}
+ {%- if contributor.username != "dependabot[bot]" and contributor.username != "github-actions[bot]" %}
+* @{{ contributor.username }} made their first contribution
+ {%- if contributor.pr_number %}
+ in [#{{ contributor.pr_number }}]({{ self::remote_url() }}/pull/{{ contributor.pr_number }}) \
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+{%- endif %}
+
+{%- raw %}\n{% endraw %}
+
+{%- macro remote_url() -%}
+ https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }}
+{%- endmacro -%}
+"""
+# Remove leading and trailing whitespaces from the changelog's body.
+trim = true
+# Render body even when there are no releases to process.
+render_always = true
+# An array of regex based postprocessors to modify the changelog.
+postprocessors = [
+ # Replace the placeholder <REPO> with a URL.
+ #{ pattern = '<REPO>', replace = "https://github.com/orhun/git-cliff" },
+]
+# output file path
+# output = "test.md"
+
+[git]
+# Parse commits according to the conventional commits specification.
+# See https://www.conventionalcommits.org
+conventional_commits = false
+# Exclude commits that do not match the conventional commits specification.
+filter_unconventional = false
+# Require all commits to be conventional.
+# Takes precedence over filter_unconventional.
+require_conventional = false
+# Split commits on newlines, treating each line as an individual commit.
+split_commits = false
+# An array of regex based parsers to modify commit messages prior to further processing.
+commit_preprocessors = [
+ # Replace issue numbers with link templates to be updated in `changelog.postprocessors`.
+ #{ pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](<REPO>/issues/${2}))"},
+ # Check spelling of the commit message using https://github.com/crate-ci/typos.
+ # If the spelling is incorrect, it will be fixed automatically.
+ #{ pattern = '.*', replace_command = 'typos --write-changes -' }
+]
+# Prevent commits that are breaking from being excluded by commit parsers.
+protect_breaking_commits = false
+# An array of regex based parsers for extracting data from the commit message.
+# Assigns commits to groups.
+# Optionally sets the commit's scope and can decide to exclude commits from further processing.
+commit_parsers = [
+ { message = "^[Cc]hore\\([Rr]elease\\): prepare for", skip = true },
+ { message = "(^[Mm]erge)|([Mm]erge conflict)", skip = true },
+ { field = "author.name", pattern = "dependabot*", group = "<!-- 0A -->Updates" },
+ { message = "([Ss]ecurity)|([Vv]uln)", group = "<!-- 08 -->Security" },
+ { body = "(.*[Ss]ecurity)|([Vv]uln)", group = "<!-- 08 -->Security" },
+ { message = "([Cc]hore\\(lint\\))|(style)|(lint)|(codeql)|(golangci)", group = "<!-- 05 -->Code quality" },
+ { message = "(^[Dd]oc)|((?i)readme)|(badge)|(typo)|(documentation)", group = "<!-- 03 -->Documentation" },
+ { message = "(^[Ff]eat)|(^[Ee]nhancement)", group = "<!-- 00 -->Implemented enhancements" },
+ { message = "(^ci)|(\\(ci\\))|(fixup\\s+ci)|(fix\\s+ci)|(license)|(example)", group = "<!-- 07 -->Miscellaneous tasks" },
+ { message = "^test", group = "<!-- 06 -->Testing" },
+ { message = "(^fix)|(panic)", group = "<!-- 01 -->Fixed bugs" },
+ { message = "(^refact)|(rework)", group = "<!-- 02 -->Refactor" },
+ { message = "(^[Pp]erf)|(performance)", group = "<!-- 04 -->Performance" },
+ { message = "(^[Cc]hore)", group = "<!-- 07 -->Miscellaneous tasks" },
+ { message = "^[Rr]evert", group = "<!-- 09 -->Reverted changes" },
+ { message = "(upgrade.*?go)|(go\\s+version)", group = "<!-- 0A -->Updates" },
+ { message = ".*", group = "<!-- 0B -->Other" },
+]
+# Exclude commits that are not matched by any commit parser.
+filter_commits = false
+# An array of link parsers for extracting external references, and turning them into URLs, using regex.
+link_parsers = []
+# Include only the tags that belong to the current branch.
+use_branch_tags = false
+# Order releases topologically instead of chronologically.
+topo_order = false
+# Order releases topologically instead of chronologically.
+topo_order_commits = true
+# Order of commits in each group/release within the changelog.
+# Allowed values: newest, oldest
+sort_commits = "newest"
+# Process submodules commits
+recurse_submodules = false
+
+#[remote.github]
+#owner = "go-openapi"
--- /dev/null
+# top-most EditorConfig file
+root = true
+
+# Unix-style newlines with a newline ending every file
+[*]
+end_of_line = lf
+insert_final_newline = true
+indent_style = space
+indent_size = 2
+trim_trailing_whitespace = true
+
+# Set default charset
+[*.{js,py,go,scala,rb,java,html,css,less,sass,md}]
+charset = utf-8
+
+# Tab indentation (no size specified)
+[*.go]
+indent_style = tab
+
+[*.md]
+trim_trailing_whitespace = false
+
+# Matches the exact files either package.json or .travis.yml
+[{package.json,.travis.yml}]
+indent_style = space
+indent_size = 2
linters:
default: all
disable:
- - cyclop
- depguard
- - errchkjson
- - errorlint
- - exhaustruct
- - forcetypeassert
- funlen
- - gochecknoglobals
- - gochecknoinits
- - gocognit
- - godot
- godox
- - gosmopolitan
- - inamedparam
- #- intrange # disabled while < go1.22
- - ireturn
- - lll
- - musttag
- - nestif
+ - exhaustruct
- nlreturn
- nonamedreturns
- noinlineerr
- paralleltest
- recvcheck
- testpackage
- - thelper
- tparallel
- - unparam
- varnamelen
- whitespace
- wrapcheck
goconst:
min-len: 2
min-occurrences: 3
+ cyclop:
+ max-complexity: 20
gocyclo:
- min-complexity: 45
+ min-complexity: 20
+ exhaustive:
+ default-signifies-exhaustive: true
+ default-case-required: true
+ lll:
+ line-length: 180
exclusions:
generated: lax
presets:
enable:
- gofmt
- goimports
+ - gofumpt
exclusions:
generated: lax
paths:
--- /dev/null
+# Contributors
+
+- Repository: ['go-openapi/jsonreference']
+
+| Total Contributors | Total Contributions |
+| --- | --- |
+| 9 | 68 |
+
+| Username | All Time Contribution Count | All Commits |
+| --- | --- | --- |
+| @fredbi | 31 | https://github.com/go-openapi/jsonreference/commits?author=fredbi |
+| @casualjim | 25 | https://github.com/go-openapi/jsonreference/commits?author=casualjim |
+| @youyuanwu | 5 | https://github.com/go-openapi/jsonreference/commits?author=youyuanwu |
+| @olivierlemasle | 2 | https://github.com/go-openapi/jsonreference/commits?author=olivierlemasle |
+| @apelisse | 1 | https://github.com/go-openapi/jsonreference/commits?author=apelisse |
+| @gbjk | 1 | https://github.com/go-openapi/jsonreference/commits?author=gbjk |
+| @honza | 1 | https://github.com/go-openapi/jsonreference/commits?author=honza |
+| @Neo2308 | 1 | https://github.com/go-openapi/jsonreference/commits?author=Neo2308 |
+| @erraggy | 1 | https://github.com/go-openapi/jsonreference/commits?author=erraggy |
+
+ _this file was generated by the [Contributors GitHub Action](https://github.com/github/contributors)_
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this software except in compliance with the License.
+
You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0.
+
This software is copied from, derived from, and inspired by other original software products.
It ships with copies of other software which license terms are recalled below.
-The original sofware was authored on 25-02-2013 by sigu-399 (https://github.com/sigu-399, sigu.399@gmail.com).
+The original software was authored on 25-02-2013 by sigu-399 (https://github.com/sigu-399, sigu.399@gmail.com).
github.com/sigh-399/jsonpointer
===========================
-# gojsonreference [](https://github.com/go-openapi/jsonreference/actions?query=workflow%3A"go+test") [](https://codecov.io/gh/go-openapi/jsonreference)
+# jsonreference
-[](https://slackin.goswagger.io)
-[](https://raw.githubusercontent.com/go-openapi/jsonreference/master/LICENSE)
-[](https://pkg.go.dev/github.com/go-openapi/jsonreference)
-[](https://goreportcard.com/report/github.com/go-openapi/jsonreference)
+<!-- Badges: status -->
+[![Tests][test-badge]][test-url] [![Coverage][cov-badge]][cov-url] [![CI vuln scan][vuln-scan-badge]][vuln-scan-url] [![CodeQL][codeql-badge]][codeql-url]
+<!-- Badges: release & docker images -->
+<!-- Badges: code quality -->
+<!-- Badges: license & compliance -->
+[![Release][release-badge]][release-url] [![Go Report Card][gocard-badge]][gocard-url] [![CodeFactor Grade][codefactor-badge]][codefactor-url] [![License][license-badge]][license-url]
+<!-- Badges: documentation & support -->
+<!-- Badges: others & stats -->
+[![GoDoc][godoc-badge]][godoc-url] [![Slack Channel][slack-logo]![slack-badge]][slack-url] [![go version][goversion-badge]][goversion-url] ![Top language][top-badge] ![Commits since latest release][commits-badge]
-An implementation of JSON Reference - Go language
+---
+
+An implementation of JSON Reference for golang.
## Status
-Feature complete. Stable API
+
+API is stable.
+
+## Import this library in your project
+
+```cmd
+go get github.com/go-openapi/jsonreference
+```
## Dependencies
+
* https://github.com/go-openapi/jsonpointer
+## Basic usage
+
+## Change log
+
+See <https://github.com/go-openapi/jsonreference/releases>
+
## References
* http://tools.ietf.org/html/draft-ietf-appsawg-json-pointer-07
See the license [NOTICE](./NOTICE), which recalls the licensing terms of all the pieces of software
on top of which it has been built.
+
+## Other documentation
+
+* [All-time contributors](./CONTRIBUTORS.md)
+* [Contributing guidelines](.github/CONTRIBUTING.md)
+* [Maintainers documentation](docs/MAINTAINERS.md)
+* [Code style](docs/STYLE.md)
+
+## Cutting a new release
+
+Maintainers can cut a new release by either:
+
+* running [this workflow](https://github.com/go-openapi/jsonreference/actions/workflows/bump-release.yml)
+* or pushing a semver tag
+ * signed tags are preferred
+ * The tag message is prepended to release notes
+
+<!-- Badges: status -->
+[test-badge]: https://github.com/go-openapi/jsonreference/actions/workflows/go-test.yml/badge.svg
+[test-url]: https://github.com/go-openapi/jsonreference/actions/workflows/go-test.yml
+[cov-badge]: https://codecov.io/gh/go-openapi/jsonreference/branch/master/graph/badge.svg
+[cov-url]: https://codecov.io/gh/go-openapi/jsonreference
+[vuln-scan-badge]: https://github.com/go-openapi/jsonreference/actions/workflows/scanner.yml/badge.svg
+[vuln-scan-url]: https://github.com/go-openapi/jsonreference/actions/workflows/scanner.yml
+[codeql-badge]: https://github.com/go-openapi/jsonreference/actions/workflows/codeql.yml/badge.svg
+[codeql-url]: https://github.com/go-openapi/jsonreference/actions/workflows/codeql.yml
+<!-- Badges: release & docker images -->
+[release-badge]: https://badge.fury.io/gh/go-openapi%2Fjsonreference.svg
+[release-url]: https://badge.fury.io/gh/go-openapi%2Fjsonreference
+[gomod-badge]: https://badge.fury.io/go/github.com%2Fgo-openapi%2Fjsonreference.svg
+[gomod-url]: https://badge.fury.io/go/github.com%2Fgo-openapi%2Fjsonreference
+<!-- Badges: code quality -->
+[gocard-badge]: https://goreportcard.com/badge/github.com/go-openapi/jsonreference
+[gocard-url]: https://goreportcard.com/report/github.com/go-openapi/jsonreference
+[codefactor-badge]: https://img.shields.io/codefactor/grade/github/go-openapi/jsonreference
+[codefactor-url]: https://www.codefactor.io/repository/github/go-openapi/jsonreference
+<!-- Badges: documentation & support -->
+[doc-badge]: https://img.shields.io/badge/doc-site-blue?link=https%3A%2F%2Fgoswagger.io%2Fgo-openapi%2F
+[doc-url]: https://goswagger.io/go-openapi
+[godoc-badge]: https://pkg.go.dev/badge/github.com/go-openapi/jsonreference
+[godoc-url]: http://pkg.go.dev/github.com/go-openapi/jsonreference
+[slack-logo]: https://a.slack-edge.com/e6a93c1/img/icons/favicon-32.png
+[slack-badge]: https://img.shields.io/badge/slack-blue?link=https%3A%2F%2Fgoswagger.slack.com%2Farchives%2FC04R30YM
+[slack-url]: https://goswagger.slack.com/archives/C04R30YMU
+<!-- Badges: license & compliance -->
+[license-badge]: http://img.shields.io/badge/license-Apache%20v2-orange.svg
+[license-url]: https://github.com/go-openapi/jsonreference/?tab=Apache-2.0-1-ov-file#readme
+<!-- Badges: others & stats -->
+[goversion-badge]: https://img.shields.io/github/go-mod/go-version/go-openapi/jsonreference
+[goversion-url]: https://github.com/go-openapi/jsonreference/blob/master/go.mod
+[top-badge]: https://img.shields.io/github/languages/top/go-openapi/jsonreference
+[commits-badge]: https://img.shields.io/github/commits-since/go-openapi/jsonreference/latest
--- /dev/null
+# Security Policy
+
+This policy outlines the commitment and practices of the go-openapi maintainers regarding security.
+
+## Supported Versions
+
+| Version | Supported |
+| ------- | ------------------ |
+| 0.22.x | :white_check_mark: |
+
+## Reporting a vulnerability
+
+If you become aware of a security vulnerability that affects the current repository,
+please report it privately to the maintainers.
+
+Please follow the instructions provided by github to
+[Privately report a security vulnerability](https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing-information-about-vulnerabilities/privately-reporting-a-security-vulnerability#privately-reporting-a-security-vulnerability).
+
+TL;DR: on Github, navigate to the project's "Security" tab then click on "Report a vulnerability".
defaultHTTPSPort = ":443"
)
-// Regular expressions used by the normalizations
-var rxPort = regexp.MustCompile(`(:\d+)/?$`)
-var rxDupSlashes = regexp.MustCompile(`/{2,}`)
+// Regular expressions used by the normalizations.
+var (
+ rxPort = regexp.MustCompile(`(:\d+)/?$`)
+ rxDupSlashes = regexp.MustCompile(`/{2,}`)
+)
// NormalizeURL will normalize the specified URL
// This was added to replace a previous call to the no longer maintained purell library:
var ErrChildURL = errors.New("child url is nil")
-// Ref represents a json reference object
+// Ref represents a json reference object.
type Ref struct {
referenceURL *url.URL
referencePointer jsonpointer.Pointer
HasFullFilePath bool
}
-// New creates a new reference for the given string
+// New creates a new reference for the given string.
func New(jsonReferenceString string) (Ref, error) {
var r Ref
err := r.parse(jsonReferenceString)
}
// MustCreateRef parses the ref string and panics when it's invalid.
-// Use the New method for a version that returns an error
+// Use the New method for a version that returns an error.
func MustCreateRef(ref string) Ref {
r, err := New(ref)
if err != nil {
return r
}
-// GetURL gets the URL for this reference
+// GetURL gets the URL for this reference.
func (r *Ref) GetURL() *url.URL {
return r.referenceURL
}
-// GetPointer gets the json pointer for this reference
+// GetPointer gets the json pointer for this reference.
func (r *Ref) GetPointer() *jsonpointer.Pointer {
return &r.referencePointer
}
-// String returns the best version of the url for this reference
+// String returns the best version of the url for this reference.
func (r *Ref) String() string {
if r.referenceURL != nil {
return r.referenceURL.String()
return r.referencePointer.String()
}
-// IsRoot returns true if this reference is a root document
+// IsRoot returns true if this reference is a root document.
func (r *Ref) IsRoot() bool {
return r.referenceURL != nil &&
!r.IsCanonical() &&
r.referenceURL.Fragment == ""
}
-// IsCanonical returns true when this pointer starts with http(s):// or file://
+// IsCanonical returns true when this pointer starts with http(s):// or file://.
func (r *Ref) IsCanonical() bool {
return (r.HasFileScheme && r.HasFullFilePath) || (!r.HasFileScheme && r.HasFullURL)
}
// Inherits creates a new reference from a parent and a child
-// If the child cannot inherit from the parent, an error is returned
+// If the child cannot inherit from the parent, an error is returned.
func (r *Ref) Inherits(child Ref) (*Ref, error) {
childURL := child.GetURL()
parentURL := r.GetURL()
return &ref, nil
}
-// "Constructor", parses the given string JSON reference
+// "Constructor", parses the given string JSON reference.
func (r *Ref) parse(jsonReferenceString string) error {
parsed, err := url.Parse(jsonReferenceString)
if err != nil {
--- /dev/null
+# git-cliff ~ configuration file
+# https://git-cliff.org/docs/configuration
+
+[changelog]
+header = """
+"""
+
+footer = """
+
+-----
+
+**[{{ remote.github.repo }}]({{ self::remote_url() }}) license terms**
+
+[![License][license-badge]][license-url]
+
+[license-badge]: http://img.shields.io/badge/license-Apache%20v2-orange.svg
+[license-url]: {{ self::remote_url() }}/?tab=Apache-2.0-1-ov-file#readme
+
+{%- macro remote_url() -%}
+ https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }}
+{%- endmacro -%}
+"""
+
+body = """
+{%- if version %}
+## [{{ version | trim_start_matches(pat="v") }}]({{ self::remote_url() }}/tree/{{ version }}) - {{ timestamp | date(format="%Y-%m-%d") }}
+{%- else %}
+## [unreleased]
+{%- endif %}
+{%- if message %}
+ {%- raw %}\n{% endraw %}
+{{ message }}
+ {%- raw %}\n{% endraw %}
+{%- endif %}
+{%- if version %}
+ {%- if previous.version %}
+
+**Full Changelog**: <{{ self::remote_url() }}/compare/{{ previous.version }}...{{ version }}>
+ {%- endif %}
+{%- else %}
+ {%- raw %}\n{% endraw %}
+{%- endif %}
+
+{%- if statistics %}{% if statistics.commit_count %}
+ {%- raw %}\n{% endraw %}
+{{ statistics.commit_count }} commits in this release.
+ {%- raw %}\n{% endraw %}
+{%- endif %}{% endif %}
+-----
+
+{%- for group, commits in commits | group_by(attribute="group") %}
+ {%- raw %}\n{% endraw %}
+### {{ group | upper_first }}
+ {%- raw %}\n{% endraw %}
+ {%- for commit in commits %}
+ {%- if commit.remote.pr_title %}
+ {%- set commit_message = commit.remote.pr_title %}
+ {%- else %}
+ {%- set commit_message = commit.message %}
+ {%- endif %}
+* {{ commit_message | split(pat="\n") | first | trim }}
+ {%- if commit.remote.username %}
+{%- raw %} {% endraw %}by [@{{ commit.remote.username }}](https://github.com/{{ commit.remote.username }})
+ {%- endif %}
+ {%- if commit.remote.pr_number %}
+{%- raw %} {% endraw %}in [#{{ commit.remote.pr_number }}]({{ self::remote_url() }}/pull/{{ commit.remote.pr_number }})
+ {%- endif %}
+{%- raw %} {% endraw %}[...]({{ self::remote_url() }}/commit/{{ commit.id }})
+ {%- endfor %}
+{%- endfor %}
+
+{%- if github %}
+{%- raw %}\n{% endraw -%}
+ {%- set all_contributors = github.contributors | length %}
+ {%- if github.contributors | filter(attribute="username", value="dependabot[bot]") | length < all_contributors %}
+-----
+
+### People who contributed to this release
+ {% endif %}
+ {%- for contributor in github.contributors | filter(attribute="username") | sort(attribute="username") %}
+ {%- if contributor.username != "dependabot[bot]" and contributor.username != "github-actions[bot]" %}
+* [@{{ contributor.username }}](https://github.com/{{ contributor.username }})
+ {%- endif %}
+ {%- endfor %}
+
+ {% if github.contributors | filter(attribute="is_first_time", value=true) | length != 0 %}
+-----
+ {%- raw %}\n{% endraw %}
+
+### New Contributors
+ {%- endif %}
+
+ {%- for contributor in github.contributors | filter(attribute="is_first_time", value=true) %}
+ {%- if contributor.username != "dependabot[bot]" and contributor.username != "github-actions[bot]" %}
+* @{{ contributor.username }} made their first contribution
+ {%- if contributor.pr_number %}
+ in [#{{ contributor.pr_number }}]({{ self::remote_url() }}/pull/{{ contributor.pr_number }}) \
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+{%- endif %}
+
+{%- raw %}\n{% endraw %}
+
+{%- macro remote_url() -%}
+ https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }}
+{%- endmacro -%}
+"""
+# Remove leading and trailing whitespaces from the changelog's body.
+trim = true
+# Render body even when there are no releases to process.
+render_always = true
+# An array of regex based postprocessors to modify the changelog.
+postprocessors = [
+ # Replace the placeholder <REPO> with a URL.
+ #{ pattern = '<REPO>', replace = "https://github.com/orhun/git-cliff" },
+]
+# output file path
+# output = "test.md"
+
+[git]
+# Parse commits according to the conventional commits specification.
+# See https://www.conventionalcommits.org
+conventional_commits = false
+# Exclude commits that do not match the conventional commits specification.
+filter_unconventional = false
+# Require all commits to be conventional.
+# Takes precedence over filter_unconventional.
+require_conventional = false
+# Split commits on newlines, treating each line as an individual commit.
+split_commits = false
+# An array of regex based parsers to modify commit messages prior to further processing.
+commit_preprocessors = [
+ # Replace issue numbers with link templates to be updated in `changelog.postprocessors`.
+ #{ pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](<REPO>/issues/${2}))"},
+ # Check spelling of the commit message using https://github.com/crate-ci/typos.
+ # If the spelling is incorrect, it will be fixed automatically.
+ #{ pattern = '.*', replace_command = 'typos --write-changes -' }
+]
+# Prevent commits that are breaking from being excluded by commit parsers.
+protect_breaking_commits = false
+# An array of regex based parsers for extracting data from the commit message.
+# Assigns commits to groups.
+# Optionally sets the commit's scope and can decide to exclude commits from further processing.
+commit_parsers = [
+ { message = "^[Cc]hore\\([Rr]elease\\): prepare for", skip = true },
+ { message = "(^[Mm]erge)|([Mm]erge conflict)", skip = true },
+ { field = "author.name", pattern = "dependabot*", group = "<!-- 0A -->Updates" },
+ { message = "([Ss]ecurity)|([Vv]uln)", group = "<!-- 08 -->Security" },
+ { body = "(.*[Ss]ecurity)|([Vv]uln)", group = "<!-- 08 -->Security" },
+ { message = "([Cc]hore\\(lint\\))|(style)|(lint)|(codeql)|(golangci)", group = "<!-- 05 -->Code quality" },
+ { message = "(^[Dd]oc)|((?i)readme)|(badge)|(typo)|(documentation)", group = "<!-- 03 -->Documentation" },
+ { message = "(^[Ff]eat)|(^[Ee]nhancement)", group = "<!-- 00 -->Implemented enhancements" },
+ { message = "(^ci)|(\\(ci\\))|(fixup\\s+ci)|(fix\\s+ci)|(license)|(example)", group = "<!-- 07 -->Miscellaneous tasks" },
+ { message = "^test", group = "<!-- 06 -->Testing" },
+ { message = "(^fix)|(panic)", group = "<!-- 01 -->Fixed bugs" },
+ { message = "(^refact)|(rework)", group = "<!-- 02 -->Refactor" },
+ { message = "(^[Pp]erf)|(performance)", group = "<!-- 04 -->Performance" },
+ { message = "(^[Cc]hore)", group = "<!-- 07 -->Miscellaneous tasks" },
+ { message = "^[Rr]evert", group = "<!-- 09 -->Reverted changes" },
+ { message = "(upgrade.*?go)|(go\\s+version)", group = "<!-- 0A -->Updates" },
+ { message = ".*", group = "<!-- 0B -->Other" },
+]
+# Exclude commits that are not matched by any commit parser.
+filter_commits = false
+# An array of link parsers for extracting external references, and turning them into URLs, using regex.
+link_parsers = []
+# Include only the tags that belong to the current branch.
+use_branch_tags = false
+# Order releases topologically instead of chronologically.
+topo_order = false
+# Order releases topologically instead of chronologically.
+topo_order_commits = true
+# Order of commits in each group/release within the changelog.
+# Allowed values: newest, oldest
+sort_commits = "newest"
+# Process submodules commits
+recurse_submodules = false
+
+#[remote.github]
+#owner = "go-openapi"
linters:
default: all
disable:
- - cyclop
- depguard
- - errchkjson
- - errorlint
- - exhaustruct
- - forcetypeassert
- funlen
- - gochecknoglobals
- - gochecknoinits
- - gocognit
- - godot
- godox
- - gosmopolitan
- - inamedparam
- - intrange
- - ireturn
- - lll
- - musttag
- - nestif
+ - exhaustruct
- nlreturn
- nonamedreturns
- noinlineerr
- paralleltest
- recvcheck
- testpackage
- - thelper
- tparallel
- - unparam
- varnamelen
- whitespace
- wrapcheck
goconst:
min-len: 2
min-occurrences: 3
+ cyclop:
+ max-complexity: 20
gocyclo:
- min-complexity: 45
+ min-complexity: 20
+ exhaustive:
+ default-signifies-exhaustive: true
+ default-case-required: true
+ lll:
+ line-length: 180
exclusions:
generated: lax
presets:
enable:
- gofmt
- goimports
+ - gofumpt
exclusions:
generated: lax
paths:
--- /dev/null
+# Contributors
+
+- Repository: ['go-openapi/spec']
+
+| Total Contributors | Total Contributions |
+| --- | --- |
+| 38 | 386 |
+
+| Username | All Time Contribution Count | All Commits |
+| --- | --- | --- |
+| @casualjim | 191 | https://github.com/go-openapi/spec/commits?author=casualjim |
+| @fredbi | 84 | https://github.com/go-openapi/spec/commits?author=fredbi |
+| @pytlesk4 | 26 | https://github.com/go-openapi/spec/commits?author=pytlesk4 |
+| @kul-amr | 10 | https://github.com/go-openapi/spec/commits?author=kul-amr |
+| @keramix | 10 | https://github.com/go-openapi/spec/commits?author=keramix |
+| @youyuanwu | 8 | https://github.com/go-openapi/spec/commits?author=youyuanwu |
+| @pengsrc | 7 | https://github.com/go-openapi/spec/commits?author=pengsrc |
+| @alphacentory | 5 | https://github.com/go-openapi/spec/commits?author=alphacentory |
+| @mtfelian | 4 | https://github.com/go-openapi/spec/commits?author=mtfelian |
+| @Capstan | 4 | https://github.com/go-openapi/spec/commits?author=Capstan |
+| @sdghchj | 4 | https://github.com/go-openapi/spec/commits?author=sdghchj |
+| @databus23 | 2 | https://github.com/go-openapi/spec/commits?author=databus23 |
+| @vburenin | 2 | https://github.com/go-openapi/spec/commits?author=vburenin |
+| @petrkotas | 2 | https://github.com/go-openapi/spec/commits?author=petrkotas |
+| @nikhita | 2 | https://github.com/go-openapi/spec/commits?author=nikhita |
+| @hypnoglow | 2 | https://github.com/go-openapi/spec/commits?author=hypnoglow |
+| @carvind | 2 | https://github.com/go-openapi/spec/commits?author=carvind |
+| @ujjwalsh | 1 | https://github.com/go-openapi/spec/commits?author=ujjwalsh |
+| @mbohlool | 1 | https://github.com/go-openapi/spec/commits?author=mbohlool |
+| @j2gg0s | 1 | https://github.com/go-openapi/spec/commits?author=j2gg0s |
+| @ishveda | 1 | https://github.com/go-openapi/spec/commits?author=ishveda |
+| @micln | 1 | https://github.com/go-openapi/spec/commits?author=micln |
+| @GlenDC | 1 | https://github.com/go-openapi/spec/commits?author=GlenDC |
+| @agmikhailov | 1 | https://github.com/go-openapi/spec/commits?author=agmikhailov |
+| @tgraf | 1 | https://github.com/go-openapi/spec/commits?author=tgraf |
+| @zhsj | 1 | https://github.com/go-openapi/spec/commits?author=zhsj |
+| @sebastien-rosset | 1 | https://github.com/go-openapi/spec/commits?author=sebastien-rosset |
+| @alexandear | 1 | https://github.com/go-openapi/spec/commits?author=alexandear |
+| @morlay | 1 | https://github.com/go-openapi/spec/commits?author=morlay |
+| @mikedanese | 1 | https://github.com/go-openapi/spec/commits?author=mikedanese |
+| @koron | 1 | https://github.com/go-openapi/spec/commits?author=koron |
+| @honza | 1 | https://github.com/go-openapi/spec/commits?author=honza |
+| @gbjk | 1 | https://github.com/go-openapi/spec/commits?author=gbjk |
+| @faguirre1 | 1 | https://github.com/go-openapi/spec/commits?author=faguirre1 |
+| @ethantkoenig | 1 | https://github.com/go-openapi/spec/commits?author=ethantkoenig |
+| @sttts | 1 | https://github.com/go-openapi/spec/commits?author=sttts |
+| @ChandanChainani | 1 | https://github.com/go-openapi/spec/commits?author=ChandanChainani |
+| @bvwells | 1 | https://github.com/go-openapi/spec/commits?author=bvwells |
+
+ _this file was generated by the [Contributors GitHub Action](https://github.com/github/contributors)_
-# OpenAPI v2 object model [](https://github.com/go-openapi/spec/actions?query=workflow%3A"go+test") [](https://codecov.io/gh/go-openapi/spec)
+# spec
-[](https://slackin.goswagger.io)
-[](https://raw.githubusercontent.com/go-openapi/spec/master/LICENSE)
-[](https://pkg.go.dev/github.com/go-openapi/spec)
-[](https://goreportcard.com/report/github.com/go-openapi/spec)
+<!-- Badges: status -->
+[![Tests][test-badge]][test-url] [![Coverage][cov-badge]][cov-url] [![CI vuln scan][vuln-scan-badge]][vuln-scan-url] [![CodeQL][codeql-badge]][codeql-url]
+<!-- Badges: release & docker images -->
+<!-- Badges: code quality -->
+<!-- Badges: license & compliance -->
+[![Release][release-badge]][release-url] [![Go Report Card][gocard-badge]][gocard-url] [![CodeFactor Grade][codefactor-badge]][codefactor-url] [![License][license-badge]][license-url]
+<!-- Badges: documentation & support -->
+<!-- Badges: others & stats -->
+[![GoDoc][godoc-badge]][godoc-url] [![Slack Channel][slack-logo]![slack-badge]][slack-url] [![go version][goversion-badge]][goversion-url] ![Top language][top-badge] ![Commits since latest release][commits-badge]
-The object model for OpenAPI specification documents.
+---
-## Licensing
+The object model for OpenAPI v2 specification documents.
-This library ships under the [SPDX-License-Identifier: Apache-2.0](./LICENSE).
+## Status
+
+API is stable.
+
+## Import this library in your project
+
+```cmd
+go get github.com/go-openapi/spec
+```
### FAQ
> This `id` does not conflict with any property named `id`.
>
> See also https://github.com/go-openapi/spec/issues/23
+
+## Change log
+
+See <https://github.com/go-openapi/spec/releases>
+
+## References
+
+<https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md>
+
+## Licensing
+
+This library ships under the [SPDX-License-Identifier: Apache-2.0](./LICENSE).
+
+## Other documentation
+
+* [All-time contributors](./CONTRIBUTORS.md)
+* [Contributing guidelines](.github/CONTRIBUTING.md)
+* [Maintainers documentation](docs/MAINTAINERS.md)
+* [Code style](docs/STYLE.md)
+
+## Cutting a new release
+
+Maintainers can cut a new release by either:
+
+* running [this workflow](https://github.com/go-openapi/spec/actions/workflows/bump-release.yml)
+* or pushing a semver tag
+ * signed tags are preferred
+ * The tag message is prepended to release notes
+
+<!-- Badges: status -->
+[test-badge]: https://github.com/go-openapi/spec/actions/workflows/go-test.yml/badge.svg
+[test-url]: https://github.com/go-openapi/spec/actions/workflows/go-test.yml
+[cov-badge]: https://codecov.io/gh/go-openapi/spec/branch/master/graph/badge.svg
+[cov-url]: https://codecov.io/gh/go-openapi/spec
+[vuln-scan-badge]: https://github.com/go-openapi/spec/actions/workflows/scanner.yml/badge.svg
+[vuln-scan-url]: https://github.com/go-openapi/spec/actions/workflows/scanner.yml
+[codeql-badge]: https://github.com/go-openapi/spec/actions/workflows/codeql.yml/badge.svg
+[codeql-url]: https://github.com/go-openapi/spec/actions/workflows/codeql.yml
+<!-- Badges: release & docker images -->
+[release-badge]: https://badge.fury.io/gh/go-openapi%2Fspec.svg
+[release-url]: https://badge.fury.io/gh/go-openapi%2Fspec
+[gomod-badge]: https://badge.fury.io/go/github.com%2Fgo-openapi%2Fspec.svg
+[gomod-url]: https://badge.fury.io/go/github.com%2Fgo-openapi%2Fspec
+<!-- Badges: code quality -->
+[gocard-badge]: https://goreportcard.com/badge/github.com/go-openapi/spec
+[gocard-url]: https://goreportcard.com/report/github.com/go-openapi/spec
+[codefactor-badge]: https://img.shields.io/codefactor/grade/github/go-openapi/spec
+[codefactor-url]: https://www.codefactor.io/repository/github/go-openapi/spec
+<!-- Badges: documentation & support -->
+[doc-badge]: https://img.shields.io/badge/doc-site-blue?link=https%3A%2F%2Fgoswagger.io%2Fgo-openapi%2F
+[doc-url]: https://goswagger.io/go-openapi
+[godoc-badge]: https://pkg.go.dev/badge/github.com/go-openapi/spec
+[godoc-url]: http://pkg.go.dev/github.com/go-openapi/spec
+[slack-logo]: https://a.slack-edge.com/e6a93c1/img/icons/favicon-32.png
+[slack-badge]: https://img.shields.io/badge/slack-blue?link=https%3A%2F%2Fgoswagger.slack.com%2Farchives%2FC04R30YM
+[slack-url]: https://goswagger.slack.com/archives/C04R30YMU
+<!-- Badges: license & compliance -->
+[license-badge]: http://img.shields.io/badge/license-Apache%20v2-orange.svg
+[license-url]: https://github.com/go-openapi/spec/?tab=Apache-2.0-1-ov-file#readme
+<!-- Badges: others & stats -->
+[goversion-badge]: https://img.shields.io/github/go-mod/go-version/go-openapi/spec
+[goversion-url]: https://github.com/go-openapi/spec/blob/master/go.mod
+[top-badge]: https://img.shields.io/github/languages/top/go-openapi/spec
+[commits-badge]: https://img.shields.io/github/commits-since/go-openapi/spec/latest
--- /dev/null
+# Security Policy
+
+This policy outlines the commitment and practices of the go-openapi maintainers regarding security.
+
+## Supported Versions
+
+| Version | Supported |
+| ------- | ------------------ |
+| 0.22.x | :white_check_mark: |
+
+## Reporting a vulnerability
+
+If you become aware of a security vulnerability that affects the current repository,
+please report it privately to the maintainers.
+
+Please follow the instructions provided by github to
+[Privately report a security vulnerability](https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing-information-about-vulnerabilities/privately-reporting-a-security-vulnerability#privately-reporting-a-security-vulnerability).
+
+TL;DR: on Github, navigate to the project's "Security" tab then click on "Report a vulnerability".
}
ref, sch, _ = getRefAndSchema(input)
+ if ref == nil {
+ ref = &Ref{} // empty ref
+ }
}
if ref.String() != "" {
if id != "" {
idBaseURL, err := parseURL(id)
if err == nil { // if the schema id is not usable as a URI, ignore it
- if ref, ok := rebase(ref, idBaseURL, true); ok { // rebase, but keep references to root unchaged (do not want $ref: "")
+ if ref, ok := rebase(ref, idBaseURL, true); ok { // rebase, but keep references to root unchanged (do not want $ref: "")
// $ref relative to the ID of the schema in the root document
return ref
}
return o
}
-// Undeprecate marks the operation as not deprected
+// Undeprecate marks the operation as not deprecated
func (o *Operation) Undeprecate() *Operation {
o.Deprecated = false
return o
return r.Ref.MarshalJSON()
}
-// UnmarshalJSON unmarshalss the ref from json
+// UnmarshalJSON unmarshals the ref from json
func (r *Refable) UnmarshalJSON(d []byte) error {
return json.Unmarshal(d, &r.Ref)
}
// ResolveItemsWithBase resolves parameter items reference against a context root and base path.
//
-// NOTE: stricly speaking, this construct is not supported by Swagger 2.0.
+// NOTE: strictly speaking, this construct is not supported by Swagger 2.0.
// Similarly, $ref are forbidden in response headers.
func ResolveItemsWithBase(root any, ref Ref, options *ExpandOptions) (*Items, error) {
result := new(Items)
return d
}
-// JSONSchemaDraft04 loads the json schema document for json shema draft04
+// JSONSchemaDraft04 loads the json schema document for json schema draft04
func JSONSchemaDraft04() (*Schema, error) {
b, err := jsonschemaDraft04JSONBytes()
if err != nil {
// SchemaValidations describes the validation properties of a schema
//
// NOTE: at this moment, this is not embedded in SchemaProps because this would induce a breaking change
-// in the exported members: all initializers using litterals would fail.
+// in the exported members: all initializers using literals would fail.
type SchemaValidations struct {
CommonValidations
var (
// MinClusterVersion is the min cluster version this etcd binary is compatible with.
MinClusterVersion = "3.0.0"
- Version = "3.6.6"
+ Version = "3.6.7"
APIVersion = "unknown"
// Git SHA Value will be set during build
valu
thirdparty
addOpt
+observ
- float-compare
- go-require
- require-error
+ usetesting:
+ context-background: true
+ context-todo: true
exclusions:
generated: lax
presets:
http://localhost
+https://localhost
http://jaeger-collector
https://github.com/open-telemetry/opentelemetry-go/milestone/
https://github.com/open-telemetry/opentelemetry-go/projects
https?:\/\/github\.com\/open-telemetry\/semantic-conventions\/archive\/refs\/tags\/[^.]+\.zip\[[^]]+]
file:///home/runner/work/opentelemetry-go/opentelemetry-go/libraries
file:///home/runner/work/opentelemetry-go/opentelemetry-go/manual
-http://4.3.2.1:78/user/123
\ No newline at end of file
+http://4.3.2.1:78/user/123
+file:///home/runner/work/opentelemetry-go/opentelemetry-go/exporters/otlp/otlptrace/otlptracegrpc/internal/observ/dns:/:4317
+# URL works, but it has blocked link checkers.
+https://dl.acm.org/doi/10.1145/198429.198435
<!-- Released section -->
<!-- Don't change this section unless doing release -->
+## [1.39.0/0.61.0/0.15.0/0.0.14] 2025-12-05
+
+### Added
+
+- Greatly reduce the cost of recording metrics in `go.opentelemetry.io/otel/sdk/metric` using hashing for map keys. (#7175)
+- Add `WithInstrumentationAttributeSet` option to `go.opentelemetry.io/otel/log`, `go.opentelemetry.io/otel/metric`, and `go.opentelemetry.io/otel/trace` packages.
+ This provides a concurrent-safe and performant alternative to `WithInstrumentationAttributes` by accepting a pre-constructed `attribute.Set`. (#7287)
+- Add experimental observability for the Prometheus exporter in `go.opentelemetry.io/otel/exporters/prometheus`.
+ Check the `go.opentelemetry.io/otel/exporters/prometheus/internal/x` package documentation for more information. (#7345)
+- Add experimental observability metrics in `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc`. (#7353)
+- Add temporality selector functions `DeltaTemporalitySelector`, `CumulativeTemporalitySelector`, `LowMemoryTemporalitySelector` to `go.opentelemetry.io/otel/sdk/metric`. (#7434)
+- Add experimental observability metrics for simple log processor in `go.opentelemetry.io/otel/sdk/log`. (#7548)
+- Add experimental observability metrics in `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc`. (#7459)
+- Add experimental observability metrics in `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp`. (#7486)
+- Add experimental observability metrics for simple span processor in `go.opentelemetry.io/otel/sdk/trace`. (#7374)
+- Add experimental observability metrics in `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp`. (#7512)
+- Add experimental observability metrics for manual reader in `go.opentelemetry.io/otel/sdk/metric`. (#7524)
+- Add experimental observability metrics for periodic reader in `go.opentelemetry.io/otel/sdk/metric`. (#7571)
+- Support `OTEL_EXPORTER_OTLP_LOGS_INSECURE` and `OTEL_EXPORTER_OTLP_INSECURE` environmental variables in `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp`. (#7608)
+- Add `Enabled` method to the `Processor` interface in `go.opentelemetry.io/otel/sdk/log`.
+ All `Processor` implementations now include an `Enabled` method. (#7639)
+- The `go.opentelemetry.io/otel/semconv/v1.38.0` package.
+ The package contains semantic conventions from the `v1.38.0` version of the OpenTelemetry Semantic Conventions.
+ See the [migration documentation](./semconv/v1.38.0/MIGRATION.md) for information on how to upgrade from `go.opentelemetry.io/otel/semconv/v1.37.0.`(#7648)
+
+### Changed
+
+- `Distinct` in `go.opentelemetry.io/otel/attribute` is no longer guaranteed to uniquely identify an attribute set.
+ Collisions between `Distinct` values for different Sets are possible with extremely high cardinality (billions of series per instrument), but are highly unlikely. (#7175)
+- `WithInstrumentationAttributes` in `go.opentelemetry.io/otel/trace` synchronously de-duplicates the passed attributes instead of delegating it to the returned `TracerOption`. (#7266)
+- `WithInstrumentationAttributes` in `go.opentelemetry.io/otel/meter` synchronously de-duplicates the passed attributes instead of delegating it to the returned `MeterOption`. (#7266)
+- `WithInstrumentationAttributes` in `go.opentelemetry.io/otel/log` synchronously de-duplicates the passed attributes instead of delegating it to the returned `LoggerOption`. (#7266)
+- Rename the `OTEL_GO_X_SELF_OBSERVABILITY` environment variable to `OTEL_GO_X_OBSERVABILITY` in `go.opentelemetry.io/otel/sdk/trace`, `go.opentelemetry.io/otel/sdk/log`, and `go.opentelemetry.io/otel/exporters/stdout/stdouttrace`. (#7302)
+- Improve performance of histogram `Record` in `go.opentelemetry.io/otel/sdk/metric` when min and max are disabled using `NoMinMax`. (#7306)
+- Improve error handling for dropped data during translation by using `prometheus.NewInvalidMetric` in `go.opentelemetry.io/otel/exporters/prometheus`.
+ ⚠️ **Breaking Change:** Previously, these cases were only logged and scrapes succeeded.
+ Now, when translation would drop data (e.g., invalid label/value), the exporter emits a `NewInvalidMetric`, and Prometheus scrapes **fail with HTTP 500** by default.
+ To preserve the prior behavior (scrapes succeed while errors are logged), configure your Prometheus HTTP handler with: `promhttp.HandlerOpts{ ErrorHandling: promhttp.ContinueOnError }`. (#7363)
+- Replace fnv hash with xxhash in `go.opentelemetry.io/otel/attribute` for better performance. (#7371)
+- The default `TranslationStrategy` in `go.opentelemetry.io/exporters/prometheus` is changed from `otlptranslator.NoUTF8EscapingWithSuffixes` to `otlptranslator.UnderscoreEscapingWithSuffixes`. (#7421)
+- Improve performance of concurrent measurements in `go.opentelemetry.io/otel/sdk/metric`. (#7427)
+- Include W3C TraceFlags (bits 0–7) in the OTLP `Span.Flags` field in `go.opentelemetry.io/exporters/otlp/otlptrace/otlptracehttp` and `go.opentelemetry.io/exporters/otlp/otlptrace/otlptracegrpc`. (#7438)
+- The `ErrorType` function in `go.opentelemetry.io/otel/semconv/v1.37.0` now handles custom error types.
+ If an error implements an `ErrorType() string` method, the return value of that method will be used as the error type. (#7442)
+
+### Fixed
+
+- Fix `WithInstrumentationAttributes` options in `go.opentelemetry.io/otel/trace`, `go.opentelemetry.io/otel/metric`, and `go.opentelemetry.io/otel/log` to properly merge attributes when passed multiple times instead of replacing them.
+ Attributes with duplicate keys will use the last value passed. (#7300)
+- The equality of `attribute.Set` when using the `Equal` method is not affected by the user overriding the empty set pointed to by `attribute.EmptySet` in `go.opentelemetry.io/otel/attribute`. (#7357)
+- Return partial OTLP export errors to the caller in `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc`. (#7372)
+- Return partial OTLP export errors to the caller in `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp`. (#7372)
+- Return partial OTLP export errors to the caller in `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc`. (#7372)
+- Return partial OTLP export errors to the caller in `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp`. (#7372)
+- Return partial OTLP export errors to the caller in `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc`. (#7372)
+- Return partial OTLP export errors to the caller in `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp`. (#7372)
+- Fix `AddAttributes`, `SetAttributes`, `SetBody` on `Record` in `go.opentelemetry.io/otel/sdk/log` to not mutate input. (#7403)
+- Do not double record measurements of `RecordSet` methods in `go.opentelemetry.io/otel/semconv/v1.37.0`. (#7655)
+- Do not double record measurements of `RecordSet` methods in `go.opentelemetry.io/otel/semconv/v1.36.0`. (#7656)
+
+### Removed
+
+- Drop support for [Go 1.23]. (#7274)
+- Remove the `FilterProcessor` interface in `go.opentelemetry.io/otel/sdk/log`.
+ The `Enabled` method has been added to the `Processor` interface instead.
+ All `Processor` implementations must now implement the `Enabled` method.
+ Custom processors that do not filter records can implement `Enabled` to return `true`. (#7639)
+
## [1.38.0/0.60.0/0.14.0/0.0.13] 2025-08-29
This release is the last to support [Go 1.23].
- CircleCI build CI manifest files.
- CODEOWNERS file to track owners of this project.
-[Unreleased]: https://github.com/open-telemetry/opentelemetry-go/compare/v1.38.0...HEAD
+[Unreleased]: https://github.com/open-telemetry/opentelemetry-go/compare/v1.39.0...HEAD
+[1.39.0/0.61.0/0.15.0/0.0.14]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.39.0
[1.38.0/0.60.0/0.14.0/0.0.13]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.38.0
+[0.59.1]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/exporters/prometheus/v0.59.1
[1.37.0/0.59.0/0.13.0]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.37.0
[0.12.2]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/log/v0.12.2
[0.12.1]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/log/v0.12.1
(This may print some warning about "build constraints exclude all Go
files", just ignore it.)
-This will put the project in `${GOPATH}/src/go.opentelemetry.io/otel`. You
-can alternatively use `git` directly with:
+This will put the project in `${GOPATH}/src/go.opentelemetry.io/otel`.
+Alternatively, you can use `git` directly with:
```sh
git clone https://github.com/open-telemetry/opentelemetry-go
that name is a kind of a redirector to GitHub that `go get` can
understand, but `git` does not.)
-This would put the project in the `opentelemetry-go` directory in
-current working directory.
+This will add the project as `opentelemetry-go` within the current directory.
Enter the newly created directory and add your fork as a new remote:
This is not enforced through automation, but needs to be validated by the
maintainer merging.
- * At least one of the qualified approvals need to be from an
+ * At least one of the qualified approvals needs to be from an
[Approver]/[Maintainer] affiliated with a different company than the author
of the PR.
* PRs introducing changes that have already been discussed and consensus
### Focus on Capabilities, Not Structure Compliance
OpenTelemetry is an evolving specification, one where the desires and
-use cases are clear, but the method to satisfy those uses cases are
+use cases are clear, but the methods to satisfy those use cases are
not.
As such, Contributions should provide functionality and behavior that
-conforms to the specification, but the interface and structure is
+conforms to the specification, but the interface and structure are
flexible.
It is preferable to have contributions follow the idioms of the
This project does not partition dependencies based on the environment (i.e.
`development`, `staging`, `production`).
-Only the dependencies explicitly included in the released modules have be
+Only the dependencies explicitly included in the released modules have been
tested and verified to work with the released code. No other guarantee is made
about the compatibility of other dependencies.
The use of internal packages should be scoped to a single module. A sub-module
should never import from a parent internal package. This creates a coupling
-between the two modules where a user can upgrade the parent without the child
-and if the internal package API has changed it will fail to upgrade[^3].
+between the two modules where a user can upgrade the parent without the child,
+and if the internal package API has changed, it will fail to upgrade[^3].
There are two known exceptions to this rule:
### Ignoring context cancellation
-OpenTelemetry API implementations need to ignore the cancellation of the context that are
+OpenTelemetry API implementations need to ignore the cancellation of the context that is
passed when recording a value (e.g. starting a span, recording a measurement, emitting a log).
Recording methods should not return an error describing the cancellation state of the context
when they complete, nor should they abort any work.
should be honored. This means all work done on behalf of the user provided context
should be canceled.
+### Observability
+
+OpenTelemetry Go SDK components should be instrumented to enable users observability for the health and performance of the telemetry pipeline itself.
+This allows operators to understand how well their observability infrastructure is functioning and to identify potential issues before they impact their applications.
+
+This section outlines the best practices for building instrumentation in OpenTelemetry Go SDK components.
+
+#### Environment Variable Activation
+
+Observability features are currently experimental.
+They should be disabled by default and activated through the `OTEL_GO_X_OBSERVABILITY` environment variable.
+This follows the established experimental feature pattern used throughout the SDK.
+
+Components should check for this environment variable using a consistent pattern:
+
+```go
+import "go.opentelemetry.io/otel/*/internal/x"
+
+if x.Observability.Enabled() {
+ // Initialize observability metrics
+}
+```
+
+**References**:
+
+- [stdouttrace exporter](./exporters/stdout/stdouttrace/internal/x/x.go)
+- [sdk](./sdk/internal/x/x.go)
+
+#### Encapsulation
+
+Instrumentation should be encapsulated within a dedicated `struct` (e.g. `instrumentation`).
+It should not be mixed into the instrumented component.
+
+Prefer this:
+
+```go
+type SDKComponent struct {
+ inst *instrumentation
+}
+
+type instrumentation struct {
+ inflight otelconv.SDKComponentInflight
+ exported otelconv.SDKComponentExported
+}
+```
+
+To this:
+
+```go
+// ❌ Avoid this pattern.
+type SDKComponent struct {
+ /* other SDKComponent fields... */
+
+ inflight otelconv.SDKComponentInflight
+ exported otelconv.SDKComponentExported
+}
+```
+
+The instrumentation code should not bloat the code being instrumented.
+Likely, this means its own file, or its own package if it is complex or reused.
+
+#### Initialization
+
+Instrumentation setup should be explicit, side-effect free, and local to the relevant component.
+Avoid relying on global or implicit [side effects][side-effect] for initialization.
+
+Encapsulate setup in constructor functions, ensuring clear ownership and scope:
+
+```go
+import (
+ "errors"
+
+ semconv "go.opentelemetry.io/otel/semconv/v1.37.0"
+ "go.opentelemetry.io/otel/semconv/v1.37.0/otelconv"
+)
+
+type SDKComponent struct {
+ inst *instrumentation
+}
+
+func NewSDKComponent(config Config) (*SDKComponent, error) {
+ inst, err := newInstrumentation()
+ if err != nil {
+ return nil, err
+ }
+ return &SDKComponent{inst: inst}, nil
+}
+
+type instrumentation struct {
+ inflight otelconv.SDKComponentInflight
+ exported otelconv.SDKComponentExported
+}
+
+func newInstrumentation() (*instrumentation, error) {
+ if !x.Observability.Enabled() {
+ return nil, nil
+ }
+
+ meter := otel.GetMeterProvider().Meter(
+ "<component-package-name>",
+ metric.WithInstrumentationVersion(sdk.Version()),
+ metric.WithSchemaURL(semconv.SchemaURL),
+ )
+
+ inst := &instrumentation{}
+
+ var err, e error
+ inst.inflight, e = otelconv.NewSDKComponentInflight(meter)
+ err = errors.Join(err, e)
+
+ inst.exported, e = otelconv.NewSDKComponentExported(meter)
+ err = errors.Join(err, e)
+
+ return inst, err
+}
+```
+
+```go
+// ❌ Avoid this pattern.
+func (c *Component) initObservability() {
+ // Initialize observability metrics
+ if !x.Observability.Enabled() {
+ return
+ }
+
+ // Initialize observability metrics
+ c.inst = &instrumentation{/* ... */}
+}
+```
+
+[side-effect]: https://en.wikipedia.org/wiki/Side_effect_(computer_science)
+
+#### Performance
+
+When observability is disabled there should be little to no overhead.
+
+```go
+func (e *Exporter) ExportSpans(ctx context.Context, spans []trace.ReadOnlySpan) error {
+ if e.inst != nil {
+ attrs := expensiveOperation()
+ e.inst.recordSpanInflight(ctx, int64(len(spans)), attrs...)
+ }
+ // Export spans...
+}
+```
+
+```go
+// ❌ Avoid this pattern.
+func (e *Exporter) ExportSpans(ctx context.Context, spans []trace.ReadOnlySpan) error {
+ attrs := expensiveOperation()
+ e.inst.recordSpanInflight(ctx, int64(len(spans)), attrs...)
+ // Export spans...
+}
+
+func (i *instrumentation) recordSpanInflight(ctx context.Context, count int64, attrs ...attribute.KeyValue) {
+ if i == nil || i.inflight == nil {
+ return
+ }
+ i.inflight.Add(ctx, count, metric.WithAttributes(attrs...))
+}
+```
+
+When observability is enabled, the instrumentation code paths should be optimized to reduce allocation and computation overhead.
+
+##### Attribute and Option Allocation Management
+
+Pool attribute slices and options with [`sync.Pool`] to minimize allocations in measurement calls with dynamic attributes.
+
+```go
+var (
+ attrPool = sync.Pool{
+ New: func() any {
+ // Pre-allocate common capacity
+ knownCap := 8 // Adjust based on expected usage
+ s := make([]attribute.KeyValue, 0, knownCap)
+ // Return a pointer to avoid extra allocation on Put().
+ return &s
+ },
+ }
+
+ addOptPool = &sync.Pool{
+ New: func() any {
+ const n = 1 // WithAttributeSet
+ o := make([]metric.AddOption, 0, n)
+ // Return a pointer to avoid extra allocation on Put().
+ return &o
+ },
+ }
+)
+
+func (i *instrumentation) record(ctx context.Context, value int64, baseAttrs ...attribute.KeyValue) {
+ attrs := attrPool.Get().(*[]attribute.KeyValue)
+ defer func() {
+ *attrs = (*attrs)[:0] // Reset.
+ attrPool.Put(attrs)
+ }()
+
+ *attrs = append(*attrs, baseAttrs...)
+ // Add any dynamic attributes.
+ *attrs = append(*attrs, semconv.OTelComponentName("exporter-1"))
+
+ addOpt := addOptPool.Get().(*[]metric.AddOption)
+ defer func() {
+ *addOpt = (*addOpt)[:0]
+ addOptPool.Put(addOpt)
+ }()
+
+ set := attribute.NewSet(*attrs...)
+ *addOpt = append(*addOpt, metric.WithAttributeSet(set))
+
+ i.counter.Add(ctx, value, *addOpt...)
+}
+```
+
+Pools are most effective when there are many pooled objects of the same sufficiently large size, and the objects are repeatedly used.
+This amortizes the cost of allocation and synchronization.
+Ideally, the pools should be scoped to be used as widely as possible within the component to maximize this efficiency while still ensuring correctness.
+
+[`sync.Pool`]: https://pkg.go.dev/sync#Pool
+
+##### Cache common attribute sets for repeated measurements
+
+If a static set of attributes are used for measurements and they are known at compile time, pre-compute and cache these attributes.
+
+```go
+type spanLiveSetKey struct {
+ sampled bool
+}
+
+var spanLiveSetCache = map[spanLiveSetKey]attribute.Set{
+ {true}: attribute.NewSet(
+ otelconv.SDKSpanLive{}.AttrSpanSamplingResult(
+ otelconv.SpanSamplingResultRecordAndSample,
+ ),
+ ),
+ {false}: attribute.NewSet(
+ otelconv.SDKSpanLive{}.AttrSpanSamplingResult(
+ otelconv.SpanSamplingResultRecordOnly,
+ ),
+ ),
+}
+
+func spanLiveSet(sampled bool) attribute.Set {
+ key := spanLiveSetKey{sampled: sampled}
+ return spanLiveSetCache[key]
+}
+```
+
+##### Benchmarking
+
+Always provide benchmarks when introducing or refactoring instrumentation.
+Demonstrate the impact (allocs/op, B/op, ns/op) in enabled/disabled scenarios:
+
+```go
+func BenchmarkExportSpans(b *testing.B) {
+ scenarios := []struct {
+ name string
+ obsEnabled bool
+ }{
+ {"ObsDisabled", false},
+ {"ObsEnabled", true},
+ }
+
+ for _, scenario := range scenarios {
+ b.Run(scenario.name, func(b *testing.B) {
+ b.Setenv(
+ "OTEL_GO_X_OBSERVABILITY",
+ strconv.FormatBool(scenario.obsEnabled),
+ )
+
+ exporter := NewExporter()
+ spans := generateTestSpans(100)
+
+ b.ResetTimer()
+ b.ReportAllocs()
+
+ for i := 0; i < b.N; i++ {
+ _ = exporter.ExportSpans(context.Background(), spans)
+ }
+ })
+ }
+}
+```
+
+#### Error Handling and Robustness
+
+Errors should be reported back to the caller if possible, and partial failures should be handled as gracefully as possible.
+
+```go
+func newInstrumentation() (*instrumentation, error) {
+ if !x.Observability.Enabled() {
+ return nil, nil
+ }
+
+ m := otel.GetMeterProvider().Meter(/* initialize meter */)
+ counter, err := otelconv.NewSDKComponentCounter(m)
+ // Use the partially initialized counter if available.
+ i := &instrumentation{counter: counter}
+ // Return any error to the caller.
+ return i, err
+}
+```
+
+```go
+// ❌ Avoid this pattern.
+func newInstrumentation() *instrumentation {
+ if !x.Observability.Enabled() {
+ return nil, nil
+ }
+
+ m := otel.GetMeterProvider().Meter(/* initialize meter */)
+ counter, err := otelconv.NewSDKComponentCounter(m)
+ if err != nil {
+ // ❌ Do not dump the error to the OTel Handler. Return it to the
+ // caller.
+ otel.Handle(err)
+ // ❌ Do not return nil if we can still use the partially initialized
+ // counter.
+ return nil
+ }
+ return &instrumentation{counter: counter}
+}
+```
+
+If the instrumented component cannot report the error to the user, let it report the error to `otel.Handle`.
+
+#### Context Propagation
+
+Ensure observability measurements receive the correct context, especially for trace exemplars and distributed context:
+
+```go
+func (e *Exporter) ExportSpans(ctx context.Context, spans []trace.ReadOnlySpan) error {
+ // Use the provided context for observability measurements
+ e.inst.recordSpanExportStarted(ctx, len(spans))
+
+ err := e.doExport(ctx, spans)
+
+ if err != nil {
+ e.inst.recordSpanExportFailed(ctx, len(spans), err)
+ } else {
+ e.inst.recordSpanExportSucceeded(ctx, len(spans))
+ }
+
+ return err
+}
+```
+
+```go
+// ❌ Avoid this pattern.
+func (e *Exporter) ExportSpans(ctx context.Context, spans []trace.ReadOnlySpan) error {
+ // ❌ Do not break the context propagation.
+ e.inst.recordSpanExportStarted(context.Background(), len(spans))
+
+ err := e.doExport(ctx, spans)
+
+ /* ... */
+
+ return err
+}
+```
+
+#### Semantic Conventions Compliance
+
+All observability metrics should follow the [OpenTelemetry Semantic Conventions for SDK metrics](https://github.com/open-telemetry/semantic-conventions/blob/1cf2476ae5e518225a766990a28a6d5602bd5a30/docs/otel/sdk-metrics.md).
+
+Use the metric semantic conventions convenience package [otelconv](./semconv/v1.37.0/otelconv/metric.go).
+
+##### Component Identification
+
+Component names and types should follow [semantic convention](https://github.com/open-telemetry/semantic-conventions/blob/1cf2476ae5e518225a766990a28a6d5602bd5a30/docs/registry/attributes/otel.md#otel-component-attributes).
+
+If a component is not a well-known type specified in the semantic conventions, use the package path scope type as a stable identifier.
+
+```go
+componentType := "go.opentelemetry.io/otel/sdk/trace.Span"
+```
+
+```go
+// ❌ Do not do this.
+componentType := "trace-span"
+```
+
+The component name should be a stable unique identifier for the specific instance of the component.
+
+Use a global counter to ensure uniqueness if necessary.
+
+```go
+// Unique 0-based ID counter for component instances.
+var componentIDCounter atomic.Int64
+
+// nextID returns the next unique ID for a component.
+func nextID() int64 {
+ return componentIDCounter.Add(1) - 1
+}
+
+// componentName returns a unique name for the component instance.
+func componentName() attribute.KeyValue {
+ id := nextID()
+ name := fmt.Sprintf("%s/%d", componentType, id)
+ return semconv.OTelComponentName(name)
+}
+```
+
+The component ID will need to be resettable for deterministic testing.
+If tests are in a different package than the component being tested (i.e. a `<component package>_test` package name), use a generated `counter` internal package to manage the counter.
+See [stdouttrace exporter example](./exporters/stdout/stdouttrace/internal/gen.go) for reference.
+
+#### Testing
+
+Use deterministic testing with isolated state:
+
+```go
+func TestObservability(t *testing.T) {
+ // Restore state after test to ensure this does not affect other tests.
+ prev := otel.GetMeterProvider()
+ t.Cleanup(func() { otel.SetMeterProvider(prev) })
+
+ // Isolate the meter provider for deterministic testing
+ reader := metric.NewManualReader()
+ meterProvider := metric.NewMeterProvider(metric.WithReader(reader))
+ otel.SetMeterProvider(meterProvider)
+
+ // Use t.Setenv to ensure environment variable is restored after test.
+ t.Setenv("OTEL_GO_X_OBSERVABILITY", "true")
+
+ // Reset component ID counter to ensure deterministic component names.
+ componentIDCounter.Store(0)
+
+ /* ... test code ... */
+}
+```
+
+Test order should not affect results.
+Ensure that any global state (e.g. component ID counters) is reset between tests.
+
## Approvers and Maintainers
### Maintainers
### Triagers
- [Alex Kats](https://github.com/akats7), Capital One
-- [Cheng-Zhen Yang](https://github.com/scorpionknifes), Independent
For more information about the triager role, see the [community repository](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#triager).
- [Aaron Clawson](https://github.com/MadVikingGod)
- [Anthony Mirabella](https://github.com/Aneurysm9)
+- [Cheng-Zhen Yang](https://github.com/scorpionknifes)
- [Chester Cheung](https://github.com/hanyuancheung)
- [Evan Torrie](https://github.com/evantorrie)
- [Gustavo Silva Paiva](https://github.com/paivagustavo)
# Tests
-TEST_TARGETS := test-default test-bench test-short test-verbose test-race test-concurrent-safe
+TEST_TARGETS := test-default test-bench test-short test-verbose test-race test-concurrent-safe test-fuzz
.PHONY: $(TEST_TARGETS) test
test-default test-race: ARGS=-race
test-bench: ARGS=-run=xxxxxMatchNothingxxxxx -test.benchtime=1ms -bench=.
test-short: ARGS=-short
+test-fuzz: ARGS=-fuzztime=10s -fuzz
test-verbose: ARGS=-v -race
test-concurrent-safe: ARGS=-run=ConcurrentSafe -count=100 -race
test-concurrent-safe: TIMEOUT=120
|----------|------------|--------------|
| Ubuntu | 1.25 | amd64 |
| Ubuntu | 1.24 | amd64 |
-| Ubuntu | 1.23 | amd64 |
| Ubuntu | 1.25 | 386 |
| Ubuntu | 1.24 | 386 |
-| Ubuntu | 1.23 | 386 |
| Ubuntu | 1.25 | arm64 |
| Ubuntu | 1.24 | arm64 |
-| Ubuntu | 1.23 | arm64 |
-| macOS 13 | 1.25 | amd64 |
-| macOS 13 | 1.24 | amd64 |
-| macOS 13 | 1.23 | amd64 |
+| macOS | 1.25 | amd64 |
+| macOS | 1.24 | amd64 |
| macOS | 1.25 | arm64 |
| macOS | 1.24 | arm64 |
-| macOS | 1.23 | arm64 |
| Windows | 1.25 | amd64 |
| Windows | 1.24 | amd64 |
-| Windows | 1.23 | amd64 |
| Windows | 1.25 | 386 |
| Windows | 1.24 | 386 |
-| Windows | 1.23 | 386 |
While this project should work for other systems, no compatibility guarantees
are made for those systems currently.
## Breaking changes validation
-You can run `make gorelease` that runs [gorelease](https://pkg.go.dev/golang.org/x/exp/cmd/gorelease) to ensure that there are no unwanted changes done in the public API.
+You can run `make gorelease` which runs [gorelease](https://pkg.go.dev/golang.org/x/exp/cmd/gorelease) to ensure that there are no unwanted changes made in the public API.
You can check/report problems with `gorelease` [here](https://golang.org/issues/26420).
```
3. Update the [Changelog](./CHANGELOG.md).
- - Make sure all relevant changes for this release are included and are in language that non-contributors to the project can understand.
+ - Make sure all relevant changes for this release are included and are written in language that non-contributors to the project can understand.
To verify this, you can look directly at the commits since the `<last tag>`.
```
...
```
-## Release
+## Sign artifacts
-Finally create a Release for the new `<new tag>` on GitHub.
-The release body should include all the release notes from the Changelog for this release.
+To ensure we comply with CNCF best practices, we need to sign the release artifacts.
-### Sign the Release Artifact
+Download the `.tar.gz` and `.zip` archives from the [tags page](https://github.com/open-telemetry/opentelemetry-go/tags) for the new release tag.
+Both archives need to be signed with your GPG key.
-To ensure we comply with CNCF best practices, we need to sign the release artifact.
-The tarball attached to the GitHub release needs to be signed with your GPG key.
+You can use [this script] to verify the contents of the archives before signing them.
-Follow [these steps] to sign the release artifact and upload it to GitHub.
-You can use [this script] to verify the contents of the tarball before signing it.
+To find your GPG key ID, run:
-Be sure to use the correct GPG key when signing the release artifact.
+```terminal
+gpg --list-secret-keys --keyid-format=long
+```
+
+The key ID is the 16-character string after `sec rsa4096/` (or similar).
+
+Set environment variables and sign both artifacts:
```terminal
-gpg --local-user <key-id> --armor --detach-sign opentelemetry-go-<version>.tar.gz
+export VERSION="<version>" # e.g., v1.32.0
+export KEY_ID="<your-gpg-key-id>"
+
+gpg --local-user $KEY_ID --armor --detach-sign opentelemetry-go-$VERSION.tar.gz
+gpg --local-user $KEY_ID --armor --detach-sign opentelemetry-go-$VERSION.zip
```
-You can verify the signature with:
+You can verify the signatures with:
```terminal
-gpg --verify opentelemetry-go-<version>.tar.gz.asc opentelemetry-go-<version>.tar.gz
+gpg --verify opentelemetry-go-$VERSION.tar.gz.asc opentelemetry-go-$VERSION.tar.gz
+gpg --verify opentelemetry-go-$VERSION.zip.asc opentelemetry-go-$VERSION.zip
```
-[these steps]: https://wiki.debian.org/Creating%20signed%20GitHub%20releases
[this script]: https://github.com/MrAlias/attest-sh
+## Release
+
+Finally create a Release for the new `<new tag>` on GitHub.
+The release body should include all the release notes from the Changelog for this release.
+
+***IMPORTANT***: GitHub Releases are immutable once created.
+You must upload the signed artifacts (`.tar.gz`, `.tar.gz.asc`, `.zip`, and `.zip.asc`) when creating the release, as they cannot be added or modified later.
+
## Post-Release
### Contrib Repository
Once all related issues and PRs have been added to the milestone, close the milestone.
-### Demo Repository
-
-Bump the dependencies in the following Go services:
-
-- [`accounting`](https://github.com/open-telemetry/opentelemetry-demo/tree/main/src/accounting)
-- [`checkoutservice`](https://github.com/open-telemetry/opentelemetry-demo/tree/main/src/checkout)
-- [`productcatalogservice`](https://github.com/open-telemetry/opentelemetry-demo/tree/main/src/product-catalog)
-
### Close the `Version Release` issue
Once the todo list in the `Version Release` issue is complete, close the issue.
in either the module path or the import path.
* In addition to public APIs, telemetry produced by stable instrumentation
will remain stable and backwards compatible. This is to avoid breaking
- alerts and dashboard.
+ alerts and dashboards.
* Modules will be used to encapsulate instrumentation, detectors, exporters,
propagators, and any other independent sets of related components.
* Experimental modules still under active development will be versioned at
// set into a wire representation.
Encoder interface {
// Encode returns the serialized encoding of the attribute set using
- // its Iterator. This result may be cached by a attribute.Set.
+ // its Iterator. This result may be cached by an attribute.Set.
Encode(iterator Iterator) string
// ID returns a value that is unique for each class of attribute
--- /dev/null
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+package attribute // import "go.opentelemetry.io/otel/attribute"
+
+import (
+ "fmt"
+ "reflect"
+
+ "go.opentelemetry.io/otel/attribute/internal/xxhash"
+)
+
+// Type identifiers. These identifiers are hashed before the value of the
+// corresponding type. This is done to distinguish values that are hashed with
+// the same value representation (e.g. `int64(1)` and `true`, []int64{0} and
+// int64(0)).
+//
+// These are all 8 byte length strings converted to a uint64 representation. A
+// uint64 is used instead of the string directly as an optimization, it avoids
+// the for loop in [xxhash] which adds minor overhead.
+const (
+ boolID uint64 = 7953749933313450591 // "_boolean" (little endian)
+ int64ID uint64 = 7592915492740740150 // "64_bit_i" (little endian)
+ float64ID uint64 = 7376742710626956342 // "64_bit_f" (little endian)
+ stringID uint64 = 6874584755375207263 // "_string_" (little endian)
+ boolSliceID uint64 = 6875993255270243167 // "_[]bool_" (little endian)
+ int64SliceID uint64 = 3762322556277578591 // "_[]int64" (little endian)
+ float64SliceID uint64 = 7308324551835016539 // "[]double" (little endian)
+ stringSliceID uint64 = 7453010373645655387 // "[]string" (little endian)
+)
+
+// hashKVs returns a new xxHash64 hash of kvs.
+func hashKVs(kvs []KeyValue) uint64 {
+ h := xxhash.New()
+ for _, kv := range kvs {
+ h = hashKV(h, kv)
+ }
+ return h.Sum64()
+}
+
+// hashKV returns the xxHash64 hash of kv with h as the base.
+func hashKV(h xxhash.Hash, kv KeyValue) xxhash.Hash {
+ h = h.String(string(kv.Key))
+
+ switch kv.Value.Type() {
+ case BOOL:
+ h = h.Uint64(boolID)
+ h = h.Uint64(kv.Value.numeric)
+ case INT64:
+ h = h.Uint64(int64ID)
+ h = h.Uint64(kv.Value.numeric)
+ case FLOAT64:
+ h = h.Uint64(float64ID)
+ // Assumes numeric stored with math.Float64bits.
+ h = h.Uint64(kv.Value.numeric)
+ case STRING:
+ h = h.Uint64(stringID)
+ h = h.String(kv.Value.stringly)
+ case BOOLSLICE:
+ h = h.Uint64(boolSliceID)
+ rv := reflect.ValueOf(kv.Value.slice)
+ for i := 0; i < rv.Len(); i++ {
+ h = h.Bool(rv.Index(i).Bool())
+ }
+ case INT64SLICE:
+ h = h.Uint64(int64SliceID)
+ rv := reflect.ValueOf(kv.Value.slice)
+ for i := 0; i < rv.Len(); i++ {
+ h = h.Int64(rv.Index(i).Int())
+ }
+ case FLOAT64SLICE:
+ h = h.Uint64(float64SliceID)
+ rv := reflect.ValueOf(kv.Value.slice)
+ for i := 0; i < rv.Len(); i++ {
+ h = h.Float64(rv.Index(i).Float())
+ }
+ case STRINGSLICE:
+ h = h.Uint64(stringSliceID)
+ rv := reflect.ValueOf(kv.Value.slice)
+ for i := 0; i < rv.Len(); i++ {
+ h = h.String(rv.Index(i).String())
+ }
+ case INVALID:
+ default:
+ // Logging is an alternative, but using the internal logger here
+ // causes an import cycle so it is not done.
+ v := kv.Value.AsInterface()
+ msg := fmt.Sprintf("unknown value type: %[1]v (%[1]T)", v)
+ panic(msg)
+ }
+ return h
+}
--- /dev/null
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+// Package xxhash provides a wrapper around the xxhash library for attribute hashing.
+package xxhash // import "go.opentelemetry.io/otel/attribute/internal/xxhash"
+
+import (
+ "encoding/binary"
+ "math"
+
+ "github.com/cespare/xxhash/v2"
+)
+
+// Hash wraps xxhash.Digest to provide an API friendly for hashing attribute values.
+type Hash struct {
+ d *xxhash.Digest
+}
+
+// New returns a new initialized xxHash64 hasher.
+func New() Hash {
+ return Hash{d: xxhash.New()}
+}
+
+func (h Hash) Uint64(val uint64) Hash {
+ var buf [8]byte
+ binary.LittleEndian.PutUint64(buf[:], val)
+ // errors from Write are always nil for xxhash
+ // if it returns an err then panic
+ _, err := h.d.Write(buf[:])
+ if err != nil {
+ panic("xxhash write of uint64 failed: " + err.Error())
+ }
+ return h
+}
+
+func (h Hash) Bool(val bool) Hash { // nolint:revive // This is a hashing function.
+ if val {
+ return h.Uint64(1)
+ }
+ return h.Uint64(0)
+}
+
+func (h Hash) Float64(val float64) Hash {
+ return h.Uint64(math.Float64bits(val))
+}
+
+func (h Hash) Int64(val int64) Hash {
+ return h.Uint64(uint64(val)) // nolint:gosec // Overflow doesn't matter since we are hashing.
+}
+
+func (h Hash) String(val string) Hash {
+ // errors from WriteString are always nil for xxhash
+ // if it returns an err then panic
+ _, err := h.d.WriteString(val)
+ if err != nil {
+ panic("xxhash write of string failed: " + err.Error())
+ }
+ return h
+}
+
+// Sum64 returns the current hash value.
+func (h Hash) Sum64() uint64 {
+ return h.d.Sum64()
+}
"reflect"
"slices"
"sort"
+
+ "go.opentelemetry.io/otel/attribute/internal/xxhash"
)
type (
// the Equals method to ensure stable equivalence checking.
//
// Users should also use the Distinct returned from Equivalent as a map key
- // instead of a Set directly. In addition to that type providing guarantees
- // on stable equivalence, it may also provide performance improvements.
+ // instead of a Set directly. Set has relatively poor performance when used
+ // as a map key compared to Distinct.
Set struct {
- equivalent Distinct
+ hash uint64
+ data any
}
- // Distinct is a unique identifier of a Set.
+ // Distinct is an identifier of a Set which is very likely to be unique.
//
- // Distinct is designed to ensure equivalence stability: comparisons will
- // return the same value across versions. For this reason, Distinct should
- // always be used as a map key instead of a Set.
+ // Distinct should be used as a map key instead of a Set for to provide better
+ // performance for map operations.
Distinct struct {
- iface any
+ hash uint64
}
// Sortable implements sort.Interface, used for sorting KeyValue.
Sortable []KeyValue
)
+// Compile time check these types remain comparable.
+var (
+ _ = isComparable(Set{})
+ _ = isComparable(Distinct{})
+)
+
+func isComparable[T comparable](t T) T { return t }
+
var (
// keyValueType is used in computeDistinctReflect.
keyValueType = reflect.TypeOf(KeyValue{})
- // emptySet is returned for empty attribute sets.
- emptySet = &Set{
- equivalent: Distinct{
- iface: [0]KeyValue{},
- },
+ // emptyHash is the hash of an empty set.
+ emptyHash = xxhash.New().Sum64()
+
+ // userDefinedEmptySet is an empty set. It was mistakenly exposed to users
+ // as something they can assign to, so it must remain addressable and
+ // mutable.
+ //
+ // This is kept for backwards compatibility, but should not be used in new code.
+ userDefinedEmptySet = &Set{
+ hash: emptyHash,
+ data: [0]KeyValue{},
+ }
+
+ emptySet = Set{
+ hash: emptyHash,
+ data: [0]KeyValue{},
}
)
//
// This is a convenience provided for optimized calling utility.
func EmptySet() *Set {
- return emptySet
-}
-
-// reflectValue abbreviates reflect.ValueOf(d).
-func (d Distinct) reflectValue() reflect.Value {
- return reflect.ValueOf(d.iface)
+ // Continue to return the pointer to the user-defined empty set for
+ // backwards-compatibility.
+ //
+ // New code should not use this, instead use emptySet.
+ return userDefinedEmptySet
}
// Valid reports whether this value refers to a valid Set.
-func (d Distinct) Valid() bool {
- return d.iface != nil
+func (d Distinct) Valid() bool { return d.hash != 0 }
+
+// reflectValue abbreviates reflect.ValueOf(d).
+func (l Set) reflectValue() reflect.Value {
+ return reflect.ValueOf(l.data)
}
// Len returns the number of attributes in this set.
func (l *Set) Len() int {
- if l == nil || !l.equivalent.Valid() {
+ if l == nil || l.hash == 0 {
return 0
}
- return l.equivalent.reflectValue().Len()
+ return l.reflectValue().Len()
}
// Get returns the KeyValue at ordered position idx in this set.
func (l *Set) Get(idx int) (KeyValue, bool) {
- if l == nil || !l.equivalent.Valid() {
+ if l == nil || l.hash == 0 {
return KeyValue{}, false
}
- value := l.equivalent.reflectValue()
+ value := l.reflectValue()
if idx >= 0 && idx < value.Len() {
// Note: The Go compiler successfully avoids an allocation for
// Value returns the value of a specified key in this set.
func (l *Set) Value(k Key) (Value, bool) {
- if l == nil || !l.equivalent.Valid() {
+ if l == nil || l.hash == 0 {
return Value{}, false
}
- rValue := l.equivalent.reflectValue()
+ rValue := l.reflectValue()
vlen := rValue.Len()
idx := sort.Search(vlen, func(idx int) bool {
return iter.ToSlice()
}
-// Equivalent returns a value that may be used as a map key. The Distinct type
-// guarantees that the result will equal the equivalent. Distinct value of any
+// Equivalent returns a value that may be used as a map key. Equal Distinct
+// values are very likely to be equivalent attribute Sets. Distinct value of any
// attribute set with the same elements as this, where sets are made unique by
// choosing the last value in the input for any given key.
func (l *Set) Equivalent() Distinct {
- if l == nil || !l.equivalent.Valid() {
- return emptySet.equivalent
+ if l == nil || l.hash == 0 {
+ return Distinct{hash: emptySet.hash}
}
- return l.equivalent
+ return Distinct{hash: l.hash}
}
// Equals reports whether the argument set is equivalent to this set.
func (l *Set) Equals(o *Set) bool {
- return l.Equivalent() == o.Equivalent()
+ if l.Equivalent() != o.Equivalent() {
+ return false
+ }
+ if l == nil || l.hash == 0 {
+ l = &emptySet
+ }
+ if o == nil || o.hash == 0 {
+ o = &emptySet
+ }
+ return l.data == o.data
}
// Encoded returns the encoded form of this set, according to encoder.
return encoder.Encode(l.Iter())
}
-func empty() Set {
- return Set{
- equivalent: emptySet.equivalent,
- }
-}
-
// NewSet returns a new Set. See the documentation for
// NewSetWithSortableFiltered for more details.
//
func NewSetWithFiltered(kvs []KeyValue, filter Filter) (Set, []KeyValue) {
// Check for empty set.
if len(kvs) == 0 {
- return empty(), nil
+ return emptySet, nil
}
// Stable sort so the following de-duplication can implement
if filter != nil {
if div := filteredToFront(kvs, filter); div != 0 {
- return Set{equivalent: computeDistinct(kvs[div:])}, kvs[:div]
+ return newSet(kvs[div:]), kvs[:div]
}
}
- return Set{equivalent: computeDistinct(kvs)}, nil
+ return newSet(kvs), nil
}
// NewSetWithSortableFiltered returns a new Set.
if first == 0 {
// It is safe to assume len(slice) >= 1 given we found at least one
// attribute above that needs to be filtered out.
- return Set{equivalent: computeDistinct(slice[1:])}, slice[:1]
+ return newSet(slice[1:]), slice[:1]
}
// Move the filtered slice[first] to the front (preserving order).
// Do not re-evaluate re(slice[first+1:]).
div := filteredToFront(slice[1:first+1], re) + 1
- return Set{equivalent: computeDistinct(slice[div:])}, slice[:div]
+ return newSet(slice[div:]), slice[:div]
}
-// computeDistinct returns a Distinct using either the fixed- or
-// reflect-oriented code path, depending on the size of the input. The input
-// slice is assumed to already be sorted and de-duplicated.
-func computeDistinct(kvs []KeyValue) Distinct {
- iface := computeDistinctFixed(kvs)
- if iface == nil {
- iface = computeDistinctReflect(kvs)
+// newSet returns a new set based on the sorted and uniqued kvs.
+func newSet(kvs []KeyValue) Set {
+ s := Set{
+ hash: hashKVs(kvs),
+ data: computeDataFixed(kvs),
}
- return Distinct{
- iface: iface,
+ if s.data == nil {
+ s.data = computeDataReflect(kvs)
}
+ return s
}
-// computeDistinctFixed computes a Distinct for small slices. It returns nil
-// if the input is too large for this code path.
-func computeDistinctFixed(kvs []KeyValue) any {
+// computeDataFixed computes a Set data for small slices. It returns nil if the
+// input is too large for this code path.
+func computeDataFixed(kvs []KeyValue) any {
switch len(kvs) {
case 1:
return [1]KeyValue(kvs)
}
}
-// computeDistinctReflect computes a Distinct using reflection, works for any
-// size input.
-func computeDistinctReflect(kvs []KeyValue) any {
+// computeDataReflect computes a Set data using reflection, works for any size
+// input.
+func computeDataReflect(kvs []KeyValue) any {
at := reflect.New(reflect.ArrayOf(len(kvs), keyValueType)).Elem()
for i, keyValue := range kvs {
*(at.Index(i).Addr().Interface().(*KeyValue)) = keyValue
// MarshalJSON returns the JSON encoding of the Set.
func (l *Set) MarshalJSON() ([]byte, error) {
- return json.Marshal(l.equivalent.iface)
+ return json.Marshal(l.data)
}
// MarshalLog is the marshaling function used by the logging system to represent this Set.
var _Type_index = [...]uint8{0, 7, 11, 16, 23, 29, 38, 48, 60, 71}
func (i Type) String() string {
- if i < 0 || i >= Type(len(_Type_index)-1) {
+ idx := int(i) - 0
+ if i < 0 || idx >= len(_Type_index)-1 {
return "Type(" + strconv.FormatInt(int64(i), 10) + ")"
}
- return _Type_name[_Type_index[i]:_Type_index[i+1]]
+ return _Type_name[_Type_index[idx]:_Type_index[idx+1]]
}
// If we couldn't find any valid key character,
// it means the key is either empty or invalid.
if keyStart == keyEnd {
- return
+ return p, ok
}
// Skip spaces after the key: " key< >= value ".
// A key can have no value, like: " key ".
ok = true
p.key = s[keyStart:keyEnd]
- return
+ return p, ok
}
// If we have not reached the end and we can't find the '=' delimiter,
// it means the property is invalid.
if s[index] != keyValueDelimiter[0] {
- return
+ return p, ok
}
// Attempting to parse the value.
// we have not reached the end, it means the property is
// invalid, something like: " key = value value1".
if index != len(s) {
- return
+ return p, ok
}
// Decode a percent-encoded value.
rawVal := s[valueStart:valueEnd]
unescapeVal, err := url.PathUnescape(rawVal)
if err != nil {
- return
+ return p, ok
}
value := replaceInvalidUTF8Sequences(len(rawVal), unescapeVal)
p.hasValue = true
p.value = value
- return
+ return p, ok
}
func skipSpace(s string, offset int) int {
# This is a renovate-friendly source of Docker images.
FROM python:3.13.6-slim-bullseye@sha256:e98b521460ee75bca92175c16247bdf7275637a8faaeb2bcfa19d879ae5c4b9a AS python
-FROM otel/weaver:v0.17.1@sha256:32523b5e44fb44418786347e9f7dde187d8797adb6d57a2ee99c245346c3cdfe AS weaver
+FROM otel/weaver:v0.19.0@sha256:3d20814cef548f1d31f27f054fb4cd6a05125641a9f7cc29fc7eb234e8052cd9 AS weaver
FROM avtodev/markdown-lint:v1@sha256:6aeedc2f49138ce7a1cd0adffc1b1c0321b841dc2102408967d9301c031949ee AS markdown
setDelegate(metric.Meter)
}
-// instID are the identifying properties of a instrument.
+// instID are the identifying properties of an instrument.
type instID struct {
// name is the name of the stream.
name string
// Meter returns a Meter from the global MeterProvider. The name must be the
// name of the library providing instrumentation. This name may be the same as
// the instrumented code only if that code provides built-in instrumentation.
-// If the name is empty, then a implementation defined default name will be
+// If the name is empty, then an implementation defined default name will be
// used instead.
//
// If this is called before a global MeterProvider is registered the returned
package metric // import "go.opentelemetry.io/otel/metric"
-import "go.opentelemetry.io/otel/attribute"
+import (
+ "slices"
+
+ "go.opentelemetry.io/otel/attribute"
+)
// MeterConfig contains options for Meters.
type MeterConfig struct {
})
}
-// WithInstrumentationAttributes sets the instrumentation attributes.
+// WithInstrumentationAttributes adds the instrumentation attributes.
+//
+// This is equivalent to calling [WithInstrumentationAttributeSet] with an
+// [attribute.Set] created from a clone of the passed attributes.
+// [WithInstrumentationAttributeSet] is recommended for more control.
//
-// The passed attributes will be de-duplicated.
+// If multiple [WithInstrumentationAttributes] or [WithInstrumentationAttributeSet]
+// options are passed, the attributes will be merged together in the order
+// they are passed. Attributes with duplicate keys will use the last value passed.
func WithInstrumentationAttributes(attr ...attribute.KeyValue) MeterOption {
+ set := attribute.NewSet(slices.Clone(attr)...)
+ return WithInstrumentationAttributeSet(set)
+}
+
+// WithInstrumentationAttributeSet adds the instrumentation attributes.
+//
+// If multiple [WithInstrumentationAttributes] or [WithInstrumentationAttributeSet]
+// options are passed, the attributes will be merged together in the order
+// they are passed. Attributes with duplicate keys will use the last value passed.
+func WithInstrumentationAttributeSet(set attribute.Set) MeterOption {
+ if set.Len() == 0 {
+ return meterOptionFunc(func(config MeterConfig) MeterConfig {
+ return config
+ })
+ }
+
return meterOptionFunc(func(config MeterConfig) MeterConfig {
- config.attrs = attribute.NewSet(attr...)
+ if config.attrs.Len() == 0 {
+ config.attrs = set
+ } else {
+ config.attrs = mergeSets(config.attrs, set)
+ }
return config
})
}
}
// Clear all flags other than the trace-context supported sampling bit.
- scc.TraceFlags = trace.TraceFlags(opts[0]) & trace.FlagsSampled
+ scc.TraceFlags = trace.TraceFlags(opts[0]) & trace.FlagsSampled // nolint:gosec // slice size already checked.
// Ignore the error returned here. Failure to parse tracestate MUST NOT
// affect the parsing of traceparent according to the W3C tracecontext
package semconv // import "go.opentelemetry.io/otel/semconv/v1.37.0"
import (
- "fmt"
"reflect"
"go.opentelemetry.io/otel/attribute"
)
// ErrorType returns an [attribute.KeyValue] identifying the error type of err.
+//
+// If err is nil, the returned attribute has the default value
+// [ErrorTypeOther].
+//
+// If err's type has the method
+//
+// ErrorType() string
+//
+// then the returned attribute has the value of err.ErrorType(). Otherwise, the
+// returned attribute has a value derived from the concrete type of err.
+//
+// The key of the returned attribute is [ErrorTypeKey].
func ErrorType(err error) attribute.KeyValue {
if err == nil {
return ErrorTypeOther
}
- t := reflect.TypeOf(err)
- var value string
- if t.PkgPath() == "" && t.Name() == "" {
- // Likely a builtin type.
- value = t.String()
- } else {
- value = fmt.Sprintf("%s.%s", t.PkgPath(), t.Name())
+
+ return ErrorTypeKey.String(errorType(err))
+}
+
+func errorType(err error) string {
+ var s string
+ if et, ok := err.(interface{ ErrorType() string }); ok {
+ // Prioritize the ErrorType method if available.
+ s = et.ErrorType()
}
+ if s == "" {
+ // Fallback to reflection if the ErrorType method is not supported or
+ // returns an empty value.
- if value == "" {
- return ErrorTypeOther
+ t := reflect.TypeOf(err)
+ pkg, name := t.PkgPath(), t.Name()
+ if pkg != "" && name != "" {
+ s = pkg + "." + name
+ } else {
+ // The type has no package path or name (predeclared, not-defined,
+ // or alias for a not-defined type).
+ //
+ // This is not guaranteed to be unique, but is a best effort.
+ s = t.String()
+ }
}
- return ErrorTypeKey.String(value)
+ return s
}
package trace // import "go.opentelemetry.io/otel/trace"
import (
+ "slices"
"time"
"go.opentelemetry.io/otel/attribute"
})
}
-// WithInstrumentationAttributes sets the instrumentation attributes.
+// mergeSets returns the union of keys between a and b. Any duplicate keys will
+// use the value associated with b.
+func mergeSets(a, b attribute.Set) attribute.Set {
+ // NewMergeIterator uses the first value for any duplicates.
+ iter := attribute.NewMergeIterator(&b, &a)
+ merged := make([]attribute.KeyValue, 0, a.Len()+b.Len())
+ for iter.Next() {
+ merged = append(merged, iter.Attribute())
+ }
+ return attribute.NewSet(merged...)
+}
+
+// WithInstrumentationAttributes adds the instrumentation attributes.
//
-// The passed attributes will be de-duplicated.
+// This is equivalent to calling [WithInstrumentationAttributeSet] with an
+// [attribute.Set] created from a clone of the passed attributes.
+// [WithInstrumentationAttributeSet] is recommended for more control.
+//
+// If multiple [WithInstrumentationAttributes] or [WithInstrumentationAttributeSet]
+// options are passed, the attributes will be merged together in the order
+// they are passed. Attributes with duplicate keys will use the last value passed.
func WithInstrumentationAttributes(attr ...attribute.KeyValue) TracerOption {
+ set := attribute.NewSet(slices.Clone(attr)...)
+ return WithInstrumentationAttributeSet(set)
+}
+
+// WithInstrumentationAttributeSet adds the instrumentation attributes.
+//
+// If multiple [WithInstrumentationAttributes] or [WithInstrumentationAttributeSet]
+// options are passed, the attributes will be merged together in the order
+// they are passed. Attributes with duplicate keys will use the last value passed.
+func WithInstrumentationAttributeSet(set attribute.Set) TracerOption {
+ if set.Len() == 0 {
+ return tracerOptionFunc(func(config TracerConfig) TracerConfig {
+ return config
+ })
+ }
+
return tracerOptionFunc(func(config TracerConfig) TracerConfig {
- config.attrs = attribute.NewSet(attr...)
+ if config.attrs.Len() == 0 {
+ config.attrs = set
+ } else {
+ config.attrs = mergeSets(config.attrs, set)
+ }
return config
})
}
// SetAttributes sets kv as attributes of the Span. If a key from kv
// already exists for an attribute of the Span it will be overwritten with
// the value contained in kv.
+ //
+ // Note that adding attributes at span creation using [WithAttributes] is preferred
+ // to calling SetAttribute later, as samplers can only consider information
+ // already present during span creation.
SetAttributes(kv ...attribute.KeyValue)
// TracerProvider returns a TracerProvider that can be used to generate
// Version is the current release version of OpenTelemetry in use.
func Version() string {
- return "1.38.0"
+ return "1.39.0"
}
module-sets:
stable-v1:
- version: v1.38.0
+ version: v1.39.0
modules:
- go.opentelemetry.io/otel
- go.opentelemetry.io/otel/bridge/opencensus
- go.opentelemetry.io/otel/sdk/metric
- go.opentelemetry.io/otel/trace
experimental-metrics:
- version: v0.60.0
+ version: v0.61.0
modules:
- go.opentelemetry.io/otel/exporters/prometheus
experimental-logs:
- version: v0.14.0
+ version: v0.15.0
modules:
- go.opentelemetry.io/otel/log
- go.opentelemetry.io/otel/log/logtest
- go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp
- go.opentelemetry.io/otel/exporters/stdout/stdoutlog
experimental-schema:
- version: v0.0.13
+ version: v0.0.14
modules:
- go.opentelemetry.io/otel/schema
excluded-modules:
- go.opentelemetry.io/otel/internal/tools
- go.opentelemetry.io/otel/trace/internal/telemetry/test
+modules:
+ go.opentelemetry.io/otel/exporters/stdout/stdouttrace:
+ version-refs:
+ - ./internal/version.go
+ go.opentelemetry.io/otel/exporters/prometheus:
+ version-refs:
+ - ./internal/version.go
+ go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc:
+ version-refs:
+ - ./internal/version.go
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc:
+ version-refs:
+ - ./internal/version.go
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp:
+ version-refs:
+ - ./internal/version.go
+ go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp:
+ version-refs:
+ - ./internal/version.go
--- /dev/null
+/*
+Copyright 2025 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package buffer
+
+import (
+ "errors"
+ "io"
+)
+
+// Compile-time check that *TypedRingFixed[byte] implements io.Writer.
+var _ io.Writer = (*TypedRingFixed[byte])(nil)
+
+// ErrInvalidSize indicates size must be > 0
+var ErrInvalidSize = errors.New("size must be positive")
+
+// TypedRingFixed is a fixed-size circular buffer for elements of type T.
+// Writes overwrite older data, keeping only the last N elements.
+// Not thread safe.
+type TypedRingFixed[T any] struct {
+ data []T
+ size int
+ writeCursor int
+ written int64
+}
+
+// NewTypedRingFixed creates a circular buffer with the given capacity (must be > 0).
+func NewTypedRingFixed[T any](size int) (*TypedRingFixed[T], error) {
+ if size <= 0 {
+ return nil, ErrInvalidSize
+ }
+ return &TypedRingFixed[T]{
+ data: make([]T, size),
+ size: size,
+ }, nil
+}
+
+// Write writes p to the buffer, overwriting old data if needed.
+func (r *TypedRingFixed[T]) Write(p []T) (int, error) {
+ originalLen := len(p)
+ r.written += int64(originalLen)
+
+ // If the input is larger than our buffer, only keep the last 'size' elements
+ if originalLen > r.size {
+ p = p[originalLen-r.size:]
+ }
+
+ // Copy data, handling wrap-around
+ n := len(p)
+ remain := r.size - r.writeCursor
+ if n <= remain {
+ copy(r.data[r.writeCursor:], p)
+ } else {
+ copy(r.data[r.writeCursor:], p[:remain])
+ copy(r.data, p[remain:])
+ }
+
+ r.writeCursor = (r.writeCursor + n) % r.size
+ return originalLen, nil
+}
+
+// Slice returns buffer contents in write order. Don't modify the returned slice.
+func (r *TypedRingFixed[T]) Slice() []T {
+ if r.written == 0 {
+ return nil
+ }
+
+ // Buffer hasn't wrapped yet
+ if r.written < int64(r.size) {
+ return r.data[:r.writeCursor]
+ }
+
+ // Buffer has wrapped - need to return data in correct order
+ // Data from writeCursor to end is oldest, data from 0 to writeCursor is newest
+ if r.writeCursor == 0 {
+ return r.data
+ }
+
+ out := make([]T, r.size)
+ copy(out, r.data[r.writeCursor:])
+ copy(out[r.size-r.writeCursor:], r.data[:r.writeCursor])
+ return out
+}
+
+// Size returns the buffer capacity.
+func (r *TypedRingFixed[T]) Size() int {
+ return r.size
+}
+
+// Len returns how many elements are currently in the buffer.
+func (r *TypedRingFixed[T]) Len() int {
+ if r.written < int64(r.size) {
+ return int(r.written)
+ }
+ return r.size
+}
+
+// TotalWritten returns total elements ever written (including overwritten ones).
+func (r *TypedRingFixed[T]) TotalWritten() int64 {
+ return r.written
+}
+
+// Reset clears the buffer.
+func (r *TypedRingFixed[T]) Reset() {
+ r.writeCursor = 0
+ r.written = 0
+}
import (
"context"
+ "errors"
"io"
"io/fs"
osexec "os/exec"
return &executor{}
}
+// maskErrDotCmd reverts the behavior of osexec.Cmd to what it was before go1.19
+// specifically set the Err field to nil (LookPath returns a new error when the file
+// is resolved to the current directory.
+func maskErrDotCmd(cmd *osexec.Cmd) *osexec.Cmd {
+ cmd.Err = maskErrDot(cmd.Err)
+ return cmd
+}
+
+func maskErrDot(err error) error {
+ if err != nil && errors.Is(err, osexec.ErrDot) {
+ return nil
+ }
+ return err
+}
+
// Command is part of the Interface interface.
func (executor *executor) Command(cmd string, args ...string) Cmd {
return (*cmdWrapper)(maskErrDotCmd(osexec.Command(cmd, args...)))
+++ /dev/null
-//go:build !go1.19
-// +build !go1.19
-
-/*
-Copyright 2022 The Kubernetes Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package exec
-
-import (
- osexec "os/exec"
-)
-
-func maskErrDotCmd(cmd *osexec.Cmd) *osexec.Cmd {
- return cmd
-}
-
-func maskErrDot(err error) error {
- return err
-}
+++ /dev/null
-//go:build go1.19
-// +build go1.19
-
-/*
-Copyright 2022 The Kubernetes Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package exec
-
-import (
- "errors"
- osexec "os/exec"
-)
-
-// maskErrDotCmd reverts the behavior of osexec.Cmd to what it was before go1.19
-// specifically set the Err field to nil (LookPath returns a new error when the file
-// is resolved to the current directory.
-func maskErrDotCmd(cmd *osexec.Cmd) *osexec.Cmd {
- cmd.Err = maskErrDot(cmd.Err)
- return cmd
-}
-
-func maskErrDot(err error) error {
- if err != nil && errors.Is(err, osexec.ErrDot) {
- return nil
- }
- return err
-}
# github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2
## explicit; go 1.13
github.com/asaskevich/govalidator
-# github.com/aws/aws-sdk-go-v2 v1.40.1
+# github.com/aws/aws-sdk-go-v2 v1.41.0
## explicit; go 1.23
github.com/aws/aws-sdk-go-v2/aws
github.com/aws/aws-sdk-go-v2/aws/defaults
github.com/aws/aws-sdk-go-v2/internal/strings
github.com/aws/aws-sdk-go-v2/internal/sync/singleflight
github.com/aws/aws-sdk-go-v2/internal/timeconv
-# github.com/aws/aws-sdk-go-v2/config v1.32.3
+# github.com/aws/aws-sdk-go-v2/config v1.32.6
## explicit; go 1.23
github.com/aws/aws-sdk-go-v2/config
-# github.com/aws/aws-sdk-go-v2/credentials v1.19.3
+# github.com/aws/aws-sdk-go-v2/credentials v1.19.6
## explicit; go 1.23
github.com/aws/aws-sdk-go-v2/credentials
github.com/aws/aws-sdk-go-v2/credentials/ec2rolecreds
github.com/aws/aws-sdk-go-v2/credentials/processcreds
github.com/aws/aws-sdk-go-v2/credentials/ssocreds
github.com/aws/aws-sdk-go-v2/credentials/stscreds
-# github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.15
+# github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.16
## explicit; go 1.23
github.com/aws/aws-sdk-go-v2/feature/ec2/imds
github.com/aws/aws-sdk-go-v2/feature/ec2/imds/internal/config
-# github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.15
+# github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.16
## explicit; go 1.23
github.com/aws/aws-sdk-go-v2/internal/configsources
-# github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.15
+# github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.16
## explicit; go 1.23
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2
# github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4
## explicit; go 1.23
github.com/aws/aws-sdk-go-v2/internal/ini
-# github.com/aws/aws-sdk-go-v2/service/ec2 v1.275.1
+# github.com/aws/aws-sdk-go-v2/service/ec2 v1.278.0
## explicit; go 1.23
github.com/aws/aws-sdk-go-v2/service/ec2
github.com/aws/aws-sdk-go-v2/service/ec2/internal/endpoints
# github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.4
## explicit; go 1.23
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding
-# github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.15
+# github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.16
## explicit; go 1.23
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url
-# github.com/aws/aws-sdk-go-v2/service/signin v1.0.3
+# github.com/aws/aws-sdk-go-v2/service/signin v1.0.4
## explicit; go 1.23
github.com/aws/aws-sdk-go-v2/service/signin
github.com/aws/aws-sdk-go-v2/service/signin/internal/endpoints
github.com/aws/aws-sdk-go-v2/service/signin/types
-# github.com/aws/aws-sdk-go-v2/service/sso v1.30.6
+# github.com/aws/aws-sdk-go-v2/service/sso v1.30.8
## explicit; go 1.23
github.com/aws/aws-sdk-go-v2/service/sso
github.com/aws/aws-sdk-go-v2/service/sso/internal/endpoints
github.com/aws/aws-sdk-go-v2/service/sso/types
-# github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.11
+# github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.12
## explicit; go 1.23
github.com/aws/aws-sdk-go-v2/service/ssooidc
github.com/aws/aws-sdk-go-v2/service/ssooidc/internal/endpoints
github.com/aws/aws-sdk-go-v2/service/ssooidc/types
-# github.com/aws/aws-sdk-go-v2/service/sts v1.41.3
+# github.com/aws/aws-sdk-go-v2/service/sts v1.41.5
## explicit; go 1.23
github.com/aws/aws-sdk-go-v2/service/sts
github.com/aws/aws-sdk-go-v2/service/sts/internal/endpoints
github.com/chai2010/gettext-go/mo
github.com/chai2010/gettext-go/plural
github.com/chai2010/gettext-go/po
-# github.com/cilium/charts v0.0.0-20251203153012-ac76b7522d1a
+# github.com/cilium/charts v0.0.0-20251217104012-70fd91a32619
## explicit; go 1.17
github.com/cilium/charts
# github.com/cilium/coverbee v0.3.3-0.20240723084546-664438750fce
# github.com/cilium/dns v1.1.51-0.20240603182237-af788769786a
## explicit; go 1.18
github.com/cilium/dns
-# github.com/cilium/ebpf v0.20.1-0.20251204155832-f150ced93791
+# github.com/cilium/ebpf v0.20.1-0.20251215101449-df5c3096bd8c
## explicit; go 1.24.0
github.com/cilium/ebpf
github.com/cilium/ebpf/asm
# github.com/cilium/fake v0.7.0
## explicit; go 1.22
github.com/cilium/fake
-# github.com/cilium/hive v0.0.0-20251021073839-03494cb6c4de
+# github.com/cilium/hive v0.0.0-20251219070844-89ccf807d9fb
## explicit; go 1.23.0
github.com/cilium/hive
github.com/cilium/hive/cell
github.com/go-openapi/analysis/internal/flatten/replace
github.com/go-openapi/analysis/internal/flatten/schutils
github.com/go-openapi/analysis/internal/flatten/sortref
-# github.com/go-openapi/errors v0.22.5
+# github.com/go-openapi/errors v0.22.6
## explicit; go 1.24.0
github.com/go-openapi/errors
-# github.com/go-openapi/jsonpointer v0.22.1
+# github.com/go-openapi/jsonpointer v0.22.4
## explicit; go 1.24.0
github.com/go-openapi/jsonpointer
-# github.com/go-openapi/jsonreference v0.21.3
+# github.com/go-openapi/jsonreference v0.21.4
## explicit; go 1.24.0
github.com/go-openapi/jsonreference
github.com/go-openapi/jsonreference/internal
github.com/go-openapi/runtime/middleware/untyped
github.com/go-openapi/runtime/security
github.com/go-openapi/runtime/yamlpc
-# github.com/go-openapi/spec v0.22.1
+# github.com/go-openapi/spec v0.22.2
## explicit; go 1.24.0
github.com/go-openapi/spec
# github.com/go-openapi/strfmt v0.25.0
github.com/zmap/zlint/v3/lints/mozilla
github.com/zmap/zlint/v3/lints/rfc
github.com/zmap/zlint/v3/util
-# go.etcd.io/etcd/api/v3 v3.6.6
-## explicit; go 1.24
+# go.etcd.io/etcd/api/v3 v3.6.7
+## explicit; go 1.24.0
go.etcd.io/etcd/api/v3/authpb
go.etcd.io/etcd/api/v3/etcdserverpb
go.etcd.io/etcd/api/v3/membershippb
go.etcd.io/etcd/api/v3/v3rpc/rpctypes
go.etcd.io/etcd/api/v3/version
go.etcd.io/etcd/api/v3/versionpb
-# go.etcd.io/etcd/client/pkg/v3 v3.6.6
-## explicit; go 1.24
+# go.etcd.io/etcd/client/pkg/v3 v3.6.7
+## explicit; go 1.24.0
go.etcd.io/etcd/client/pkg/v3/fileutil
go.etcd.io/etcd/client/pkg/v3/logutil
go.etcd.io/etcd/client/pkg/v3/systemd
go.etcd.io/etcd/client/pkg/v3/transport
go.etcd.io/etcd/client/pkg/v3/types
go.etcd.io/etcd/client/pkg/v3/verify
-# go.etcd.io/etcd/client/v3 v3.6.6
-## explicit; go 1.24
+# go.etcd.io/etcd/client/v3 v3.6.7
+## explicit; go 1.24.0
go.etcd.io/etcd/client/v3
go.etcd.io/etcd/client/v3/concurrency
go.etcd.io/etcd/client/v3/credentials
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil
-# go.opentelemetry.io/otel v1.38.0
-## explicit; go 1.23.0
+# go.opentelemetry.io/otel v1.39.0
+## explicit; go 1.24.0
go.opentelemetry.io/otel
go.opentelemetry.io/otel/attribute
go.opentelemetry.io/otel/attribute/internal
+go.opentelemetry.io/otel/attribute/internal/xxhash
go.opentelemetry.io/otel/baggage
go.opentelemetry.io/otel/codes
go.opentelemetry.io/otel/internal/baggage
go.opentelemetry.io/otel/semconv/v1.20.0
go.opentelemetry.io/otel/semconv/v1.26.0
go.opentelemetry.io/otel/semconv/v1.37.0
-# go.opentelemetry.io/otel/metric v1.38.0
-## explicit; go 1.23.0
+# go.opentelemetry.io/otel/metric v1.39.0
+## explicit; go 1.24.0
go.opentelemetry.io/otel/metric
go.opentelemetry.io/otel/metric/embedded
go.opentelemetry.io/otel/metric/noop
-# go.opentelemetry.io/otel/trace v1.38.0
-## explicit; go 1.23.0
+# go.opentelemetry.io/otel/trace v1.39.0
+## explicit; go 1.24.0
go.opentelemetry.io/otel/trace
go.opentelemetry.io/otel/trace/embedded
go.opentelemetry.io/otel/trace/internal/telemetry
golang.org/x/crypto/ssh
golang.org/x/crypto/ssh/agent
golang.org/x/crypto/ssh/internal/bcrypt_pbkdf
-# golang.org/x/exp v0.0.0-20251209150349-8475f28825e9
+# golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93
## explicit; go 1.24.0
golang.org/x/exp/constraints
golang.org/x/exp/slices
## explicit; go 1.25.0
k8s.io/metrics/pkg/apis/metrics
k8s.io/metrics/pkg/apis/metrics/v1beta1
-# k8s.io/utils v0.0.0-20251002143259-bc988d571ff4
-## explicit; go 1.18
+# k8s.io/utils v0.0.0-20251220205832-9d40a56c1308
+## explicit; go 1.23
k8s.io/utils/buffer
k8s.io/utils/clock
k8s.io/utils/clock/testing
sigs.k8s.io/mcs-api/pkg/client/clientset/versioned/scheme
sigs.k8s.io/mcs-api/pkg/client/clientset/versioned/typed/apis/v1alpha1
sigs.k8s.io/mcs-api/pkg/client/clientset/versioned/typed/apis/v1alpha1/fake
-# sigs.k8s.io/mcs-api/controllers v0.0.0-20251209180531-e481ae73a51f
+# sigs.k8s.io/mcs-api/controllers v0.0.0-20251217171610-79faa199f7dd
## explicit; go 1.23.0
sigs.k8s.io/mcs-api/controllers
# sigs.k8s.io/randfill v1.0.0