Example #1
0
    def create_from_subnet_request(cls, subnet_request, ctx):
        ipam_subnet_id = uuidutils.generate_uuid()
        subnet_manager = ipam_db_api.IpamSubnetManager(
            ipam_subnet_id, subnet_request.subnet_id)
        # Create subnet resource
        session = ctx.session
        subnet_manager.create(session)
        # If allocation pools are not specified, define them around
        # the subnet's gateway IP
        if not subnet_request.allocation_pools:
            pools = ipam_utils.generate_pools(subnet_request.subnet_cidr,
                                              subnet_request.gateway_ip)
        else:
            pools = subnet_request.allocation_pools
        # Create IPAM allocation pools
        cls.create_allocation_pools(subnet_manager, session, pools,
                                    subnet_request.subnet_cidr)

        return cls(ipam_subnet_id,
                   ctx,
                   cidr=subnet_request.subnet_cidr,
                   allocation_pools=pools,
                   gateway_ip=subnet_request.gateway_ip,
                   tenant_id=subnet_request.tenant_id,
                   subnet_id=subnet_request.subnet_id)
Example #2
0
 def setUp(self):
     super(TestIpamSubnetManager, self).setUp()
     self.ctx = context.get_admin_context()
     self.neutron_subnet_id = uuidutils.generate_uuid()
     self.ipam_subnet_id = uuidutils.generate_uuid()
     self.subnet_ip = '1.2.3.4'
     self.single_pool = ('1.2.3.4', '1.2.3.10')
     self.multi_pool = (('1.2.3.2', '1.2.3.12'), ('1.2.3.15', '1.2.3.24'))
     self.subnet_manager = db_api.IpamSubnetManager(self.ipam_subnet_id,
                                                    self.neutron_subnet_id)
     self.subnet_manager_id = self.subnet_manager.create(self.ctx)
     self.ctx.session.flush()
Example #3
0
 def __init__(self, internal_id, ctx, cidr=None,
              allocation_pools=None, gateway_ip=None, tenant_id=None,
              subnet_id=None):
     # NOTE: In theory it could have been possible to grant the IPAM
     # driver direct access to the database. While this is possible,
     # it would have led to duplicate code and/or non-trivial
     # refactorings in neutron.db.db_base_plugin_v2.
     # This is because in the Neutron V2 plugin logic DB management is
     # encapsulated within the plugin.
     self._cidr = cidr
     self._pools = allocation_pools
     self._gateway_ip = gateway_ip
     self._tenant_id = tenant_id
     self._subnet_id = subnet_id
     self.subnet_manager = ipam_db_api.IpamSubnetManager(internal_id,
                                                         self._subnet_id)
     self._context = ctx