def test_get_ea_for_range(self):
     network = {'router:external': False, 'shared': False}
     ea = ea_manager.get_ea_for_range(self.user_id, self.tenant_id,
                                      self.tenant_name, network)
     self.assertIsInstance(ea, ib_objects.EA)
     self.assertEqual(str(True), ea.get('Cloud API Owned'))
     self.assertEqual(self.tenant_id, ea.get('Tenant ID'))
     self.assertEqual(self.tenant_name, ea.get('Tenant Name'))
     self.assertEqual(self.user_id, ea.get('Account'))
 def test_get_ea_for_range(self):
     network = {'router:external': False,
                'shared': False}
     ea = ea_manager.get_ea_for_range(self.user_id, self.tenant_id,
                                      self.tenant_name, network)
     self.assertIsInstance(ea, ib_objects.EA)
     self.assertEqual(str(True), ea.get('Cloud API Owned'))
     self.assertEqual(self.tenant_id, ea.get('Tenant ID'))
     self.assertEqual(self.tenant_name, ea.get('Tenant Name'))
     self.assertEqual(self.user_id, ea.get('Account'))
Exemple #3
0
    def _allocate_pools(self,
                        rollback_list,
                        pools,
                        cidr,
                        ip_version,
                        check_if_exists=False):
        ea_range = eam.get_ea_for_range(self.ib_cxt.user_id,
                                        self.ib_cxt.tenant_id,
                                        self.ib_cxt.tenant_name,
                                        self.ib_cxt.network)
        is_shared = self.ib_cxt.network_is_shared_or_external

        for pool in pools:
            disable = True

            # db_base_plugin uses netaddr but neutronclient uses dict for
            # ip range
            if isinstance(pool, dict) and pool.get('start'):
                start_ip = pool.get('start')
            else:
                start_ip = netaddr.IPAddress(pool.first, ip_version).format()

            if isinstance(pool, dict) and pool.get('end'):
                end_ip = pool.get('end')
            else:
                end_ip = netaddr.IPAddress(pool.last, ip_version).format()

            if check_if_exists:
                ib_ip_range = ib_objects.IPRange.search(
                    self.ib_cxt.connector,
                    network_view=self.ib_cxt.mapping.network_view,
                    network=cidr,
                    start_addr=start_ip,
                    end_addr=end_ip)
                if ib_ip_range:
                    managed = "Unmanaged"  # Not managed by OpenStack
                    if not is_shared or self._range_is_managed(ib_ip_range):
                        managed = "Managed"  # Managed by OpenStack
                        eas = ib_ip_range.extattrs
                        if eas:
                            ea_dict = ib_ip_range.extattrs.ea_dict
                            ea_dict.update(ea_range.ea_dict)
                            ib_ip_range.extattrs = ib_objects.EA(ea_dict)
                        else:
                            ib_ip_range.extattrs = ea_range
                        ib_ip_range.update()
                    LOG.info("%s ip range already existed: %s" %
                             (managed, ib_ip_range))
                    continue

            ib_ip_range = self.ib_cxt.ibom.create_ip_range(
                self.ib_cxt.mapping.network_view, start_ip, end_ip, cidr,
                disable, ea_range)
            LOG.info("ip range has been created: %s", ib_ip_range)
            rollback_list.append(ib_ip_range)
Exemple #4
0
    def _allocate_pools(self, rollback_list, pools, cidr, ip_version,
                        check_if_exists=False):
        ea_range = eam.get_ea_for_range(self.ib_cxt.user_id,
                                        self.ib_cxt.tenant_id,
                                        self.ib_cxt.tenant_name,
                                        self.ib_cxt.network)
        is_shared = self.ib_cxt.network_is_shared_or_external

        for pool in pools:
            disable = True

            # db_base_plugin uses netaddr but neutronclient uses dict for
            # ip range
            if isinstance(pool, dict) and pool.get('start'):
                start_ip = pool.get('start')
            else:
                start_ip = netaddr.IPAddress(pool.first, ip_version).format()

            if isinstance(pool, dict) and pool.get('end'):
                end_ip = pool.get('end')
            else:
                end_ip = netaddr.IPAddress(pool.last, ip_version).format()

            if check_if_exists:
                ib_ip_range = ib_objects.IPRange.search(
                    self.ib_cxt.connector,
                    network_view=self.ib_cxt.mapping.network_view,
                    network=cidr,
                    start_addr=start_ip,
                    end_addr=end_ip)
                if ib_ip_range:
                    managed = "Unmanaged"  # Not managed by OpenStack
                    if not is_shared or self._range_is_managed(ib_ip_range):
                        managed = "Managed"  # Managed by OpenStack
                        eas = ib_ip_range.extattrs
                        if eas:
                            ea_dict = ib_ip_range.extattrs.ea_dict
                            ea_dict.update(ea_range.ea_dict)
                            ib_ip_range.extattrs = ib_objects.EA(ea_dict)
                        else:
                            ib_ip_range.extattrs = ea_range
                        ib_ip_range.update()
                    LOG.info("%s ip range already existed: %s" %
                             (managed, ib_ip_range))
                    continue

            ib_ip_range = self.ib_cxt.ibom.create_ip_range(
                self.ib_cxt.mapping.network_view,
                start_ip,
                end_ip,
                cidr,
                disable,
                ea_range)
            LOG.info("ip range has been created: %s", ib_ip_range)
            rollback_list.append(ib_ip_range)