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
15 LOG = logging.getLogger(__name__)
18 class Plugin(EnvBuilderPlugin):
20 super(Plugin, self).__init__()
21 self.vm_mgr = VMControlOperation()
22 self.vs_mgr = VswitchPluginManager()
23 self.dr_mgr = DriverPluginManager()
26 self.vm_mgr.clean_all_vms()
30 def load_drivers(self):
31 drivers = self.host_cfg['drivers']
32 self.dr_mgr.load(drivers)
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)
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)
49 for vm_cfg in self.host_cfg['vms']:
50 self.vm_mgr.create_vm(vm_cfg)
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'])
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]
66 raise Exception("ping ip:%s failed." % vm_ip)