1
+
2
+ import mock
3
+ import netifaces
4
+
5
+ from netbox_agent .config import config
6
+ from netbox_agent .config import netbox_instance as nb
1
7
from netbox_agent .dmidecode import parse
2
8
from netbox_agent .server import ServerBase
9
+ from netbox_agent .vendors .hp import HPHost
3
10
from tests .conftest import parametrize_with_fixtures
11
+ from tests .constants import DEFAULT_DATACENTER
12
+ from tests .utils import setup_netbox
4
13
5
14
6
15
@parametrize_with_fixtures ('dmidecode/' )
7
- def test_init (fixture ):
8
- dmi = parse (fixture )
16
+ def test_init (dmi_fixture ):
17
+ dmi = parse (dmi_fixture )
9
18
server = ServerBase (dmi )
10
19
assert server
11
20
@@ -17,8 +26,8 @@ def test_init(fixture):
17
26
'HP_DL380p_Gen8' ,
18
27
'HP_SL4540_Gen8'
19
28
])
20
- def test_hp_service_tag (fixture ):
21
- dmi = parse (fixture )
29
+ def test_hp_service_tag (dmi_fixture ):
30
+ dmi = parse (dmi_fixture )
22
31
server = ServerBase (dmi )
23
32
assert server .get_service_tag () == '4242'
24
33
@@ -27,8 +36,8 @@ def test_hp_service_tag(fixture):
27
36
'dmidecode/' , only_filenames = [
28
37
'unknown.txt'
29
38
])
30
- def test_generic_host_service_tag (fixture ):
31
- dmi = parse (fixture )
39
+ def test_generic_host_service_tag (dmi_fixture ):
40
+ dmi = parse (dmi_fixture )
32
41
server = ServerBase (dmi )
33
42
assert server .get_service_tag () == '42'
34
43
@@ -37,7 +46,56 @@ def test_generic_host_service_tag(fixture):
37
46
'dmidecode/' , only_filenames = [
38
47
'unknown.txt'
39
48
])
40
- def test_generic_host_product_name (fixture ):
41
- dmi = parse (fixture )
49
+ def test_generic_host_product_name (dmi_fixture ):
50
+ dmi = parse (dmi_fixture )
42
51
server = ServerBase (dmi )
43
52
assert server .get_product_name () == 'SR'
53
+
54
+
55
+ @mock .patch ('netifaces.ifaddresses' )
56
+ @mock .patch ('netifaces.interfaces' )
57
+ @parametrize_with_fixtures (
58
+ 'dmidecode/' , only_filenames = [
59
+ 'HP_SL4540_Gen8' ,
60
+ ], argname = 'dmi_fixture' )
61
+ def test_create_server (
62
+ mock_interfaces ,
63
+ mock_ifaddresses ,
64
+ fs ,
65
+ dmi_fixture ,
66
+ ):
67
+ fake_addresses = {}
68
+ fake_addresses [netifaces .AF_INET ] = [{'addr' : '42.42.42.42' , 'netmask' : '255.255.255.0' }]
69
+ fake_addresses [netifaces .AF_LINK ] = [{'addr' : 'a8:1e:84:f2:9e:69' }]
70
+
71
+ mock_interfaces .return_value = ['enp1s0f0' ]
72
+ mock_ifaddresses .return_value = fake_addresses
73
+
74
+ dmi = parse (dmi_fixture )
75
+ server = HPHost (dmi )
76
+
77
+ setup_netbox (
78
+ DEFAULT_DATACENTER ,
79
+ 'Server' ,
80
+ 'HP' ,
81
+ server .get_product_name (),
82
+ )
83
+
84
+ # Create fake /sys/class/net directory with fake interface and MAC addr
85
+ fs .create_file ('/tmp/enp1s0f0/address' , contents = 'a8:1e:84:f2:9e:69' )
86
+ fs .create_symlink ('/sys/class/net/enp1s0f0' , '/tmp/enp1s0f0' )
87
+
88
+ server .netbox_create (config )
89
+
90
+ # Check serial tag is correct
91
+ assert server .get_service_tag () == '4242'
92
+ network_card = server .network .get_netbox_network_card ({'name' : 'enp1s0f0' , 'mac' : None })
93
+
94
+ # Check network card is correct
95
+ assert network_card .name == 'enp1s0f0'
96
+
97
+ # Check IP on network card
98
+ ips = nb .ipam .ip_addresses .filter (
99
+ interface_id = network_card .id
100
+ )
101
+ assert ips [0 ].address == '42.42.42.42/24'
0 commit comments