]> git.ipfire.org Git - nitsi.git/blob - virtual_environ.py
Add .gitignore
[nitsi.git] / virtual_environ.py
1 #!/usr/bin/python3
2
3 from machine import machine
4
5 from network import network
6
7 import os
8 import configparser
9 import libvirt
10 import logging
11
12 logger = logging.getLogger("nitsi.virtual_environ")
13
14 # Should return all vms and networks in a list
15 # and should provide the path to the necessary xml files
16 class virtual_environ():
17 def __init__(self, path):
18 self.log = logger.getChild(os.path.basename(os.path.abspath(path)))
19 try:
20 self.path = os.path.abspath(path)
21 except BaseException as e:
22 self.log.error("Could not get absolute path")
23
24 self.log.debug(self.path)
25
26 self.settings_file = "{}/settings".format(self.path)
27 if not os.path.isfile(self.settings_file):
28 self.log.error("No such file: {}".format(self.settings_file))
29
30 self.log.debug(self.settings_file)
31 self.config = configparser.ConfigParser()
32 self.config.read(self.settings_file)
33 self.name = self.config["DEFAULT"]["name"]
34 self.machines_string = self.config["DEFAULT"]["machines"]
35 self.networks_string = self.config["DEFAULT"]["networks"]
36
37 self.machines = []
38 for machine in self.machines_string.split(","):
39 self.machines.append(machine.strip())
40
41 self.networks = []
42 for network in self.networks_string.split(","):
43 self.networks.append(network.strip())
44
45 self.log.debug(self.machines)
46 self.log.debug(self.networks)
47
48 self.uri = self.config["DEFAULT"]["uri"]
49
50 try:
51 self.con = libvirt.open(self.uri)
52 except BaseException as error:
53 self.log.error("Could not connect to: {}".format(self.uri))
54
55 self.log.debug("Connected to: {}".format(self.uri))
56
57 def get_networks(self):
58 networks = {}
59 for _network in self.networks:
60 self.log.debug(_network)
61 networks.setdefault(_network, network(self.con, os.path.normpath(self.path + "/" + self.config[_network]["xml_file"])))
62 return networks
63
64 def get_machines(self):
65 machines = {}
66 for _machine in self.machines:
67 self.log.debug(_machine)
68 machines.setdefault(_machine, machine(
69 self.con,
70 os.path.normpath(self.path + "/" + self.config[_machine]["xml_file"]),
71 os.path.normpath(self.path + "/" + self.config[_machine]["snapshot_xml_file"]),
72 self.config[_machine]["image"],
73 self.config[_machine]["root_uid"],
74 self.config[_machine]["username"],
75 self.config[_machine]["password"]))
76
77 return machines
78
79 @property
80 def machine_names(self):
81 return self.machines
82
83 @property
84 def network_names(self):
85 return self.networks