def test_HandleVRIDFloatingIP_create_floating_ip_for_subnet_list( self, mock_patched_ip, mock_floating_ip): vthunder = copy.deepcopy(VTHUNDER) vthunder.ip_address = '10.0.0.1' subnet = copy.deepcopy(SUBNET_1) subnet.cidr = a10constants.MOCK_SUBNET_CIDR vthunder_config = copy.deepcopy(HW_THUNDER) port = copy.deepcopy(PORT) port.fixed_ips.append(MockIP(a10constants.MOCK_VRID_FLOATING_IP_1)) self.client_mock.vrrpa.get.return_value = EXISTING_FIP_SHARED_PARTITION mock_network_task = a10_network_tasks.HandleVRIDFloatingIP() mock_network_task.axapi_client = self.client_mock self.network_driver_mock.get_subnet.return_value = subnet self.network_driver_mock.allocate_vrid_fip.return_value = port self.conf.config(group=a10constants.A10_GLOBAL_OPTS, vrid=VRID_VALUE) mock_network_task.execute(vthunder, POOL, [], [subnet], vthunder_config) self.network_driver_mock.allocate_vrid_fip.assert_called_with( mock.ANY, None, mock.ANY, fixed_ip=a10constants.MOCK_VRID_FLOATING_IP_1) self.client_mock.vrrpa.update.assert_called_with( VRID_VALUE, floating_ips=[a10constants.MOCK_VRID_FLOATING_IP_1], is_partition=False)
def test_HandleVRIDFloatingIP_replace_floating_ip_in_shared_partition_with_static_ip( self, mock_utils, mock_patched_ip, get_floating_ip): vrid = copy.deepcopy(VRID_1) vrid.vrid_floating_ip = a10constants.MOCK_VRID_FLOATING_IP_1 vrid.vrid = VRID_VALUE vrid.vrid_port_id = a10constants.MOCK_VRRP_PORT_ID member = copy.deepcopy(MEMBER) member.subnet_id = a10constants.MOCK_SUBNET_ID subnet = copy.deepcopy(SUBNET_1) subnet.cidr = a10constants.MOCK_SUBNET_CIDR port = copy.deepcopy(PORT) vthunder_config = copy.deepcopy(HW_THUNDER) port.fixed_ips.append(MockIP(a10constants.MOCK_VRID_FLOATING_IP_2)) mock_network_task = a10_network_tasks.HandleVRIDFloatingIP() mock_network_task.axapi_client = self.client_mock self.network_driver_mock.get_subnet.return_value = subnet self.network_driver_mock.allocate_vrid_fip.return_value = port self.client_mock.vrrpa.get.return_value = EXISTING_FIP_SHARED_PARTITION self.conf.config(group=a10constants.A10_GLOBAL_OPTS, vrid=VRID_VALUE) mock_network_task.execute(VTHUNDER, member, [vrid], subnet, vthunder_config) self.network_driver_mock.allocate_vrid_fip.assert_called_with( vrid, subnet.network_id, mock.ANY, fixed_ip=a10constants.MOCK_VRID_FLOATING_IP_2) self.client_mock.vrrpa.update.assert_called_with( VRID_VALUE, floating_ips=[a10constants.MOCK_VRID_FLOATING_IP_2], is_partition=False) self.network_driver_mock.delete_port.assert_called_with( a10constants.MOCK_VRRP_PORT_ID)
def test_HandleVRIDFloatingIP_replace_floating_ip_diff_subnet_in_shared_part_conf_fip_set_dhcp( self, get_floating_ip, check_subnet): vrid = copy.deepcopy(VRID_1) vrid.vrid_floating_ip = a10constants.MOCK_VRID_FLOATING_IP_1 vrid.vrid = VRID_VALUE vrid.vrid_port_id = a10constants.MOCK_VRRP_PORT_ID member = copy.deepcopy(MEMBER) member.subnet_id = a10constants.MOCK_SUBNET_ID subnet = copy.deepcopy(SUBNET_1) subnet.cidr = a10constants.MOCK_SUBNET_CIDR port = copy.deepcopy(PORT) port.fixed_ips.append(MockIP(a10constants.MOCK_VRID_FLOATING_IP_1)) mock_network_task = a10_network_tasks.HandleVRIDFloatingIP() mock_network_task.axapi_client = self.client_mock self.network_driver_mock.get_subnet.return_value = subnet self.network_driver_mock.create_port.return_value = port self.conf.config(group=a10constants.A10_GLOBAL_OPTS, vrid=VRID_VALUE) mock_network_task.execute(VTHUNDER, member, [vrid], subnet) self.network_driver_mock.create_port.assert_called_with( subnet.network_id, member.subnet_id) self.client_mock.vrrpa.update.assert_called_with( VRID_VALUE, floating_ips=[a10constants.MOCK_VRID_FLOATING_IP_1]) self.network_driver_mock.delete_port.assert_called_with( a10constants.MOCK_VRRP_PORT_ID)
def test_HandleVRIDFloatingIP_creating_floating_ip_conf_fip_is_partial( self, get_floating_ip, mock_utils): member = copy.deepcopy(MEMBER) member.subnet_id = a10constants.MOCK_SUBNET_ID vthunder = copy.deepcopy(VTHUNDER) vthunder.ip_address = '10.0.0.1' subnet = copy.deepcopy(SUBNET_1) subnet.cidr = a10constants.MOCK_SUBNET_CIDR port = copy.deepcopy(PORT) vthunder_config = copy.deepcopy(HW_THUNDER) port.fixed_ips.append(MockIP(a10constants.MOCK_VRID_FULL_FLOATING_IP)) mock_network_task = a10_network_tasks.HandleVRIDFloatingIP() mock_network_task.axapi_client = self.client_mock self.network_driver_mock.get_subnet.return_value = subnet self.network_driver_mock.allocate_vrid_fip.return_value = port self.client_mock.vrrpa.get.return_value = EXISTING_FIP_SHARED_PARTITION self.conf.config(group=a10constants.A10_GLOBAL_OPTS, vrid=VRID_VALUE) mock_network_task.execute(vthunder, member, [VRID_1], subnet, vthunder_config) self.network_driver_mock.allocate_vrid_fip.assert_called_with( mock.ANY, subnet.network_id, mock.ANY, fixed_ip=a10constants.MOCK_VRID_FULL_FLOATING_IP) self.client_mock.vrrpa.update.assert_called_with( VRID_VALUE, floating_ips=[a10constants.MOCK_VRID_FULL_FLOATING_IP], is_partition=False)
def test_HandleVRIDFloatingIP_noop_vrrpa_config_not_specified( self, mock_utils): network_task = a10_network_tasks.HandleVRIDFloatingIP() subnet = copy.deepcopy(SUBNET_1) subnet.cidr = a10constants.MOCK_SUBNET_CIDR result = network_task.execute(VTHUNDER, MEMBER, [], subnet) self.assertEqual(result, [])
def test_HandleVRIDFloatingIP_create_floating_ip_with_device_name_flavor( self, mock_patched_ip): member = copy.deepcopy(MEMBER) member.subnet_id = SUBNET_1.id vthunder = copy.deepcopy(VTHUNDER) vthunder.ip_address = '10.0.0.1' subnet = copy.deepcopy(SUBNET_1) subnet.cidr = a10constants.MOCK_SUBNET_CIDR vthunder_config = copy.deepcopy(HW_THUNDER2) port = copy.deepcopy(PORT) port.fixed_ips.append(MockIP(a10constants.MOCK_VRID_FLOATING_IP_1)) mock_network_task = a10_network_tasks.HandleVRIDFloatingIP() mock_network_task.axapi_client = self.client_mock self.network_driver_mock.get_subnet.return_value = subnet self.network_driver_mock.allocate_vrid_fip.return_value = port self.client_mock.vrrpa.get.return_value = EXISTING_FIP_SHARED_PARTITION self.conf.config(group=a10constants.A10_GLOBAL_OPTS, vrid=VRID_VALUE) mock_network_task.execute(vthunder, member, [], subnet, vthunder_config, use_device_flavor=True) mock_network_task.axapi_client.get_vrid_floating_ip_for_project.assert_not_called( ) self.client_mock.vrrpa.update.assert_called_with( VRID_VALUE, floating_ips=[a10constants.MOCK_VRID_FLOATING_IP_1], is_partition=False)
def test_HandleVRIDFloatingIP_create_floating_ip_in_specified_partition_with_static_ip( self, mock_utils, mock_patched_ip, get_floating_ip): member = copy.deepcopy(MEMBER) member.subnet_id = SUBNET_1.id subnet = copy.deepcopy(SUBNET_1) subnet.cidr = a10constants.MOCK_SUBNET_CIDR vthunder_config = copy.deepcopy(HW_THUNDER) port = copy.deepcopy(PORT) port.fixed_ips.append(MockIP(a10constants.MOCK_VRID_FLOATING_IP_1)) vthunder = copy.deepcopy(VTHUNDER) vthunder.partition_name = 'partition_1' vthunder.ip_address = '10.0.0.1' mock_network_task = a10_network_tasks.HandleVRIDFloatingIP() mock_network_task.axapi_client = self.client_mock self.network_driver_mock.get_subnet.return_value = subnet self.network_driver_mock.allocate_vrid_fip.return_value = port self.client_mock.vrrpa.get.return_value = EXISTING_FIP_L3V_PARTITION self.conf.config(group=a10constants.A10_GLOBAL_OPTS, vrid=VRID_VALUE) mock_network_task.execute(vthunder, member, [], subnet, vthunder_config) self.network_driver_mock.allocate_vrid_fip.assert_called_with( mock.ANY, None, mock.ANY, fixed_ip=a10constants.MOCK_VRID_FLOATING_IP_1) self.client_mock.vrrpa.update.assert_called_with( VRID_VALUE, floating_ips=[a10constants.MOCK_VRID_FLOATING_IP_1], is_partition=True)
def test_HandleVRIDFloatingIP_replace_floating_ip_in_specified_partition_with_static_ip( self, mock_patched_ip, get_floating_ip): vrid = copy.deepcopy(VRID_1) vrid.vrid_floating_ip = a10constants.MOCK_VRID_FLOATING_IP_1 vrid.vrid = VRID_VALUE vrid.vrid_port_id = a10constants.MOCK_VRRP_PORT_ID member = copy.deepcopy(MEMBER) member.subnet_id = a10constants.MOCK_SUBNET_ID subnet = copy.deepcopy(SUBNET_1) subnet.cidr = a10constants.MOCK_SUBNET_CIDR port = copy.deepcopy(PORT) port.fixed_ips.append(MockIP(a10constants.MOCK_VRID_FLOATING_IP_2)) vthunder = copy.deepcopy(VTHUNDER) vthunder.partition_name = 'partition_1' mock_network_task = a10_network_tasks.HandleVRIDFloatingIP() mock_network_task.axapi_client = self.client_mock self.network_driver_mock.get_subnet.return_value = subnet self.network_driver_mock.create_port.return_value = port self.conf.config(group=a10constants.A10_GLOBAL_OPTS, vrid=VRID_VALUE) mock_network_task.execute(vthunder, member, [vrid], subnet) self.network_driver_mock.create_port.assert_called_with( subnet.network_id, member.subnet_id, fixed_ip=a10constants.MOCK_VRID_FLOATING_IP_2) self.client_mock.vrrpa.update.assert_called_with( VRID_VALUE, floating_ips=[a10constants.MOCK_VRID_FLOATING_IP_2], is_partition=True) self.network_driver_mock.delete_port.assert_called_with( a10constants.MOCK_VRRP_PORT_ID)
def test_HandleVRIDFloatingIP_replace_floating_ip_diff_subnet_in_set_part_conf_fip_set_dhcp( self, mock_utils, get_floating_ip, check_subnet): vrid = copy.deepcopy(VRID_1) vrid.vrid_floating_ip = a10constants.MOCK_VRID_FLOATING_IP_1 vrid.vrid = VRID_VALUE vrid.vrid_port_id = a10constants.MOCK_VRRP_PORT_ID member = copy.deepcopy(MEMBER) member.subnet_id = a10constants.MOCK_SUBNET_ID subnet = copy.deepcopy(SUBNET_1) subnet.cidr = a10constants.MOCK_SUBNET_CIDR port = copy.deepcopy(PORT) vthunder_config = copy.deepcopy(HW_THUNDER) port.fixed_ips.append(MockIP(a10constants.MOCK_VRID_FLOATING_IP_1)) vthunder = copy.deepcopy(VTHUNDER) vthunder.partition_name = 'partition_1' vthunder.ip_address = '10.0.0.1' mock_network_task = a10_network_tasks.HandleVRIDFloatingIP() mock_network_task.axapi_client = self.client_mock self.network_driver_mock.get_subnet.return_value = subnet self.network_driver_mock.allocate_vrid_fip.return_value = port self.client_mock.vrrpa.get.return_value = EXISTING_FIP_L3V_PARTITION self.conf.config(group=a10constants.A10_GLOBAL_OPTS, vrid=VRID_VALUE) mock_network_task.execute(vthunder, member, [vrid], subnet, vthunder_config) self.network_driver_mock.allocate_vrid_fip.assert_called_with( vrid, subnet.network_id, mock.ANY, fixed_ip=None) self.client_mock.vrrpa.update.assert_called_with( VRID_VALUE, floating_ips=[a10constants.MOCK_VRID_FLOATING_IP_1], is_partition=True) self.network_driver_mock.delete_port.assert_called_with( a10constants.MOCK_VRRP_PORT_ID)
def handle_vrid_for_member_subflow(self): handle_vrid_for_member_subflow = linear_flow.Flow( a10constants.HANDLE_VRID_MEMBER_SUBFLOW) handle_vrid_for_member_subflow.add( a10_network_tasks.GetLBResourceSubnet( rebind={a10constants.LB_RESOURCE: constants.MEMBER}, provides=constants.SUBNET)) handle_vrid_for_member_subflow.add( a10_database_tasks.GetChildProjectsOfParentPartition( rebind={a10constants.LB_RESOURCE: constants.MEMBER}, provides=a10constants.PARTITION_PROJECT_LIST)) handle_vrid_for_member_subflow.add( a10_database_tasks.GetVRIDForLoadbalancerResource( requires=a10constants.PARTITION_PROJECT_LIST, provides=a10constants.VRID_LIST)) handle_vrid_for_member_subflow.add( a10_network_tasks.HandleVRIDFloatingIP( requires=[ a10constants.VTHUNDER, a10constants.VRID_LIST, constants.SUBNET ], rebind={a10constants.LB_RESOURCE: constants.MEMBER}, provides=a10constants.VRID_LIST)) handle_vrid_for_member_subflow.add( a10_database_tasks.UpdateVRIDForLoadbalancerResource( requires=a10constants.VRID_LIST, rebind={a10constants.LB_RESOURCE: constants.MEMBER})) return handle_vrid_for_member_subflow
def test_HandleVRIDFloatingIP_noop_vrrpa_config_not_specified( self, mock_utils): mock_network_task = a10_network_tasks.HandleVRIDFloatingIP() mock_network_task.axapi_client = self.client_mock subnet = copy.deepcopy(SUBNET_1) subnet.cidr = a10constants.MOCK_SUBNET_CIDR vthunder_config = copy.deepcopy(HW_THUNDER) result = mock_network_task.execute(VTHUNDER, MEMBER, [], subnet, vthunder_config) self.assertEqual(result, [])
def test_HandleVRIDFloatingIP_delete_fip_entries_device_fip_given_but_no_fip_in_conf( self, mock_utils): vrid = copy.deepcopy(VRID) vrid.vrid_port_id = a10constants.MOCK_VRRP_PORT_ID vrid.vrid = VRID_VALUE mock_network_task = a10_network_tasks.HandleVRIDFloatingIP() mock_network_task.axapi_client = self.client_mock result = mock_network_task.execute(VTHUNDER, MEMBER, vrid) self.network_driver_mock.delete_port.assert_called_with( vrid.vrid_port_id) self.client_mock.vrrpa.delete.assert_called_with(vrid.vrid) self.assertEqual(result, None)
def test_HandleVRIDFloatingIP_raise_VRIDIPNotInSubentRangeError_conf_fip_out_of_range( self, mock_patched_ip, mock_get_floating_ip, check_subnet): vrid = copy.deepcopy(VRID) vrid.vrid_floating_ip = a10constants.MOCK_VRID_FLOATING_IP_1 vrid.vrid = VRID_VALUE vrid.vrid_port_id = a10constants.MOCK_VRRP_PORT_ID member = copy.deepcopy(MEMBER) member.subnet_id = a10constants.MOCK_SUBNET_ID subnet = copy.deepcopy(SUBNET) subnet.cidr = a10constants.MOCK_SUBNET_CIDR mock_network_task = a10_network_tasks.HandleVRIDFloatingIP() mock_network_task.axapi_client = self.client_mock self.network_driver_mock.get_subnet.return_value = subnet self.assertRaises(exceptions.VRIDIPNotInSubentRangeError, mock_network_task.execute, VTHUNDER, member, vrid)
def handle_vrid_for_member_subflow(self): handle_vrid_for_member_subflow = linear_flow.Flow( a10constants.HANDLE_VRID_MEMBER_SUBFLOW) handle_vrid_for_member_subflow.add( a10_database_tasks.GetVRIDForProjectMember( requires=constants.MEMBER, provides=a10constants.VRID)) handle_vrid_for_member_subflow.add( a10_network_tasks.HandleVRIDFloatingIP(requires=[ constants.MEMBER, a10constants.VTHUNDER, a10constants.VRID ], provides=a10constants.PORT)) handle_vrid_for_member_subflow.add( a10_database_tasks.UpdateVRIDForProjectMember(requires=[ constants.MEMBER, a10constants.VRID, a10constants.PORT ])) return handle_vrid_for_member_subflow
def test_HandleVRIDFloatingIP_delete_fip_entries_device_fip_given_but_no_fip_in_conf( self, mock_utils): vrid = copy.deepcopy(VRID_1) vrid.vrid_port_id = a10constants.MOCK_VRRP_PORT_ID vrid.vrid = VRID_VALUE vthunder_config = copy.deepcopy(HW_THUNDER) mock_network_task = a10_network_tasks.HandleVRIDFloatingIP() mock_network_task.axapi_client = self.client_mock result = mock_network_task.execute(VTHUNDER, MEMBER, [vrid], SUBNET_1, vthunder_config) self.network_driver_mock.delete_port.assert_called_with( vrid.vrid_port_id) self.client_mock.vrrpa.update.assert_called_with(vrid.vrid, floating_ips=[], is_partition=False) self.assertEqual(result, [])
def get_update_member_flow(self): """Create a flow to update a member :returns: The flow for updating a member """ update_member_flow = linear_flow.Flow(constants.UPDATE_MEMBER_FLOW) update_member_flow.add( lifecycle_tasks.MemberToErrorOnRevertTask(requires=[ constants.MEMBER, constants.LISTENERS, constants.LOADBALANCER, constants.POOL ])) update_member_flow.add( database_tasks.MarkMemberPendingUpdateInDB( requires=constants.MEMBER)) update_member_flow.add( a10_database_tasks.GetVThunderByLoadBalancer( requires=constants.LOADBALANCER, provides=a10constants.VTHUNDER)) # Handle VRID settings update_member_flow.add( a10_database_tasks.GetVRIDForProjectMember( requires=constants.MEMBER, provides=a10constants.VRID)) update_member_flow.add( a10_network_tasks.HandleVRIDFloatingIP(requires=[ constants.MEMBER, a10constants.VTHUNDER, a10constants.VRID ], provides=a10constants.PORT)) update_member_flow.add( a10_database_tasks.UpdateVRIDForProjectMember(requires=[ constants.MEMBER, a10constants.VRID, a10constants.PORT ])) update_member_flow.add( server_tasks.MemberUpdate(requires=(constants.MEMBER, a10constants.VTHUNDER))) update_member_flow.add( database_tasks.UpdateMemberInDB( requires=[constants.MEMBER, constants.UPDATE_DICT])) update_member_flow.add( database_tasks.MarkMemberActiveInDB(requires=constants.MEMBER)) update_member_flow.add( database_tasks.MarkPoolActiveInDB(requires=constants.POOL)) update_member_flow.add( database_tasks.MarkLBAndListenersActiveInDB( requires=[constants.LOADBALANCER, constants.LISTENERS])) return update_member_flow
def test_HandleVRIDFloatingIP_noop_device_fip_and_conf_fip_both_given_same_ip( self, mock_patched_ip, get_floating_ip): vrid = copy.deepcopy(VRID_1) vrid.vrid_floating_ip = a10constants.MOCK_VRID_FLOATING_IP_1 vrid.vrid = VRID_VALUE member = copy.deepcopy(MEMBER) member.subnet_id = a10constants.MOCK_SUBNET_ID subnet = copy.deepcopy(SUBNET_1) subnet.cidr = a10constants.MOCK_SUBNET_CIDR port = copy.deepcopy(PORT) port.fixed_ips.append(MockIP(a10constants.MOCK_VRID_FLOATING_IP_1)) mock_network_task = a10_network_tasks.HandleVRIDFloatingIP() mock_network_task.axapi_client = self.client_mock self.network_driver_mock.get_subnet.return_value = subnet mock_network_task.execute(VTHUNDER, member, [vrid], subnet) self.network_driver_mock.create_port.assert_not_called() self.client_mock.vrrpa.update.assert_not_called()
def test_HandleVRIDFloatingIP_noop_given_same_subnet_with_conf_fip_set_to_dhcp( self, get_floating_ip): vrid = copy.deepcopy(VRID_1) vrid.vrid_floating_ip = a10constants.MOCK_VRID_FLOATING_IP_1 vrid.vrid = VRID_VALUE vrid.vrid_port_id = a10constants.MOCK_VRRP_PORT_ID member = copy.deepcopy(MEMBER) member.subnet_id = a10constants.MOCK_SUBNET_ID subnet = copy.deepcopy(SUBNET_1) subnet.cidr = a10constants.MOCK_SUBNET_CIDR mock_network_task = a10_network_tasks.HandleVRIDFloatingIP() mock_network_task.axapi_client = self.client_mock self.network_driver_mock.get_subnet.return_value = subnet fip_port = mock_network_task.execute(VTHUNDER, member, [vrid], subnet) self.network_driver_mock.create_port.assert_not_called() self.network_driver_mock.delete_port.assert_not_called() self.assertEqual(fip_port, [vrid])
def test_HandleVRIDFloatingIP_create_floating_ip_in_shared_partition_with_static_ip( self, mock_patched_ip, mock_floating_ip): member = copy.deepcopy(MEMBER) member.subnet_id = SUBNET_1.id subnet = copy.deepcopy(SUBNET_1) subnet.cidr = a10constants.MOCK_SUBNET_CIDR port = copy.deepcopy(PORT) port.fixed_ips.append(MockIP(a10constants.MOCK_VRID_FLOATING_IP_1)) mock_network_task = a10_network_tasks.HandleVRIDFloatingIP() mock_network_task.axapi_client = self.client_mock self.network_driver_mock.get_subnet.return_value = subnet self.network_driver_mock.create_port.return_value = port self.conf.config(group=a10constants.A10_GLOBAL_OPTS, vrid=VRID_VALUE) mock_network_task.execute(VTHUNDER, member, [], subnet) self.network_driver_mock.create_port.assert_called_with( subnet.network_id, member.subnet_id, fixed_ip=a10constants.MOCK_VRID_FLOATING_IP_1) self.client_mock.vrrpa.update.assert_called_with( VRID_VALUE, floating_ips=[a10constants.MOCK_VRID_FLOATING_IP_1])
def test_HandleVRIDFloatingIP_creating_floating_ip_conf_fip_is_partial( self, get_floating_ip): member = copy.deepcopy(MEMBER) member.subnet_id = a10constants.MOCK_SUBNET_ID subnet = copy.deepcopy(SUBNET) subnet.cidr = a10constants.MOCK_SUBNET_CIDR port = copy.deepcopy(PORT) port.fixed_ips.append(MockIP(a10constants.MOCK_VRID_FULL_FLOATING_IP)) mock_network_task = a10_network_tasks.HandleVRIDFloatingIP() mock_network_task.axapi_client = self.client_mock self.network_driver_mock.get_subnet.return_value = subnet self.network_driver_mock.create_port.return_value = port self.conf.config(group=a10constants.A10_GLOBAL_OPTS, vrid=VRID_VALUE) mock_network_task.execute(VTHUNDER, member, None) self.network_driver_mock.create_port.assert_called_with( subnet.network_id, member.subnet_id, fixed_ip=a10constants.MOCK_VRID_FULL_FLOATING_IP) self.client_mock.vrrpa.update.assert_called_with( VRID_VALUE, floating_ip=a10constants.MOCK_VRID_FULL_FLOATING_IP)
def test_HandleVRIDFloatingIP_noop_given_same_subnet_with_conf_fip_set_to_dhcp( self, get_floating_ip): vrid = copy.deepcopy(VRID_1) vthunder = copy.deepcopy(VTHUNDER) vthunder.ip_address = '10.0.0.1' vrid.vrid_floating_ip = a10constants.MOCK_VRID_FLOATING_IP_1 vrid.vrid = VRID_VALUE vrid.vrid_port_id = a10constants.MOCK_VRRP_PORT_ID member = copy.deepcopy(MEMBER) member.subnet_id = a10constants.MOCK_SUBNET_ID subnet = copy.deepcopy(SUBNET_1) subnet.cidr = a10constants.MOCK_SUBNET_CIDR vthunder_config = copy.deepcopy(HW_THUNDER) mock_network_task = a10_network_tasks.HandleVRIDFloatingIP() mock_network_task.axapi_client = self.client_mock self.network_driver_mock.get_subnet.return_value = subnet self.client_mock.vrrpa.get.return_value = EXISTING_FIP_SHARED_PARTITION fip_port = mock_network_task.execute(vthunder, member, [vrid], subnet, vthunder_config) self.network_driver_mock.allocate_vrid_fip.assert_not_called() self.network_driver_mock.delete_port.assert_not_called() self.assertEqual(fip_port, [vrid])
def test_HandleVRIDFloatingIP_noop_device_fip_and_conf_fip_both_given_same_ip( self, mock_patched_ip, get_floating_ip): vrid = copy.deepcopy(VRID_1) vrid.vrid_floating_ip = a10constants.MOCK_VRID_FLOATING_IP_1 vrid.vrid = VRID_VALUE vthunder = copy.deepcopy(VTHUNDER) vthunder.ip_address = '10.0.0.1' member = copy.deepcopy(MEMBER) member.subnet_id = a10constants.MOCK_SUBNET_ID subnet = copy.deepcopy(SUBNET_1) subnet.cidr = a10constants.MOCK_SUBNET_CIDR port = copy.deepcopy(PORT) vthunder_config = copy.deepcopy(HW_THUNDER) port.fixed_ips.append(MockIP(a10constants.MOCK_VRID_FLOATING_IP_1)) mock_network_task = a10_network_tasks.HandleVRIDFloatingIP() mock_network_task.axapi_client = self.client_mock self.network_driver_mock.get_subnet.return_value = subnet self.client_mock.vrrpa.get.return_value = EXISTING_FIP_SHARED_PARTITION mock_network_task.execute(vthunder, member, [vrid], subnet, vthunder_config) self.network_driver_mock.allocate_vrid_fip.assert_not_called() self.client_mock.vrrpa.update.assert_not_called()
def test_HandleVRIDFloatingIP_create_floating_ip_in_shared_partition_with_dhcp( self, get_floating_ip, check_subnet): member = copy.deepcopy(MEMBER) member.subnet_id = SUBNET_1.id subnet = copy.deepcopy(SUBNET_1) subnet.cidr = a10constants.MOCK_SUBNET_CIDR vthunder_config = copy.deepcopy(HW_THUNDER) port = copy.deepcopy(PORT) port.fixed_ips.append(MockIP(a10constants.MOCK_VRID_FLOATING_IP_1)) mock_network_task = a10_network_tasks.HandleVRIDFloatingIP() mock_network_task.axapi_client = self.client_mock self.network_driver_mock.get_subnet.return_value = subnet self.network_driver_mock.allocate_vrid_fip.return_value = port self.client_mock.vrrpa.get.return_value = EXISTING_FIP_SHARED_PARTITION self.conf.config(group=a10constants.A10_GLOBAL_OPTS, vrid=VRID_VALUE) mock_network_task.execute(VTHUNDER, member, [VRID_1], subnet, vthunder_config) self.network_driver_mock.allocate_vrid_fip.assert_called_with( mock.ANY, None, None, fixed_ip=None) self.client_mock.vrrpa.update.assert_called_with( VRID_VALUE, floating_ips=[a10constants.MOCK_VRID_FLOATING_IP_1], is_partition=False)
def test_HandleVRIDFloatingIP_noop_vrrpa_config_not_specified( self, mock_utils): network_task = a10_network_tasks.HandleVRIDFloatingIP() result = network_task.execute(VTHUNDER, MEMBER, None) self.assertEqual(result, None)