~hloeung/maas/no-missing-packages

« back to all changes in this revision

Viewing changes to src/maasserver/models/tests/test_node.py

  • Committer: MAAS Lander
  • Author(s): Mike Pontillo
  • Date: 2016-04-06 19:09:44 UTC
  • mfrom: (4875.4.5 fix-1563701)
  • Revision ID: maas_lander-20160406190944-rfba3tqnisqos3jl
[r=blake-rouse][bug=1563701][author=mpontillo] Fix bug #1563701: identical controller VLANs can overwrite each other.

 * Fix VLAN interface creation to create the VLAN interface in such
   a way that it belongs to the rack controller. (It was being created
   without a node, which should not have been allowed.)

Show diffs side-by-side

added added

removed removed

Lines of Context:
92
92
    MAASTransactionServerTestCase,
93
93
)
94
94
from maasserver.utils.orm import (
 
95
    get_one,
95
96
    post_commit,
96
97
    post_commit_hooks,
97
98
    reload_object,
6175
6176
                subnet=br0_vlan_subnet,
6176
6177
            ))
6177
6178
 
 
6179
    def test__two_controllers_with_similar_configurations_bug_1563701(self):
 
6180
        interfaces1 = {
 
6181
            'ens3': {
 
6182
                'enabled': True,
 
6183
                'links': [{'address': '10.2.0.2/20', 'mode': 'static'}],
 
6184
                'mac_address': '52:54:00:ff:0a:cf',
 
6185
                'parents': [],
 
6186
                'source': 'ipaddr',
 
6187
                'type': 'physical'
 
6188
            },
 
6189
            'ens4': {
 
6190
                'enabled': True,
 
6191
                'links': [{
 
6192
                    'address': '192.168.35.43/22',
 
6193
                    'gateway': '192.168.32.2',
 
6194
                    'mode': 'dhcp'
 
6195
                }],
 
6196
                'mac_address': '52:54:00:ab:da:de',
 
6197
                'parents': [],
 
6198
                'source': 'ipaddr',
 
6199
                'type': 'physical'
 
6200
            },
 
6201
            'ens5': {
 
6202
                'enabled': True,
 
6203
                'links': [],
 
6204
                'mac_address': '52:54:00:70:8f:5b',
 
6205
                'parents': [],
 
6206
                'source': 'ipaddr',
 
6207
                'type': 'physical'
 
6208
            },
 
6209
            'ens5.10': {
 
6210
                'enabled': True,
 
6211
                'links': [{'address': '10.10.0.2/20', 'mode': 'static'}],
 
6212
                'parents': ['ens5'],
 
6213
                'source': 'ipaddr',
 
6214
                'type': 'vlan',
 
6215
                'vid': 10},
 
6216
            'ens5.11': {
 
6217
                'enabled': True,
 
6218
                'links': [{'address': '10.11.0.2/20', 'mode': 'static'}],
 
6219
                'parents': ['ens5'],
 
6220
                'source': 'ipaddr',
 
6221
                'type': 'vlan',
 
6222
                'vid': 11
 
6223
            },
 
6224
            'ens5.12': {
 
6225
                'enabled': True,
 
6226
                'links': [{'address': '10.12.0.2/20', 'mode': 'static'}],
 
6227
                'parents': ['ens5'],
 
6228
                'source': 'ipaddr',
 
6229
                'type': 'vlan',
 
6230
                'vid': 12
 
6231
            },
 
6232
            'ens5.13': {
 
6233
                'enabled': True,
 
6234
                'links': [{'address': '10.13.0.2/20', 'mode': 'static'}],
 
6235
                'parents': ['ens5'],
 
6236
                'source': 'ipaddr',
 
6237
                'type': 'vlan',
 
6238
                'vid': 13
 
6239
            },
 
6240
            'ens5.14': {
 
6241
                'enabled': True,
 
6242
                'links': [{'address': '10.14.0.2/20', 'mode': 'static'}],
 
6243
                'parents': ['ens5'],
 
6244
                'source': 'ipaddr',
 
6245
                'type': 'vlan',
 
6246
                'vid': 14
 
6247
            },
 
6248
            'ens5.15': {
 
6249
                'enabled': True,
 
6250
                'links': [{'address': '10.15.0.2/20', 'mode': 'static'}],
 
6251
                'parents': ['ens5'],
 
6252
                'source': 'ipaddr',
 
6253
                'type': 'vlan',
 
6254
                'vid': 15
 
6255
            },
 
6256
            'ens5.16': {
 
6257
                'enabled': True,
 
6258
                'links': [{'address': '10.16.0.2/20', 'mode': 'static'}],
 
6259
                'parents': ['ens5'],
 
6260
                'source': 'ipaddr',
 
6261
                'type': 'vlan',
 
6262
                'vid': 16
 
6263
            }}
 
