@@ -71,19 +71,29 @@ def setUp(self):
71
71
self .agent .chassis = 'chassis'
72
72
self .agent .ovn_bridge = 'br-int'
73
73
74
+ self .ports = []
75
+ for i in range (0 , 3 ):
76
+ self .ports .append (makePort (datapath = DatapathInfo (uuid = str (i ),
77
+ external_ids = {'name' : 'neutron-%d' % i })))
78
+ self .agent .sb_idl .get_ports_on_chassis .return_value = self .ports
79
+
74
80
def test_sync (self ):
81
+
75
82
with mock .patch .object (
76
83
self .agent , 'ensure_all_networks_provisioned' ) as enp ,\
77
84
mock .patch .object (
78
85
ip_lib , 'list_network_namespaces' ) as lnn ,\
79
86
mock .patch .object (
80
87
self .agent , 'teardown_datapath' ) as tdp :
81
- enp .return_value = ['ovnmeta-1' , 'ovnmeta-2' ]
82
88
lnn .return_value = ['ovnmeta-1' , 'ovnmeta-2' ]
83
89
84
90
self .agent .sync ()
85
91
86
- enp .assert_called_once_with ()
92
+ enp .assert_called_once_with ({
93
+ (p .datapath .uuid , p .datapath .uuid )
94
+ for p in self .ports
95
+ })
96
+
87
97
lnn .assert_called_once_with ()
88
98
tdp .assert_not_called ()
89
99
@@ -95,18 +105,20 @@ def test_sync_teardown_namespace(self):
95
105
ip_lib , 'list_network_namespaces' ) as lnn ,\
96
106
mock .patch .object (
97
107
self .agent , 'teardown_datapath' ) as tdp :
98
- enp .return_value = ['ovnmeta-1' , 'ovnmeta-2' ]
99
108
lnn .return_value = ['ovnmeta-1' , 'ovnmeta-2' , 'ovnmeta-3' ,
100
109
'ns1' , 'ns2' ]
101
110
102
111
self .agent .sync ()
103
112
104
- enp .assert_called_once_with ()
113
+ enp .assert_called_once_with ({
114
+ (p .datapath .uuid , p .datapath .uuid )
115
+ for p in self .ports
116
+ })
105
117
lnn .assert_called_once_with ()
106
118
tdp .assert_called_once_with ('3' )
107
119
108
- def test_ensure_all_networks_provisioned (self ):
109
- """Test networks are provisioned.
120
+ def test_get_networks (self ):
121
+ """Test which networks are provisioned.
110
122
111
123
This test simulates that this chassis has the following ports:
112
124
* datapath '0': 1 port
@@ -115,61 +127,37 @@ def test_ensure_all_networks_provisioned(self):
115
127
* datapath '3': 1 port with type 'external'
116
128
* datapath '5': 1 port with type 'unknown'
117
129
118
- It is expected that only datapaths '0', '1' and '2' are provisioned
119
- once .
130
+ It is expected that only datapaths '0', '1' and '2' are scheduled for
131
+ provisioning .
120
132
"""
121
133
122
- ports = []
123
- for i in range (0 , 3 ):
124
- ports .append (makePort (datapath = DatapathInfo (uuid = str (i ),
125
- external_ids = {'name' : 'neutron-%d' % i })))
126
- ports .append (makePort (datapath = DatapathInfo (uuid = '1' ,
134
+ self .ports .append (makePort (datapath = DatapathInfo (uuid = '1' ,
127
135
external_ids = {'name' : 'neutron-1' })))
128
- ports .append (makePort (datapath = DatapathInfo (uuid = '3' ,
136
+ self . ports .append (makePort (datapath = DatapathInfo (uuid = '3' ,
129
137
external_ids = {'name' : 'neutron-3' }), type = 'external' ))
130
- ports .append (makePort (datapath = DatapathInfo (uuid = '5' ,
138
+ self . ports .append (makePort (datapath = DatapathInfo (uuid = '5' ,
131
139
external_ids = {'name' : 'neutron-5' }), type = 'unknown' ))
132
140
133
- with mock .patch .object (self .agent , 'provision_datapath' ,
134
- return_value = None ) as pdp ,\
135
- mock .patch .object (self .agent .sb_idl , 'get_ports_on_chassis' ,
136
- return_value = ports ):
137
- self .agent .ensure_all_networks_provisioned ()
138
-
139
- expected_calls = [mock .call (str (i ), str (i )) for i in range (0 , 4 )]
140
- self .assertEqual (sorted (expected_calls ),
141
- sorted (pdp .call_args_list ))
141
+ expected_networks = {(str (i ), str (i )) for i in range (0 , 4 )}
142
+ self .assertEqual (expected_networks , self .agent .get_networks ())
142
143
143
144
def test_update_datapath_provision (self ):
144
- ports = []
145
- for i in range (0 , 3 ):
146
- ports .append (makePort (datapath = DatapathInfo (uuid = str (i ),
147
- external_ids = {'name' : 'neutron-%d' % i })))
148
- ports .append (makePort (datapath = DatapathInfo (uuid = '3' ,
145
+ self .ports .append (makePort (datapath = DatapathInfo (uuid = '3' ,
149
146
external_ids = {'name' : 'neutron-3' }), type = 'external' ))
150
147
151
148
with mock .patch .object (self .agent , 'provision_datapath' ,
152
149
return_value = None ) as pdp ,\
153
- mock .patch .object (self .agent , 'teardown_datapath' ) as tdp ,\
154
- mock .patch .object (self .agent .sb_idl , 'get_ports_on_chassis' ,
155
- return_value = ports ):
150
+ mock .patch .object (self .agent , 'teardown_datapath' ) as tdp :
156
151
self .agent .update_datapath ('1' , 'a' )
157
152
self .agent .update_datapath ('3' , 'b' )
158
153
expected_calls = [mock .call ('1' , 'a' ), mock .call ('3' , 'b' )]
159
154
pdp .assert_has_calls (expected_calls )
160
155
tdp .assert_not_called ()
161
156
162
157
def test_update_datapath_teardown (self ):
163
- ports = []
164
- for i in range (0 , 3 ):
165
- ports .append (makePort (datapath = DatapathInfo (uuid = str (i ),
166
- external_ids = {'name' : 'neutron-%d' % i })))
167
-
168
158
with mock .patch .object (self .agent , 'provision_datapath' ,
169
159
return_value = None ) as pdp ,\
170
- mock .patch .object (self .agent , 'teardown_datapath' ) as tdp ,\
171
- mock .patch .object (self .agent .sb_idl , 'get_ports_on_chassis' ,
172
- return_value = ports ):
160
+ mock .patch .object (self .agent , 'teardown_datapath' ) as tdp :
173
161
self .agent .update_datapath ('5' , 'a' )
174
162
tdp .assert_called_once_with ('5' , 'a' )
175
163
pdp .assert_not_called ()
0 commit comments