Ejemplo n.º 1
0
    def test_trunk_delete(self):
        def mocked__bind_subports(ctx, parent, trunk, subports, delete=False):
            self.call_tracker.add_step(
                'trunk_delete', 'mocked__bind_subports' + ':ctx:' + str(ctx) +
                ':parent:' + str(parent) + ':trunk:' + str(trunk) +
                ':subports:' + str(subports) + ':delete:' + str(delete))

        # Create NSX driver
        nsx_trunc_driver = NSXv3TrunkDriver.create()

        with patch.object(nsx_trunc_driver,
                          '_get_context_and_parent_port',
                          new=self.mocked__get_context_and_parent_port):
            with patch.object(nsx_trunc_driver,
                              '_bind_subports',
                              new=mocked__bind_subports):

                # Prepare parameters
                par_resource = 'MyResource'
                par_payload = SimpleObject()
                par_payload.original_trunk = SimpleObject()
                par_payload.original_trunk.sub_ports = 'MyOriginalTrunkSubPorts'
                par_payload.trunk_id = 'MyTrunkID'

                # Initialize/Prepare the call tracker for test call number 1
                self.call_tracker.init_track('trunk_delete')

                # Make test call number 1
                par_payload.original_trunk.port_id = None
                nsx_trunc_driver.trunk_delete(par_resource, None, None,
                                              par_payload)

                # No activity is expected
                self.assertEquals(
                    len(self.call_tracker.get_steps('trunk_delete')) == 0,
                    True)

                # Reinitialize/Prepare the call tracker for test call number 1
                self.call_tracker.init_track('trunk_delete')

                # Make test call number 2
                par_payload.original_trunk.port_id = 'MyCurrentTrunkPortID'
                nsx_trunc_driver.trunk_delete(par_resource, None, None,
                                              par_payload)

                # Activity is expected
                self.assertEquals(
                    len(self.call_tracker.get_steps('trunk_delete')) == 1,
                    True)
                self.assertEquals(
                    self.call_tracker.steps_passed('trunk_delete', [
                        'mocked__bind_subports' + ':ctx:' + 'context_for_' +
                        str(par_payload.original_trunk.port_id) + ':parent:' +
                        'parent_for_' +
                        str(par_payload.original_trunk.port_id) + ':trunk:' +
                        str(par_payload.original_trunk) + ':subports:' +
                        str(par_payload.original_trunk.sub_ports) +
                        ':delete:' + str(True)
                    ]), True)
Ejemplo n.º 2
0
    def test__get_context_and_parent_port(self):
        def mocked_get_admin_context_of_context():
            return 'MyAdminContextObject'

        def mocked_get_port(ctx, parent_port_id):
            return {
                portbindings.VIF_TYPE: {
                    'MyParentPortIDInterfaceCompatible':
                    'MyParentPortInterfaceCompatible',
                    'MyParentPortIDInterfaceInCompatible':
                    'MyParentPortInterfaceIncompatible'
                }[parent_port_id]
            }

        def mocked_is_interface_compatible_of_base_driver(
                self_mocked, interface):
            return interface == 'MyParentPortInterfaceCompatible'

        with patch.object(context,
                          'get_admin_context',
                          new=mocked_get_admin_context_of_context):
            with patch.object(
                    base_driver.DriverBase,
                    'is_interface_compatible',
                    new=mocked_is_interface_compatible_of_base_driver):

                # Create NSX driver
                nsx_trunc_driver = NSXv3TrunkDriver.create()

                # Mocking core_plugin
                nsx_trunc_driver.core_plugin = SimpleObject()
                nsx_trunc_driver.core_plugin.get_port = mocked_get_port

                # Simulate successful call
                ctx, parent_port = nsx_trunc_driver._get_context_and_parent_port(
                    'MyParentPortIDInterfaceCompatible')

                # Check context
                self.assertEquals(ctx == mocked_get_admin_context_of_context(),
                                  True)

                # Check port
                self.assertEquals(parent_port is not None, True)
                self.assertEquals(portbindings.VIF_TYPE in parent_port, True)
                self.assertEquals(
                    parent_port[portbindings.VIF_TYPE] ==
                    'MyParentPortInterfaceCompatible', True)

                # # Simulate unsuccessful call
                ctx, parent_port = nsx_trunc_driver._get_context_and_parent_port(
                    'MyParentPortIDInterfaceInCompatible')

                # Check context
                self.assertEquals(ctx is None, True)

                # Check port
                self.assertEquals(parent_port is None, True)
