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= 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) +}