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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
##############################################################################
# Copyright (c) 2017 ZTE Corp 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 os
import pytest
from deploy.config.network import NetworkConfig
@pytest.fixture(scope="session")
def conf_file_dir(data_root):
return os.path.join(data_root, 'lab_conf')
@pytest.mark.parametrize('network_file_name, metadatas, networks, interfaces, internal_vip, public_vip', [
('network_virtual1.yml',
{'title': 'zte-virtual1 network config',
'version': '0.1',
'created': 'Tue Apr 11 2017',
'comment': 'five vm node deploy'},
[{'cidr': '10.20.11.0/24', 'gateway': '10.20.11.1',
'ip_ranges': [{'start': '10.20.11.3', 'end': '10.20.11.10'}],
'name': 'MANAGEMENT'},
{'cidr': '10.20.11.0/24', 'gateway': '10.20.11.1',
'ip_ranges': [{'start': '10.20.11.3', 'end': '10.20.11.10'}],
'name': 'STORAGE'},
{'cidr': '172.10.101.0/24', 'gateway': '172.10.101.1',
'ip_ranges': [{'start': '172.10.101.2', 'end': '172.10.101.20'}],
'name': 'EXTERNAL', 'network_name': 'admin_external', 'mapping': 'physnet1'},
{'cidr': '10.20.11.0/24', 'gateway': '10.20.11.1',
'ip_ranges': [{'start': '10.20.11.3', 'end': '10.20.11.10'}],
'name': 'PUBLICAPI'},
{'cidr': '10.20.11.0/24', 'gateway': '10.20.11.1',
'ip_ranges': [{'start': '10.20.11.3', 'end': '10.20.11.10'}],
'name': 'TENANT'},
{'cidr': '100.20.11.0/24', 'gateway': '100.20.11.1',
'ip_ranges': [{'start': '100.20.11.3', 'end': '100.20.11.10'}],
'name': 'HEARTBEAT'}],
[{'name': 'EXTERNAL', 'interface': 'ens8'},
{'name': 'MANAGEMENT', 'interface': 'ens3'},
{'name': 'PUBLICAPI', 'interface': 'ens3'},
{'name': 'STORAGE', 'interface': 'ens3'},
{'name': 'TENANT', 'interface': 'ens3'},
{'name': 'HEARTBEAT', 'interface': 'ens9'}],
'10.20.11.11',
'10.20.11.11')])
def test_create_NetworkConf_instance(conf_file_dir, network_file_name, metadatas,
networks, interfaces, internal_vip, public_vip):
type2name = {
'EXTERNAL': 'ext',
'MANAGEMENT': 'man',
'STORAGE': 'stor',
'PUBLICAPI': 'pub',
'TENANT': 'tenant',
'HEARTBEAT': 'hbt',
}
network_file_path = os.path.join(conf_file_dir, network_file_name)
NetworkConfClient = NetworkConfig(network_file_path)
assert NetworkConfClient._file == network_file_path
for key, val in metadatas.iteritems():
assert getattr(NetworkConfClient, key) == val
for network in networks:
name = network['name']
mapname = type2name[name]
assert getattr(NetworkConfClient, mapname) == network
for net_key, net_val in network.iteritems():
net_name = '{}_{}'.format(mapname, net_key)
assert getattr(NetworkConfClient, net_name) == net_val
for interface in interfaces:
name = interface['name']
mapname = type2name[name]
interface_name = '{}_{}'.format(mapname, 'iterface')
assert getattr(NetworkConfClient, interface_name) == interface['interface']
assert getattr(NetworkConfClient, 'internal_vip') == internal_vip
assert getattr(NetworkConfClient, 'public_vip') == public_vip
@pytest.mark.parametrize('network_file_name, name, expected', [
('network_virtual1.yml', 'EXTERNAL',
{'cidr': '172.10.101.0/24', 'gateway': '172.10.101.1',
'ip_ranges': [{'start': '172.10.101.2', 'end': '172.10.101.20'}],
'name': 'EXTERNAL', 'network_name': 'admin_external', 'mapping': 'physnet1'}),
('network_virtual1.yml', 'NO_EXIT', None)])
def test__get_network_NetworkConf(conf_file_dir, network_file_name, name, expected):
network_file_path = os.path.join(conf_file_dir, network_file_name)
NetworkConfClient = NetworkConfig(network_file_path)
assert NetworkConfClient._get_network(name) == expected
|