6264
 
 
6265
        interfaces2 = {
 
6266
            'ens3': {
 
6267
                'enabled': True,
 
6268
                'links': [{'address': '10.2.0.3/20', 'mode': 'static'}],
 
6269
                'mac_address': '52:54:00:02:eb:bc',
 
6270
                'parents': [],
 
6271
                'source': 'ipaddr',
 
6272
                'type': 'physical'
 
6273
            },
 
6274
            'ens4': {
 
6275
                'enabled': True,
 
6276
                'links': [{
 
6277
                    'address': '192.168.33.246/22',
 
6278
                    'gateway': '192.168.32.2',
 
6279
                    'mode': 'dhcp'
 
6280
                }],
 
6281
                'mac_address': '52:54:00:bc:b0:85',
 
6282
                'parents': [],
 
6283
                'source': 'ipaddr',
 
6284
                'type': 'physical'
 
6285
            },
 
6286
            'ens5': {
 
6287
                'enabled': True,
 
6288
                'links': [],
 
6289
                'mac_address': '52:54:00:cf:f3:7f',
 
6290
                'parents': [],
 
6291
                'source': 'ipaddr',
 
6292
                'type': 'physical'},
 
6293
            'ens5.10': {
 
6294
                'enabled': True,
 
6295
                'links': [{'address': '10.10.0.3/20', 'mode': 'static'}],
 
6296
                'parents': ['ens5'],
 
6297
                'source': 'ipaddr',
 
6298
                'type': 'vlan',
 
6299
                'vid': 10
 
6300
            },
 
6301
            'ens5.11': {
 
6302
                'enabled': True,
 
6303
                'links': [{'address': '10.11.0.3/20', 'mode': 'static'}],
 
6304
                'parents': ['ens5'],
 
6305
                'source': 'ipaddr',
 
6306
                'type': 'vlan',
 
6307
                'vid': 11
 
6308
            },
 
6309
            'ens5.12': {
 
6310
                'enabled': True,
 
6311
                'links': [{'address': '10.12.0.3/20', 'mode': 'static'}],
 
6312
                'parents': ['ens5'],
 
6313
                'source': 'ipaddr',
 
6314
                'type': 'vlan',
 
6315
                'vid': 12
 
6316
            },
 
6317
            'ens5.13': {
 
6318
                'enabled': True,
 
6319
                'links': [{'address': '10.13.0.3/20', 'mode': 'static'}],
 
6320
                'parents': ['ens5'],
 
6321
                'source': 'ipaddr',
 
6322
                'type': 'vlan',
 
6323
                'vid': 13
 
6324
            },
 
6325
            'ens5.14': {
 
6326
                'enabled': True,
 
6327
                'links': [{'address': '10.14.0.3/20', 'mode': 'static'}],
 
6328
                'parents': ['ens5'],
 
6329
                'source': 'ipaddr',
 
6330
                'type': 'vlan',
 
6331
                'vid': 14
 
6332
            },
 
6333
            'ens5.15': {
 
6334
                'enabled': True,
 
6335
                'links': [{'address': '10.15.0.3/20', 'mode': 'static'}],
 
6336
                'parents': ['ens5'],
 
6337
                'source': 'ipaddr',
 
6338
                'type': 'vlan',
 
6339
                'vid': 15
 
6340
            },
 
6341
            'ens5.16': {
 
6342
                'enabled': True,
 
6343
                'links': [{'address': '10.16.0.3/20', 'mode': 'static'}],
 
6344
                'parents': ['ens5'],
 
6345
                'source': 'ipaddr',
 
6346
                'type': 'vlan',
 
6347
                'vid': 16
 
6348
            }}
 
6349
        rack1 = self.create_empty_rack_controller()
 
6350
        rack2 = self.create_empty_rack_controller()
 
6351
        rack1.update_interfaces(interfaces1)
 
6352
        rack2.update_interfaces(interfaces2)
 
6353
        r1_ens5_16 = get_one(Interface.objects.filter_by_ip("10.16.0.2"))
 
6354
        self.assertIsNotNone(r1_ens5_16)
 
6355
        r2_ens5_16 = get_one(Interface.objects.filter_by_ip("10.16.0.3"))
 
6356
        self.assertIsNotNone(r2_ens5_16)
 
6357
 
6178
6358
 
6179
6359
class TestRackController(MAASServerTestCase):
6180
6360