Skip to content

Commit 0ee1be3

Browse files
authored
Add parameters to shift_nodepool_capacity script (#19388)
* Remove auto-update from gcloud run step * Parameterize nodepool_shift script * Forgot to replace PROJECT/ZONE/CLUSTER * Revert extra changed pulled in
1 parent b0e7f63 commit 0ee1be3

File tree

1 file changed

+33
-17
lines changed

1 file changed

+33
-17
lines changed

Diff for: experiment/maintenance/shift_nodepool_capacity.py

+33-17
Original file line numberDiff line numberDiff line change
@@ -20,22 +20,17 @@
2020
# shift_nodepool_capacity.py pool-to-drain pool-to-grow shrink_increment:grow_increment num_to_add
2121
#
2222
# EG:
23-
# shift_nodepool_capacity.py default-pool pool-n1-highmem-8-300gb 2:1 5
23+
# shift_nodepool_capacity.py 5 2:1 default-pool pool-n1-highmem-8-300gb
2424
#
2525
# for nodefs on the prow builds cluster
2626
# USE AT YOUR OWN RISK.
2727

28+
import argparse
2829
import sys
2930
import subprocess
3031
import json
3132
import math
3233

33-
# xref prow/Makefile get-build-cluster-credentials
34-
# TODO: perhaps make these configurable
35-
CLUSTER = 'prow'
36-
ZONE = 'us-central1-f'
37-
PROJECT = 'k8s-prow-builds'
38-
3934

4035
def get_pool_sizes(project, zone, cluster):
4136
"""returns a map of node pool name to size using the gcloud cli."""
@@ -92,18 +87,39 @@ def prompt_confirmation():
9287
print('Confirmed.')
9388

9489

95-
def main():
90+
# xref prow/Makefile get-build-cluster-credentials
91+
def parse_args(args):
92+
parser = argparse.ArgumentParser()
93+
parser.add_argument('nodes', type=int,
94+
help='Number of Nodes to add.')
95+
parser.add_argument('ratio', type=str,
96+
help='ShrinkIncrement:GrowIncrement, Ex 2:1.')
97+
parser.add_argument('shrink', type=str,
98+
help='Pool name to drain nodes from.')
99+
parser.add_argument('grow', type=str,
100+
help='Pool name to grow nodes into.')
101+
parser.add_argument('--cluster', type=str, default="prow",
102+
help='Name of GCP cluster.')
103+
parser.add_argument('--zone', type=str, default='us-central1-f',
104+
help='GCP zonal location of the cluster.')
105+
parser.add_argument('--project', type=str, default='k8s-prow-builds',
106+
help='GCP Project that the cluster exists within.')
107+
return parser.parse_args(args)
108+
109+
110+
def main(options):
96111
# parse cli
97-
nodes_to_add = int(sys.argv[-1])
112+
nodes_to_add = options.nodes
98113

99-
ratio = sys.argv[-2].split(':')
114+
ratio = options.ratio.split(':')
100115
shrink_increment, grow_increment = int(ratio[0]), int(ratio[1])
101116

102-
pool_to_grow = sys.argv[-3]
103-
pool_to_shrink = sys.argv[-4]
117+
pool_to_grow = options.grow
118+
pool_to_shrink = options.shrink
104119

105120
# obtain current pool sizes
106-
pool_sizes = get_pool_sizes(PROJECT, ZONE, CLUSTER)
121+
project, zone, cluster = options.project, options.zone, options.cluster
122+
pool_sizes = get_pool_sizes(project, zone, cluster)
107123
pool_to_grow_initial = pool_sizes[pool_to_grow]
108124
pool_to_shrink_initial = pool_sizes[pool_to_shrink]
109125

@@ -120,7 +136,7 @@ def main():
120136
'Shifting NodePool capacity for project = "{project}",'
121137
'zone = "{zone}", cluster = "{cluster}"'
122138
).format(
123-
project=PROJECT, zone=ZONE, cluster=CLUSTER,
139+
project=project, zone=zone, cluster=cluster,
124140
))
125141
print('')
126142
print((
@@ -163,7 +179,7 @@ def main():
163179
shrink_increment=shrink_increment, pool_to_shrink=pool_to_shrink,
164180
))
165181
new_size = max(pool_to_shrink_initial - (i*shrink_increment + shrink_increment), 0)
166-
resize_nodepool(pool_to_shrink, new_size, PROJECT, ZONE, CLUSTER)
182+
resize_nodepool(pool_to_shrink, new_size, project, zone, cluster)
167183
print('')
168184

169185
# ditto for growing, modulo the cap
@@ -172,11 +188,11 @@ def main():
172188
num_to_add=num_to_add, pool_to_grow=pool_to_grow,
173189
))
174190
new_size = pool_to_grow_initial + (i*grow_increment + num_to_add)
175-
resize_nodepool(pool_to_grow, new_size, PROJECT, ZONE, CLUSTER)
191+
resize_nodepool(pool_to_grow, new_size, project, zone, cluster)
176192
print('')
177193

178194
print('')
179195
print('Done')
180196

181197
if __name__ == '__main__':
182-
main()
198+
main(parse_args(sys.argv[1:]))

0 commit comments

Comments
 (0)