def test_port_tuple_update_invalid_port_config(self): """ Port Tuple update failure scenario: Port config construction failure. """ # Create a test Service Instance. si = self.__create_test_si() #Create first Port Tuple. pt = test_utils.create_test_port_tuple( 'fake-domain:fake-project:fake-si-uuid:fake-port-tuple', si.uuid) # Stash orginal port config construction function. self.orig_port_config_fn = self.pt_agent.get_port_config # Mock port config construction to return None. self.pt_agent.get_port_config = mock.MagicMock(return_value=None) # Invoke port tuple update. Update should fail with error. self.pt_agent.update_port_tuple(pt_id=pt.uuid) # Verify failure is logged. self.logger.debug.assert_called_with( \ 'Failed to construct port config for Port Tuple fake-port-tuple', \ svc_monitor.sandesh.port_tuple.ttypes.PortTupleDebugLog) # Restore the port config construction function. self.pt_agent.get_port_config = self.orig_port_config_fn # Remove the failed port tuple from DB. test_utils.delete_test_port_tuple(pt)
def test_port_tuple_update_invalid_vmi(self): """ Port Tuple update failure scenario: Invalid VMI. """ # Create a test Service Instance. si = self.__create_test_si() #Create a Port Tuple. pt = test_utils.create_test_port_tuple( 'fake-domain:fake-project:fake-si-uuid:fake-port-tuple', si.uuid) # Create test virtual machines inteface for the Port Tuple. lvmi = self.__create_test_vmi(pt, 'left') # Delete the VMI from VMI db, so a lookup for that will fail. test_utils.delete_test_vmi(lvmi) pt.virtual_machine_interfaces.add(lvmi.uuid) # Update Port Tuple. This will fail due to VMI lookup failure. self.pt_agent.update_port_tuple(pt_id='fake-port-tuple') # Verify failure is logged. self.logger.debug.assert_called_with( \ 'VMI fake-vmi-uuid-left not found for Port Tuple fake-port-tuple', \ svc_monitor.sandesh.port_tuple.ttypes.PortTupleDebugLog) # Remove the failed port tuple from DB. test_utils.delete_test_port_tuple(pt)
def test_port_tuple_update_invalid_port_config(self): """ Port Tuple update failure scenario: Port config construction failure. """ # Create a test Service Instance. si = self.__create_test_si() #Create first Port Tuple. pt = test_utils.create_test_port_tuple( 'fake-domain:fake-project:fake-si-uuid:fake-port-tuple', si.uuid) # Stash orginal port config construction function. self.orig_port_config_fn = self.pt_agent.get_port_config # Mock port config construction to return None. self.pt_agent.get_port_config = mock.MagicMock(return_value=None) # Invoke port tuple update. Update should fail with error. self.pt_agent.update_port_tuple(pt_id = pt.uuid) # Verify failure is logged. self.logger.debug.assert_called_with( \ 'Failed to construct port config for Port Tuple fake-port-tuple', \ svc_monitor.sandesh.port_tuple.ttypes.PortTupleDebugLog) # Restore the port config construction function. self.pt_agent.get_port_config = self.orig_port_config_fn # Remove the failed port tuple from DB. test_utils.delete_test_port_tuple(pt)
def test_port_tuple_update_invalid_vmi_params(self): """ Port Tuple update failure scenarios: Invalid VMI parameters. """ # Create a test Service Instance. si = self.__create_test_si() #Create a Port Tuple. pt = test_utils.create_test_port_tuple( 'fake-domain:fake-project:fake-si-uuid:fake-port-tuple', si.uuid) # Create test virtual machines inteface for the Port Tuple. lvmi = self.__create_test_vmi(pt, 'left') lvmi.params = {} # Update Port Tuple. Update should fail due to invalid VMI params. self.pt_agent.update_port_tuple(pt_id='fake-port-tuple') # Verify failure is logged. self.logger.debug.assert_called_with( \ 'VMI fake-vmi-uuid-left has invalid params for Port Tuple fake-port-tuple', \ svc_monitor.sandesh.port_tuple.ttypes.PortTupleDebugLog) # Remove the failed port tuple from DB. test_utils.delete_test_port_tuple(pt)
def test_two_vm_port_tuple_create(self): """ Verify multiple (two) Port Tuple creates for a service instance. """ # Create a test Service Instance. si = self.__create_test_si() #Create first Port Tuple. pt1 = test_utils.create_test_port_tuple( 'fake-domain:fake-project:fake-si-uuid:fake-port-tuple1', si.uuid) # Create the two virtual machines intefaces for the Port Tuple. lvmi1 = self.__create_test_vmi(pt1, 'left', 'left1') rvmi1 = self.__create_test_vmi(pt1, 'right', 'right1') # Update frist Port Tuple. self.pt_agent.update_port_tuple(pt_id='fake-port-tuple1') # Create second Port Tuple. pt2 = test_utils.create_test_port_tuple( 'fake-domain:fake-project:fake-si-uuid:fake-port-tuple2', si.uuid) # Create the two virtual machines intefaces for the Port Tuple. lvmi2 = self.__create_test_vmi(pt2, 'left', 'left2') rvmi2 = self.__create_test_vmi(pt2, 'right', 'right2') # Update second Port Tuple. self.pt_agent.update_port_tuple(pt_id='fake-port-tuple2') # Validate the expected API invocations. self.mocked_vnc.ref_update.assert_any_call( 'instance-ip', 'fake-iip-uuid', 'virtual-machine-interface', lvmi1.uuid, None, 'ADD') self.mocked_vnc.ref_update.assert_any_call( 'instance-ip', 'fake-iip-uuid', 'virtual-machine-interface', rvmi1.uuid, None, 'ADD') self.mocked_vnc.ref_update.assert_any_call( 'instance-ip', 'fake-iip-uuid', 'virtual-machine-interface', lvmi2.uuid, None, 'ADD') self.mocked_vnc.ref_update.assert_any_call( 'instance-ip', 'fake-iip-uuid', 'virtual-machine-interface', rvmi2.uuid, None, 'ADD') self.mocked_vnc.ref_update.assert_any_call('service-instance', si.uuid, 'instance-ip', 'fake-iip-uuid', None, 'ADD', ServiceInterfaceTag('left')) self.mocked_vnc.ref_update.assert_any_call( 'service-instance', si.uuid, 'instance-ip', 'fake-iip-uuid', None, 'ADD', ServiceInterfaceTag('right')) test_utils.delete_test_port_tuple(pt1) test_utils.delete_test_port_tuple(pt2)
def test_update_port_static_route(self): """ Verify that we are able to add / delete static routes on a port through Port Tuple update. """ # Create a test Service Instance. si = self.__create_test_si() #Create a Port Tuple. pt = test_utils.create_test_port_tuple( 'fake-domain:fake-project:fake-si-uuid:fake-port-tuple', si.uuid) # Create the two virtual machines intefaces for the Port Tuple. lvmi = self.__create_test_vmi(pt, 'left') rvmi = self.__create_test_vmi(pt, 'right') # # Test ADD of interface route table # # Create the interface-route-table object. irt_obj = self.__create_interface_route_table(si, 'left') # Update Port Tuple. self.pt_agent.update_port_tuple(pt_id='fake-port-tuple') # Validate the expected ADD API invocations. self.mocked_vnc.ref_update.assert_any_call( 'virtual-machine-interface', lvmi.uuid, 'interface-route-table', irt_obj.uuid, None, 'ADD') # # Test DELETE of interface route table # # Remove the irt from service-instance. del si.interface_route_tables[irt_obj.uuid] # Simulate the case where irt is attached to the vmi. lvmi.interface_route_tables = {irt_obj.uuid} # Update Port Tuple. self.pt_agent.update_port_tuple(pt_id='fake-port-tuple') # Validate the expected DELETE API invocation. self.mocked_vnc.ref_update.assert_any_call( 'virtual-machine-interface', lvmi.uuid, 'interface-route-table', irt_obj.uuid, None, 'DELETE') test_utils.delete_test_port_tuple(pt)
def test_update_port_static_route(self): """ Verify that we are able to add / delete static routes on a port through Port Tuple update. """ # Create a test Service Instance. si = self.__create_test_si() #Create a Port Tuple. pt = test_utils.create_test_port_tuple( 'fake-domain:fake-project:fake-si-uuid:fake-port-tuple', si.uuid) # Create the two virtual machines intefaces for the Port Tuple. lvmi = self.__create_test_vmi(pt, 'left') rvmi = self.__create_test_vmi(pt, 'right') # # Test ADD of interface route table # # Create the interface-route-table object. irt_obj = self.__create_interface_route_table(si, 'left') # Update Port Tuple. self.pt_agent.update_port_tuple(pt_id='fake-port-tuple') # Validate the expected ADD API invocations. self.mocked_vnc.ref_update.assert_any_call('virtual-machine-interface', lvmi.uuid, 'interface-route-table', irt_obj.uuid, None, 'ADD') # # Test DELETE of interface route table # # Remove the irt from service-instance. del si.interface_route_tables[irt_obj.uuid] # Simulate the case where irt is attached to the vmi. lvmi.interface_route_tables = {irt_obj.uuid} # Update Port Tuple. self.pt_agent.update_port_tuple(pt_id='fake-port-tuple') # Validate the expected DELETE API invocation. self.mocked_vnc.ref_update.assert_any_call('virtual-machine-interface', lvmi.uuid, 'interface-route-table', irt_obj.uuid, None, 'DELETE') test_utils.delete_test_port_tuple(pt)
def test_vmi_delete_service_health_check(self): """ Verify that we are able to delete service health check from an interface. """ # Create a test Service Instance. si = self.__create_test_si() st = self.__get_service_template(si) #Create a Port Tuple. pt = test_utils.create_test_port_tuple( 'fake-domain:fake-project:fake-si-uuid:fake-port-tuple', si.uuid) # Create the two virtual machines intefaces for the Port Tuple. lvmi = self.__create_test_vmi(pt, 'left') rvmi = self.__create_test_vmi(pt, 'right') # Create ServiceHealthCheck object. test_utils.create_test_service_health_check( 'fake-domain:fake-project:lhiip', si.uuid) # Create and attach a service-health-check iip on the vmi under test. iip_name = si.uuid + '-' + 'left-v4-health-check-' + 'llip' iip_fq_name = 'fake-domain:fake-project:' + iip_name iip = test_utils.create_test_iip(iip_fq_name) iip.virtual_machine_interfaces = {lvmi.uuid} iip.service_health_check_ip = True lvmi.service_health_checks = ['lhiip'] lvmi.instance_ips = [iip.uuid] # Update Port Tuple. self.pt_agent.update_port_tuple(pt_id='fake-port-tuple') # Validate the expected DELETE API invocations. self.mocked_vnc.ref_update.assert_any_call( 'virtual-machine-interface', lvmi.uuid, 'service-health-check', 'lhiip', None, 'DELETE') self.mocked_vnc.ref_update.assert_any_call( 'instance-ip', 'fake-iip-uuid', 'virtual-machine-interface', lvmi.uuid, None, 'DELETE') test_utils.delete_test_port_tuple(pt)
def test_vmi_delete_service_health_check(self): """ Verify that we are able to delete service health check from an interface. """ # Create a test Service Instance. si = self.__create_test_si() st = self.__get_service_template(si) #Create a Port Tuple. pt = test_utils.create_test_port_tuple( 'fake-domain:fake-project:fake-si-uuid:fake-port-tuple', si.uuid) # Create the two virtual machines intefaces for the Port Tuple. lvmi = self.__create_test_vmi(pt, 'left') rvmi = self.__create_test_vmi(pt, 'right') # Create ServiceHealthCheck object. test_utils.create_test_service_health_check( 'fake-domain:fake-project:lhiip', si.uuid) # Create and attach a service-health-check iip on the vmi under test. iip_name = si.uuid + '-' + 'left-v4-health-check-' + 'llip' iip_fq_name = 'fake-domain:fake-project:' + iip_name iip = test_utils.create_test_iip(iip_fq_name) iip.virtual_machine_interfaces = {lvmi.uuid} iip.service_health_check_ip = True lvmi.service_health_checks = ['lhiip'] lvmi.instance_ips = [iip.uuid] # Update Port Tuple. self.pt_agent.update_port_tuple(pt_id='fake-port-tuple') # Validate the expected DELETE API invocations. self.mocked_vnc.ref_update.assert_any_call('virtual-machine-interface', lvmi.uuid, 'service-health-check', 'lhiip', None, 'DELETE') self.mocked_vnc.ref_update.assert_any_call( 'instance-ip', 'fake-iip-uuid', 'virtual-machine-interface', lvmi.uuid, None, 'DELETE') test_utils.delete_test_port_tuple(pt)
def test_port_tuple_vmi_update(self): """ Validate that updating Port Tuple with VMI, results in VNC api invocation with expected parameters. """ # Create a test Service Instance. si = self.__create_test_si() #Create a Port Tuple. pt = test_utils.create_test_port_tuple( 'fake-domain:fake-project:fake-si-uuid:fake-port-tuple', si.uuid) # Create the two virtual machines intefaces for the Port Tuple. lvmi = self.__create_test_vmi(pt, 'left') rvmi = self.__create_test_vmi(pt, 'right') # Invoke Port Tuple update with created vmi's self.pt_agent.update_vmi_port_tuples(lvmi) self.pt_agent.update_vmi_port_tuples(rvmi) # Validate the expected API invocations. self.mocked_vnc.ref_update.assert_any_call( 'instance-ip', 'fake-iip-uuid', 'virtual-machine-interface', lvmi.uuid, None, 'ADD') self.mocked_vnc.ref_update.assert_any_call( 'instance-ip', 'fake-iip-uuid', 'virtual-machine-interface', rvmi.uuid, None, 'ADD') self.mocked_vnc.ref_update.assert_any_call( 'service-instance', si.uuid, 'instance-ip', 'fake-iip-uuid', None, 'ADD', ServiceInterfaceTag('left')) self.mocked_vnc.ref_update.assert_any_call( 'service-instance', si.uuid, 'instance-ip', 'fake-iip-uuid', None, 'ADD', ServiceInterfaceTag('right')) test_utils.delete_test_port_tuple(pt)
def test_single_vm_port_tuple_create(self): """ Verify Port Tuple create for a service instance. """ # Create a test Service Instance. si = self.__create_test_si() #Create a Port Tuple. pt = test_utils.create_test_port_tuple( 'fake-domain:fake-project:fake-si-uuid:fake-port-tuple', si.uuid) # Create the two virtual machines intefaces for the Port Tuple. lvmi = self.__create_test_vmi(pt, 'left') rvmi = self.__create_test_vmi(pt, 'right') # Update Port Tuple. self.pt_agent.update_port_tuple(pt_id='fake-port-tuple') # Validate the expected API invocations. self.mocked_vnc.ref_update.assert_any_call( 'instance-ip', 'fake-iip-uuid', 'virtual-machine-interface', lvmi.uuid, None, 'ADD') self.mocked_vnc.ref_update.assert_any_call( 'instance-ip', 'fake-iip-uuid', 'virtual-machine-interface', rvmi.uuid, None, 'ADD') self.mocked_vnc.ref_update.assert_any_call( 'service-instance', si.uuid, 'instance-ip', 'fake-iip-uuid', None, 'ADD', ServiceInterfaceTag('left')) self.mocked_vnc.ref_update.assert_any_call( 'service-instance', si.uuid, 'instance-ip', 'fake-iip-uuid', None, 'ADD', ServiceInterfaceTag('right')) test_utils.delete_test_port_tuple(pt)
def test_vmi_add_service_health_check(self): """ Verify that we are able to add service health check on an interface. """ # Create a test Service Instance. si = self.__create_test_si() st = self.__get_service_template(si) #Create a Port Tuple. pt = test_utils.create_test_port_tuple( 'fake-domain:fake-project:fake-si-uuid:fake-port-tuple', si.uuid) # Create the two virtual machines intefaces for the Port Tuple. lvmi = self.__create_test_vmi(pt, 'left') rvmi = self.__create_test_vmi(pt, 'right') # Create ServiceHealthCheck object. test_utils.create_test_service_health_check( 'fake-domain:fake-project:lhiip', si.uuid) # Enable ServiceHealthCheck on test SI. si.service_health_checks['lhiip'] = {'interface_type':'left'} # Update Port Tuple. self.pt_agent.update_port_tuple(pt_id='fake-port-tuple') # Validate the expected ADD API invocations. self.mocked_vnc.ref_update.assert_any_call( 'virtual-machine-interface', lvmi.uuid, 'service-health-check', 'lhiip', None, 'ADD') self.mocked_vnc.ref_update.assert_any_call( 'instance-ip', 'fake-iip-uuid', 'virtual-machine-interface', lvmi.uuid, None, 'ADD') test_utils.delete_test_port_tuple(pt)
def test_port_tuple_update_invalid_si(self): """ Port Tuple update failure scenario: Service instance not found. """ # Create a Port Tuple without a valid service instance. pt = test_utils.create_test_port_tuple( 'fake-domain:fake-project:fake-si-uuid:fake-port-tuple', 'invalid-si') # Invoke port tuple update. Update should fail with error. self.pt_agent.update_port_tuple(pt_id = pt.uuid) # Verify failure is logged. self.logger.debug.assert_called_with('Service Instance invalid-si not found', \ svc_monitor.sandesh.port_tuple.ttypes.PortTupleDebugLog) # Remove the failed port tuple from DB. test_utils.delete_test_port_tuple(pt)
def test_port_tuple_update_invalid_si(self): """ Port Tuple update failure scenario: Service instance not found. """ # Create a Port Tuple without a valid service instance. pt = test_utils.create_test_port_tuple( 'fake-domain:fake-project:fake-si-uuid:fake-port-tuple', 'invalid-si') # Invoke port tuple update. Update should fail with error. self.pt_agent.update_port_tuple(pt_id=pt.uuid) # Verify failure is logged. self.logger.debug.assert_called_with('Service Instance invalid-si not found', \ svc_monitor.sandesh.port_tuple.ttypes.PortTupleDebugLog) # Remove the failed port tuple from DB. test_utils.delete_test_port_tuple(pt)
def test_port_tuple_vmi_update(self): """ Validate that updating Port Tuple with VMI, results in VNC api invocation with expected parameters. """ # Create a test Service Instance. si = self.__create_test_si() #Create a Port Tuple. pt = test_utils.create_test_port_tuple( 'fake-domain:fake-project:fake-si-uuid:fake-port-tuple', si.uuid) # Create the two virtual machines intefaces for the Port Tuple. lvmi = self.__create_test_vmi(pt, 'left') rvmi = self.__create_test_vmi(pt, 'right') # Invoke Port Tuple update with created vmi's self.pt_agent.update_vmi_port_tuples(lvmi) self.pt_agent.update_vmi_port_tuples(rvmi) # Validate the expected API invocations. self.mocked_vnc.ref_update.assert_any_call( 'instance-ip', 'fake-iip-uuid', 'virtual-machine-interface', lvmi.uuid, None, 'ADD') self.mocked_vnc.ref_update.assert_any_call( 'instance-ip', 'fake-iip-uuid', 'virtual-machine-interface', rvmi.uuid, None, 'ADD') self.mocked_vnc.ref_update.assert_any_call('service-instance', si.uuid, 'instance-ip', 'fake-iip-uuid', None, 'ADD', ServiceInterfaceTag('left')) self.mocked_vnc.ref_update.assert_any_call( 'service-instance', si.uuid, 'instance-ip', 'fake-iip-uuid', None, 'ADD', ServiceInterfaceTag('right')) test_utils.delete_test_port_tuple(pt)
def test_vmi_add_service_health_check(self): """ Verify that we are able to add service health check on an interface. """ # Create a test Service Instance. si = self.__create_test_si() st = self.__get_service_template(si) #Create a Port Tuple. pt = test_utils.create_test_port_tuple( 'fake-domain:fake-project:fake-si-uuid:fake-port-tuple', si.uuid) # Create the two virtual machines intefaces for the Port Tuple. lvmi = self.__create_test_vmi(pt, 'left') rvmi = self.__create_test_vmi(pt, 'right') # Create ServiceHealthCheck object. test_utils.create_test_service_health_check( 'fake-domain:fake-project:lhiip', si.uuid) # Enable ServiceHealthCheck on test SI. si.service_health_checks['lhiip'] = {'interface_type': 'left'} # Update Port Tuple. self.pt_agent.update_port_tuple(pt_id='fake-port-tuple') # Validate the expected ADD API invocations. self.mocked_vnc.ref_update.assert_any_call('virtual-machine-interface', lvmi.uuid, 'service-health-check', 'lhiip', None, 'ADD') self.mocked_vnc.ref_update.assert_any_call( 'instance-ip', 'fake-iip-uuid', 'virtual-machine-interface', lvmi.uuid, None, 'ADD') test_utils.delete_test_port_tuple(pt)
def test_multiple_si_service_health_check_common_vmi(self): """ Verify that we are able to add service health check on an interface. """ # Create a test Service Instance. si1 = self.__create_test_si(name='fake-si1-uuid') si2 = self.__create_test_si(name='fake-si2-uuid') si3 = self.__create_test_si(name='fake-si3-uuid') # Create ServiceHealthCheck object. test_utils.create_test_service_health_check( 'fake-domain:fake-project:rhiip1', si1.uuid) test_utils.create_test_service_health_check( 'fake-domain:fake-project:rhiip2', si2.uuid) test_utils.create_test_service_health_check( 'fake-domain:fake-project:rhiip3', si3.uuid) # Enable ServiceHealthCheck on test SI. si1.service_health_checks['rhiip1'] = {'interface_type': 'right'} si2.service_health_checks['rhiip2'] = {'interface_type': 'right'} si3.service_health_checks['rhiip3'] = {'interface_type': 'right'} #Create a Port Tuple. pt1 = test_utils.create_test_port_tuple( 'fake-domain:fake-project:fake-si1-uuid:fake-port-tuple1', si1.uuid) l1vmi = self.__create_test_vmi(pt1, 'left', 'left1') rvmi = self.__create_test_vmi(pt1, 'right', 'right1') pt2 = test_utils.create_test_port_tuple( 'fake-domain:fake-project:fake-si2-uuid:fake-port-tuple2', si2.uuid) l2vmi = self.__create_test_vmi(pt2, 'left', 'left2') pt2.virtual_machine_interfaces.add(rvmi.uuid) rvmi.port_tuples.add(pt2.uuid) pt3 = test_utils.create_test_port_tuple( 'fake-domain:fake-project:fake-si3-uuid:fake-port-tuple3', si3.uuid) l3vmi = self.__create_test_vmi(pt3, 'left', 'left3') pt3.virtual_machine_interfaces.add(rvmi.uuid) rvmi.port_tuples.add(pt3.uuid) # Update PortTuple self.pt_agent.update_port_tuple(pt_id='fake-port-tuple1') self.pt_agent.update_port_tuple(pt_id='fake-port-tuple2') self.pt_agent.update_port_tuple(pt_id='fake-port-tuple3') # Validate the expected ADD API invocations. self.mocked_vnc.ref_update.assert_any_call('virtual-machine-interface', rvmi.uuid, 'service-health-check', 'rhiip1', None, 'ADD') self.mocked_vnc.ref_update.assert_any_call('virtual-machine-interface', rvmi.uuid, 'service-health-check', 'rhiip2', None, 'ADD') self.mocked_vnc.ref_update.assert_any_call('virtual-machine-interface', rvmi.uuid, 'service-health-check', 'rhiip3', None, 'ADD') self.mocked_vnc.ref_update.assert_any_call( 'instance-ip', 'fake-iip-uuid', 'virtual-machine-interface', rvmi.uuid, None, 'ADD') self.mocked_vnc.ref_update.assert_any_call( 'instance-ip', 'fake-iip-uuid', 'virtual-machine-interface', rvmi.uuid, None, 'ADD') self.mocked_vnc.ref_update.assert_any_call( 'instance-ip', 'fake-iip-uuid', 'virtual-machine-interface', rvmi.uuid, None, 'ADD') test_utils.delete_test_port_tuple(pt1) test_utils.delete_test_port_tuple(pt2) test_utils.delete_test_port_tuple(pt3)
def test_multiple_si_service_health_check_common_vmi(self): """ Verify that we are able to add service health check on an interface. """ # Create a test Service Instance. si1 = self.__create_test_si(name='fake-si1-uuid') si2 = self.__create_test_si(name='fake-si2-uuid') si3 = self.__create_test_si(name='fake-si3-uuid') # Create ServiceHealthCheck object. test_utils.create_test_service_health_check( 'fake-domain:fake-project:rhiip1', si1.uuid) test_utils.create_test_service_health_check( 'fake-domain:fake-project:rhiip2', si2.uuid) test_utils.create_test_service_health_check( 'fake-domain:fake-project:rhiip3', si3.uuid) # Enable ServiceHealthCheck on test SI. si1.service_health_checks['rhiip1'] = {'interface_type':'right'} si2.service_health_checks['rhiip2'] = {'interface_type':'right'} si3.service_health_checks['rhiip3'] = {'interface_type':'right'} #Create a Port Tuple. pt1 = test_utils.create_test_port_tuple( 'fake-domain:fake-project:fake-si1-uuid:fake-port-tuple1', si1.uuid) l1vmi = self.__create_test_vmi(pt1, 'left', 'left1') rvmi = self.__create_test_vmi(pt1, 'right', 'right1') pt2 = test_utils.create_test_port_tuple( 'fake-domain:fake-project:fake-si2-uuid:fake-port-tuple2', si2.uuid) l2vmi = self.__create_test_vmi(pt2, 'left', 'left2') pt2.virtual_machine_interfaces.add(rvmi.uuid) rvmi.port_tuples.add(pt2.uuid) pt3 = test_utils.create_test_port_tuple( 'fake-domain:fake-project:fake-si3-uuid:fake-port-tuple3', si3.uuid) l3vmi = self.__create_test_vmi(pt3, 'left', 'left3') pt3.virtual_machine_interfaces.add(rvmi.uuid) rvmi.port_tuples.add(pt3.uuid) # Update PortTuple self.pt_agent.update_port_tuple(pt_id='fake-port-tuple1') self.pt_agent.update_port_tuple(pt_id='fake-port-tuple2') self.pt_agent.update_port_tuple(pt_id='fake-port-tuple3') # Validate the expected ADD API invocations. self.mocked_vnc.ref_update.assert_any_call( 'virtual-machine-interface', rvmi.uuid, 'service-health-check', 'rhiip1', None, 'ADD') self.mocked_vnc.ref_update.assert_any_call( 'virtual-machine-interface', rvmi.uuid, 'service-health-check', 'rhiip2', None, 'ADD') self.mocked_vnc.ref_update.assert_any_call( 'virtual-machine-interface', rvmi.uuid, 'service-health-check', 'rhiip3', None, 'ADD') self.mocked_vnc.ref_update.assert_any_call( 'instance-ip', 'fake-iip-uuid', 'virtual-machine-interface', rvmi.uuid, None, 'ADD') self.mocked_vnc.ref_update.assert_any_call( 'instance-ip', 'fake-iip-uuid', 'virtual-machine-interface', rvmi.uuid, None, 'ADD') self.mocked_vnc.ref_update.assert_any_call( 'instance-ip', 'fake-iip-uuid', 'virtual-machine-interface', rvmi.uuid, None, 'ADD') test_utils.delete_test_port_tuple(pt1) test_utils.delete_test_port_tuple(pt2) test_utils.delete_test_port_tuple(pt3)