diff --git a/hap.py b/hap.py index 158e886..7f18ff5 100755 --- a/hap.py +++ b/hap.py @@ -1,9 +1,16 @@ #!/usr/bin/env python3 # "Have-A-Port" | ephemeral port picker for LoadBalancer-type Kubernetes services in clusters with a single-address external address pool from kubernetes import client, config -import random +import sys, random SVC_TYPE = 'LoadBalancer' +PORT_COUNT = 1 + +if len(sys.argv) > 1: + try: + PORT_COUNT = int(sys.argv[-1]) + except: + sys.exit('optional positional parameter must be a number (default: 1)') # load client configuration (kubeconfig) config.load_kube_config() @@ -21,5 +28,5 @@ used_ports = [svc_port.port for svc_ports in ports_per_svc for svc_port in svc_p full_port_range = (range(49152, 65536)) # https://tools.ietf.org/html/rfc6335#section-8.1.2 available_ports = list(set(full_port_range) - set(used_ports)) -# pick an available port -print(random.choice(available_ports)) +# pick available ports +print(' '.join(map(str, random.sample(available_ports, PORT_COUNT))))