| Total Complexity | 5 |
| Total Lines | 70 |
| Duplicated Lines | 0 % |
| Changes | 0 | ||
| 1 | #!/usr/bin/python |
||
| 2 | import argparse |
||
| 3 | import os |
||
| 4 | |||
| 5 | def parse_args(): |
||
| 6 | parser = argparse.ArgumentParser() |
||
| 7 | |||
| 8 | parser.add_argument( |
||
| 9 | "--distro", |
||
| 10 | dest="distro", |
||
| 11 | default="fedora", |
||
| 12 | choices=("fedora", "centos7"), |
||
| 13 | help="What type of distribution to install" |
||
| 14 | ) |
||
| 15 | parser.add_argument( |
||
| 16 | "--domain", |
||
| 17 | dest="domain", |
||
| 18 | required=True, |
||
| 19 | help="What name should the new domain have." |
||
| 20 | ) |
||
| 21 | parser.add_argument( |
||
| 22 | "--disk-dir", |
||
| 23 | dest="disk_dir", |
||
| 24 | default="/var/lib/libvirt/images/", |
||
| 25 | help="Location of the VM qcow file." |
||
| 26 | ) |
||
| 27 | parser.add_argument( |
||
| 28 | "--ram", |
||
| 29 | dest="ram", |
||
| 30 | default=2048, |
||
| 31 | type=int, |
||
| 32 | help="Amount of RAM configured for the VM." |
||
| 33 | ) |
||
| 34 | parser.add_argument( |
||
| 35 | "--cpu", |
||
| 36 | dest="cpu", |
||
| 37 | default=2, |
||
| 38 | type=int, |
||
| 39 | help="Number of CPU cores configured for the VM." |
||
| 40 | ) |
||
| 41 | parser.add_argument( |
||
| 42 | "--dry", |
||
| 43 | dest="dry", |
||
| 44 | action="store_true", |
||
| 45 | help="Print command line instead of triggering command." |
||
| 46 | ) |
||
| 47 | |||
| 48 | return parser.parse_args() |
||
| 49 | |||
| 50 | def main(): |
||
| 51 | data = parse_args() |
||
| 52 | data.kickstart = "https://raw.githubusercontent.com/ComplianceAsCode/content/master/tests/kickstarts/rhel_centos_7.cfg" |
||
| 53 | data.disk_path = os.path.join(data.disk_dir, data.domain) + ".qcow" |
||
| 54 | |||
| 55 | if data.distro == "fedora": |
||
| 56 | data.variant = "fedora27" # this is for support in RHEL7, where fedora28 is not known yet |
||
| 57 | data.url = "https://download.fedoraproject.org/pub/fedora/linux/releases/28/Everything/x86_64/os" |
||
| 58 | elif data.distro == "centos7": |
||
| 59 | data.variant = "centos7" |
||
| 60 | data.url = "http://mirror.centos.org/centos/7/os/x86_64" |
||
| 61 | |||
| 62 | command = 'virt-install -n {domain} -r {ram} --vcpus={cpu} --os-variant={variant} --accelerate --disk path={disk_path},size=12 -x "inst.ks={kickstart}" --location {url}'.format(**data.__dict__) |
||
| 63 | if data.dry: |
||
| 64 | print(command) |
||
| 65 | else: |
||
| 66 | os.system(command) |
||
| 67 | |||
| 68 | if __name__ == '__main__': |
||
| 69 | main() |
||
| 70 |