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'])
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)
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)
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))
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'])