1+ """
2+ SoftLayer.tests.CLI.modules.hardware.hardware_vlan_tests
3+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4+
5+ These tests are for any commands that work with the vlans on hardware objects.
6+
7+ :license: MIT, see LICENSE for more details.
8+ """
9+
10+ import json
11+ import sys
12+ import tempfile
13+ from unittest import mock as mock
14+
15+ from SoftLayer .CLI import exceptions
16+ from SoftLayer .fixtures import SoftLayer_Hardware_Server
17+ from SoftLayer .fixtures import SoftLayer_Search
18+ from SoftLayer import SoftLayerError
19+ from SoftLayer import testing
20+ from SoftLayer import utils
21+
22+
23+ class HardwareVlanCLITests (testing .TestCase ):
24+
25+ # slcli hardware vlan-trunkable
26+ def test_hardware_vlan_trunkable_no_hardware (self ):
27+ mock = self .set_mock ('SoftLayer_Hardware_Server' , 'getNetworkComponents' )
28+ mock .return_value = []
29+ result = self .run_command (['hardware' , 'vlan-trunkable' ])
30+ self .assertEqual (2 , result .exit_code )
31+ self .assertIn ("Missing argument 'HARDWARE'." , result .output )
32+
33+ def test_hardware_vlan_trunkable_happypath (self ):
34+ mock = self .set_mock ('SoftLayer_Hardware_Server' , 'getNetworkComponents' )
35+ mock .return_value = [
36+ {
37+ 'maxSpeed' : 1000 ,
38+ 'networkVlansTrunkable' : [{
39+ 'id' :5555 ,
40+ 'fullyQualifiedName' : 'test01.ibm99.1234' ,
41+ 'name' : 'IBMTEst' ,
42+ 'networkSpace' : 'PUBLIC'
43+ }],
44+ 'primaryIpAddress' : '192.168.1.1' ,
45+ 'id' : 998877 ,
46+ }
47+ ]
48+ result = self .run_command (['hardware' , 'vlan-trunkable' , '12345' ])
49+ self .assert_no_fail (result )
50+ output = json .loads (result .output )
51+ self .assertEqual (len (output ), 1 )
52+ self .assertEqual (output [0 ]['ID' ], 5555 )
53+
54+ def test_hardware_vlan_trunkable_no_vlans (self ):
55+ mock = self .set_mock ('SoftLayer_Hardware_Server' , 'getNetworkComponents' )
56+ mock .return_value = []
57+ result = self .run_command (['--format=table' , 'hardware' , 'vlan-trunkable' , '12345' ])
58+ print (result .output )
59+ self .assert_no_fail (result )
60+ self .assertIn ("No trunkable vlans found." , result .output )
61+
62+ def test_hardware_vlan_trunkable_no_vlans_json (self ):
63+ mock = self .set_mock ('SoftLayer_Hardware_Server' , 'getNetworkComponents' )
64+ mock .return_value = []
65+ result = self .run_command (['hardware' , 'vlan-trunkable' , '12345' ])
66+ output = json .loads (result .output )
67+ self .assert_no_fail (result )
68+ self .assertEqual ([], output )
69+
70+
71+ # slcli hardware vlan-remove
72+ def test_hardware_vlan_remove (self ):
73+ mock = self .set_mock ('SoftLayer_Search' , 'advancedSearch' )
74+ mock .return_value = SoftLayer_Search .advancedSearchVlan
75+ result = self .run_command (['hardware' , 'vlan-remove' , '12345' , '5555' ])
76+ self .assert_no_fail (result )
77+ search_args = '_objectType:SoftLayer_Network_Vlan "5555"'
78+ self .assert_called_with ('SoftLayer_Search' , 'advancedSearch' , args = (search_args ,))
79+ self .assert_called_with ('SoftLayer_Hardware_Server' , 'getFrontendNetworkComponents' , identifier = 12345 )
80+ self .assert_called_with ('SoftLayer_Hardware_Server' , 'getBackendNetworkComponents' , identifier = 12345 )
81+ self .assert_called_with ('SoftLayer_Network_Component' , 'removeNetworkVlanTrunks' , identifier = 998877 )
82+ self .assert_called_with ('SoftLayer_Network_Component' , 'removeNetworkVlanTrunks' , identifier = 123456 )
83+
84+ def test_hardware_vlan_remove_two_vlans (self ):
85+ mock = self .set_mock ('SoftLayer_Search' , 'advancedSearch' )
86+ mock .return_value = SoftLayer_Search .advancedSearchVlan
87+ result = self .run_command (['hardware' , 'vlan-remove' , '12345' , '5555' , 'testVlan' ])
88+ self .assert_no_fail (result )
89+ search_args = '_objectType:SoftLayer_Network_Vlan "5555" "testVlan"'
90+ self .assert_called_with ('SoftLayer_Search' , 'advancedSearch' , args = (search_args ,))
91+
92+ def test_hardware_vlan_remove_no_vlans (self ):
93+ mock = self .set_mock ('SoftLayer_Search' , 'advancedSearch' )
94+ mock .return_value = SoftLayer_Search .advancedSearchVlan
95+ result = self .run_command (['hardware' , 'vlan-remove' , '12345' ])
96+ self .assertEqual (2 , result .exit_code )
97+ self .assertEqual ("Argument Error: Error: Missing argument 'VLANS'." , result .exception .message )
98+
99+ def test_hardware_vlan_remove_all_vlans (self ):
100+ from pprint import pprint as pp
101+ mock = self .set_mock ('SoftLayer_Search' , 'advancedSearch' )
102+ mock .return_value = SoftLayer_Search .advancedSearchVlan
103+ hardware_mock = self .set_mock ('SoftLayer_Hardware_Server' , 'getObject' )
104+ hardware_return = {
105+ 'backendNetworkComponent' : SoftLayer_Hardware_Server .getBackendNetworkComponents ,
106+ 'frontendNetworkComponent' : SoftLayer_Hardware_Server .getFrontendNetworkComponents
107+ }
108+ hardware_return ['backendNetworkComponent' ][1 ]['networkVlanTrunks' ] = [{'id' : 99 }]
109+ hardware_return ['frontendNetworkComponent' ][1 ]['networkVlanTrunks' ] = [{'id' : 11 }]
110+ hardware_mock .return_value = hardware_return
111+ result = self .run_command (['hardware' , 'vlan-remove' , '12345' , '--all' ])
112+ self .assert_no_fail (result )
113+ self .assert_called_with ('SoftLayer_Network_Component' , 'clearNetworkVlanTrunks' , identifier = 998877 )
114+ self .assert_called_with ('SoftLayer_Network_Component' , 'clearNetworkVlanTrunks' , identifier = 123456 )
115+
116+ # slcli hardware vlan-add
117+ def test_hardware_vlan_add (self ):
118+ mock = self .set_mock ('SoftLayer_Search' , 'advancedSearch' )
119+ mock .return_value = SoftLayer_Search .advancedSearchVlan
120+ result = self .run_command (['hardware' , 'vlan-add' , '12345' , '5555' ])
121+ self .assert_no_fail (result )
122+ search_args = '_objectType:SoftLayer_Network_Vlan "5555"'
123+ self .assert_called_with ('SoftLayer_Search' , 'advancedSearch' , args = (search_args ,))
124+ self .assert_called_with ('SoftLayer_Hardware_Server' , 'getFrontendNetworkComponents' , identifier = 12345 )
125+ self .assert_called_with ('SoftLayer_Hardware_Server' , 'getBackendNetworkComponents' , identifier = 12345 )
126+ self .assert_called_with ('SoftLayer_Network_Component' , 'addNetworkVlanTrunks' , identifier = 998877 )
127+ self .assert_called_with ('SoftLayer_Network_Component' , 'addNetworkVlanTrunks' , identifier = 123456 )
128+
129+ def test_hardware_vlan_add_two_vlans (self ):
130+ mock = self .set_mock ('SoftLayer_Search' , 'advancedSearch' )
131+ mock .return_value = SoftLayer_Search .advancedSearchVlan
132+ result = self .run_command (['hardware' , 'vlan-add' , '12345' , '5555' , 'testVlan' ])
133+ self .assert_no_fail (result )
134+ search_args = '_objectType:SoftLayer_Network_Vlan "5555" "testVlan"'
135+ self .assert_called_with ('SoftLayer_Search' , 'advancedSearch' , args = (search_args ,))
136+
137+ def test_hardware_vlan_add_no_vlans (self ):
138+ mock = self .set_mock ('SoftLayer_Search' , 'advancedSearch' )
139+ mock .return_value = SoftLayer_Search .advancedSearchVlan
140+ result = self .run_command (['hardware' , 'vlan-add' , '12345' ])
141+ self .assertEqual (2 , result .exit_code )
142+ self .assertEqual ("Argument Error: Error: Missing argument 'VLANS'." , result .exception .message )
0 commit comments