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'))
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)
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)