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 |