def delete_deallocated_ips(self, deallocated_by_func): for ip in db.db_api.find_deallocated_ips( deallocated_by=deallocated_by_func(), ip_block_id=self.id): LOG.debug("Deleting deallocated IP: %s" % ip) generator = ipv4.plugin().get_generator(self) generator.ip_removed(ip.address) ip.delete() self.update(is_full=False)
def delete_deallocated_ips(self, deallocated_by_func): self.update(is_full=False) for ip in db.db_api.find_deallocated_ips( deallocated_by=deallocated_by_func(), ip_block_id=self.id): LOG.debug("Deleting deallocated IP: %s" % ip) generator = ipv4.plugin().get_generator(self) generator.ip_removed(ip.address) ip.delete()
def _db_connect(): # If you really need to do another migration before all of this goes into # quantum, and you need to access the DB, this is what you need: oparser = optparse.OptionParser(version="%%prog %s" % version.version_string()) create_options(oparser) (options, args) = config.parse_options(oparser) conf, app = config.Config.load_paste_app('melange', options, args) db_api.configure_db(conf, ipv4.plugin(), mac.plugin())
def _generate_ip(self, **kwargs): if self.is_ipv6(): generator = ipv6.address_generator_factory(self.cidr, **kwargs) address = next((address for address in IpAddressIterator(generator) if self.does_address_exists(address) is False), None) else: generator = ipv4.plugin().get_generator(self) address = next( (address for address in IpAddressIterator(generator) if self._address_is_allocatable(self.policy(), address)), None) if not address: self.update(is_full=True) raise exception.NoMoreAddressesError(_("IpBlock is full")) return address
def _generate_ip(self, **kwargs): if self.is_ipv6(): generator = ipv6.address_generator_factory(self.cidr, **kwargs) address = next((address for address in IpAddressIterator(generator) if self.does_address_exists(address) is False), None) else: generator = ipv4.plugin().get_generator(self) address = next((address for address in IpAddressIterator(generator) if self._address_is_allocatable(self.policy(), address)), None) if not address: self.update(is_full=True) raise exception.NoMoreAddressesError(_("IpBlock is full")) return address
def delete(self): for block in self.subnets(): block.delete() IpAddress.find_all(ip_block_id=self.id).delete() ipv4.plugin().get_generator(self).delete() super(IpBlock, self).delete()
from melange.common import config from melange.db import db_api from melange.ipam import models from melange.db.sqlalchemy import session from melange.openstack.common import config as openstack_config oparser = optparse.OptionParser() openstack_config.add_common_options(oparser) openstack_config.add_log_options(oparser) (options, args) = openstack_config.parse_options(oparser) if len(args) < 1: sys.exit("Please include the connection string for the nova DB") try: conf = config.load_app_environment(optparse.OptionParser()) db_api.configure_db(conf, ipv4.plugin(), mac.plugin()) nova_engine = session._create_engine({'sql_connection': args[0]}) instances = nova_engine.execute("select id,uuid from instances") melange_session = session.get_session() print "-----" for instance in instances: print "updating %(id)s with %(uuid)s" % instance session._ENGINE.execute("update interfaces set " "device_id='%(uuid)s' " "where device_id=%(id)s" % instance) except RuntimeError as error: sys.exit("ERROR: %s" % error)