service-capacity-modeling 0.3.94__py3-none-any.whl → 0.3.98__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -632,15 +632,6 @@
632
632
  "dl1.24xlarge": {
633
633
  "annual_cost": 43178.0
634
634
  },
635
- "f1.16xlarge": {
636
- "annual_cost": 50230.0
637
- },
638
- "f1.2xlarge": {
639
- "annual_cost": 6278.67
640
- },
641
- "f1.4xlarge": {
642
- "annual_cost": 12557.33
643
- },
644
635
  "g4ad.16xlarge": {
645
636
  "annual_cost": 13331.67
646
637
  },
@@ -1574,26 +1565,20 @@
1574
1565
  "m8g.xlarge": {
1575
1566
  "annual_cost": 621.0
1576
1567
  },
1577
- "p3.16xlarge": {
1578
- "annual_cost": 69054.67
1579
- },
1580
- "p3.2xlarge": {
1581
- "annual_cost": 8631.67
1582
- },
1583
- "p3.8xlarge": {
1584
- "annual_cost": 34527.33
1585
- },
1586
1568
  "p3dn.24xlarge": {
1587
1569
  "annual_cost": 79416.67
1588
1570
  },
1589
1571
  "p4d.24xlarge": {
1590
- "annual_cost": 95297.67
1572
+ "annual_cost": 71473.33
1591
1573
  },
1592
1574
  "p4de.24xlarge": {
1593
- "annual_cost": 119122.0
1575
+ "annual_cost": 89341.67
1594
1576
  },
1595
1577
  "p5.48xlarge": {
1596
- "annual_cost": 329048.33
1578
+ "annual_cost": 181288.67
1579
+ },
1580
+ "p5.4xlarge": {
1581
+ "annual_cost": 22661.0
1597
1582
  },
