blob: 2fd7d69a67d9d71eed1c97a7bd15e24c45aa7194 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
##############################################################################
# Copyright (c) 2015 Huawei Technologies Co.,Ltd and others.
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
import logging
from vstf.common.utils import ping, my_sleep
from vstf.agent.env.plugins.model import EnvBuilderPlugin
from vstf.agent.env.basic.source_manager import SourceCodeManager
from vstf.agent.env.basic.vm_manager import VMControlOperation
from vstf.agent.env.vswitch_plugins.manager import VswitchPluginManager
from vstf.agent.env.driver_plugins.manager import DriverPluginManager
LOG = logging.getLogger(__name__)
class Plugin(EnvBuilderPlugin):
def __init__(self):
super(Plugin, self).__init__()
self.vm_mgr = VMControlOperation()
self.vs_mgr = VswitchPluginManager()
self.dr_mgr = DriverPluginManager()
def clean(self):
self.vm_mgr.clean_all_vms()
self.vs_mgr.clean()
self.dr_mgr.clean()
def load_drivers(self):
drivers = self.host_cfg['drivers']
self.dr_mgr.load(drivers)
def create_brs(self):
for br_cfg in self.host_cfg['bridges']:
plugin = self.vs_mgr.get_vs_plugin(br_cfg['type'])
plugin.create_br(br_cfg)
def config_br_ports(self):
for vm_cfg in self.host_cfg['vms']:
for tap_cfg in vm_cfg['taps']:
plugin = self.vs_mgr.get_vs_plugin(tap_cfg['br_type'])
plugin.set_tap_vid(tap_cfg)
for br_cfg in self.host_cfg['bridges']:
plugin = self.vs_mgr.get_vs_plugin(br_cfg['type'])
plugin.set_fastlink(br_cfg)
def create_vms(self):
for vm_cfg in self.host_cfg['vms']:
self.vm_mgr.create_vm(vm_cfg)
def wait_vms(self):
for vm_cfg in self.host_cfg['vms']:
self.vm_mgr.wait_vm(vm_cfg['vm_name'])
self.vm_mgr.init_config_vm(vm_cfg['vm_name'])
def check_vm_connectivity(self):
for vm_cfg in self.host_cfg['vms']:
vm_ip = vm_cfg['init_config']['ctrl_ip_setting'].split('/')[0]
for _ in range(3):
ret = ping(vm_ip)
if ret:
break
my_sleep(3)
else:
raise Exception("ping ip:%s failed." % vm_ip)
|