Move recipe class into an own file
[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
10 # Should return all vms and networks in a list
11 # and should provide the path to the necessary xml files
12 class virtual_environ():
13     def __init__(self, path):
14         self.log = log(4)
15         try:
16             self.path = os.path.abspath(path)
17         except BaseException as e:
18             self.log.error("Could not get absolute path")
19
20         self.log.debug(self.path)
21
22         self.settings_file = "{}/settings".format(self.path)
23         if not os.path.isfile(self.settings_file):
24             self.log.error("No such file: {}".format(self.settings_file))
25
26         self.log.debug(self.settings_file)
27         self.config = configparser.ConfigParser()
28         self.config.read(self.settings_file)
29         self.name = self.config["DEFAULT"]["name"]
30         self.machines_string = self.config["DEFAULT"]["machines"]
31         self.networks_string = self.config["DEFAULT"]["networks"]
32
33         self.machines = []
34         for machine in self.machines_string.split(","):
35             self.machines.append(machine.strip())
36
37         self.networks = []
38         for network in self.networks_string.split(","):
39             self.networks.append(network.strip())
40
41         self.log.debug(self.machines)
42         self.log.debug(self.networks)
43
44     def get_networks(self):
45         networks = {}
46         for _network in self.networks:
47             self.log.debug(_network)
48             networks.setdefault(_network, network(os.path.normpath(self.path + "/" + self.config[_network]["xml_file"])))
49         return networks
50
51     def get_machines(self):
52         machines = {}
53         for _machine in self.machines:
54             self.log.debug(_machine)
55             machines.setdefault(_machine, machine(
56                 os.path.normpath(self.path + "/" + self.config[_machine]["xml_file"]),
57                 os.path.normpath(self.path + "/" + self.config[_machine]["snapshot_xml_file"]),
58                 self.config[_machine]["image"],
59                 self.config[_machine]["root_uid"],
60                 self.config[_machine]["username"],
61                 self.config[_machine]["password"]))
62
63         return machines
64
65     @property
66     def machine_names(self):
67         return self.machines
68
69     @property
70     def network_names(self):
71         return self.networks