summaryrefslogtreecommitdiffstats
path: root/tests/unit/config/test_network.py
blob: 98107929f2550a0cf4452e8606fe0b4ebe9ddd75 (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
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