From 0139b6287645ff0a9366464b339b661a0279b383 Mon Sep 17 00:00:00 2001 From: Cristian Magherusan-Stanciu Date: Thu, 5 Nov 2026 20:03:00 +0100 Subject: [PATCH 1/2] chore(deps): bump cloud-commitments-go to 790f369f Moves all four cloud-commitments-go modules to go main 790f369f, which adds #682 (fractional RI quantities rounded down with their costs scaled), #684 (purchase counts above int32 refused before any AWS call), #685 (GCP lists only live commitments), #686 (the optional observed-rate capability), #688 (exchange targets need the source RI's offering type) and #691 (commitment rates fetched per layer). Minimum version selection also raises a few transitive AWS SDK and Google API modules the library requires. No replace directives; go mod verify passes. Co-Authored-By: Claude Opus 5.5 --- go.mod | 54 ++++++++++++++--------------- go.sum | 108 ++++++++++++++++++++++++++++----------------------------- 2 files changed, 81 insertions(+), 81 deletions(-) diff --git a/go.mod b/go.mod index a98b657df..df6b137e6 100644 --- a/go.mod +++ b/go.mod @@ -11,25 +11,25 @@ ignore ./frontend/node_modules require ( github.com/aws/aws-sdk-go-v2 v1.47.5 - github.com/aws/aws-sdk-go-v2/config v1.33.11 - github.com/aws/aws-sdk-go-v2/service/costexplorer v1.74.3 - github.com/aws/aws-sdk-go-v2/service/ec2 v1.341.0 - github.com/aws/aws-sdk-go-v2/service/elasticache v1.64.1 - github.com/aws/aws-sdk-go-v2/service/memorydb v1.42.6 - github.com/aws/aws-sdk-go-v2/service/opensearch v1.86.1 - github.com/aws/aws-sdk-go-v2/service/rds v1.131.1 - github.com/aws/aws-sdk-go-v2/service/redshift v1.71.5 + github.com/aws/aws-sdk-go-v2/config v1.33.13 + github.com/aws/aws-sdk-go-v2/service/costexplorer v1.74.5 + github.com/aws/aws-sdk-go-v2/service/ec2 v1.343.0 + github.com/aws/aws-sdk-go-v2/service/elasticache v1.64.2 + github.com/aws/aws-sdk-go-v2/service/memorydb v1.42.8 + github.com/aws/aws-sdk-go-v2/service/opensearch v1.87.1 + github.com/aws/aws-sdk-go-v2/service/rds v1.131.2 + github.com/aws/aws-sdk-go-v2/service/redshift v1.71.6 github.com/stretchr/testify v1.12.1 ) require ( cloud.google.com/go v0.123.0 // indirect - cloud.google.com/go/compute v1.74.0 + cloud.google.com/go/compute v1.74.1 cloud.google.com/go/compute/metadata v0.10.0 // indirect cloud.google.com/go/iam v1.14.0 // indirect cloud.google.com/go/longrunning v1.3.0 // indirect cloud.google.com/go/recommender v1.20.0 // indirect - cloud.google.com/go/resourcemanager v1.16.0 // indirect + cloud.google.com/go/resourcemanager v1.18.1 // indirect github.com/Azure/azure-sdk-for-go/sdk/azcore v1.23.3 github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.15.0 github.com/Azure/azure-sdk-for-go/sdk/internal v1.13.0 // indirect @@ -40,22 +40,22 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armsubscriptions v1.3.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/sql/armsql v1.2.0 // indirect github.com/AzureAD/microsoft-authentication-library-for-go v1.10.1 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.20.11 - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.20.4 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.20.13 + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.20.5 // indirect github.com/aws/aws-sdk-go-v2/internal/configsources v1.5.8 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.8.8 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.22 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.14.7 // indirect - github.com/aws/aws-sdk-go-v2/service/savingsplans v1.40.5 - github.com/aws/aws-sdk-go-v2/service/sso v1.38.5 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.43.5 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.23 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.14.8 // indirect + github.com/aws/aws-sdk-go-v2/service/savingsplans v1.41.1 + github.com/aws/aws-sdk-go-v2/service/sso v1.39.1 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.44.1 // indirect github.com/aws/smithy-go v1.28.7 github.com/felixge/httpsnoop v1.1.0 // indirect github.com/go-logr/logr v1.4.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/golang-jwt/jwt/v5 v5.3.1 github.com/google/s2a-go v0.1.11 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.23 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.24 // indirect github.com/googleapis/gax-go/v2 v2.27.0 github.com/kylelemons/godebug v1.1.0 // indirect github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect @@ -72,7 +72,7 @@ require ( golang.org/x/sys v0.49.0 // indirect golang.org/x/text v0.43.0 // indirect golang.org/x/time v0.16.0 // indirect - google.golang.org/api v0.309.0 + google.golang.org/api v0.310.0 google.golang.org/genproto v0.0.0-20261012220534-4341edf3f941 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20261012220534-4341edf3f941 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20261019180522-ce908d29299b // indirect @@ -88,18 +88,18 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/reservations/armreservations v1.1.0 github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.5.0 github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets v1.5.0 - github.com/LeanerCloud/cloud-commitments-go/pkg v0.0.0-20261103222717-61111428a353 - github.com/LeanerCloud/cloud-commitments-go/providers/aws v0.0.0-20261103222717-61111428a353 - github.com/LeanerCloud/cloud-commitments-go/providers/azure v0.0.0-20261103222717-61111428a353 - github.com/LeanerCloud/cloud-commitments-go/providers/gcp v0.0.0-20261103222717-61111428a353 + github.com/LeanerCloud/cloud-commitments-go/pkg v0.0.0-20261105183508-790f369f4822 + github.com/LeanerCloud/cloud-commitments-go/providers/aws v0.0.0-20261105183508-790f369f4822 + github.com/LeanerCloud/cloud-commitments-go/providers/azure v0.0.0-20261105183508-790f369f4822 + github.com/LeanerCloud/cloud-commitments-go/providers/gcp v0.0.0-20261105183508-790f369f4822 github.com/aws/aws-lambda-go v1.55.1 github.com/aws/aws-sdk-go-v2/service/kms v1.62.1 github.com/aws/aws-sdk-go-v2/service/lambda v1.113.4 - github.com/aws/aws-sdk-go-v2/service/organizations v1.62.3 + github.com/aws/aws-sdk-go-v2/service/organizations v1.62.4 github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.50.7 github.com/aws/aws-sdk-go-v2/service/sesv2 v1.79.4 github.com/aws/aws-sdk-go-v2/service/sns v1.47.7 - github.com/aws/aws-sdk-go-v2/service/sts v1.51.5 + github.com/aws/aws-sdk-go-v2/service/sts v1.51.6 github.com/coreos/go-oidc/v3 v3.21.0 github.com/go-jose/go-jose/v4 v4.1.6 github.com/golang-migrate/migrate/v4 v4.20.1 @@ -116,7 +116,7 @@ require ( cloud.google.com/go/auth v0.24.1 // indirect cloud.google.com/go/auth/oauth2adapt v0.3.0 // indirect cloud.google.com/go/monitoring v1.30.0 // indirect - cloud.google.com/go/redis v1.24.0 // indirect + cloud.google.com/go/redis v1.29.0 // indirect cloud.google.com/go/storage v1.70.0 // indirect dario.cat/mergo v1.0.2 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cosmos/armcosmos/v2 v2.7.0 // indirect @@ -132,7 +132,7 @@ require ( github.com/apparentlymart/go-textseg/v17 v17.0.1 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.25 // indirect github.com/aws/aws-sdk-go-v2/internal/v4a v1.5.8 // indirect - github.com/aws/aws-sdk-go-v2/service/signin v1.11.0 // indirect + github.com/aws/aws-sdk-go-v2/service/signin v1.12.1 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2 // indirect diff --git a/go.sum b/go.sum index 20ad857f5..318182bef 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,8 @@ cloud.google.com/go/auth v0.24.1 h1:NTmd2iJb4DsGIav0KiqFMYI88nMshA2wnFMBatRmoCs= cloud.google.com/go/auth v0.24.1/go.mod h1:1dmBXa9xfBvBr39ZnDUDkaaA91ccq9CcqENDgJA4d7c= cloud.google.com/go/auth/oauth2adapt v0.3.0 h1:FY8oSZpCYoUNv6QxVODuMjQz4IlSOVeiQtZ08vLPz88= cloud.google.com/go/auth/oauth2adapt v0.3.0/go.mod h1:7+2uCm7++XFO+/lN06c2HXpDXb/NMNn2/UwyBPbTnkk= -cloud.google.com/go/compute v1.74.0 h1:GxtfiSN4hoA/938OAruNaZ746F6rUtZNyDQvXcXutrA= -cloud.google.com/go/compute v1.74.0/go.mod h1:L8Z2360/cq2L/Z3q1o/D/jTFkzbgKLbgERpOm4/cepE= +cloud.google.com/go/compute v1.74.1 h1:YBkIwOkln5tNhGaxw7ZVyn3jOPnJ+RZsdfRa6cFGq+k= +cloud.google.com/go/compute v1.74.1/go.mod h1:F4wAagalEx1JI8OalUVXsoY6yDD9Wjzudw7EPvhVu9s= cloud.google.com/go/compute/metadata v0.10.0 h1:pyKMUQSwchgkIBBJGdILqQbs/BNJXqwSA7Ej6LAvvtY= cloud.google.com/go/compute/metadata v0.10.0/go.mod h1:rGFHRrIif570kSibjFTMbt6/4/tzgJWFGI/HVol4GIk= cloud.google.com/go/iam v1.14.0 h1:YRIB1/4xxwJ+NfI6RQr1WaOoHHeV0MizJEj940nBXJA= @@ -22,10 +22,10 @@ cloud.google.com/go/monitoring v1.30.0 h1:r/d+JUbyKmJ8b07iznuKfzVzrIXTWxHQ3lBRm3 cloud.google.com/go/monitoring v1.30.0/go.mod h1:htlUR0QWVMrjFzZmN4LGnMAve9xB/eduwjmINxVZ8RM= cloud.google.com/go/recommender v1.20.0 h1:6nNp/5aXKYo8LXMwX8V6nNC0qVXRIDu3cDlCd7eS+fQ= cloud.google.com/go/recommender v1.20.0/go.mod h1:gf3NcTlopYDtblIZfQB+J5tDasCE3OztgqQFt6Qd2V4= -cloud.google.com/go/redis v1.24.0 h1:lV6xFUF7t3fm2ZRFjB4IVNkznG9EVwetYVJYwzmW8pc= -cloud.google.com/go/redis v1.24.0/go.mod h1:ebtw9WLFKswecHO2ifNykuteNJNwoPqMCHz4UI11kF4= -cloud.google.com/go/resourcemanager v1.16.0 h1:aDf2RuuQ1Z+kbHHDzHyJNMHPGRFK+cMYfZIhWRaeRX0= -cloud.google.com/go/resourcemanager v1.16.0/go.mod h1:Hn4HPkLRnTuiUhFEFJg736Brt7BwlS84xYU06sc3STc= +cloud.google.com/go/redis v1.29.0 h1:AoJGdFMQob09WpEzDl+k+RTsbe9Nnq3jkNBnXBBRV2I= +cloud.google.com/go/redis v1.29.0/go.mod h1:JOH480besJ3ODjttjT18BhysgvbeEnhCAgJrpi4/5ys= +cloud.google.com/go/resourcemanager v1.18.1 h1:xdaDmfzM08PA2Zs8hU8ej1TXQTJAcRoHbvQpaAEPYj0= +cloud.google.com/go/resourcemanager v1.18.1/go.mod h1:LjIioOpdFo5J1aFG9R51YqeBN5L55vElAG70dzFD/wg= cloud.google.com/go/secretmanager v1.23.0 h1:tUmPWfKapcrCsLXdJQIokbJamK5leTGAyxVhPXG1x90= cloud.google.com/go/secretmanager v1.23.0/go.mod h1:xDP/NNLKgQGGKcOenNnflIPW49MBj5w1EcakXjRLZHg= cloud.google.com/go/storage v1.70.0 h1:LQNHn0rRF94jVFfF3e416IzdQqIufa5GfF6HilQxb80= @@ -90,14 +90,14 @@ github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0 github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.57.0/go.mod h1:dzcEjy1WJ0Q4u9twNR3LcLhNoYMRCrMCMafpxa0TjPQ= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.57.0 h1:RoO5+d7uCmDqovLrHCr2/BuViUXvdcrNxyNM1pN9dDQ= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.57.0/go.mod h1:YqwkQPrWSC7+byyc1VlKbWLBF5JsW5IoL6xUkemYSXk= -github.com/LeanerCloud/cloud-commitments-go/pkg v0.0.0-20261103222717-61111428a353 h1:PpC722KByQTXdsdUIXuBzRXpklEu3+SLKfMipfPOtPg= -github.com/LeanerCloud/cloud-commitments-go/pkg v0.0.0-20261103222717-61111428a353/go.mod h1:pseCFRgm1rzBKomktjw6E0ayxmVE7XfHHiOmew4ka+g= -github.com/LeanerCloud/cloud-commitments-go/providers/aws v0.0.0-20261103222717-61111428a353 h1:91krJUF0e9AC0Y0mc6nAVi4MsMtGiZVDlSgbZ/VT+9E= -github.com/LeanerCloud/cloud-commitments-go/providers/aws v0.0.0-20261103222717-61111428a353/go.mod h1:NjNxaaNeYU3CTAcWUCOxaN+NeY7aveSyI/jNXEKz7/c= -github.com/LeanerCloud/cloud-commitments-go/providers/azure v0.0.0-20261103222717-61111428a353 h1:jCiXQIXO42bkvQPEaZ0IIQBzxGz3BPptB74cIumdiCo= -github.com/LeanerCloud/cloud-commitments-go/providers/azure v0.0.0-20261103222717-61111428a353/go.mod h1:X+73EdStvYV6pqEVZZFyMfLG1frORlO9B1IsuK0LfOs= -github.com/LeanerCloud/cloud-commitments-go/providers/gcp v0.0.0-20261103222717-61111428a353 h1:faFzHnGyaYgdN3rU0Ukkq6hHXjpOEcaX6W82Mz+DfnM= -github.com/LeanerCloud/cloud-commitments-go/providers/gcp v0.0.0-20261103222717-61111428a353/go.mod h1:aj4d0YEmBg1A46rIXKG+GkTFc1d/xwmveJ97kDD1oPs= +github.com/LeanerCloud/cloud-commitments-go/pkg v0.0.0-20261105183508-790f369f4822 h1:BMVY/iAVbsrxYMLBh8VYCb4qywH+ROp+6lFa9y1NBBs= +github.com/LeanerCloud/cloud-commitments-go/pkg v0.0.0-20261105183508-790f369f4822/go.mod h1:l9V+ecJCfAigYr6XiK9kpIUemF9bnXOKHJN1s4TPsM0= +github.com/LeanerCloud/cloud-commitments-go/providers/aws v0.0.0-20261105183508-790f369f4822 h1:uBRU062BP6FWe+72aexmy+Md+UDUZ0vodQDW1clE58k= +github.com/LeanerCloud/cloud-commitments-go/providers/aws v0.0.0-20261105183508-790f369f4822/go.mod h1:tsjVv5Rj/QGuyVQ6w+sZ0w8fn/imBTNL5l6okmEBJn8= +github.com/LeanerCloud/cloud-commitments-go/providers/azure v0.0.0-20261105183508-790f369f4822 h1:Lqf1GTF3g1gUPeCsDpW1cAZ0e1NyHQAw4N1sdb/qCUM= +github.com/LeanerCloud/cloud-commitments-go/providers/azure v0.0.0-20261105183508-790f369f4822/go.mod h1:X+73EdStvYV6pqEVZZFyMfLG1frORlO9B1IsuK0LfOs= +github.com/LeanerCloud/cloud-commitments-go/providers/gcp v0.0.0-20261105183508-790f369f4822 h1:eKmwzGVdQZ9aowC5ab7OoHyPc7gdKzoNeXdzJjPPUA4= +github.com/LeanerCloud/cloud-commitments-go/providers/gcp v0.0.0-20261105183508-790f369f4822/go.mod h1:kfbQ5CsDr1958iSuZq6edcuB0es62XRCXGn/hFFYBW0= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/agext/levenshtein v1.2.1 h1:QmvMAjj2aEICytGiWzmxoE0x2KZvE0fvmqMOfy2tjT8= @@ -112,58 +112,58 @@ github.com/aws/aws-sdk-go-v2 v1.47.5 h1:5yA+A+BiXbDq1ZLbYwPViwhEGDMdR0MEhL8Jh2Ln github.com/aws/aws-sdk-go-v2 v1.47.5/go.mod h1:iNIkogrRvFwm+1OQIUOP2lPBtlXZboOIUWiCa+pHEMw= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.25 h1:MW0Iql1SOTgQPj8mCxrU/eH/K/AIDWi08ItOsXaWRLU= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.25/go.mod h1:+ucVYmHYB3JqVueY0E1RHahdXAnKQbIHqybSbvOUbOM= -github.com/aws/aws-sdk-go-v2/config v1.33.11 h1:Jq4NA1HCpwaebv2SFhkm6BzWKOV05QKLsiWAjE0TUKk= -github.com/aws/aws-sdk-go-v2/config v1.33.11/go.mod h1:lZA8x3W8Ebh9Jvi29fqtkenV/7aJxv/FSTf7pl2cSfs= -github.com/aws/aws-sdk-go-v2/credentials v1.20.11 h1:/1P4NMDqQiJj90l9uriGdqJ1z8Jc3qwIxHRcPL6Su3g= -github.com/aws/aws-sdk-go-v2/credentials v1.20.11/go.mod h1:lHuVLK+Snmxb2lIMj86cxP85Gju4MdQ3W/99hp/qes4= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.20.4 h1:7ksj/zMap9+831SmNQZkcpmfuATp3DKr4BfLNnBdYXM= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.20.4/go.mod h1:zhi8vDrD1dj76ysTWS6Ny1y6/EEW1Jrq2y8lzKeoqfs= +github.com/aws/aws-sdk-go-v2/config v1.33.13 h1:u52x6ISQOx172tpwM0VRxhJzEsTJYpMcEYUGM2A1wrw= +github.com/aws/aws-sdk-go-v2/config v1.33.13/go.mod h1:/ixtz6XPHb42zekjQ0LqD9XjTpTysNWhIGwufY1OzI4= +github.com/aws/aws-sdk-go-v2/credentials v1.20.13 h1:j4z41OtspmQ3ftQycaDunJ26b69a9SHfaSVUPqgRv8k= +github.com/aws/aws-sdk-go-v2/credentials v1.20.13/go.mod h1:SgPA1oS3b+dlMxZb618jDmGNscpXSCaxz15igS52OlE= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.20.5 h1:iXjy2SFhGYNB1jWZBhQqq8HbhsbPF23w+/zbMvPXsTg= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.20.5/go.mod h1:k0RUiBnyXU0AXRJ9tJmY2jQke6XUIX2PNVnWtvgaPtc= github.com/aws/aws-sdk-go-v2/internal/configsources v1.5.8 h1:gzIWc3DTPfPbWKrQnmL6BV6WD7NPD1htxzgdk/bQ/Z4= github.com/aws/aws-sdk-go-v2/internal/configsources v1.5.8/go.mod h1:vvUA5cDAZWGo4R14FZPZfXfJCmgsafOWEq78Kg0D+ug= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.8.8 h1:PWv+vG8aCLS8qd+HPdYhK7Vees90aKHWFFQ1AGYD/8E= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.8.8/go.mod h1:xxPZEpflYHJA12366ZGyq66z9dHPCoeCIu99Jck+MPw= github.com/aws/aws-sdk-go-v2/internal/v4a v1.5.8 h1:WOp5De9iWdEHDPh2Kb0tBP3vGBm/dVAuRGh4a4tqduo= github.com/aws/aws-sdk-go-v2/internal/v4a v1.5.8/go.mod h1:z8W8YgfhbWl62XqcTtK+CxPrE+iHGRVUOtrrbIOp7ZY= -github.com/aws/aws-sdk-go-v2/service/costexplorer v1.74.3 h1:n41F2z+KbBLPZhAN9H8wnS4OQOEVvaAaKbAHZLvoNsQ= -github.com/aws/aws-sdk-go-v2/service/costexplorer v1.74.3/go.mod h1:kBJcNrSJh7iCpRJM6Up2l2IU/nFSi6+6cFpNzFXwVKk= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.341.0 h1:NvtY2nTE0PZeUeYlR/BB5xedUF3B6nhBJRbEyYhiy60= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.341.0/go.mod h1:5sMueYq4QuoMZ1Ruh/q75UF9OdVKf0OndZlT23Jqs5Y= -github.com/aws/aws-sdk-go-v2/service/elasticache v1.64.1 h1:Gc1RndXvd1uV39tiG3H1EXVTFInuPbKu/DUe1uq9dGU= -github.com/aws/aws-sdk-go-v2/service/elasticache v1.64.1/go.mod h1:i8wdFEO3CCJH/XorR+8DfVOzeSNJm2BrRRh6MQqCE38= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.22 h1:qHfXn1Tm2Rh8kic/DvdKaiSVlHQRSr5C+rMuBR29D44= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.22/go.mod h1:D4ytxJbGXu82l+2XF0q60bibysf+KkIbWfAOldAQwf8= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.14.7 h1:6MSlRo7aiUVBftQ8XmW7XIh3EZqCbkN9zI0YlGW8nl0= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.14.7/go.mod h1:OqapjZfp6VW4YJKKO4l68UdPvS4FIEYuEoq1JNkxCL0= +github.com/aws/aws-sdk-go-v2/service/costexplorer v1.74.5 h1:yoMP1GeXqKuEcbe2V/hrLYFANnx8Ypx83NSR6e2u0BA= +github.com/aws/aws-sdk-go-v2/service/costexplorer v1.74.5/go.mod h1:aYP4DYWZpu+W9v0Izt9D/nLllZ95eeG5b5FEQmVIpMU= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.343.0 h1:pOxNUJbUOy779gx205gEpySpT5fu3B0ifPD8jBxujZI= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.343.0/go.mod h1:khWfxrzSgMjGMAZIaYAHu3IobEo7KRRNwPYaHb1zpng= +github.com/aws/aws-sdk-go-v2/service/elasticache v1.64.2 h1:8LoJKTkN9guyrImkZQyAdsMdRdtAHiIqg3q91s11DAc= +github.com/aws/aws-sdk-go-v2/service/elasticache v1.64.2/go.mod h1:R1Kg6yXJmuLxCtY+DaTlRHOtZdxFKVJ7DMIAmioi3Xg= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.23 h1:MCIR6iZaCKO4UE0hUvoWWLI6JVjppopV64JfAJaMjng= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.23/go.mod h1:pphWFS+z0MmIPivj8c/6bATd1Z+Av7Ust75DPdEFsPA= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.14.8 h1:+PMpWlJYOn2tm7sm6OZ/ZLd4jStl17T7wjNapd1Rczs= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.14.8/go.mod h1:cnG3xZLGQL4c/bt8pjdzlFtZsW7epBBuNS04a5xMjdo= github.com/aws/aws-sdk-go-v2/service/kms v1.62.1 h1:NGtJiVt3s5b/4sJia4EnSQKUsKS9cncwznihdAzsaYI= github.com/aws/aws-sdk-go-v2/service/kms v1.62.1/go.mod h1:YVEFrNMhrD35Z6qdvzvpGHDbmFmhZ/Nf58Ubv9dROVU= github.com/aws/aws-sdk-go-v2/service/lambda v1.113.4 h1:wvAdq1sNfwuedO1BX8GjY+oZWzoyeD4hhdjJI+4EPnI= github.com/aws/aws-sdk-go-v2/service/lambda v1.113.4/go.mod h1:HgkYN4d72Fawg3MAJQepmNnROFoN11XYu14hgFfChTY= -github.com/aws/aws-sdk-go-v2/service/memorydb v1.42.6 h1:u4ShSTQCMWnM9f/sbEVA3H1Dow2eHqxRgwAlMIWggRU= -github.com/aws/aws-sdk-go-v2/service/memorydb v1.42.6/go.mod h1:a7y1WfQlaSTtScViaPuzaEXMUDT6KzcAHdR4lr4az68= -github.com/aws/aws-sdk-go-v2/service/opensearch v1.86.1 h1:4LCvvK7Q24njciGg6HqM3ZhvIVg1G+nWHGO4DM3MPyk= -github.com/aws/aws-sdk-go-v2/service/opensearch v1.86.1/go.mod h1:JI43wzbN4bXJUdLLVVPdhbFZGu4W3VeZvckEML5YDuA= -github.com/aws/aws-sdk-go-v2/service/organizations v1.62.3 h1:TkAjkZyjQAe5EftICPJ8QDhz2zHB8ClYKQFhvh5/lJ0= -github.com/aws/aws-sdk-go-v2/service/organizations v1.62.3/go.mod h1:DLYXemnX70yBq6rTxkFP7YopkQ/TlWIO1KAParzUnrw= -github.com/aws/aws-sdk-go-v2/service/rds v1.131.1 h1:CAVL+rJiNapbZawRFDJFMHsk3Uya5Mag/GMYJVFvNho= -github.com/aws/aws-sdk-go-v2/service/rds v1.131.1/go.mod h1:bwRf0/l6BSF8mxv9fpK7An4QBB7D//vwkWdNgNgFRh4= -github.com/aws/aws-sdk-go-v2/service/redshift v1.71.5 h1:6VtHsknZo5gB741YFpd0/y7eT2OVxqMihll7jiexXcM= -github.com/aws/aws-sdk-go-v2/service/redshift v1.71.5/go.mod h1:Jgop3hU8qrh6FH0+Jtz1lrSllY7/XfnojYu9+7icDp0= -github.com/aws/aws-sdk-go-v2/service/savingsplans v1.40.5 h1:HDVGdc95dWUsP92mxFA2bODioWoVwUKJMDMDXmPguvI= -github.com/aws/aws-sdk-go-v2/service/savingsplans v1.40.5/go.mod h1:M1BMzNSdbr7p/tozq6xkYAvkS4wWbQZhUQ5rKfwVjvE= +github.com/aws/aws-sdk-go-v2/service/memorydb v1.42.8 h1:c6BUnr/ylsFcRXFryv1aP0OxHhMxtWfKn8P7jfE6PK0= +github.com/aws/aws-sdk-go-v2/service/memorydb v1.42.8/go.mod h1:ZJl5cb8+0steckQxAP8KsAsGHnh5iw2JNWbQ30oklRk= +github.com/aws/aws-sdk-go-v2/service/opensearch v1.87.1 h1:LRiVk0MRbFFPvqSsGfZ8v9Pbahp1qTuPlT8e+oN+4cY= +github.com/aws/aws-sdk-go-v2/service/opensearch v1.87.1/go.mod h1:fuFUaBWYP6zTqxiwBUg0btczrZ6owOV5XHvBls/nmB8= +github.com/aws/aws-sdk-go-v2/service/organizations v1.62.4 h1:amAwv6EBqkPkEVG/EAgiHU5MnAg8JwAv+bvT6Fph8ok= +github.com/aws/aws-sdk-go-v2/service/organizations v1.62.4/go.mod h1:DLYXemnX70yBq6rTxkFP7YopkQ/TlWIO1KAParzUnrw= +github.com/aws/aws-sdk-go-v2/service/rds v1.131.2 h1:Rytfx+dmiAPJDxJKXCbK6X4staGfRUjfFDx8Lcy/LA8= +github.com/aws/aws-sdk-go-v2/service/rds v1.131.2/go.mod h1:jh7YjzSQebRzJX2lw/h9tv/1wHo5wDJguuXmsX6SIDs= +github.com/aws/aws-sdk-go-v2/service/redshift v1.71.6 h1:zs2Y6cncJortrymZejl7ojEYgemrkckWpO9MvoPkXcs= +github.com/aws/aws-sdk-go-v2/service/redshift v1.71.6/go.mod h1:A1dvQydJomqM8AaVW5PViZ5vnqQE/T90OjBuDL16vOs= +github.com/aws/aws-sdk-go-v2/service/savingsplans v1.41.1 h1:RTOKvHW2G6VJIZ0iRnB+vkwo83V7yKKuBl/ocd/Hv2E= +github.com/aws/aws-sdk-go-v2/service/savingsplans v1.41.1/go.mod h1:H8SOLkY7cFy646J/xcrQz9ydpcYFDJL83vYR9ScBqU8= github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.50.7 h1:+HUJ+Hbe19a0N1BYNWSXzxeGsWJRTvmNENPJ2sI3vDg= github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.50.7/go.mod h1:hdLRXUZ2D6163JpoVeS4Dpz0kny/eC+5BLhH/mrri+c= github.com/aws/aws-sdk-go-v2/service/sesv2 v1.79.4 h1:DxTb9AgYzJAIs8gtwCe1gn99m67HXJK7mD9L9kPd7NQ= github.com/aws/aws-sdk-go-v2/service/sesv2 v1.79.4/go.mod h1:Cko9LCpVO+mxJBZq8QgedINWtb5NAdcSlearticjqLM= -github.com/aws/aws-sdk-go-v2/service/signin v1.11.0 h1:ri/TV8ix2ZcxaDDnU9IxTa7Y1YRsaBEUudgi9S65gBc= -github.com/aws/aws-sdk-go-v2/service/signin v1.11.0/go.mod h1:P+IzYJeldxO0mHt8fX4cglzexP3akO94C/UuEA2ojP0= +github.com/aws/aws-sdk-go-v2/service/signin v1.12.1 h1:WZLC+k/CZx11kZGQDqu9mpA8yhiXGX2I//jhuJE1FDo= +github.com/aws/aws-sdk-go-v2/service/signin v1.12.1/go.mod h1:wxAk0D2oVBSjuXEIzvcKxTZfM90zticdAbh/VD42L0Y= github.com/aws/aws-sdk-go-v2/service/sns v1.47.7 h1:XKmyF18UU2dk5/7uMWy6ik50hTp4Y/bu7tesKYUoWpY= github.com/aws/aws-sdk-go-v2/service/sns v1.47.7/go.mod h1:Djs3JnE1OSVXBQcOy9uZNKbyrBJfw1QCC6uJRL57wAk= -github.com/aws/aws-sdk-go-v2/service/sso v1.38.5 h1:EYD6E6CsgRQPazaOfZ6suyTgfZjg07HoT4S3qB9Exkg= -github.com/aws/aws-sdk-go-v2/service/sso v1.38.5/go.mod h1:hHg7OZNN1/U62f3Q5mebJYKO4f97vZC+s0fNAsPLnMk= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.43.5 h1:v6V0AnJ0aDmivAIie/6iT7sGpjnNmzaAdxZwZ0dhwqI= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.43.5/go.mod h1:P2Lqn27Kph9z400MFOYIebFnKjZEwyUIAva6fFFMiRY= -github.com/aws/aws-sdk-go-v2/service/sts v1.51.5 h1:OuyNaMncYP4ftrvcnOHJ9j3AxO3zsC5C/ewD0HoHdjQ= -github.com/aws/aws-sdk-go-v2/service/sts v1.51.5/go.mod h1:Bhu66tgvf94uunUSiAc0Ew0avhnpSm0J8Hl1MYocRbo= +github.com/aws/aws-sdk-go-v2/service/sso v1.39.1 h1:4VB/dnDo7pmXSLQMszSoBzWndENuc7mzwTpD6lQn77A= +github.com/aws/aws-sdk-go-v2/service/sso v1.39.1/go.mod h1:UGsEYgWz4Gi+46vDQ5zkFLqUgJziyOE2SXjZjgmfmHc= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.44.1 h1:w8yui2ZqdHmGwVBDGvazoIvKw/DnLENBLkYnN8q8iqo= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.44.1/go.mod h1:gJSdIY6YUzDvqQLcMtPVZgBRHrFwzHryvpE8Igzbxps= +github.com/aws/aws-sdk-go-v2/service/sts v1.51.6 h1:BVjKrtRUtSYKztBCCfE1oAB+d3ViKcW2cKZfserOqMQ= +github.com/aws/aws-sdk-go-v2/service/sts v1.51.6/go.mod h1:eSukFLeLkPMm+1OxDR+F0joauZdyBkF47Ow7MqjZiJw= github.com/aws/smithy-go v1.28.7 h1:h/n1SHrwVtaDYLz8mR1/Kq4Xh4RaFbFW7bOYckg9mfE= github.com/aws/smithy-go v1.28.7/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= @@ -238,8 +238,8 @@ github.com/google/s2a-go v0.1.11 h1:7v1V1TraNGP63WptsAkNqr2w8jgm4vM6A6qx6Lsw9iM= github.com/google/s2a-go v0.1.11/go.mod h1:pz4tyvwXvJLLbyrkh6FW1eS2zPUXMaTmyNhYtyP2tNw= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.3.23 h1:J+VGF1wjAM2dU2kKUXZxJdDppRLReWP7KWcclfngQhc= -github.com/googleapis/enterprise-certificate-proxy v0.3.23/go.mod h1:Y8NO/15GNLkrXI3OR5xOFmeU3XLX1sLSdtlXgJ0zmIw= +github.com/googleapis/enterprise-certificate-proxy v0.3.24 h1:G9iCJIY+AYVmUskKdjX8FVy7sG+nbzjOQ41cvlmhcvg= +github.com/googleapis/enterprise-certificate-proxy v0.3.24/go.mod h1:hEjCmnoakQzv5ImLUp6alkY7XgLlNoAxwTXmhHHNIsI= github.com/googleapis/gax-go/v2 v2.27.0 h1:qe2iQOUzxb3fd6x6ewpIEixPQhJ+0Ihc/RRZhKA/2g0= github.com/googleapis/gax-go/v2 v2.27.0/go.mod h1:RofiqDw3ehcG4L0H1zO3D2Itpwd3/uS/7wdmbNDF1DE= github.com/hashicorp/hcl/v2 v2.25.0 h1:HmmQVYRny4MaBo4b20TjmL46wyuUxpnMWkPZ4+NTbWk= @@ -390,8 +390,8 @@ golang.org/x/tools v0.51.0 h1:k4Xc/1Om9jwkBJBo4NVLMSARBoWtK10mx+W5BnXCeAI= golang.org/x/tools v0.51.0/go.mod h1:9eEncMayCV6zRMGhR5eZEC2iBx98qWcF1HZ9Z7wJOoA= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= -google.golang.org/api v0.309.0 h1:DXP86di4cL3R3R6aUrJNUNthav2djJ99QbSOrN63238= -google.golang.org/api v0.309.0/go.mod h1:4XMH+b/ZEfuTbK7FnrFRY9c4xfFHVflGTKuy/i5wUmE= +google.golang.org/api v0.310.0 h1:537ccDDmbwuwX1iof3Vtdz9vow6uJCgrSZJWedAWM0I= +google.golang.org/api v0.310.0/go.mod h1:5NUthU+LmGMKzYgRaScb+TTe1Lo7x4A+J7g+Yj8BRzA= google.golang.org/genproto v0.0.0-20261012220534-4341edf3f941 h1:CXq2XEi5aEyLjjPZIwqrmQH8ZY4ctUwK7uyAx3mjX/U= google.golang.org/genproto v0.0.0-20261012220534-4341edf3f941/go.mod h1:3gK0ehnhP0V7/x3ypGoLyT3d0n6TSi/EcsphIjHrcz4= google.golang.org/genproto/googleapis/api v0.0.0-20261012220534-4341edf3f941 h1:DS/w3N8rsfrwxwgGSj6WhMsPo7aNQGmDx74J81zd0NQ= From cce19218399b0b833bc22eb0ba2aba0688c3d9ce Mon Sep 17 00:00:00 2001 From: Cristian Magherusan-Stanciu Date: Thu, 5 Nov 2026 19:40:29 +0100 Subject: [PATCH 2/2] fix(ri-exchange): forward the source RI's offering type to the target lookup cloud-commitments-go#688 makes FindConvertibleOfferingParams.OfferingType required, so an exchange only targets an offering with the source RI's payment option. Pin pkg and providers/aws to that commit and forward the field: convertForAutoExchange copies ConvertibleRI.OfferingType into RIMetadataInfo, and newConvertibleOfferingLookup passes it to the provider. Without the forwarding, every exchange lookup is refused once the pin lands. The zone reshape tests' fake RI had no offering type, so the provider now refuses its lookup. The fixture now carries Partial Upfront, and the zonal test asserts that type reaches DescribeReservedInstancesOfferings. Part of #1789 Co-Authored-By: Claude Opus 5.5 --- internal/server/handler_ri_exchange.go | 2 ++ internal/server/ri_exchange_zone_test.go | 26 +++++++++++++++++++++--- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/internal/server/handler_ri_exchange.go b/internal/server/handler_ri_exchange.go index 5a5acfd61..9497aaa11 100644 --- a/internal/server/handler_ri_exchange.go +++ b/internal/server/handler_ri_exchange.go @@ -154,6 +154,7 @@ func newConvertibleOfferingLookup(finder convertibleOfferingFinder) exchange.Loo Scope: p.Scope, AvailabilityZone: p.AvailabilityZone, Duration: p.Duration, + OfferingType: p.OfferingType, }) } } @@ -357,6 +358,7 @@ func convertForAutoExchange(instances []ec2svc.ConvertibleRI, utilData []recomme Scope: inst.Scope, AvailabilityZone: inst.AvailabilityZone, Duration: inst.Duration, + OfferingType: inst.OfferingType, } } diff --git a/internal/server/ri_exchange_zone_test.go b/internal/server/ri_exchange_zone_test.go index 07e79a6a5..18d328ead 100644 --- a/internal/server/ri_exchange_zone_test.go +++ b/internal/server/ri_exchange_zone_test.go @@ -23,13 +23,14 @@ import ( const zoneTestRIID = "ri-zone-test" -// zoneRecordingEC2API serves one convertible RI and records the AZ of every -// offering lookup. The embedded nil API makes any other call (including the -// exchange accept) panic. +// zoneRecordingEC2API serves one convertible RI and records the AZ and +// offering type of every offering lookup. The embedded nil API makes any other +// call (including the exchange accept) panic. type zoneRecordingEC2API struct { ec2svc.API ri ec2types.ReservedInstances lookupZones []*string + lookupTypes []ec2types.OfferingTypeValues } func (a *zoneRecordingEC2API) DescribeReservedInstances(context.Context, *awsec2sdk.DescribeReservedInstancesInput, ...func(*awsec2sdk.Options)) (*awsec2sdk.DescribeReservedInstancesOutput, error) { @@ -38,6 +39,7 @@ func (a *zoneRecordingEC2API) DescribeReservedInstances(context.Context, *awsec2 func (a *zoneRecordingEC2API) DescribeReservedInstancesOfferings(_ context.Context, in *awsec2sdk.DescribeReservedInstancesOfferingsInput, _ ...func(*awsec2sdk.Options)) (*awsec2sdk.DescribeReservedInstancesOfferingsOutput, error) { a.lookupZones = append(a.lookupZones, in.AvailabilityZone) + a.lookupTypes = append(a.lookupTypes, in.OfferingType) return &awsec2sdk.DescribeReservedInstancesOfferingsOutput{ ReservedInstancesOfferings: []ec2types.ReservedInstancesOffering{{ ReservedInstancesOfferingId: aws.String("offering-in-zone"), @@ -45,6 +47,7 @@ func (a *zoneRecordingEC2API) DescribeReservedInstancesOfferings(_ context.Conte OfferingClass: ec2types.OfferingClassTypeConvertible, InstanceTenancy: ec2types.TenancyDefault, Duration: aws.Int64(31536000), + OfferingType: in.OfferingType, }}, }, nil } @@ -60,6 +63,7 @@ func zoneTestRI(scope ec2types.Scope, az string) ec2types.ReservedInstances { Duration: aws.Int64(31536000), FixedPrice: aws.Float32(876), OfferingClass: ec2types.OfferingClassTypeConvertible, + OfferingType: ec2types.OfferingTypeValuesPartialUpfront, CurrencyCode: ec2types.CurrencyCodeValuesUsd, } if az != "" { @@ -123,6 +127,9 @@ func TestExecuteRIExchangeReshape_ZonalRIForwardsAvailabilityZone(t *testing.T) for _, z := range api.lookupZones { assert.Equal(t, "us-east-1b", aws.ToString(z), "every lookup must be pinned to the source RI's AZ") } + for _, ot := range api.lookupTypes { + assert.Equal(t, ec2types.OfferingTypeValuesPartialUpfront, ot, "every lookup must keep the source RI's offering type (#1789)") + } assert.True(t, quoted) require.Len(t, result.Pending, 1) assert.Empty(t, result.Skipped) @@ -170,12 +177,14 @@ func TestNewConvertibleOfferingLookup_MapsEveryField(t *testing.T) { id, err := newConvertibleOfferingLookup(f)(context.Background(), exchange.LookupOfferingParams{ InstanceType: "m5.xlarge", ProductDescription: "Linux/UNIX", Tenancy: "default", Scope: "Availability Zone", AvailabilityZone: "us-east-1b", Duration: 31536000, + OfferingType: "Partial Upfront", }) require.NoError(t, err) assert.Equal(t, "offering-1", id) assert.Equal(t, ec2svc.FindConvertibleOfferingParams{ InstanceType: "m5.xlarge", ProductDescription: "Linux/UNIX", Tenancy: "default", Scope: "Availability Zone", AvailabilityZone: "us-east-1b", Duration: 31536000, + OfferingType: "Partial Upfront", }, f.got) } @@ -187,3 +196,14 @@ func TestConvertForAutoExchange_CarriesAvailabilityZone(t *testing.T) { assert.Equal(t, "us-east-1b", meta["ri-zonal"].AvailabilityZone) assert.Empty(t, meta["ri-regional"].AvailabilityZone) } + +// #1789: the provider refuses a lookup without the source RI's offering type, +// so the metadata must carry it for every RI, or no exchange can find a target. +func TestConvertForAutoExchange_CarriesOfferingType(t *testing.T) { + _, _, meta := convertForAutoExchange([]ec2svc.ConvertibleRI{ + {ReservedInstanceID: "ri-partial", Scope: "Region", Duration: 31536000, FixedPrice: 876, OfferingType: "Partial Upfront"}, + {ReservedInstanceID: "ri-none", Scope: "Region", Duration: 31536000, OfferingType: "No Upfront", UsagePrice: 0.1}, + }, nil) + assert.Equal(t, "Partial Upfront", meta["ri-partial"].OfferingType) + assert.Equal(t, "No Upfront", meta["ri-none"].OfferingType) +}