Skip to content

Commit 943d9d4

Browse files
authored
fix govcloud pricing script (#9050)
1 parent 1de6d8c commit 943d9d4

File tree

3 files changed

+86
-10
lines changed

3 files changed

+86
-10
lines changed

hack/code/prices_gen/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ func main() {
109109
// record prices for each region we are interested in
110110
for _, region := range getAWSRegions(opts.partition) {
111111
log.Println("fetching for", region)
112-
pricingProvider := pricing.NewDefaultProvider(pricing.NewAPI(cfg), ec2api, region, false)
112+
pricingProvider := pricing.NewDefaultProvider(pricing.NewAPI(cfg), ec2api, region, false, pricing.WithSkipRegionCheck())
113113
controller := controllerspricing.NewController(pricingProvider)
114114
_, err := controller.Reconcile(ctx)
115115
if err != nil {

pkg/providers/pricing/pricing.go

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,22 @@ type Provider interface {
5555
// relative ordering that is still more accurate than our previous pricing model. In the event that a pricing update
5656
// fails, the previous pricing information is retained and used which may be the static initial pricing data if pricing
5757
// updates never succeed.
58+
type ProviderOption func(*DefaultProvider)
59+
60+
// WithSkipRegionCheck disables the region-based skip for GovCloud check.
61+
// This is used by the codegen script which calls the Pricing API from us-east-1 to fetch
62+
// pricing for all regions including GovCloud.
63+
func WithSkipRegionCheck() ProviderOption {
64+
return func(p *DefaultProvider) { p.skipRegionCheck = true }
65+
}
66+
5867
type DefaultProvider struct {
59-
ec2 sdk.EC2API
60-
pricing sdk.PricingAPI
61-
region string
62-
isolatedVPC bool
63-
cm *pretty.ChangeMonitor
68+
ec2 sdk.EC2API
69+
pricing sdk.PricingAPI
70+
region string
71+
isolatedVPC bool
72+
skipRegionCheck bool
73+
cm *pretty.ChangeMonitor
6474

6575
muOnDemand sync.RWMutex
6676
onDemandPrices map[ec2types.InstanceType]float64
@@ -117,14 +127,17 @@ func NewAPI(cfg aws.Config) *pricing.Client {
117127
return pricing.NewFromConfig(pricingCfg)
118128
}
119129

120-
func NewDefaultProvider(pricing sdk.PricingAPI, ec2Api sdk.EC2API, region string, isolatedVPC bool) *DefaultProvider {
130+
func NewDefaultProvider(pricing sdk.PricingAPI, ec2Api sdk.EC2API, region string, isolatedVPC bool, opts ...ProviderOption) *DefaultProvider {
121131
p := &DefaultProvider{
122132
region: region,
123133
ec2: ec2Api,
124134
pricing: pricing,
125135
cm: pretty.NewChangeMonitor(),
126136
isolatedVPC: isolatedVPC,
127137
}
138+
for _, opt := range opts {
139+
opt(p)
140+
}
128141
// sets the pricing data from the static default state for the provider
129142
p.Reset()
130143

@@ -184,7 +197,7 @@ func (p *DefaultProvider) UpdateOnDemandPricing(ctx context.Context) error {
184197
return nil
185198
}
186199

187-
if strings.HasPrefix(p.region, "us-gov") {
200+
if !p.skipRegionCheck && strings.HasPrefix(p.region, "us-gov") {
188201
if p.cm.HasChanged("on-demand-prices", nil) {
189202
log.FromContext(ctx).V(1).Info("pricing APIs aren't available in AWS GovCloud regions, on-demand pricing information will not be updated")
190203
}

pkg/providers/pricing/zz_generated.pricing_aws_us_gov.go

Lines changed: 65 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ limitations under the License.
1616

1717
package pricing
1818

19-
// generated at 2025-06-30T13:16:30Z for us-east-1
19+
// generated at 2026-04-02T22:29:20Z for us-east-1
2020

2121
import ec2types "github.com/aws/aws-sdk-go-v2/service/ec2/types"
2222

@@ -67,11 +67,20 @@ var InitialOnDemandPricesUSGov = map[string]map[ec2types.InstanceType]float64{
6767
"c7i.12xlarge": 2.570400, "c7i.16xlarge": 3.427200, "c7i.24xlarge": 5.140800, "c7i.2xlarge": 0.428400,
6868
"c7i.48xlarge": 10.281600, "c7i.4xlarge": 0.856800, "c7i.8xlarge": 1.713600, "c7i.large": 0.107100,
6969
"c7i.metal-24xl": 5.654880, "c7i.metal-48xl": 10.281600, "c7i.xlarge": 0.214200,
70+
// c8gn family
71+
"c8gn.12xlarge": 3.423400, "c8gn.16xlarge": 4.564500, "c8gn.24xlarge": 6.846700, "c8gn.2xlarge": 0.570600,
72+
"c8gn.4xlarge": 1.141100, "c8gn.8xlarge": 2.282200, "c8gn.large": 0.142600, "c8gn.medium": 0.071300,
73+
"c8gn.xlarge": 0.285300,
7074
// d2 family
7175
"d2.2xlarge": 1.656000, "d2.4xlarge": 3.312000, "d2.8xlarge": 6.624000, "d2.xlarge": 0.828000,
7276
// g4dn family
7377
"g4dn.12xlarge": 4.931000, "g4dn.16xlarge": 5.486000, "g4dn.2xlarge": 0.948000, "g4dn.4xlarge": 1.518000,
7478
"g4dn.8xlarge": 2.743000, "g4dn.xlarge": 0.663000,
79+
// g6 family
80+
"g6.12xlarge": 5.800030, "g6.16xlarge": 4.281450, "g6.24xlarge": 8.413670, "g6.2xlarge": 1.232200,
81+
"g6.48xlarge": 16.827340, "g6.4xlarge": 1.667810, "g6.8xlarge": 2.539030, "g6.xlarge": 1.014400,
82+
// gr6 family
83+
"gr6.4xlarge": 1.940100, "gr6.8xlarge": 3.083590,
7584
// hpc6a family
7685
"hpc6a.48xlarge": 3.467000,
7786
// i3 family
@@ -84,6 +93,10 @@ var InitialOnDemandPricesUSGov = map[string]map[ec2types.InstanceType]float64{
8493
"i4i.12xlarge": 4.963000, "i4i.16xlarge": 6.618000, "i4i.24xlarge": 9.926400, "i4i.2xlarge": 0.827000,
8594
"i4i.32xlarge": 13.235200, "i4i.4xlarge": 1.654000, "i4i.8xlarge": 3.309000, "i4i.large": 0.207000,
8695
"i4i.metal": 13.235000, "i4i.xlarge": 0.414000,
96+
// i7i family
97+
"i7i.12xlarge": 5.459500, "i7i.16xlarge": 7.279400, "i7i.24xlarge": 10.919000, "i7i.2xlarge": 0.909900,
98+
"i7i.48xlarge": 21.838100, "i7i.4xlarge": 1.819800, "i7i.8xlarge": 3.639700, "i7i.large": 0.227500,
99+
"i7i.metal-24xl": 11.595400, "i7i.metal-48xl": 23.190800, "i7i.xlarge": 0.455000,
87100
// i7ie family
88101
"i7ie.12xlarge": 7.534800, "i7ie.18xlarge": 11.302200, "i7ie.24xlarge": 15.069600, "i7ie.2xlarge": 1.255800,
89102
"i7ie.3xlarge": 1.883700, "i7ie.48xlarge": 30.139200, "i7ie.6xlarge": 3.767400, "i7ie.large": 0.314000,
@@ -133,6 +146,10 @@ var InitialOnDemandPricesUSGov = map[string]map[ec2types.InstanceType]float64{
133146
"m7i.12xlarge": 3.049200, "m7i.16xlarge": 4.065600, "m7i.24xlarge": 6.098400, "m7i.2xlarge": 0.508200,
134147
"m7i.48xlarge": 12.196800, "m7i.4xlarge": 1.016400, "m7i.8xlarge": 2.032800, "m7i.large": 0.127050,
135148
"m7i.metal-24xl": 6.708240, "m7i.metal-48xl": 12.196800, "m7i.xlarge": 0.254100,
149+
// m8g family
150+
"m8g.12xlarge": 2.713920, "m8g.16xlarge": 3.618560, "m8g.24xlarge": 5.427840, "m8g.2xlarge": 0.452320,
151+
"m8g.48xlarge": 10.855680, "m8g.4xlarge": 0.904640, "m8g.8xlarge": 1.809280, "m8g.large": 0.113080,
152+
"m8g.medium": 0.056540, "m8g.metal-24xl": 5.970620, "m8g.metal-48xl": 10.855680, "m8g.xlarge": 0.226160,
136153
// p3dn family
137154
"p3dn.24xlarge": 37.454000,
138155
// r5 family
@@ -178,6 +195,10 @@ var InitialOnDemandPricesUSGov = map[string]map[ec2types.InstanceType]float64{
178195
"r7i.12xlarge": 3.805200, "r7i.16xlarge": 5.073600, "r7i.24xlarge": 7.610400, "r7i.2xlarge": 0.634200,
179196
"r7i.48xlarge": 15.220800, "r7i.4xlarge": 1.268400, "r7i.8xlarge": 2.536800, "r7i.large": 0.158550,
180197
"r7i.metal-24xl": 8.371440, "r7i.metal-48xl": 15.220800, "r7i.xlarge": 0.317100,
198+
// r8g family
199+
"r8g.12xlarge": 3.388800, "r8g.16xlarge": 4.518400, "r8g.24xlarge": 6.777600, "r8g.2xlarge": 0.564800,
200+
"r8g.48xlarge": 13.555200, "r8g.4xlarge": 1.129600, "r8g.8xlarge": 2.259200, "r8g.large": 0.141200,
201+
"r8g.medium": 0.070600, "r8g.metal-24xl": 7.455360, "r8g.metal-48xl": 13.555200, "r8g.xlarge": 0.282400,
181202
// t3 family
182203
"t3.2xlarge": 0.390400, "t3.large": 0.097600, "t3.medium": 0.048800, "t3.micro": 0.012200,
183204
"t3.nano": 0.006100, "t3.small": 0.024400, "t3.xlarge": 0.195200,
@@ -195,6 +216,14 @@ var InitialOnDemandPricesUSGov = map[string]map[ec2types.InstanceType]float64{
195216
"u-6tb1.112xlarge": 65.433000, "u-6tb1.56xlarge": 55.610750,
196217
// u-9tb1 family
197218
"u-9tb1.112xlarge": 98.150000,
219+
// u7i-12tb family
220+
"u7i-12tb.224xlarge": 150.496960,
221+
// u7i-6tb family
222+
"u7i-6tb.112xlarge": 75.247950,
223+
// u7in-16tb family
224+
"u7in-16tb.224xlarge": 216.283840,
225+
// u7in-24tb family
226+
"u7in-24tb.224xlarge": 324.443680,
198227
// x1 family
199228
"x1.16xlarge": 8.003000, "x1.32xlarge": 16.006000,
200229
// x1e family
@@ -272,6 +301,14 @@ var InitialOnDemandPricesUSGov = map[string]map[ec2types.InstanceType]float64{
272301
"c7i.12xlarge": 2.570400, "c7i.16xlarge": 3.427200, "c7i.24xlarge": 5.140800, "c7i.2xlarge": 0.428400,
273302
"c7i.48xlarge": 10.281600, "c7i.4xlarge": 0.856800, "c7i.8xlarge": 1.713600, "c7i.large": 0.107100,
274303
"c7i.metal-24xl": 5.654880, "c7i.metal-48xl": 10.281600, "c7i.xlarge": 0.214200,
304+
// c8g family
305+
"c8g.12xlarge": 2.289120, "c8g.16xlarge": 3.052160, "c8g.24xlarge": 4.578240, "c8g.2xlarge": 0.381520,
306+
"c8g.48xlarge": 9.156480, "c8g.4xlarge": 0.763040, "c8g.8xlarge": 1.526080, "c8g.large": 0.095380,
307+
"c8g.medium": 0.047690, "c8g.metal-24xl": 5.036060, "c8g.metal-48xl": 9.156480, "c8g.xlarge": 0.190760,
308+
// c8gn family
309+
"c8gn.12xlarge": 3.423400, "c8gn.16xlarge": 4.564500, "c8gn.24xlarge": 6.846700, "c8gn.2xlarge": 0.570600,
310+
"c8gn.4xlarge": 1.141100, "c8gn.8xlarge": 2.282200, "c8gn.large": 0.142600, "c8gn.medium": 0.071300,
311+
"c8gn.xlarge": 0.285300,
275312
// cc2 family
276313
"cc2.8xlarge": 2.250000,
277314
// d2 family
@@ -301,6 +338,8 @@ var InitialOnDemandPricesUSGov = map[string]map[ec2types.InstanceType]float64{
301338
"hpc7a.96xlarge": 8.667400,
302339
// hpc7g family
303340
"hpc7g.16xlarge": 2.026200, "hpc7g.4xlarge": 2.026200, "hpc7g.8xlarge": 2.026200,
341+
// hpc8a family
342+
"hpc8a.96xlarge": 9.534100,
304343
// hs1 family
305344
"hs1.8xlarge": 5.520000,
306345
// i2 family
@@ -317,6 +356,14 @@ var InitialOnDemandPricesUSGov = map[string]map[ec2types.InstanceType]float64{
317356
"i4i.12xlarge": 4.963000, "i4i.16xlarge": 6.618000, "i4i.24xlarge": 9.926400, "i4i.2xlarge": 0.827000,
318357
"i4i.32xlarge": 13.235200, "i4i.4xlarge": 1.654000, "i4i.8xlarge": 3.309000, "i4i.large": 0.207000,
319358
"i4i.metal": 13.235000, "i4i.xlarge": 0.414000,
359+
// i7i family
360+
"i7i.12xlarge": 5.459500, "i7i.16xlarge": 7.279400, "i7i.24xlarge": 10.919000, "i7i.2xlarge": 0.909900,
361+
"i7i.48xlarge": 21.838100, "i7i.4xlarge": 1.819800, "i7i.8xlarge": 3.639700, "i7i.large": 0.227500,
362+
"i7i.metal-24xl": 11.595400, "i7i.metal-48xl": 23.190800, "i7i.xlarge": 0.455000,
363+
// i7ie family
364+
"i7ie.12xlarge": 7.534800, "i7ie.18xlarge": 11.302200, "i7ie.24xlarge": 15.069600, "i7ie.2xlarge": 1.255800,
365+
"i7ie.3xlarge": 1.883700, "i7ie.48xlarge": 30.139200, "i7ie.6xlarge": 3.767400, "i7ie.large": 0.314000,
366+
"i7ie.metal-24xl": 16.048100, "i7ie.metal-48xl": 32.096200, "i7ie.xlarge": 0.627900,
320367
// inf1 family
321368
"inf1.24xlarge": 5.953000, "inf1.2xlarge": 0.456000, "inf1.6xlarge": 1.488000, "inf1.xlarge": 0.288000,
322369
// m1 family
@@ -386,6 +433,14 @@ var InitialOnDemandPricesUSGov = map[string]map[ec2types.InstanceType]float64{
386433
"m7i.12xlarge": 3.049200, "m7i.16xlarge": 4.065600, "m7i.24xlarge": 6.098400, "m7i.2xlarge": 0.508200,
387434
"m7i.48xlarge": 12.196800, "m7i.4xlarge": 1.016400, "m7i.8xlarge": 2.032800, "m7i.large": 0.127050,
388435
"m7i.metal-24xl": 6.708240, "m7i.metal-48xl": 12.196800, "m7i.xlarge": 0.254100,
436+
// m8a family
437+
"m8a.12xlarge": 3.681840, "m8a.16xlarge": 4.909120, "m8a.24xlarge": 7.363680, "m8a.2xlarge": 0.613640,
438+
"m8a.48xlarge": 14.727360, "m8a.4xlarge": 1.227280, "m8a.8xlarge": 2.454560, "m8a.large": 0.153410,
439+
"m8a.medium": 0.076710, "m8a.metal-24xl": 8.100050, "m8a.metal-48xl": 14.727360, "m8a.xlarge": 0.306820,
440+
// m8g family
441+
"m8g.12xlarge": 2.714880, "m8g.16xlarge": 3.619840, "m8g.24xlarge": 5.429760, "m8g.2xlarge": 0.452480,
442+
"m8g.48xlarge": 10.859520, "m8g.4xlarge": 0.904960, "m8g.8xlarge": 1.809920, "m8g.large": 0.113120,
443+
"m8g.medium": 0.056560, "m8g.metal-24xl": 5.972740, "m8g.metal-48xl": 10.859520, "m8g.xlarge": 0.226240,
389444
// p2 family
390445
"p2.16xlarge": 17.280000, "p2.8xlarge": 8.640000, "p2.xlarge": 1.080000,
391446
// p3 family
@@ -395,7 +450,7 @@ var InitialOnDemandPricesUSGov = map[string]map[ec2types.InstanceType]float64{
395450
// p4d family
396451
"p4d.24xlarge": 26.351100,
397452
// p5 family
398-
"p5.48xlarge": 66.048000,
453+
"p5.48xlarge": 66.048000, "p5.4xlarge": 8.256000,
399454
// p5en family
400455
"p5en.48xlarge": 75.955200,
401456
// r3 family
@@ -490,6 +545,14 @@ var InitialOnDemandPricesUSGov = map[string]map[ec2types.InstanceType]float64{
490545
"u-6tb1.112xlarge": 65.433000, "u-6tb1.56xlarge": 55.610750,
491546
// u-9tb1 family
492547
"u-9tb1.112xlarge": 98.150000,
548+
// u7i-12tb family
549+
"u7i-12tb.224xlarge": 150.496960,
550+
// u7i-6tb family
551+
"u7i-6tb.112xlarge": 75.247950,
552+
// u7i-8tb family
553+
"u7i-8tb.112xlarge": 100.331110,
554+
// u7in-16tb family
555+
"u7in-16tb.224xlarge": 216.283840,
493556
// u7in-24tb family
494557
"u7in-24tb.224xlarge": 324.443680,
495558
// x1 family

0 commit comments

Comments
 (0)