1598
1583
  "r3.2xlarge": {
1599
1584
  "annual_cost": 2043.33
@@ -2303,15 +2288,6 @@
2303
2288
  "trn1n.32xlarge": {
2304
2289
  "annual_cost": 70804.67
2305
2290
  },
2306
- "u-12tb1.112xlarge": {
2307
- "annual_cost": 267960.67
2308
- },
2309
- "u-18tb1.112xlarge": {
2310
- "annual_cost": 401266.33
2311
- },
2312
- "u-24tb1.112xlarge": {
2313
- "annual_cost": 535022.0
2314
- },
2315
2291
  "u-3tb1.56xlarge": {
2316
2292
  "annual_cost": 66877.67
2317
2293
  },
@@ -2321,20 +2297,17 @@
2321
2297
  "u-6tb1.56xlarge": {
2322
2298
  "annual_cost": 113677.33
2323
2299
  },
2324
- "u-9tb1.112xlarge": {
2325
- "annual_cost": 200970.33
2326
- },
2327
2300
  "u7i-12tb.224xlarge": {
2328
- "annual_cost": 375144.67
2301
+ "annual_cost": 308159.0
2329
2302
  },
2330
2303
  "u7in-16tb.224xlarge": {
2331
- "annual_cost": 499353.67
2304
+ "annual_cost": 442117.0
2332
2305
  },
2333
2306
  "u7in-24tb.224xlarge": {
2334
- "annual_cost": 749030.67
2307
+ "annual_cost": 663219.67
2335
2308
  },
2336
2309
  "u7in-32tb.224xlarge": {
2337
- "annual_cost": 998707.67
2310
+ "annual_cost": 884322.0
2338
2311
  },
2339
2312
  "vt1.24xlarge": {
2340
2313
  "annual_cost": 17127.67
@@ -0,0 +1,159 @@
1
+ {
2
+ "us-east-1": {
3
+ "drives": {},
4
+ "instances": {
5
+ "db.r5.12xlarge": {
6
+ "annual_cost": 21258.0
7
+ },
8
+ "db.r5.16xlarge": {
9
+ "annual_cost": 28344.0
10
+ },
11
+ "db.r5.24xlarge": {
12
+ "annual_cost": 42516.0
13
+ },
14
+ "db.r5.2xlarge": {
15
+ "annual_cost": 3543.0
16
+ },
17
+ "db.r5.4xlarge": {
18
+ "annual_cost": 7086.0
19
+ },
20
+ "db.r5.8xlarge": {
21
+ "annual_cost": 14172.0
22
+ },
23
+ "db.r5.large": {
24
+ "annual_cost": 885.67
25
+ },
26
+ "db.r5.xlarge": {
27
+ "annual_cost": 1771.33
28
+ },
29
+ "db.r6g.12xlarge": {
30
+ "annual_cost": 19024.0
31
+ },
32
+ "db.r6g.16xlarge": {
33
+ "annual_cost": 25365.33
34
+ },
35
+ "db.r6g.2xlarge": {
36
+ "annual_cost": 3170.67
37
+ },
38
+ "db.r6g.4xlarge": {
39
+ "annual_cost": 6341.33
40
+ },
41
+ "db.r6g.8xlarge": {
42
+ "annual_cost": 12682.67
43
+ },
44
+ "db.r6g.large": {
45
+ "annual_cost": 792.67
46
+ },
47
+ "db.r6g.xlarge": {
48
+ "annual_cost": 1585.33
49
+ },
50
+ "db.r6gd.12xlarge": {
51
+ "annual_cost": 34765.33
52
+ },
53
+ "db.r6gd.16xlarge": {
54
+ "annual_cost": 46353.67
55
+ },
56
+ "db.r6gd.2xlarge": {
57
+ "annual_cost": 5794.33
58
+ },
59
+ "db.r6gd.4xlarge": {
60
+ "annual_cost": 11588.33
61
+ },
62
+ "db.r6gd.8xlarge": {
63
+ "annual_cost": 23177.0
64
+ },
65
+ "db.r6gd.xlarge": {
66
+ "annual_cost": 2897.0
67
+ },
68
+ "db.r6i.12xlarge": {
69
+ "annual_cost": 21256.0
70
+ },
71
+ "db.r6i.16xlarge": {
72
+ "annual_cost": 28341.33
73
+ },
74
+ "db.r6i.24xlarge": {
75
+ "annual_cost": 42512.0
76
+ },
77
+ "db.r6i.2xlarge": {
78
+ "annual_cost": 3542.67
79
+ },
80
+ "db.r6i.32xlarge": {
81
+ "annual_cost": 56682.67
82
+ },
83
+ "db.r6i.4xlarge": {
84
+ "annual_cost": 7085.33
85
+ },
86
+ "db.r6i.8xlarge": {
87
+ "annual_cost": 14170.67
88
+ },
89
+ "db.r6i.large": {
90
+ "annual_cost": 885.67
91
+ },
92
+ "db.r6i.xlarge": {
93
+ "annual_cost": 1771.33
94
+ },
95
+ "db.r6id.24xlarge": {
96
+ "annual_cost": 77553.33
97
+ },
98
+ "db.r6id.32xlarge": {
99
+ "annual_cost": 103404.33
100
+ },
101
+ "db.r7g.12xlarge": {
102
+ "annual_cost": 30796.33
103
+ },
104
+ "db.r7g.16xlarge": {
105
+ "annual_cost": 41061.67
106
+ },
107
+ "db.r7g.2xlarge": {
108
+ "annual_cost": 5132.67
109
+ },
110
+ "db.r7g.4xlarge": {
111
+ "annual_cost": 10265.33
112
+ },
113
+ "db.r7g.8xlarge": {
114
+ "annual_cost": 20530.67
115
+ },
116
+ "db.r7g.large": {
117
+ "annual_cost": 1283.33
118
+ },
119
+ "db.r7g.xlarge": {
120
+ "annual_cost": 2566.33
121
+ },
122
+ "db.t3.large": {
123
+ "annual_cost": 622.67
124
+ },
125
+ "db.t3.medium": {
126
+ "annual_cost": 311.33
127
+ },
128
+ "db.t4g.large": {
129
+ "annual_cost": 550.0
130
+ },
131
+ "db.t4g.medium": {
132
+ "annual_cost": 275.0
133
+ },
134
+ "db.x2g.12xlarge": {
135
+ "annual_cost": 27726.33
136
+ },
137
+ "db.x2g.16xlarge": {
138
+ "annual_cost": 36968.67
139
+ },
140
+ "db.x2g.2xlarge": {
141
+ "annual_cost": 4621.0
142
+ },
143
+ "db.x2g.4xlarge": {
144
+ "annual_cost": 9242.0
145
+ },
146
+ "db.x2g.8xlarge": {
147
+ "annual_cost": 18484.33
148
+ },
149
+ "db.x2g.large": {
150
+ "annual_cost": 1155.33
151
+ },
152
+ "db.x2g.xlarge": {
153
+ "annual_cost": 2310.67
154
+ }
155
+ },
156
+ "services": {},
157
+ "zones_in_region": 3
158
+ }
159
+ }
@@ -3,15 +3,7 @@
3
3
  "instances": {
4
4
  "f5.large.deprecated": {"annual_cost": 300.0, "lifecycle": "deprecated"},
5
5
  "m6id.4xlarge": {"annual_cost": 3126.64},
6
- "m6id.xlarge": {"annual_cost": 781.66},
7
- "db.r5.large": {"annual_cost": 885.7},
8
- "db.r5.xlarge": {"annual_cost": 1771.3},
9
- "db.r5.2xlarge": {"annual_cost": 3543},
10
- "db.r5.4xlarge": {"annual_cost": 7086},
11
- "db.r5.8xlarge": {"annual_cost": 14171.7},
12
- "db.r5.12xlarge": {"annual_cost": 21258},
13
- "db.r5.16xlarge": {"annual_cost": 28343.3},
14
- "db.r5.24xlarge": {"annual_cost": 42516}
6
+ "m6id.xlarge": {"annual_cost": 781.66}
15
7
  },
16
8
  "drives": {
17
9
  "gp2": {"annual_cost_per_gib": 1.2},
@@ -0,0 +1,95 @@
1
+ {
2
+ "instances": {
3
+ "db.r6g.large": {
4
+ "name": "db.r6g.large",
5
+ "cpu": 2,
6
+ "cpu_cores": 2,
7
+ "cpu_ghz": 2.5,
8
+ "cpu_ipc_scale": 1.5,
9
+ "ram_gib": 15.26,
10
+ "net_mbps": 750.0,
11
+ "drive": null,
12
+ "platforms": [
13
+ "Aurora PostgreSQL"
14
+ ]
15
+ },
16
+ "db.r6g.xlarge": {
17
+ "name": "db.r6g.xlarge",
18
+ "cpu": 4,
19
+ "cpu_cores": 4,
20
+ "cpu_ghz": 2.5,
21
+ "cpu_ipc_scale": 1.5,
22
+ "ram_gib": 30.52,
23
+ "net_mbps": 1250.0,
24
+ "drive": null,
25
+ "platforms": [
26
+ "Aurora PostgreSQL"
27
+ ]
28
+ },
29
+ "db.r6g.2xlarge": {
30
+ "name": "db.r6g.2xlarge",
31
+ "cpu": 8,
32
+ "cpu_cores": 8,
33
+ "cpu_ghz": 2.5,
34
+ "cpu_ipc_scale": 1.5,
35
+ "ram_gib": 61.04,
36
+ "net_mbps": 2500.0,
37
+ "drive": null,
38
+ "platforms": [
39
+ "Aurora PostgreSQL"
40
+ ]
41
+ },
42
+ "db.r6g.4xlarge": {
43
+ "name": "db.r6g.4xlarge",
44
+ "cpu": 16,
45
+ "cpu_cores": 16,
46
+ "cpu_ghz": 2.5,
47
+ "cpu_ipc_scale": 1.5,
48
+ "ram_gib": 122.07,
49
+ "net_mbps": 5000.0,
50
+ "drive": null,
51
+ "platforms": [
52
+ "Aurora PostgreSQL"
53
+ ]
54
+ },
55
+ "db.r6g.8xlarge": {
56
+ "name": "db.r6g.8xlarge",
57
+ "cpu": 32,
58
+ "cpu_cores": 32,
59
+ "cpu_ghz": 2.5,
60
+ "cpu_ipc_scale": 1.5,
61
+ "ram_gib": 244.14,
62
+ "net_mbps": 12000.0,
63
+ "drive": null,
64
+ "platforms": [
65
+ "Aurora PostgreSQL"
66
+ ]
67
+ },
68
+ "db.r6g.12xlarge": {
69
+ "name": "db.r6g.12xlarge",
70
+ "cpu": 48,
71
+ "cpu_cores": 48,
72
+ "cpu_ghz": 2.5,
73
+ "cpu_ipc_scale": 1.5,
74
+ "ram_gib": 366.21,
75
+ "net_mbps": 20000.0,
76
+ "drive": null,
77
+ "platforms": [
78
+ "Aurora PostgreSQL"
79
+ ]
80
+ },
81
+ "db.r6g.16xlarge": {
82
+ "name": "db.r6g.16xlarge",
83
+ "cpu": 64,
84
+ "cpu_cores": 64,
85
+ "cpu_ghz": 2.5,
86
+ "cpu_ipc_scale": 1.5,
87
+ "ram_gib": 488.28,
88
+ "net_mbps": 25000.0,
89
+ "drive": null,
90
+ "platforms": [
91
+ "Aurora PostgreSQL"
92
+ ]
93
+ }
94
+ }
95
+ }
@@ -0,0 +1,121 @@
1
+ {
2
+ "instances": {
3
+ "db.r6i.large": {
4
+ "name": "db.r6i.large",
5
+ "cpu": 2,
6
+ "cpu_cores": 1,
7
+ "cpu_ghz": 3.5,
8
+ "cpu_ipc_scale": 1.0,
9
+ "ram_gib": 15.26,
10
+ "net_mbps": 781.0,
11
+ "drive": null,
12
+ "platforms": [
13
+ "Aurora PostgreSQL"
14
+ ]
15
+ },
16
+ "db.r6i.xlarge": {
17
+ "name": "db.r6i.xlarge",
18
+ "cpu": 4,
19
+ "cpu_cores": 2,
20
+ "cpu_ghz": 3.5,
21
+ "cpu_ipc_scale": 1.0,
22
+ "ram_gib": 30.52,
23
+ "net_mbps": 1562.0,
24
+ "drive": null,
25
+ "platforms": [
26
+ "Aurora PostgreSQL"
27
+ ]
28
+ },
29
+ "db.r6i.2xlarge": {
30
+ "name": "db.r6i.2xlarge",
31
+ "cpu": 8,
32
+ "cpu_cores": 4,
33
+ "cpu_ghz": 3.5,
34
+ "cpu_ipc_scale": 1.0,
35
+ "ram_gib": 61.04,
36
+ "net_mbps": 3125.0,
37
+ "drive": null,
38
+ "platforms": [
39
+ "Aurora PostgreSQL"
40
+ ]
41
+ },
42
+ "db.r6i.4xlarge": {
43
+ "name": "db.r6i.4xlarge",
44
+ "cpu": 16,
45
+ "cpu_cores": 8,
46
+ "cpu_ghz": 3.5,
47
+ "cpu_ipc_scale": 1.0,
48
+ "ram_gib": 122.07,
49
+ "net_mbps": 6250.0,
50
+ "drive": null,
51
+ "platforms": [
52
+ "Aurora PostgreSQL"
53
+ ]
54
+ },
55
+ "db.r6i.8xlarge": {
56
+ "name": "db.r6i.8xlarge",
57
+ "cpu": 32,
58
+ "cpu_cores": 16,
59
+ "cpu_ghz": 3.5,
60
+ "cpu_ipc_scale": 1.0,
61
+ "ram_gib": 244.14,
62
+ "net_mbps": 12500.0,
63
+ "drive": null,
64
+ "platforms": [
65
+ "Aurora PostgreSQL"
66
+ ]
67
+ },
68
+ "db.r6i.12xlarge": {
69
+ "name": "db.r6i.12xlarge",
70
+ "cpu": 48,
71
+ "cpu_cores": 24,
72
+ "cpu_ghz": 3.5,
73
+ "cpu_ipc_scale": 1.0,
74
+ "ram_gib": 366.21,
75
+ "net_mbps": 18750.0,
76
+ "drive": null,
77
+ "platforms": [
78
+ "Aurora PostgreSQL"
79
+ ]
80
+ },
81
+ "db.r6i.16xlarge": {
82
+ "name": "db.r6i.16xlarge",
83
+ "cpu": 64,
84
+ "cpu_cores": 32,
85
+ "cpu_ghz": 3.5,
86
+ "cpu_ipc_scale": 1.0,
87
+ "ram_gib": 488.28,
88
+ "net_mbps": 25000.0,
89
+ "drive": null,
90
+ "platforms": [
91
+ "Aurora PostgreSQL"
92
+ ]
93
+ },
94
+ "db.r6i.24xlarge": {
95
+ "name": "db.r6i.24xlarge",
96
+ "cpu": 96,
97
+ "cpu_cores": 48,
98
+ "cpu_ghz": 3.5,
99
+ "cpu_ipc_scale": 1.0,
100
+ "ram_gib": 732.42,
101
+ "net_mbps": 37500.0,
102
+ "drive": null,
103
+ "platforms": [
104
+ "Aurora PostgreSQL"
105
+ ]
106
+ },
107
+ "db.r6i.32xlarge": {
108
+ "name": "db.r6i.32xlarge",
109
+ "cpu": 128,
110
+ "cpu_cores": 64,
111
+ "cpu_ghz": 3.5,
112
+ "cpu_ipc_scale": 1.0,
113
+ "ram_gib": 976.56,
114
+ "net_mbps": 50000.0,
115
+ "drive": null,
116
+ "platforms": [
117
+ "Aurora PostgreSQL"
118
+ ]
119
+ }
120
+ }
121
+ }
@@ -0,0 +1,95 @@
1
+ {
2
+ "instances": {
3
+ "db.r7g.large": {
4
+ "name": "db.r7g.large",
5
+ "cpu": 2,
6
+ "cpu_cores": 2,
7
+ "cpu_ghz": 2.6,
8
+ "cpu_ipc_scale": 1.5,
9
+ "ram_gib": 15.26,
10
+ "net_mbps": 937.0,
11
+ "drive": null,
12
+ "platforms": [
13
+ "Aurora PostgreSQL"
14
+ ]
15
+ },
16
+ "db.r7g.xlarge": {
17
+ "name": "db.r7g.xlarge",
18
+ "cpu": 4,
19
+ "cpu_cores": 4,
20
+ "cpu_ghz": 2.6,
21
+ "cpu_ipc_scale": 1.5,
22
+ "ram_gib": 30.52,
23
+ "net_mbps": 1876.0,
24
+ "drive": null,
25
+ "platforms": [
26
+ "Aurora PostgreSQL"
27
+ ]
28
+ },
29
+ "db.r7g.2xlarge": {
30
+ "name": "db.r7g.2xlarge",
31
+ "cpu": 8,
32
+ "cpu_cores": 8,
33
+ "cpu_ghz": 2.6,
34
+ "cpu_ipc_scale": 1.5,
35
+ "ram_gib": 61.04,
36
+ "net_mbps": 3750.0,
37
+ "drive": null,
38
+ "platforms": [
39
+ "Aurora PostgreSQL"
40
+ ]
41
+ },
42
+ "db.r7g.4xlarge": {
43
+ "name": "db.r7g.4xlarge",
44
+ "cpu": 16,
45
+ "cpu_cores": 16,
46
+ "cpu_ghz": 2.6,
47
+ "cpu_ipc_scale": 1.5,
48
+ "ram_gib": 122.07,
49
+ "net_mbps": 7500.0,
50
+ "drive": null,
51
+ "platforms": [
52
+ "Aurora PostgreSQL"
53
+ ]
54
+ },
55
+ "db.r7g.8xlarge": {
56
+ "name": "db.r7g.8xlarge",
57
+ "cpu": 32,
58
+ "cpu_cores": 32,
59
+ "cpu_ghz": 2.6,
60
+ "cpu_ipc_scale": 1.5,
61
+ "ram_gib": 244.14,
62
+ "net_mbps": 15000.0,
63
+ "drive": null,
64
+ "platforms": [
65
+ "Aurora PostgreSQL"
66
+ ]
67
+ },
68
+ "db.r7g.12xlarge": {
69
+ "name": "db.r7g.12xlarge",
70
+ "cpu": 48,
71
+ "cpu_cores": 48,
72
+ "cpu_ghz": 2.6,
73
+ "cpu_ipc_scale": 1.5,
74
+ "ram_gib": 366.21,
75
+ "net_mbps": 22500.0,
76
+ "drive": null,
77
+ "platforms": [
78
+ "Aurora PostgreSQL"
79
+ ]
80
+ },
81
+ "db.r7g.16xlarge": {
82
+ "name": "db.r7g.16xlarge",
83
+ "cpu": 64,
84
+ "cpu_cores": 64,
85
+ "cpu_ghz": 2.6,
86
+ "cpu_ipc_scale": 1.5,
87
+ "ram_gib": 488.28,
88
+ "net_mbps": 30000.0,
89
+ "drive": null,
90
+ "platforms": [
91
+ "Aurora PostgreSQL"
92
+ ]
93
+ }
94
+ }
95
+ }
@@ -0,0 +1,121 @@
1
+ {
2
+ "instances": {
3
+ "db.r7i.large": {
4
+ "name": "db.r7i.large",
5
+ "cpu": 2,
6
+ "cpu_cores": 1,
7
+ "cpu_ghz": 3.2,
8
+ "cpu_ipc_scale": 1.25,
9
+ "ram_gib": 15.26,
10
+ "net_mbps": 781.0,
11
+ "drive": null,
12
+ "platforms": [
13
+ "Aurora PostgreSQL"
14
+ ]
15
+ },
16
+ "db.r7i.xlarge": {
17
+ "name": "db.r7i.xlarge",
18
+ "cpu": 4,
19
+ "cpu_cores": 2,
20
+ "cpu_ghz": 3.2,
21
+ "cpu_ipc_scale": 1.25,
22
+ "ram_gib": 30.52,
23
+ "net_mbps": 1562.0,
24
+ "drive": null,
25
+ "platforms": [
26
+ "Aurora PostgreSQL"
27
+ ]
28
+ },
29
+ "db.r7i.2xlarge": {
30
+ "name": "db.r7i.2xlarge",
31
+ "cpu": 8,
32
+ "cpu_cores": 4,
33
+ "cpu_ghz": 3.2,
34
+ "cpu_ipc_scale": 1.25,
35
+ "ram_gib": 61.04,
36
+ "net_mbps": 3125.0,
37
+ "drive": null,
38
+ "platforms": [
39
+ "Aurora PostgreSQL"
40
+ ]
41
+ },
42
+ "db.r7i.4xlarge": {
43
+ "name": "db.r7i.4xlarge",
44
+ "cpu": 16,
45
+ "cpu_cores": 8,
46
+ "cpu_ghz": 3.2,
47
+ "cpu_ipc_scale": 1.25,
48
+ "ram_gib": 122.07,
49
+ "net_mbps": 6250.0,
50
+ "drive": null,
51
+ "platforms": [
52
+ "Aurora PostgreSQL"
53
+ ]
54
+ },
55
+ "db.r7i.8xlarge": {
56
+ "name": "db.r7i.8xlarge",
57
+ "cpu": 32,
58
+ "cpu_cores": 16,
59
+ "cpu_ghz": 3.2,
60
+ "cpu_ipc_scale": 1.25,
61
+ "ram_gib": 244.14,
62
+ "net_mbps": 12500.0,
63
+ "drive": null,
64
+ "platforms": [
65
+ "Aurora PostgreSQL"
66
+ ]
67
+ },
68
+ "db.r7i.12xlarge": {
69
+ "name": "db.r7i.12xlarge",
70
+ "cpu": 48,
71
+ "cpu_cores": 24,
72
+ "cpu_ghz": 3.2,
73
+ "cpu_ipc_scale": 1.25,
74
+ "ram_gib": 366.21,
75
+ "net_mbps": 18750.0,
76
+ "drive": null,
77
+ "platforms": [
78
+ "Aurora PostgreSQL"
79
+ ]
80
+ },
81
+ "db.r7i.16xlarge": {
82
+ "name": "db.r7i.16xlarge",
83
+ "cpu": 64,
84
+ "cpu_cores": 32,
85
+ "cpu_ghz": 3.2,
86
+ "cpu_ipc_scale": 1.25,
87
+ "ram_gib": 488.28,
88
+ "net_mbps": 25000.0,
89
+ "drive": null,
90
+ "platforms": [
91
+ "Aurora PostgreSQL"
92
+ ]
93
+ },
94
+ "db.r7i.24xlarge": {
95
+ "name": "db.r7i.24xlarge",
96
+ "cpu": 96,
97
+ "cpu_cores": 48,
98
+ "cpu_ghz": 3.2,
99
+ "cpu_ipc_scale": 1.25,
100
+ "ram_gib": 732.42,
101
+ "net_mbps": 37500.0,
102
+ "drive": null,
103
+ "platforms": [
104
+ "Aurora PostgreSQL"
105
+ ]
106
+ },
107
+ "db.r7i.48xlarge": {
108
+ "name": "db.r7i.48xlarge",
109
+ "cpu": 192,
110
+ "cpu_cores": 96,
111
+ "cpu_ghz": 3.2,
112
+ "cpu_ipc_scale": 1.25,
113
+ "ram_gib": 1464.84,
114
+ "net_mbps": 50000.0,
115
+ "drive": null,
116
+ "platforms": [
117
+ "Aurora PostgreSQL"
118
+ ]
119
+ }
120
+ }
121
+ }
@@ -378,7 +378,7 @@
378
378
  "cpu": 64,
379
379
  "cpu_ghz": 3.1,
380
380
  "ram_gib": 512,
381
- "net_mbps": 13600,
381
+ "net_mbps": 20000,
382
382
  "drive": null,
383
383
  "platforms": ["Aurora MySQL","Aurora PostgreSQL"]
384
384
  },
@@ -387,7 +387,7 @@
387
387
  "cpu": 96,
388
388
  "cpu_ghz": 3.1,
389
389
  "ram_gib": 768,
390
- "net_mbps": 19000,
390
+ "net_mbps": 25000,
391
391
  "drive": null,
392
392
  "platforms": ["Aurora MySQL","Aurora PostgreSQL"]
393
393
  }
@@ -110,6 +110,42 @@ def _gb_to_gib(inp: float) -> int:
110
110
  return int(round((inp * 10**9) / 2.0**30))
111
111
 
112
112
 
113
+ def deduce_cpu_ipc_scale(
114
+ vcpu_count: int,
115
+ cpu_cores: int,
116
+ cpu_perf: Optional[CPUPerformance] = None,
117
+ ) -> float:
118
+ """
119
+ Deduce CPU IPC scale factor from vCPU and core counts.
120
+ If all vCPUs are full cores (no SMT), use 1.5, otherwise 1.0.
121
+ """
122
+ if cpu_perf is not None and cpu_perf.ipc_scale_factor is not None:
123
+ return cpu_perf.ipc_scale_factor
124
+ if vcpu_count == cpu_cores:
125
+ return 1.5
126
+ return 1.0
127
+
128
+
129
+ def convert_mib_to_gib(size_mib: float) -> float:
130
+ """Convert AWS MiB memory size to GiB."""
131
+ return round(size_mib * 10**6 / 2.0**30, 2)
132
+
133
+
134
+ def convert_gbps_to_mbps(bandwidth_gbps: float) -> float:
135
+ """Convert AWS Gbps network bandwidth to Mbps."""
136
+ return round(bandwidth_gbps * 1000)
137
+
138
+
139
+ def _engine_to_platform(engine: str) -> str:
140
+ """
141
+ Map RDS engine name to Platform enum value.
142
+ Currently only supports aurora-postgresql.
143
+ """
144
+ if engine == "aurora-postgresql":
145
+ return "aurora_postgres"
146
+ raise ValueError(f"Engine '{engine}' is not supported")
147
+
148
+
113
149
  def _drive(
114
150
  drive_type: DriveType,
115
151
  io_perf: Optional[IOPerformance],
@@ -233,24 +269,19 @@ def pull_family(
233
269
  print(name)
234
270
 
235
271
  drive = _drive(disk_type, io_perf, scale=normalized_size, data=data)
236
- if cpu_perf is not None and cpu_perf.ipc_scale_factor is not None:
237
- cpu_ipc_scale_factor = cpu_perf.ipc_scale_factor
238
- else:
239
- if data["VCpuInfo"].get("DefaultThreadsPerCore", 2) == 1:
240
- cpu_ipc_scale_factor = 1.5
241
- else:
242
- cpu_ipc_scale_factor = 1.0
272
+ vcpu_count = data["VCpuInfo"]["DefaultVCpus"]
273
+ cpu_cores = data["VCpuInfo"]["DefaultCores"]
274
+ cpu_ipc_scale_factor = deduce_cpu_ipc_scale(vcpu_count, cpu_cores, cpu_perf)
243
275
 
244
276
  new_shape = Instance(
245
277
  name=data["InstanceType"],
246
- cpu=data["VCpuInfo"]["DefaultVCpus"],
247
- cpu_cores=data["VCpuInfo"]["DefaultCores"],
278
+ cpu=vcpu_count,
279
+ cpu_cores=cpu_cores,
248
280
  cpu_ghz=data["ProcessorInfo"]["SustainedClockSpeedInGhz"],
249
281
  cpu_ipc_scale=cpu_ipc_scale_factor,
250
- ram_gib=round(data["MemoryInfo"]["SizeInMiB"] * 10**6 / 2.0**30, 2),
251
- net_mbps=round(
282
+ ram_gib=convert_mib_to_gib(data["MemoryInfo"]["SizeInMiB"]),
283
+ net_mbps=convert_gbps_to_mbps(
252
284
  data["NetworkInfo"]["NetworkCards"][0]["BaselineBandwidthInGbps"]
253
- * 10**3
254
285
  ),
255
286
  drive=drive,
256
287
  )
@@ -260,6 +291,124 @@ def pull_family(
260
291
  return results
261
292
 
262
293
 
294
+ def lookup_ec2_instance_specs(
295
+ ec2_client: Any,
296
+ instance_type: str,
297
+ debug: bool = False,
298
+ ) -> Tuple[int, int, float, float, float]:
299
+ """
300
+ Look up EC2 instance specifications.
301
+ Returns: (vcpu_count, cpu_cores, cpu_ghz, ram_gib, net_mbps)
302
+ Returns zeros/defaults if lookup fails.
303
+ """
304
+ try:
305
+ ec2_response = ec2_client.describe_instance_types(InstanceTypes=[instance_type])
306
+ if ec2_response["InstanceTypes"]:
307
+ ec2_data = ec2_response["InstanceTypes"][0]
308
+ vcpu_count = ec2_data["VCpuInfo"]["DefaultVCpus"]
309
+ cpu_cores = ec2_data["VCpuInfo"]["DefaultCores"]
310
+ cpu_ghz = ec2_data["ProcessorInfo"]["SustainedClockSpeedInGhz"]
311
+ ram_gib = convert_mib_to_gib(ec2_data["MemoryInfo"]["SizeInMiB"])
312
+ net_mbps = convert_gbps_to_mbps(
313
+ ec2_data["NetworkInfo"]["NetworkCards"][0]["BaselineBandwidthInGbps"]
314
+ )
315
+ if debug:
316
+ print(
317
+ f"Looked up {instance_type} -> {vcpu_count} vCPUs, "
318
+ f"{cpu_cores} cores, {cpu_ghz} GHz, {ram_gib} GiB, {net_mbps} Mbps",
319
+ file=sys.stderr,
320
+ )
321
+ return vcpu_count, cpu_cores, cpu_ghz, ram_gib, net_mbps
322
+ else:
323
+ raise RuntimeError("No EC2 instance types returned")
324
+ except (botocore.exceptions.ClientError, botocore.exceptions.BotoCoreError) as e:
325
+ if debug:
326
+ print(
327
+ f"WARNING: Could not look up {instance_type}: {e}. Using defaults.",
328
+ file=sys.stderr,
329
+ )
330
+ return 0, 0, 2.5, 0.0, 1000.0
331
+
332
+
333
+ def pull_rds_family( # pylint: disable=too-many-locals
334
+ rds_client: Any,
335
+ family: str,
336
+ db_engines: Sequence[str],
337
+ cpu_perf: Optional[CPUPerformance] = None,
338
+ debug: bool = False,
339
+ ) -> Sequence[Instance]:
340
+ """
341
+ Pull RDS Instance shapes from AWS RDS APIs.
342
+ Queries describe_orderable_db_instance_options for the specified engines
343
+ and family, then constructs Instance objects with appropriate platform tags.
344
+ Returns a list of Instance for hardware shapes.
345
+ """
346
+
347
+ def debug_log(msg: str) -> None:
348
+ if debug:
349
+ print(msg, file=sys.stderr)
350
+
351
+ ec2_client = boto3.client("ec2", region_name=rds_client.meta.region_name)
352
+ instance_data_map = {}
353
+ for engine in db_engines:
354
+ debug_log(f"Querying RDS API for engine={engine}, family=db.{family}.*")
355
+ paginator = rds_client.get_paginator("describe_orderable_db_instance_options")
356
+ page_iterator = paginator.paginate(Engine=engine)
357
+ for page in page_iterator:
358
+ for option in page["OrderableDBInstanceOptions"]:
359
+ db_instance_class = option["DBInstanceClass"]
360
+ if not db_instance_class.startswith(f"db.{family}."):
361
+ continue
362
+ if db_instance_class not in instance_data_map:
363
+ instance_data_map[db_instance_class] = {
364
+ "data": option,
365
+ "platforms": set(),
366
+ }
367
+ platform = _engine_to_platform(engine)
368
+ instance_data_map[db_instance_class]["platforms"].add(platform)
369
+ if not instance_data_map:
370
+ print(
371
+ f"ERROR: No RDS instances found for family 'db.{family}' "
372
+ f"with engines {db_engines}",
373
+ file=sys.stderr,
374
+ )
375
+ return []
376
+ debug_log(f"Found {len(instance_data_map)} unique instance classes")
377
+ results = []
378
+ for db_instance_class, info in instance_data_map.items():
379
+ option = info["data"]
380
+ platforms = sorted(info["platforms"])
381
+ _, size = db_instance_class.rsplit(".", 1)
382
+ ec2_instance_type = f"{family}.{size}"
383
+ vcpu_count, cpu_cores, cpu_ghz, ram_gib, net_mbps = lookup_ec2_instance_specs(
384
+ ec2_client, ec2_instance_type, debug
385
+ )
386
+ cpu_ipc_scale_factor = deduce_cpu_ipc_scale(vcpu_count, cpu_cores, cpu_perf)
387
+ debug_log(
388
+ f"{db_instance_class}: cpu={vcpu_count}, cores={cpu_cores}, "
389
+ f"ghz={cpu_ghz}, ram={ram_gib} GiB, net={net_mbps} Mbps, "
390
+ f"platforms={platforms}"
391
+ )
392
+ from service_capacity_modeling.interface import Platform
393
+
394
+ new_instance = Instance(
395
+ name=db_instance_class,
396
+ cpu=vcpu_count,
397
+ cpu_cores=cpu_cores,
398
+ cpu_ghz=cpu_ghz,
399
+ cpu_ipc_scale=cpu_ipc_scale_factor,
400
+ ram_gib=ram_gib,
401
+ net_mbps=net_mbps,
402
+ drive=None,
403
+ platforms=[Platform[p] for p in platforms],
404
+ )
405
+ results.append(new_instance)
406
+ results = sorted(
407
+ results, key=lambda i: normalized_aws_size(i.name.replace("db.", ""))
408
+ )
409
+ return results
410
+
411
+
263
412
  def parse_iops(inp: Optional[str]) -> Optional[Tuple[int, int]]:
264
413
  """Parses strings like 100,000/50,000 to (100000, 50000)"""
265
414
  if inp is None:
@@ -278,6 +427,19 @@ def parse_iops(inp: Optional[str]) -> Optional[Tuple[int, int]]:
278
427
  )
279
428
 
280
429
 
430
+ def parse_db_engines(engines_str: str) -> Sequence[str]:
431
+ """Parse comma-separated database engines. Currently only aurora-postgresql is supported."""
432
+ engines = [e.strip() for e in engines_str.split(",")]
433
+ supported_engines = {"aurora-postgresql"}
434
+ for engine in engines:
435
+ if engine not in supported_engines:
436
+ raise argparse.ArgumentTypeError(
437
+ f"Database engine '{engine}' is not implemented yet. "
438
+ f"Currently supported: {', '.join(sorted(supported_engines))}"
439
+ )
440
+ return engines
441
+
442
+
281
443
  def _parse_family(family: str) -> Tuple[str, int, str]:
282
444
  series = family[0]
283
445
  num = re.findall(r"\d+", family)
@@ -348,23 +510,53 @@ def deduce_cpu_perf(
348
510
 
349
511
  def main(args: Any) -> int:
350
512
  for family in args.families:
351
- io_perf = deduce_io_perf(
352
- family=family, curve=args.io_latency_curve, iops=args.xl_iops
353
- )
354
-
355
- cpu_perf = deduce_cpu_perf(
356
- family=family,
357
- ipc_scale_factor=args.cpu_ipc_scale,
358
- )
359
-
360
- ec2_client = boto3.client("ec2", region_name=args.region)
361
- family_shapes = pull_family(
362
- ec2_client=ec2_client,
363
- family=family,
364
- cpu_perf=cpu_perf,
365
- io_perf=io_perf,
366
- debug=args.debug,
367
- )
513
+ is_rds = family.startswith("db.")
514
+ if is_rds:
515
+ rds_family = family[3:]
516
+ if not args.db_engines:
517
+ print(
518
+ f"ERROR: Family '{family}' appears to be RDS (starts with 'db.'), "
519
+ "but --db-engines was not specified. Please provide "
520
+ "--db-engines with comma-separated list like 'aurora-postgresql'",
521
+ file=sys.stderr,
522
+ )
523
+ return 1
524
+ if args.xl_iops or args.io_latency_curve != "ssd":
525
+ print(
526
+ "WARNING: --xl-iops and --io-latency-curve are ignored for RDS "
527
+ "instances (db.* families) as they use managed storage.",
528
+ file=sys.stderr,
529
+ )
530
+ cpu_perf = deduce_cpu_perf(
531
+ family=rds_family,
532
+ ipc_scale_factor=args.cpu_ipc_scale,
533
+ )
534
+ rds_client = boto3.client("rds", region_name=args.region)
535
+ family_shapes = pull_rds_family(
536
+ rds_client=rds_client,
537
+ family=rds_family,
538
+ db_engines=args.db_engines,
539
+ cpu_perf=cpu_perf,
540
+ debug=args.debug,
541
+ )
542
+ output_filename = f"auto_db_{rds_family}.json"
543
+ else:
544
+ io_perf = deduce_io_perf(
545
+ family=family, curve=args.io_latency_curve, iops=args.xl_iops
546
+ )
547
+ cpu_perf = deduce_cpu_perf(
548
+ family=family,
549
+ ipc_scale_factor=args.cpu_ipc_scale,
550
+ )
551
+ ec2_client = boto3.client("ec2", region_name=args.region)
552
+ family_shapes = pull_family(
553
+ ec2_client=ec2_client,
554
+ family=family,
555
+ cpu_perf=cpu_perf,
556
+ io_perf=io_perf,
557
+ debug=args.debug,
558
+ )
559
+ output_filename = f"auto_{family}.json"
368
560
  json_shapes: Dict[str, Dict[str, Any]] = {"instances": {}}
369
561
  for shape in family_shapes:
370
562
  model_dict = shape.model_dump(exclude_unset=True)
@@ -377,23 +569,19 @@ def main(args: Any) -> int:
377
569
  and "annual_cost" in model_dict["drive"]
378
570
  ):
379
571
  del model_dict["drive"]["annual_cost"]
380
-
381
572
  json_shapes["instances"][shape.name] = model_dict
382
-
383
573
  print(f"[{family}] Hardware Shapes", file=sys.stderr)
384
574
  print(json.dumps(json_shapes, indent=2))
385
-
386
575
  # Write to JSON file if requested
387
576
  if args.output_path is not None:
388
577
  path: Path = args.output_path
389
578
  if path.is_dir():
390
- output_path = Path(path, f"auto_{family}.json")
579
+ output_path = Path(path, output_filename)
391
580
  else:
392
581
  output_path = path
393
582
  with open(output_path, "wt", encoding="utf-8") as fd:
394
583
  json.dump(json_shapes, fd, indent=2)
395
584
  fd.write("\n")
396
-
397
585
  return 0
398
586
 
399
587
 
@@ -417,6 +605,21 @@ if __name__ == "__main__":
417
605
  for offering in offerings:
418
606
  families.add(offering["InstanceType"].rsplit(".", 1)[0])
419
607
 
608
+ try:
609
+ rds_client = boto3.client("rds", region_name="us-east-1")
610
+ paginator = rds_client.get_paginator("describe_orderable_db_instance_options")
611
+ page_iterator = paginator.paginate(Engine="aurora-postgresql")
612
+ for page in page_iterator:
613
+ for option in page["OrderableDBInstanceOptions"]:
614
+ db_instance_class = option["DBInstanceClass"]
615
+ families.add(db_instance_class.rsplit(".", 1)[0])
616
+ except botocore.exceptions.ClientError:
617
+ print(
618
+ "Unable to connect to RDS. Do you have AWS credentials refreshed?",
619
+ file=sys.stderr,
620
+ )
621
+ sys.exit(1)
622
+
420
623
  parser = argparse.ArgumentParser(
421
624
  prog="Project shapes from instance family filter",
422
625
  description="Input the target instance family filter like m7a.* and generates shape data",
@@ -445,6 +648,16 @@ if __name__ == "__main__":
445
648
  "full cores (not threads) in which case it will be 1.5 by default."
446
649
  ),
447
650
  )
651
+ parser.add_argument(
652
+ "--db-engines",
653
+ type=parse_db_engines,
654
+ default=None,
655
+ help=(
656
+ "Comma-separated list of database engines for RDS instances. "
657
+ "Required when family starts with 'db.'. "
658
+ "Currently supported: aurora-postgresql"
659
+ ),
660
+ )
448
661
  parser.add_argument("--region", choices=regions, default="us-east-1")
449
662
  parser.add_argument(
450
663
  "--output-path",
@@ -38,11 +38,7 @@ def extract_3yr_upfront_price(price_data: Dict[str, Any]) -> Optional[float]:
38
38
  return None
39
39
 
40
40
 
41
- def fetch_pricing(region: str) -> None:
42
- # Initialize pricing client
43
- pricing_client = boto3.client("pricing", region_name=region)
44
-
45
- # Get all EC2 pricing for Reserved Instances
41
+ def fetch_ec2_pricing(pricing_client: Any) -> Dict[str, Dict[str, Union[float, str]]]:
46
42
  paginator = pricing_client.get_paginator("get_products")
47
43
 
48
44
  instances = {}
@@ -81,39 +77,105 @@ def fetch_pricing(region: str) -> None:
81
77
  if "deprecated" in str(instance_type).lower():
82
78
  instance_info["lifecycle"] = "deprecated"
83
79
  instances[instance_type] = instance_info
80
+ return instances
81
+
82
+
83
+ def fetch_rds_pricing(pricing_client: Any) -> Dict[str, Dict[str, Union[float, str]]]:
84
+ paginator = pricing_client.get_paginator("get_products")
85
+
86
+ instances = {}
87
+
88
+ filter_params = {
89
+ "ServiceCode": "AmazonRDS",
90
+ "Filters": [
91
+ {
92
+ "Type": "TERM_MATCH",
93
+ "Field": "location",
94
+ "Value": "US East (N. Virginia)",
95
+ },
96
+ {
97
+ "Type": "TERM_MATCH",
98
+ "Field": "databaseEngine",
99
+ "Value": "Aurora PostgreSQL",
100
+ },
101
+ {"Type": "TERM_MATCH", "Field": "deploymentOption", "Value": "Single-AZ"},
102
+ ],
103
+ }
104
+
105
+ for page in paginator.paginate(**filter_params):
106
+ for price_item in page["PriceList"]:
107
+ price_data = json.loads(price_item)
108
+
109
+ # Extract instance type
110
+ attributes = price_data.get("product", {}).get("attributes", {})
111
+ instance_type = attributes.get("instanceType")
112
+
113
+ if not instance_type:
114
+ continue
115
+
116
+ annual_cost = extract_3yr_upfront_price(price_data)
117
+ if annual_cost:
118
+ instance_info: Dict[str, Union[float, str]] = {
119
+ "annual_cost": annual_cost
120
+ }
121
+ if "deprecated" in str(instance_type).lower():
122
+ instance_info["lifecycle"] = "deprecated"
123
+ instances[instance_type] = instance_info
124
+ return instances
125
+
126
+
127
+ def fetch_pricing(region: str) -> None:
128
+ pricing_client = boto3.client("pricing", region_name=region)
129
+ ec2_instances = fetch_ec2_pricing(pricing_client)
130
+ rds_instances = fetch_rds_pricing(pricing_client)
84
131
 
85
- # Create final output structure
132
+ project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
133
+ ec2_output_file = os.path.join(
134
+ project_root,
135
+ "hardware",
136
+ "profiles",
137
+ "pricing",
138
+ "aws",
139
+ "3yr-reserved_ec2.json",
140
+ )
86
141
  # we bolt on the other info, as a hack until we can improve prior layers
87
- output = {
142
+ ec2_output = {
88
143
  "us-east-1": {
89
- "instances": instances,
144
+ "instances": ec2_instances,
90
145
  "drives": {},
91
146
  "services": {},
92
147
  "zones_in_region": 3,
93
148
  }
94
149
  }
95
-
96
- # Write to JSON file
97
- project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
98
- output_file = os.path.join(
150
+ with open(ec2_output_file, "w", encoding="utf-8") as f:
151
+ json.dump(ec2_output, f, indent=2, sort_keys=True)
152
+ f.write("\n")
153
+ print(f"\nEC2 pricing data written to {ec2_output_file}")
154
+ rds_output_file = os.path.join(
99
155
  project_root,
100
- "service_capacity_modeling",
101
156
  "hardware",
102
157
  "profiles",
103
158
  "pricing",
104
159
  "aws",
105
- "3yr-reserved_ec2.json",
160
+ "3yr-reserved_rds.json",
106
161
  )
107
- with open(output_file, "w", encoding="utf-8") as f:
108
- json.dump(output, f, indent=2, sort_keys=True)
162
+ rds_output = {
163
+ "us-east-1": {
164
+ "instances": rds_instances,
165
+ "drives": {},
166
+ "services": {},
167
+ "zones_in_region": 3,
168
+ }
169
+ }
170
+ with open(rds_output_file, "w", encoding="utf-8") as f:
171
+ json.dump(rds_output, f, indent=2, sort_keys=True)
109
172
  f.write("\n")
110
-
111
- print(f"Pricing data written to {output_file}")
173
+ print(f"RDS pricing data written to {rds_output_file}")
112
174
 
113
175
 
114
176
  def main() -> None:
115
177
  parser = argparse.ArgumentParser(
116
- description="Fetch EC2 Reserved Instance pricing data."
178
+ description="Fetch EC2 and RDS Reserved Instance pricing data."
117
179
  )
118
180
  parser.add_argument(
119
181
  "--region",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: service-capacity-modeling
3
- Version: 0.3.94
3
+ Version: 0.3.98
4
4
  Summary: Contains utilities for modeling capacity for pluggable workloads
5
5
  Author: Joseph Lynch
6
6
  Author-email: josephl@netflix.com
@@ -6,8 +6,9 @@ service_capacity_modeling/stats.py,sha256=LCNUcQPfwF5hhIZwsfAsDe4ZbnuhDnl3vQHKfp
6
6
  service_capacity_modeling/hardware/__init__.py,sha256=P5ostvoSOMUqPODtepeFYb4qfTVH0E73mMFraP49rYU,9196
7
7
  service_capacity_modeling/hardware/profiles/__init__.py,sha256=7-y3JbCBkgzaAjFla2RIymREcImdZ51HTl3yn3vzoGw,1602
8
8
  service_capacity_modeling/hardware/profiles/profiles.txt,sha256=tOfSR3B0E0uAOaXd5SLI3ioq83UYZ3yhK7UHhsK4awQ,49
9
- service_capacity_modeling/hardware/profiles/pricing/aws/3yr-reserved_ec2.json,sha256=JNAj4yotSrEzlsMLamg_GmhqOiiTwKNcDPNs44PTLxI,52798
10
- service_capacity_modeling/hardware/profiles/pricing/aws/3yr-reserved_zz-overrides.json,sha256=lk69Mho6ISxwM2AzlVC2smadkjmJcaaX6_cmvWAWhC4,2282
9
+ service_capacity_modeling/hardware/profiles/pricing/aws/3yr-reserved_ec2.json,sha256=beqldIMtUxoKGAC1deK7XdaeppHMoQbjE0Bi9-O2_f4,52198
10
+ service_capacity_modeling/hardware/profiles/pricing/aws/3yr-reserved_rds.json,sha256=e_BNVQSEv8OnPKOk-pyXVBpFufkhqEbIKDDwrK_MuwA,3410
11
+ service_capacity_modeling/hardware/profiles/pricing/aws/3yr-reserved_zz-overrides.json,sha256=rK3OZNz1avC2VX6nj61AxG0ezPEzFVTe1paWDm47Qm4,1884
11
12
  service_capacity_modeling/hardware/profiles/shapes/aws/auto_c5.json,sha256=epluPmSzdil-tTKQ_wYlXgfMjqUEGXQoC8dXdZXvlTA,1740
12
13
  service_capacity_modeling/hardware/profiles/shapes/aws/auto_c5a.json,sha256=8s7Ek0codNDESJwRjmUlzGA4cCp_-f_q_QyL7myl_zM,1764
13
14
  service_capacity_modeling/hardware/profiles/shapes/aws/auto_c5d.json,sha256=7uVla6lab2uLA18ZjHbN9twvc0MEfzibdfOeCeVm1Ls,4617
@@ -18,6 +19,10 @@ service_capacity_modeling/hardware/profiles/shapes/aws/auto_c6id.json,sha256=eYk
18
19
  service_capacity_modeling/hardware/profiles/shapes/aws/auto_c7a.json,sha256=lsdIAFd-CIgAaz4Qpv8ZMy5smYDJQdYrAjI_saLvOQY,2414
19
20
  service_capacity_modeling/hardware/profiles/shapes/aws/auto_c7i.json,sha256=ZweQIQNbVLet5KnWFwFf7COXp4Q5gE1JTDYL_Dcpdec,1996
20
21
  service_capacity_modeling/hardware/profiles/shapes/aws/auto_c8i.json,sha256=n63Kj0B3esSZix7fmPGa8gn-JitgPkakqru328SNbs8,2435
22
+ service_capacity_modeling/hardware/profiles/shapes/aws/auto_db_r6g.json,sha256=dMWrkbMGEMSLWdHWgciPB-a0f1daZvHFtcUMDH7nsQY,1989
23
+ service_capacity_modeling/hardware/profiles/shapes/aws/auto_db_r6i.json,sha256=shYz0c8GLbObIUZgQG3Hn1OwV9EMVilCADxtfsXYHGg,2559
24
+ service_capacity_modeling/hardware/profiles/shapes/aws/auto_db_r7g.json,sha256=QF8EwWZj3-nlH3UNyg-qax0cxkoZPFRTRtDybUSsdVM,1989
25
+ service_capacity_modeling/hardware/profiles/shapes/aws/auto_db_r7i.json,sha256=bXUEYbpe13WZq2KBgdABq6rGflmYK2n84p0mExT0LHM,2569
21
26
  service_capacity_modeling/hardware/profiles/shapes/aws/auto_i3en.json,sha256=xdWvo_qbSQtlSOpy78Rsc6SbHOAYetswakr8DOKyY3U,4074
22
27
  service_capacity_modeling/hardware/profiles/shapes/aws/auto_i4i.json,sha256=vyo2qpbayKprN_wqUl2KGoJhv_Xjm8PpHPTVz-9wLaA,5231
23
28
  service_capacity_modeling/hardware/profiles/shapes/aws/auto_i7i.json,sha256=M2j1UT6XTvErjGKqHAFBFlenztNNhOz-9BETs1e8nCw,5289
@@ -44,7 +49,7 @@ service_capacity_modeling/hardware/profiles/shapes/aws/auto_r7a.json,sha256=-ZrE
44
49
  service_capacity_modeling/hardware/profiles/shapes/aws/auto_r7i.json,sha256=o6LqdWUwgLRplzGMJkGbkz1CjYvb8tGwZxrXHk5qR-g,2002
45
50
  service_capacity_modeling/hardware/profiles/shapes/aws/auto_r8i.json,sha256=CxRt67LhBmKbzHXHIWDGPCMNEJaANw_zlOWTkAlLm9U,2442
46
51
  service_capacity_modeling/hardware/profiles/shapes/aws/manual_drives.json,sha256=0qxEciNTb0yGhAmX1bI6hV-4SSkGMp1FZ8OQvaOET64,1709
47
- service_capacity_modeling/hardware/profiles/shapes/aws/manual_instances.json,sha256=-_jxyQgmwKe5JnbfhMD9xDCq0sy7z2fdZn7Fu76IUkk,12457
52
+ service_capacity_modeling/hardware/profiles/shapes/aws/manual_instances.json,sha256=-6Nsy-LlDuxm6LNp-hm7LkEf_6yGRxNSqU77pFtFHeY,12457
48
53
  service_capacity_modeling/hardware/profiles/shapes/aws/manual_services.json,sha256=h63675KKmu5IrI3BORDN8fiAqLjAyYHArErKbC7-T30,776
49
54
  service_capacity_modeling/models/__init__.py,sha256=03Y1aOe1fNgRKOO-x50SbrtfHTfdAqEs0ipeAx0WzMc,13940
50
55
  service_capacity_modeling/models/common.py,sha256=Bs-G1eHrb9qmS9qEWzx0rzN9QjQ419UomQu78dFoxXk,36704
@@ -73,13 +78,13 @@ service_capacity_modeling/models/org/netflix/time_series_config.py,sha256=usV7y9
73
78
  service_capacity_modeling/models/org/netflix/wal.py,sha256=QtRlqP_AIVpTg-XEINAfvf7J7J9EzXMY5PrxE3DIOU0,4482
74
79
  service_capacity_modeling/models/org/netflix/zookeeper.py,sha256=T_CkmRqoEVqpERCFPU8xihyaxlNfUHDJXz7dMHM8GD0,7679
75
80
  service_capacity_modeling/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
- service_capacity_modeling/tools/auto_shape.py,sha256=Jx9H2ay9-H_kUDjtB141owQNxGFu3hRHxUtnDRUD2Kw,15045
77
- service_capacity_modeling/tools/fetch_pricing.py,sha256=Qp-XMymkY1dvtyS51RufmEpfgOHv-IQ-XyzS8wp2-qM,4021
81
+ service_capacity_modeling/tools/auto_shape.py,sha256=K248-DayPrcZwLw1dYr47lpeQQwL0ylh1WAoVSdLNxw,23621
82
+ service_capacity_modeling/tools/fetch_pricing.py,sha256=fO84h77cqiiIHF4hZt490RwbZ6JqjB45UsnPpV2AXD4,6122
78
83
  service_capacity_modeling/tools/generate_missing.py,sha256=F7YqvMJAV4nZc20GNrlIsnQSF8_77sLgwYZqc5k4LDg,3099
79
84
  service_capacity_modeling/tools/instance_families.py,sha256=e5RuYkCLUITvsAazDH12B6KjX_PaBsv6Ne3mj0HK_sQ,9223
80
- service_capacity_modeling-0.3.94.dist-info/licenses/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
81
- service_capacity_modeling-0.3.94.dist-info/METADATA,sha256=U1H34i0DFGCnlsE6INMyWuuKiO7SIlwiB6Rl4msWUUA,10366
82
- service_capacity_modeling-0.3.94.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
83
- service_capacity_modeling-0.3.94.dist-info/entry_points.txt,sha256=ZsjzpG5SomWpT1zCE19n1uSXKH2gTI_yc33sdl0vmJg,146
84
- service_capacity_modeling-0.3.94.dist-info/top_level.txt,sha256=H8XjTCLgR3enHq5t3bIbxt9SeUkUT8HT_SDv2dgIT_A,26
85
- service_capacity_modeling-0.3.94.dist-info/RECORD,,
85
+ service_capacity_modeling-0.3.98.dist-info/licenses/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
86
+ service_capacity_modeling-0.3.98.dist-info/METADATA,sha256=_XVCm9T7EhrvHCSswx_57lwhTsn7R1O6-vYdPQOjQrE,10366
87
+ service_capacity_modeling-0.3.98.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
88
+ service_capacity_modeling-0.3.98.dist-info/entry_points.txt,sha256=ZsjzpG5SomWpT1zCE19n1uSXKH2gTI_yc33sdl0vmJg,146
89
+ service_capacity_modeling-0.3.98.dist-info/top_level.txt,sha256=H8XjTCLgR3enHq5t3bIbxt9SeUkUT8HT_SDv2dgIT_A,26
90
+ service_capacity_modeling-0.3.98.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.9.0)
2
+ Generator: setuptools (80.10.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5