Ejemplo n.º 3
0
 def test_create(self):
     nsx_trunc_driver = NSXv3TrunkDriver.create()
     self.assertEquals(isinstance(nsx_trunc_driver, NSXv3TrunkDriver), True)
     self.assertEquals(nsx_trunc_driver.name == nsxv3_constants.NSXV3, True)
     self.assertEquals(
         nsx_trunc_driver.interfaces[0] == portbindings.VIF_TYPE_OVS, True)
     self.assertEquals(
         nsx_trunc_driver.segmentation_types[0] ==
         trunk_consts.SEGMENTATION_TYPE_VLAN, True)
     self.assertEquals(nsx_trunc_driver.agent_type is None, True)
     self.assertEquals(nsx_trunc_driver.can_trunk_bound_port, True)
Ejemplo n.º 4
0
    def test_register(self):
        def mocked_register_of_base_driver(self_mocked,
                                           resource,
                                           event,
                                           trigger,
                                           payload=None):

            # To check parameters passed to 'super.register' method
            self.call_tracker.add_step(
                'trunk_register',
                'call:mocked_register_of_base_driver:parameters' +
                ':resource:' + str(resource) + ':event:' + str(event) +
                ':trigger:' + str(trigger) + ':payload:' + str(payload))

        def mocked_subscribe_of_register(
                callback,
                resource,
                event,
                priority=priority_group.PRIORITY_DEFAULT):
            # To check parameters passed to 'subscribe' method
            self.call_tracker.add_step(
                'trunk_register',
                'call:mocked_subscribe_of_register:parameters' + ':callback:' +
                str(callback) + ':resource:' + str(resource) + ':event:' +
                str(event) + ':priority:' + str(priority))

        with patch.object(base_driver.DriverBase,
                          'register',
                          new=mocked_register_of_base_driver):
            with patch.object(registry,
                              'subscribe',
                              new=mocked_subscribe_of_register):

                # Initialize the track
                self.call_tracker.init_track('trunk_register')

                # Create the driver
                nsx_trunc_driver = NSXv3TrunkDriver.create()

                # Prepare parameters and make a test call
                par_resource = 'MyResource'
                par_event = 'MyEvent'
                par_trigger = 'MyTrigger'
                par_payload = 'MyPayload'
                nsx_trunc_driver.register(par_resource,
                                          par_event,
                                          par_trigger,
                                          payload=par_payload)

                # Check property "core_plugin" content
                self.assertEquals(
                    directory.get_plugin() == nsx_trunc_driver.core_plugin,
                    True)

                # Check calls inside "register" method
                self.assertEquals(
                    self.call_tracker.steps_passed(
                        'trunk_register',
                        [
                            # Check parameters passed to 'super.register' method
                            'call:mocked_register_of_base_driver:parameters' +
                            ':resource:' + par_resource + ':event:' +
                            par_event + ':trigger:' + par_trigger +
                            ':payload:' + par_payload,

                            # Check parameters passed to 'subscribe' method - call number 1
                            'call:mocked_subscribe_of_register:parameters' +
                            ':callback:' + str(nsx_trunc_driver.trunk_create) +
                            ':resource:' + str(resources.TRUNK) + ':event:' +
                            str(events.AFTER_CREATE) + ':priority:' +
                            str(priority_group.PRIORITY_DEFAULT),

                            # Check parameters passed to 'subscribe' method - call number 2
                            'call:mocked_subscribe_of_register:parameters' +
                            ':callback:' + str(nsx_trunc_driver.trunk_delete) +
                            ':resource:' + str(resources.TRUNK) + ':event:' +
                            str(events.AFTER_DELETE) + ':priority:' +
                            str(priority_group.PRIORITY_DEFAULT),

                            # Check parameters passed to 'subscribe' method - call number 3
                            'call:mocked_subscribe_of_register:parameters' +
                            ':callback:' +
                            str(nsx_trunc_driver.subport_create) +
                            ':resource:' + str(resources.SUBPORTS) +
                            ':event:' + str(events.AFTER_CREATE) +
                            ':priority:' +
                            str(priority_group.PRIORITY_DEFAULT),

                            # Check parameters passed to 'subscribe' method - call number 4
                            'call:mocked_subscribe_of_register:parameters' +
                            ':callback:' +
                            str(nsx_trunc_driver.subport_delete) +
                            ':resource:' + str(resources.SUBPORTS) +
                            ':event:' + str(events.AFTER_DELETE) +
                            ':priority:' + str(priority_group.PRIORITY_DEFAULT)
                        ]),
                    True)
