Rearrange for packaging

This commit is contained in:
Neill Cox 2023-09-22 16:15:20 +10:00
parent eb1fbf7eb4
commit cafecb4d01
10 changed files with 79 additions and 34 deletions

3
.gitignore vendored
View file

@ -1,2 +1,3 @@
venv/
*.gen
*.gen
*__pycache__*

28
pyproject.toml Normal file
View file

@ -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"

View file

View file

@ -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()
if __name__ == "__main__":
main()

View file

@ -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")

View file

@ -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")

View file

@ -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()