Exemplo n.º 1
0
 def add_centralized_floatingip(self, fip, fip_cidr):
     """Function to handle the centralized Floatingip addition."""
     if not self.get_ex_gw_port():
         return
     if not self._is_this_snat_host():
         return
     interface_name = self.get_snat_external_device_interface_name(
         self.get_ex_gw_port())
     try:
         ip_lib.add_ip_address(fip_cidr,
                               interface_name,
                               namespace=self.snat_namespace.name)
     except ip_lib.IpAddressAlreadyExists:
         pass
     except RuntimeError:
         LOG.warning(
             "Unable to configure IP address for centralized "
             "floating IP: %s", fip['id'])
         return lib_constants.FLOATINGIP_STATUS_ERROR
     self.process_floating_ip_nat_rules_for_centralized_floatingip()
     # Send a GARP message on the external interface for the
     # centralized floatingip configured.
     ip_lib.send_ip_addr_adv_notif(self.snat_namespace.name, interface_name,
                                   fip['floating_ip_address'])
     return lib_constants.FLOATINGIP_STATUS_ACTIVE
Exemplo n.º 2
0
    def test_get_ip_addresses(self):
        namespace = 'ns_test-' + uuidutils.generate_uuid()
        priv_ip_lib.create_netns(namespace)
        self.addCleanup(self._remove_ns, namespace)
        interfaces = {
            '20': {
                'cidr': '192.168.10.20/24',
                'scope': 'link',
                'add_broadcast': True
            },
            '30': {
                'cidr': '2001::1/64',
                'scope': 'global',
                'add_broadcast': False
            }
        }

        for int_name, int_parameters in interfaces.items():
            priv_ip_lib.create_interface(int_name,
                                         namespace,
                                         'dummy',
                                         index=int(int_name))
            ip_lib.add_ip_address(int_parameters['cidr'], int_name, namespace,
                                  int_parameters['scope'],
                                  int_parameters['add_broadcast'])

        ip_addresses = priv_ip_lib.get_ip_addresses(namespace)
        for ip_address in ip_addresses:
            int_name = str(ip_address['index'])
            ip = ip_lib.get_attr(ip_address, 'IFA_ADDRESS')
            mask = ip_address['prefixlen']
            cidr = common_utils.ip_to_cidr(ip, mask)
            self.assertEqual(interfaces[int_name]['cidr'], cidr)
            self.assertEqual(interfaces[int_name]['scope'],
                             ip_lib.IP_ADDRESS_SCOPE[ip_address['scope']])
Exemplo n.º 3
0
    def test_get_ip_addresses(self):
        namespace = 'ns_test-' + uuidutils.generate_uuid()
        priv_ip_lib.create_netns(namespace)
        self.addCleanup(self._remove_ns, namespace)
        interfaces = {
            '20': {'cidr': '192.168.10.20/24', 'scope': 'link',
                   'add_broadcast': True},
            '30': {'cidr': '2001::1/64', 'scope': 'global',
                   'add_broadcast': False}}

        for int_name, int_parameters in interfaces.items():
            priv_ip_lib.create_interface(int_name, namespace, 'dummy',
                                         index=int(int_name))
            ip_lib.add_ip_address(
                int_parameters['cidr'], int_name, namespace,
                int_parameters['scope'], int_parameters['add_broadcast'])

        ip_addresses = priv_ip_lib.get_ip_addresses(namespace)
        for ip_address in ip_addresses:
            int_name = str(ip_address['index'])
            ip = _get_attr(ip_address, 'IFA_ADDRESS')
            mask = ip_address['prefixlen']
            cidr = common_utils.ip_to_cidr(ip, mask)
            self.assertEqual(interfaces[int_name]['cidr'], cidr)
            self.assertEqual(interfaces[int_name]['scope'],
                             ip_lib.IP_ADDRESS_SCOPE[ip_address['scope']])
Exemplo n.º 4
0
 def add_centralized_floatingip(self, fip, fip_cidr):
     """Function to handle the centralized Floatingip addition."""
     if not self.get_ex_gw_port():
         return
     if not self._is_this_snat_host():
         return
     interface_name = self.get_snat_external_device_interface_name(
         self.get_ex_gw_port())
     try:
         ip_lib.add_ip_address(fip_cidr, interface_name,
                               namespace=self.snat_namespace.name)
     except ip_lib.IpAddressAlreadyExists:
         pass
     except RuntimeError:
         LOG.warning("Unable to configure IP address for centralized "
                     "floating IP: %s", fip['id'])
         return lib_constants.FLOATINGIP_STATUS_ERROR
     self.process_floating_ip_nat_rules_for_centralized_floatingip()
     # Send a GARP message on the external interface for the
     # centralized floatingip configured.
     ip_lib.send_ip_addr_adv_notif(self.snat_namespace.name,
                                   interface_name,
                                   fip['floating_ip_address'])
     return lib_constants.FLOATINGIP_STATUS_ACTIVE