Ejemplo n.º 5
0
    def test__bind_subports(self):
        def mock_trunk_update(status):
            self.call_tracker.add_step('_bind_subports',
                                       'mock_trunk_update:status:' + status)

        def mocked_core_plugin_update_port(ctx, subport_port_id, port_data):
            self.call_tracker.add_step(
                '_bind_subports',
                'mocked_core_plugin_update_port:subport_port_id:' +
                subport_port_id)

        # Create NSX driver
        nsx_trunc_driver = NSXv3TrunkDriver.create()

        # Prepare parameters
        ctx = 'MyContext'
        parent = {
            portbindings.PROFILE: {
                'key': 'value'
            },
            portbindings.HOST_ID: portbindings.HOST_ID,
            portbindings.VNIC_TYPE: portbindings.VNIC_TYPE,
            'device_id': 'device_id'
        }
        trunk = SimpleObject()
        trunk.port_id = 'TrunkPortID'
        trunk.id = 'ID'
        trunk.update = mock_trunk_update
        subports = list()
        for i in range(10):
            subport = SimpleObject()
            subport.port_id = 'SubPortPortID_' + str(i)
            subports.append(subport)

        # Mock NSX driver object "core_plugin.update_port" method
        nsx_trunc_driver.core_plugin = SimpleObject()
        nsx_trunc_driver.core_plugin.update_port = mocked_core_plugin_update_port

        # Make test call number 1
        self.call_tracker.init_track('_bind_subports')
        trunk.sub_ports = ['x']
        nsx_trunc_driver._bind_subports(ctx,
                                        parent,
                                        trunk,
                                        subports,
                                        delete=False)
        self.assertEquals(
            self.call_tracker.steps_passed('_bind_subports', [
                'mock_trunk_update:status:' + trunk_consts.TRUNK_ACTIVE_STATUS
            ]), True)

        # Make test call number 2
        self.call_tracker.init_track('_bind_subports')
        trunk.sub_ports = []
        nsx_trunc_driver._bind_subports(ctx,
                                        parent,
                                        trunk,
                                        subports,
                                        delete=False)
        self.assertEquals(
            self.call_tracker.steps_passed('_bind_subports', [
                'mock_trunk_update:status:' + trunk_consts.TRUNK_ACTIVE_STATUS
            ]), False)

        # Make test call number 3
        self.call_tracker.init_track('_bind_subports')
        nsx_trunc_driver._bind_subports(ctx,
                                        parent,
                                        trunk,
                                        subports,
                                        delete=False)
        self.assertEquals(
            self.call_tracker.steps_passed('_bind_subports', [
                'mocked_core_plugin_update_port:subport_port_id:SubPortPortID_5'
            ]), True)

        # Make test call number 4
        self.call_tracker.init_track('_bind_subports')
        nsx_trunc_driver._bind_subports(ctx, parent, trunk, [], delete=False)
        self.assertEquals(
            self.call_tracker.steps_passed('_bind_subports', [
                'mocked_core_plugin_update_port:subport_port_id:SubPortPortID_5'
            ]), False)
Ejemplo n.º 6
0
 def test_is_loaded(self):
     nsx_trunc_driver = NSXv3TrunkDriver.create()
     cfg.CONF.core_plugin = 'Ml2'
     self.assertEquals(nsx_trunc_driver.is_loaded, True)
     cfg.CONF.core_plugin = 'BlaBla'
     self.assertEquals(nsx_trunc_driver.is_loaded, False)