# copyright: Canonical """Tools for setting up a rsync bench environment.""" import json import subprocess def run_osc(cmdlist: list[str]): """Launch a nicely formatted command on openstack and retrieve result in json. Args: cmdlist (list[str]): Cmd line args Returns: _type_: _description_ """ cmdlist.extend(["--format", "json"]) res = subprocess.run(cmdlist, capture_output=True, text=True) return json.loads(res.stdout or "[]") def provision(): """Provision servers on openstack.""" run_osc( [ "openstack", "flavor", "create", "--public", "8c-64r-150s", "--ram", "65536", "--disk", "150", "--vcpus 8", ] ) for x in range(2): serv_resp = run_osc( [ "openstack", "server", "create", "--image", "ubuntu2204", "--key-name", "alexmicouleau", "--network", "bench-net", "--flavor", "8c-64r-150s", f"alex_rsync_{x}", ] ) serv_id = serv_resp["id"] fip_res = run_osc( [ "openstack", "floating", "ip", "create", "--description", f"alex_rsync_{x}", "ext-net", ] ) fip_ad = fip_res["floating_ip_address"] run_osc( [ "openstack", "server", "add", "floating", "ip", f"{serv_id}", f"{fip_ad}", ] ) vol_res = run_osc( [ "openstack", "volume", "create", "--size", "150", f"alex_rsync{x}", ] ) vol_id = vol_res["id"] add_vol_res = run_osc(["openstack", "server", "add", "volume", serv_id, vol_id])