26
29
self._extension_drivers,
28
31
super(ExtensionDriverTestCase, self).setUp()
32
self._plugin = manager.NeutronManager.get_plugin()
33
self._ctxt = context.get_admin_context()
30
35
def test_network_attr(self):
31
36
with self.network() as network:
32
38
ent = network['network'].get('network_extension')
33
39
self.assertIsNotNone(ent)
42
res = self._list('networks')
43
val = res['networks'][0].get('network_extension')
44
self.assertEqual('Test_Network_Extension_extend', val)
48
{'network_extension': 'Test_Network_Extension_Update'}}
49
res = self._update('networks', network['network']['id'], data)
50
val = res['network'].get('network_extension')
51
self.assertEqual('Test_Network_Extension_Update_update', val)
35
53
def test_subnet_attr(self):
36
54
with self.subnet() as subnet:
37
56
ent = subnet['subnet'].get('subnet_extension')
38
57
self.assertIsNotNone(ent)
60
res = self._list('subnets')
61
val = res['subnets'][0].get('subnet_extension')
62
self.assertEqual('Test_Subnet_Extension_extend', val)
66
{'subnet_extension': 'Test_Subnet_Extension_Update'}}
67
res = self._update('subnets', subnet['subnet']['id'], data)
68
val = res['subnet'].get('subnet_extension')
69
self.assertEqual('Test_Subnet_Extension_Update_update', val)
40
71
def test_port_attr(self):
41
72
with self.port() as port:
42
74
ent = port['port'].get('port_extension')
43
75
self.assertIsNotNone(ent)
46
class TestExtensionDriver(api.ExtensionDriver):
47
_supported_extension_alias = 'test_extension'
50
self.network_extension = 'Test_Network_Extension'
51
self.subnet_extension = 'Test_Subnet_Extension'
52
self.port_extension = 'Test_Port_Extension'
53
extensions.append_api_extensions_path(test_extensions.__path__)
56
def extension_alias(self):
57
return self._supported_extension_alias
59
def process_create_network(self, session, data, result):
60
result['network_extension'] = self.network_extension
62
def process_create_subnet(self, session, data, result):
63
result['subnet_extension'] = self.subnet_extension
65
def process_create_port(self, session, data, result):
66
result['port_extension'] = self.port_extension
78
res = self._list('ports')
79
val = res['ports'][0].get('port_extension')
80
self.assertEqual('Test_Port_Extension_extend', val)
83
data = {'port': {'port_extension': 'Test_Port_Extension_Update'}}
84
res = self._update('ports', port['port']['id'], data)
85
val = res['port'].get('port_extension')
86
self.assertEqual('Test_Port_Extension_Update_update', val)
88
def test_extend_network_dict(self):
89
with contextlib.nested(
90
mock.patch.object(ext_test.TestExtensionDriver,
91
'process_update_network'),
92
mock.patch.object(ext_test.TestExtensionDriver,
93
'extend_network_dict'),
95
) as (ext_update_net, ext_net_dict, network):
96
net_id = network['network']['id']
97
net_data = {'network': {'id': net_id}}
98
self._plugin.update_network(self._ctxt, net_id, net_data)
99
self.assertTrue(ext_update_net.called)
100
self.assertTrue(ext_net_dict.called)
102
def test_extend_subnet_dict(self):
103
with contextlib.nested(
104
mock.patch.object(ext_test.TestExtensionDriver,
105
'process_update_subnet'),
106
mock.patch.object(ext_test.TestExtensionDriver,
107
'extend_subnet_dict'),
109
) as (ext_update_subnet, ext_subnet_dict, subnet):
110
subnet_id = subnet['subnet']['id']
111
subnet_data = {'subnet': {'id': subnet_id}}
112
self._plugin.update_subnet(self._ctxt, subnet_id, subnet_data)
113
self.assertTrue(ext_update_subnet.called)
114
self.assertTrue(ext_subnet_dict.called)
116
def test_extend_port_dict(self):
117
with contextlib.nested(
118
mock.patch.object(ext_test.TestExtensionDriver,
119
'process_update_port'),
120
mock.patch.object(ext_test.TestExtensionDriver,
123
) as (ext_update_port, ext_port_dict, port):
124
port_id = port['port']['id']
125
port_data = {'port': {'id': port_id}}
126
self._plugin.update_port(self._ctxt, port_id, port_data)
127
self.assertTrue(ext_update_port.called)
128
self.assertTrue(ext_port_dict.called)
131
class DBExtensionDriverTestCase(test_ml2_plugin.Ml2PluginV2TestCase):
132
_extension_drivers = ['testdb']
135
config.cfg.CONF.set_override('extension_drivers',
136
self._extension_drivers,
138
super(DBExtensionDriverTestCase, self).setUp()
139
self._plugin = manager.NeutronManager.get_plugin()
140
self._ctxt = context.get_admin_context()
142
def test_network_attr(self):
143
with self.network() as network:
144
# Test create with default value.
145
net_id = network['network']['id']
146
val = network['network']['network_extension']
147
self.assertEqual("", val)
148
res = self._show('networks', net_id)
149
val = res['network']['network_extension']
150
self.assertEqual("", val)
153
res = self._list('networks')
154
val = res['networks'][0]['network_extension']
155
self.assertEqual("", val)
157
# Test create with explict value.
158
res = self._create_network(self.fmt,
159
'test-network', True,
160
arg_list=('network_extension', ),
161
network_extension="abc")
162
network = self.deserialize(self.fmt, res)
163
net_id = network['network']['id']
164
val = network['network']['network_extension']
165
self.assertEqual("abc", val)
166
res = self._show('networks', net_id)
167
val = res['network']['network_extension']
168
self.assertEqual("abc", val)
171
data = {'network': {'network_extension': "def"}}
172
res = self._update('networks', net_id, data)
173
val = res['network']['network_extension']
174
self.assertEqual("def", val)
175
res = self._show('networks', net_id)
176
val = res['network']['network_extension']
177
self.assertEqual("def", val)
179
def test_subnet_attr(self):
180
with self.subnet() as subnet:
181
# Test create with default value.
182
net_id = subnet['subnet']['id']
183
val = subnet['subnet']['subnet_extension']
184
self.assertEqual("", val)
185
res = self._show('subnets', net_id)
186
val = res['subnet']['subnet_extension']
187
self.assertEqual("", val)
190
res = self._list('subnets')
191
val = res['subnets'][0]['subnet_extension']
192
self.assertEqual("", val)
194
with self.network() as network:
195
# Test create with explict value.
197
{'network_id': network['network']['id'],
198
'cidr': '10.1.0.0/24',
200
'tenant_id': self._tenant_id,
201
'subnet_extension': 'abc'}}
202
req = self.new_create_request('subnets', data, self.fmt)
203
res = req.get_response(self.api)
204
subnet = self.deserialize(self.fmt, res)
205
subnet_id = subnet['subnet']['id']
206
val = subnet['subnet']['subnet_extension']
207
self.assertEqual("abc", val)
208
res = self._show('subnets', subnet_id)
209
val = res['subnet']['subnet_extension']
210
self.assertEqual("abc", val)
213
data = {'subnet': {'subnet_extension': "def"}}
214
res = self._update('subnets', subnet_id, data)
215
val = res['subnet']['subnet_extension']
216
self.assertEqual("def", val)
217
res = self._show('subnets', subnet_id)
218
val = res['subnet']['subnet_extension']
219
self.assertEqual("def", val)
221
def test_port_attr(self):
222
with self.port() as port:
223
# Test create with default value.
224
net_id = port['port']['id']
225
val = port['port']['port_extension']
226
self.assertEqual("", val)
227
res = self._show('ports', net_id)
228
val = res['port']['port_extension']
229
self.assertEqual("", val)
232
res = self._list('ports')
233
val = res['ports'][0]['port_extension']
234
self.assertEqual("", val)
236
with self.network() as network:
237
# Test create with explict value.
238
res = self._create_port(self.fmt,
239
network['network']['id'],
240
arg_list=('port_extension', ),
241
port_extension="abc")
242
port = self.deserialize(self.fmt, res)
243
port_id = port['port']['id']
244
val = port['port']['port_extension']
245
self.assertEqual("abc", val)
246
res = self._show('ports', port_id)
247
val = res['port']['port_extension']
248
self.assertEqual("abc", val)
251
data = {'port': {'port_extension': "def"}}
252
res = self._update('ports', port_id, data)
253
val = res['port']['port_extension']
254
self.assertEqual("def", val)
255
res = self._show('ports', port_id)
256
val = res['port']['port_extension']
257
self.assertEqual("def", val)