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)