e7fefb6f4f86983475a3fc4d2373eb0845b864e3
[bottlenecks.git] / vstf / vstf / agent / env / plugins / libvirt_plugin.py
1 """
2 Created on 2015-7-8
3
4 @author: y00228926
5 """
6 import logging
7
8 from vstf.common.utils import ping, my_sleep
9 from vstf.agent.env.plugins.model import EnvBuilderPlugin
10 from vstf.agent.env.basic.source_manager import SourceCodeManager
11 from vstf.agent.env.basic.vm_manager import VMControlOperation
12 from vstf.agent.env.vswitch_plugins.manager import VswitchPluginManager
13 from vstf.agent.env.driver_plugins.manager import DriverPluginManager
14
15 LOG = logging.getLogger(__name__)
16
17
18 class Plugin(EnvBuilderPlugin):
19     def __init__(self):
20         super(Plugin, self).__init__()
21         self.vm_mgr = VMControlOperation()
22         self.vs_mgr = VswitchPluginManager()
23         self.dr_mgr = DriverPluginManager()
24
25     def clean(self):
26         self.vm_mgr.clean_all_vms()
27         self.vs_mgr.clean()
28         self.dr_mgr.clean()
29
30     def load_drivers(self):
31         drivers = self.host_cfg['drivers']
32         self.dr_mgr.load(drivers)
33
34     def create_brs(self):
35         for br_cfg in self.host_cfg['bridges']:
36             plugin = self.vs_mgr.get_vs_plugin(br_cfg['type'])
37             plugin.create_br(br_cfg)
38
39     def config_br_ports(self):
40         for vm_cfg in self.host_cfg['vms']:
41             for tap_cfg in vm_cfg['taps']:
42                 plugin = self.vs_mgr.get_vs_plugin(tap_cfg['br_type'])
43                 plugin.set_tap_vid(tap_cfg)
44         for br_cfg in self.host_cfg['bridges']:
45             plugin = self.vs_mgr.get_vs_plugin(br_cfg['type'])
46             plugin.set_fastlink(br_cfg)
47
48     def create_vms(self):
49         for vm_cfg in self.host_cfg['vms']:
50             self.vm_mgr.create_vm(vm_cfg)
51
52     def wait_vms(self):
53         for vm_cfg in self.host_cfg['vms']:
54             self.vm_mgr.wait_vm(vm_cfg['vm_name'])
55             self.vm_mgr.init_config_vm(vm_cfg['vm_name'])
56
57     def check_vm_connectivity(self):
58         for vm_cfg in self.host_cfg['vms']:
59             vm_ip = vm_cfg['init_config']['ctrl_ip_setting'].split('/')[0]
60             for _ in range(3):
61                 ret = ping(vm_ip)
62                 if ret:
63                     break
64                 my_sleep(3)
65             else:
66                 raise Exception("ping ip:%s failed." % vm_ip)