Ejemplo n.º 1
0
    def test_v1_3_to_v1_2_unlists_distributed_bindings(self):
        port_new = self._create_test_port()

        # empty list transforms into None
        port_v1_2 = port_new.obj_to_primitive(target_version='1.2')
        port_data = port_v1_2['versioned_object.data']
        self.assertIsNone(port_data['distributed_binding'])

        # now insert a distributed binding
        binding = ports.DistributedPortBinding(self.context,
                                               host='host1',
                                               port_id=port_new.id,
                                               status='ACTIVE',
                                               vnic_type='vnic_type1',
                                               vif_type='vif_type1')
        binding.create()

        # refetch port object to include binding
        port_new = ports.Port.get_object(self.context, id=port_new.id)

        # new primitive should contain the binding data
        port_v1_2 = port_new.obj_to_primitive(target_version='1.2')
        port_data = port_v1_2['versioned_object.data']
        binding_data = (
            port_data['distributed_binding']['versioned_object.data'])
        self.assertEqual(binding.host, binding_data['host'])
Ejemplo n.º 2
0
    def test_v1_2_to_v1_1_drops_segment_id_in_binding_levels(self):
        port_new = self._create_test_port()
        segment = network.NetworkSegment(
            self.context,
            # TODO(ihrachys) we should be able to create a segment object
            # without explicitly specifying id, but it's currently not working
            id=uuidutils.generate_uuid(),
            network_id=port_new.network_id,
            network_type='vxlan')
        segment.create()

        # TODO(ihrachys) we should be able to create / update level objects via
        # Port object, but it's currently not working
        binding = ports.PortBindingLevel(self.context,
                                         port_id=port_new.id,
                                         host='host1',
                                         level=0,
                                         segment_id=segment.id)
        binding.create()

        port_new = ports.Port.get_object(self.context, id=port_new.id)
        port_v1_1 = port_new.obj_to_primitive(target_version='1.1')

        lvl = port_v1_1['versioned_object.data']['binding_levels'][0]
        self.assertNotIn('segment_id', lvl['versioned_object.data'])

        # check that we also downgraded level object version
        self.assertEqual('1.0', lvl['versioned_object.version'])

        # finally, prove that binding primitive is now identical to direct
        # downgrade of the binding object
        binding_v1_0 = binding.obj_to_primitive(target_version='1.0')
        self.assertEqual(binding_v1_0, lvl)
Ejemplo n.º 3
0
    def test_v1_2_to_v1_1_drops_segment_id_in_binding_levels(self):
        port_new = self._create_test_port()
        segment = network.NetworkSegment(
            self.context,
            # TODO(ihrachys) we should be able to create a segment object
            # without explicitly specifying id, but it's currently not working
            id=uuidutils.generate_uuid(),
            network_id=port_new.network_id,
            network_type='vxlan')
        segment.create()

        # TODO(ihrachys) we should be able to create / update level objects via
        # Port object, but it's currently not working
        binding = ports.PortBindingLevel(
            self.context, port_id=port_new.id,
            host='host1', level=0, segment_id=segment.id)
        binding.create()

        port_new = ports.Port.get_object(self.context, id=port_new.id)
        port_v1_1 = port_new.obj_to_primitive(target_version='1.1')

        lvl = port_v1_1['versioned_object.data']['binding_levels'][0]
        self.assertNotIn('segment_id', lvl['versioned_object.data'])

        # check that we also downgraded level object version
        self.assertEqual('1.0', lvl['versioned_object.version'])

        # finally, prove that binding primitive is now identical to direct
        # downgrade of the binding object
        binding_v1_0 = binding.obj_to_primitive(target_version='1.0')
        self.assertEqual(binding_v1_0, lvl)
Ejemplo n.º 4
0
 def _test_get_auto_deletable_ports(self, device_owner):
     network_id = self._create_test_network_id()
     segment_id = self._create_test_segment_id(network_id)
     port = self._create_test_port(device_owner=device_owner)
     binding = ports.PortBindingLevel(
         self.context, port_id=port.id,
         host='host1', level=0, segment_id=segment_id)
     binding.create()
     return (
         ports.Port.
         get_auto_deletable_port_ids_and_proper_port_count_by_segment(
             self.context, segment_id))
Ejemplo n.º 5
0
    def test_v1_3_to_v1_2_unlists_distributed_bindings(self):
        port_new = self._create_test_port()

        # empty list transforms into None
        port_v1_2 = port_new.obj_to_primitive(target_version='1.2')
        port_data = port_v1_2['versioned_object.data']
        self.assertIsNone(port_data['distributed_binding'])

        # now insert a distributed binding
        binding = ports.DistributedPortBinding(
            self.context,
            host='host1', port_id=port_new.id, status='ACTIVE',
            vnic_type='vnic_type1', vif_type='vif_type1')
        binding.create()

        # refetch port object to include binding
        port_new = ports.Port.get_object(self.context, id=port_new.id)

        # new primitive should contain the binding data
        port_v1_2 = port_new.obj_to_primitive(target_version='1.2')
        port_data = port_v1_2['versioned_object.data']
        binding_data = (
            port_data['distributed_binding']['versioned_object.data'])
        self.assertEqual(binding.host, binding_data['host'])