From cafecb4d019540c1c3e23021a2461ded94c35169 Mon Sep 17 00:00:00 2001 From: Neill Cox Date: Fri, 22 Sep 2023 16:15:20 +1000 Subject: [PATCH] Rearrange for packaging --- .gitignore | 3 +- pyproject.toml | 28 +++++++++++ src/tripleo_aio_helpers/__init__.py | 0 .../tripleo_aio_helpers}/create_aio_vm.py | 46 +++++++++++++------ .../tripleo_aio_helpers/os_migrate_setup.py | 14 +++--- .../os_migrate_teardown.py | 14 +++--- .../tripleo_aio_helpers/prepare_deployment.py | 8 ++-- .../virt-install}/meta-data.tpl | 0 .../virt-install}/network-config.tpl | 0 .../virt-install}/user-data.tpl | 0 10 files changed, 79 insertions(+), 34 deletions(-) create mode 100644 pyproject.toml create mode 100644 src/tripleo_aio_helpers/__init__.py rename {virt-install => src/tripleo_aio_helpers}/create_aio_vm.py (87%) rename os_migrate_setup.py => src/tripleo_aio_helpers/os_migrate_setup.py (96%) rename os_migrate_teardown.py => src/tripleo_aio_helpers/os_migrate_teardown.py (96%) rename main.py => src/tripleo_aio_helpers/prepare_deployment.py (95%) rename {virt-install => src/virt-install}/meta-data.tpl (100%) rename {virt-install => src/virt-install}/network-config.tpl (100%) rename {virt-install => src/virt-install}/user-data.tpl (100%) diff --git a/.gitignore b/.gitignore index 3487fcc..a6f2f85 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ venv/ -*.gen \ No newline at end of file +*.gen +*__pycache__* \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..75d7737 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,28 @@ +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[project] +name = "tripleo_aio_helpers" +version = "0.0.1" +authors = [ + { name="Neill Cox", email="neill.cox@ingenious.com.au" }, +] +description = "Tools to help with building a tripleo/rhosp aio" +readme = "README.md" +requires-python = ">=3.7" +classifiers = [ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", +] + +[project.urls] +"Homepage" = "" +"Bug Tracker" = "" + +[project.scripts] +create_aio_vm = "tripleo_aio_helpers.create_aio_vm:main" +os_migrate_setup = "tripleo_aio_helpers.os_migrate_setup:main" +os_migrate_teardown = "tripleo_aio_helpers.os_migrate_teardown:main" +prepare_deployment = "tripleo_aio_helpers.prepare_deployment:main" \ No newline at end of file diff --git a/src/tripleo_aio_helpers/__init__.py b/src/tripleo_aio_helpers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/virt-install/create_aio_vm.py b/src/tripleo_aio_helpers/create_aio_vm.py similarity index 87% rename from virt-install/create_aio_vm.py rename to src/tripleo_aio_helpers/create_aio_vm.py index 756fe34..886cbb9 100644 --- a/virt-install/create_aio_vm.py +++ b/src/tripleo_aio_helpers/create_aio_vm.py @@ -6,38 +6,43 @@ MD_PATH = "./meta-data" UD_PATH = "./user-data" ND_PATH = "./network-config" + def parse_args(): parser = argparse.ArgumentParser() parser.add_argument("--password", required=True) parser.add_argument("--public-key", required=True, type=open) - parser.add_argument("--local-hostname", default="aio3.gpslab.cbr.redhat.com") + parser.add_argument( + "--local-hostname", default="aio3.gpslab.cbr.redhat.com" + ) parser.add_argument("--user-data", default="./user-data.tpl", type=open) parser.add_argument("--meta-data", default="./meta-data.tpl", type=open) - parser.add_argument("--network-data", default="./network-config.tpl", type=open) + parser.add_argument( + "--network-data", default="./network-config.tpl", type=open + ) parser.add_argument("--instance-id", default="aio3") parser.add_argument("--output-image", required=True) parser.add_argument("--image-size", default="100G") parser.add_argument("--input-image", required=True) parser.add_argument("--os-variant", required=True) parser.add_argument("--name", required=True) - parser.add_argument("--memory", default=2048) #, type="int") + parser.add_argument("--memory", default=2048) # , type="int") parser.add_argument("--gateway", required=True) parser.add_argument("--cidr-1", required=True) parser.add_argument("--cidr-2", required=True) parser.add_argument("--dns", required=True) parser.add_argument("--search-domain", required=True) parser.add_argument("-v", "--verbose", action="store_true") - + args = parser.parse_args() args.public_key = args.public_key.read() - + args.user_data = args.user_data.read() args.user_data = args.user_data.format(data=args) - + args.meta_data = args.meta_data.read() args.meta_data = args.meta_data.format(data=args) - + args.network_data = args.network_data.read() args.network_data = args.network_data.format(data=args) @@ -45,7 +50,7 @@ def parse_args(): if output_image.exists(): raise ValueError(f"{args.output_image} already exists") args.output_image = output_image - + input_image = pathlib.Path(args.input_image) if not input_image.exists(): raise ValueError(f"{args.input_image} not found") @@ -53,18 +58,22 @@ def parse_args(): return args + def write_user_data(user_data): with open(UD_PATH, "w", encoding="utf-8") as user_data_file: user_data_file.write(user_data) + def write_meta_data(meta_data): with open(MD_PATH, "w", encoding="utf-8") as meta_data_file: meta_data_file.write(meta_data) + def write_network_data(network_data): with open(ND_PATH, "w", encoding="utf-8") as network_data_file: network_data_file.write(network_data) + def create_image(args): print("creating image") cmd = f"qemu-img create -f qcow2 -o preallocation=metadata {args.output_image} {args.image_size}" @@ -76,11 +85,12 @@ def create_image(args): print("Resizing image") cmd = f"virt-resize --expand /dev/sda3 {args.input_image} {args.output_image}" - result= subprocess.check_output(cmd, shell=True, universal_newlines=True) + result = subprocess.check_output(cmd, shell=True, universal_newlines=True) if args.verbose: print(result) + def virt_install_cmd(args): cmd = f""" sudo virt-install \\ @@ -97,30 +107,35 @@ def virt_install_cmd(args): --network bridge=bridge0 \\ --network bridge=bridge0 """ - + print("running virt-install") if args.verbose: print(cmd) - result =subprocess.check_output(cmd, shell=True, universal_newlines=True) + result = subprocess.check_output(cmd, shell=True, universal_newlines=True) if args.verbose: print(result) def delete_meta_data(): pathlib.Path.unlink(pathlib.Path(MD_PATH)) - + + def delete_user_data(): pathlib.Path.unlink(pathlib.Path(UD_PATH)) + def install_packages(args): cmd = "sudo dnf install -y virt-install virt-viewer qemu-img libguestfs.x86_64" print("installing needed packages...") if args.verbose: - print(subprocess.check_output(cmd, shell=True, universal_newlines=True)) + print( + subprocess.check_output(cmd, shell=True, universal_newlines=True) + ) + def main(): args = parse_args() @@ -138,5 +153,6 @@ def main(): delete_meta_data() delete_user_data() -if __name__ == '__main__': - main() \ No newline at end of file + +if __name__ == "__main__": + main() diff --git a/os_migrate_setup.py b/src/tripleo_aio_helpers/os_migrate_setup.py similarity index 96% rename from os_migrate_setup.py rename to src/tripleo_aio_helpers/os_migrate_setup.py index 8d7f57e..6ecef34 100644 --- a/os_migrate_setup.py +++ b/src/tripleo_aio_helpers/os_migrate_setup.py @@ -29,17 +29,17 @@ def parse_args(): parser.add_argument("-p", "--password", default="secrete123") parser.add_argument("-c", "--cloud", default="standalone") parser.add_argument("-g", "--gateway", default="10.76.23.254") - parser.add_argument("-C", "--public-network-cider", default="10.76.23.0/24") + parser.add_argument( + "-C", "--public-network-cider", default="10.76.23.0/24" + ) parser.add_argument("--private-network-cidr", default="192.168.100.0/24") - parser.add_argument("--publice-net-start",default="10.76.23.50") + parser.add_argument("--publice-net-start", default="10.76.23.50") parser.add_argument("--publice-net-end", default="10.76.23.52") parser.add_argument("--dns-server", default="10.76.23.245") # export OS_CLOUD=standalone # export STANDALONE_HOST=10.76.23.39 - - args = parser.parse_args() return args @@ -117,13 +117,13 @@ def create_public_network(args): cmd = ( "network create --external --provider-physical-network datacentre " "--provider-network-type flat public" - ) + ) cmd = ( f"subnet create public-net --subnet-range {args.publice_network_cidr} " f"--no-dhcp --gateway {args.gateway} --allocation-pool " f"start={args.public_net_start},end={args.public_net_end} " "--network public" - ) + ) def create_private_network(args): @@ -133,7 +133,7 @@ def create_private_network(args): cmd = ( "openstack subnet create private-net " f"--subnet-range {args.private_network_cidr} --network private" - ) + ) print("creating private network - NYI") diff --git a/os_migrate_teardown.py b/src/tripleo_aio_helpers/os_migrate_teardown.py similarity index 96% rename from os_migrate_teardown.py rename to src/tripleo_aio_helpers/os_migrate_teardown.py index 8b54747..49f34fc 100644 --- a/os_migrate_teardown.py +++ b/src/tripleo_aio_helpers/os_migrate_teardown.py @@ -29,17 +29,17 @@ def parse_args(): parser.add_argument("-p", "--password", default="secrete123") parser.add_argument("-c", "--cloud", default="standalone") parser.add_argument("-g", "--gateway", default="10.76.23.254") - parser.add_argument("-C", "--public-network-cider", default="10.76.23.0/24") + parser.add_argument( + "-C", "--public-network-cider", default="10.76.23.0/24" + ) parser.add_argument("--private-network-cidr", default="192.168.100.0/24") - parser.add_argument("--publice-net-start",default="10.76.23.50") + parser.add_argument("--publice-net-start", default="10.76.23.50") parser.add_argument("--publice-net-end", default="10.76.23.52") parser.add_argument("--dns-server", default="10.76.23.245") # export OS_CLOUD=standalone # export STANDALONE_HOST=10.76.23.39 - - args = parser.parse_args() return args @@ -115,13 +115,13 @@ def destroy_public_network(args): cmd = ( "network create --external --provider-physical-network datacentre " "--provider-network-type flat public" - ) + ) cmd = ( f"subnet create public-net --subnet-range {args.publice_network_cidr} " f"--no-dhcp --gateway {args.gateway} --allocation-pool " f"start={args.public_net_start},end={args.public_net_end} " "--network public" - ) + ) def destroy_private_network(args): @@ -131,7 +131,7 @@ def destroy_private_network(args): cmd = ( "openstack subnet create private-net " f"--subnet-range {args.private_network_cidr} --network private" - ) + ) print("creating private network - NYI") diff --git a/main.py b/src/tripleo_aio_helpers/prepare_deployment.py similarity index 95% rename from main.py rename to src/tripleo_aio_helpers/prepare_deployment.py index ad0ffb4..b401c3d 100644 --- a/main.py +++ b/src/tripleo_aio_helpers/prepare_deployment.py @@ -10,7 +10,7 @@ import yaml def parse_args(): """Parse the command line arguments""" - home = os.environ.get('HOME') + home = os.environ.get("HOME") parser = argparse.ArgumentParser() parser.add_argument("-u", "--username", required=True) @@ -31,11 +31,11 @@ def parse_args(): default=f"{home}/containers-prepare-parameters.yaml.gen", ) parser.add_argument( - "--standalone-yaml-out", default=f"{home}/standalone_parameters.yaml.gen" + "--standalone-yaml-out", + default=f"{home}/standalone_parameters.yaml.gen", ) parser.add_argument( - "--deploy-script-out", - default=f"{home}/deploy.sh.gen", dest="deploy" + "--deploy-script-out", default=f"{home}/deploy.sh.gen", dest="deploy" ) args = parser.parse_args() diff --git a/virt-install/meta-data.tpl b/src/virt-install/meta-data.tpl similarity index 100% rename from virt-install/meta-data.tpl rename to src/virt-install/meta-data.tpl diff --git a/virt-install/network-config.tpl b/src/virt-install/network-config.tpl similarity index 100% rename from virt-install/network-config.tpl rename to src/virt-install/network-config.tpl diff --git a/virt-install/user-data.tpl b/src/virt-install/user-data.tpl similarity index 100% rename from virt-install/user-data.tpl rename to src/virt-install/user-data.tpl