Ejemplo n.º 1
0
def concat_networks(context, pool_1, pool_2):
    if pool_1.is_free and pool_2.is_free:
        network_1 = pool_to_network(pool_1)
        network_2 = pool_to_network(pool_2)
        if network_1.size == network_2.size:
            ipset = IPSet([network_1, network_2])
            cidr = ipset.iter_cidrs()[0]
            pool_1.ip = cidr.first
            pool_1.netmask = cidr.netmask.value
            count = len(pool_to_network(pool_1))
            pool_1.count = count
            pool_delete(context, pool_2.pool_id)
            concat_pool(context, pool_1)
Ejemplo n.º 2
0
def concat_networks(context, pool_1, pool_2):
    if pool_1.is_free and pool_2.is_free:
        network_1 = pool_to_network(pool_1)
        network_2 = pool_to_network(pool_2)
        if network_1.size == network_2.size:
            ipset = IPSet([network_1, network_2])
            cidr = ipset.iter_cidrs()[0]
            pool_1.ip = cidr.first
            pool_1.netmask = cidr.netmask.value
            count = len(pool_to_network(pool_1))
            pool_1.count = count
            pool_delete(context, pool_2.pool_id)
            concat_pool(context, pool_1)
Ejemplo n.º 3
0
 def get(self, pool_name):
     parser.add_argument('netmask', type=int, help='set netmask parameter')
     parser.add_argument('stack_id',
                         type=str,
                         help='set stack_id parameter')
     parser.add_argument('stack_name',
                         type=str,
                         help='set stack_name parameter')
     args = parser.parse_args()
     net_mask = int(args['netmask'])
     stack_id = args['stack_id']
     stack_name = args['stack_name']
     if 0 > net_mask > 32:
         abort(400, message="Bad mask: %s" % net_mask)
     try:
         ip_pool = IPPoolV2()
         allocated_pool = ip_pool.allocate(net_mask, pool_name, stack_id,
                                           stack_name)
         return {
             'pool_id': allocated_pool.pool_id,
             'pool_group': pool_name,
             'allocated_network': str(pool_to_network(allocated_pool)),
             'allocated_range': pool_to_range(allocated_pool)
         }
     except IOError as e:
         abort(406, mesage="Not Acceptable %s" % e)
Ejemplo n.º 4
0
 def get(self, pool_name):
     parser.add_argument("netmask", type=int, help="set netmask parameter")
     parser.add_argument("stack_id", type=str, help="set stack_id parameter")
     parser.add_argument("stack_name", type=str, help="set stack_name parameter")
     args = parser.parse_args()
     net_mask = int(args["netmask"])
     stack_id = args["stack_id"]
     stack_name = args["stack_name"]
     if 0 > net_mask > 32:
         abort(400, message="Bad mask: %s" % net_mask)
     try:
         ip_pool = IPPoolV2()
         allocated_pool = ip_pool.allocate(net_mask, pool_name, stack_id, stack_name)
         return {
             "pool_id": allocated_pool.pool_id,
             "pool_group": pool_name,
             "allocated_network": str(pool_to_network(allocated_pool)),
             "allocated_range": pool_to_range(allocated_pool),
         }
     except IOError as e:
         abort(406, mesage="Not Acceptable %s" % e)
Ejemplo n.º 5
0
 def allocate(self, netmask, net_group_name, stack_id=None, stack_name=None):
     context = get_session()
     network = IPNetwork('0.0.0.0/%s' % netmask)
     pool = db.api.free_pool_find_by_netmask_and_netgroup(context, network.netmask.value, net_group_name)
     ip_network = pool_to_network(pool)
     if ip_network.size == network.size:
         pool.is_free = False
         pool.stack_id = stack_id
         pool.stack_name = stack_name
         pool.save()
         allocated_pool = pool
     else:
         pool_list = list(ip_network.subnet(netmask))
         allocated_network = pool_list[0]
         pool_list = IPSet(pool_list[1::])
         allocated_pool = db.api.used_pool_add(context, {'initial_pool': pool.initial_pool, 'cidr': allocated_network,
                                                         'stack_id': stack_id, 'stack_name': stack_name})
         for free_pool in pool_list.iter_cidrs():
             db.api.free_pool_add(context, {'initial_pool':  pool.initial_pool, 'cidr': free_pool})
         db.api.pool_delete(context, pool.pool_id)
         logger.info('allocate pool id %s %s' % (allocated_pool.pool_id, allocated_network))
     return allocated_pool
Ejemplo n.º 6
0
 def allocate(self,
              netmask,
              net_group_name,
              stack_id=None,
              stack_name=None):
     context = get_session()
     network = IPNetwork('0.0.0.0/%s' % netmask)
     pool = db.api.free_pool_find_by_netmask_and_netgroup(
         context, network.netmask.value, net_group_name)
     ip_network = pool_to_network(pool)
     if ip_network.size == network.size:
         pool.is_free = False
         pool.stack_id = stack_id
         pool.stack_name = stack_name
         pool.save()
         allocated_pool = pool
     else:
         pool_list = list(ip_network.subnet(netmask))
         allocated_network = pool_list[0]
         pool_list = IPSet(pool_list[1::])
         allocated_pool = db.api.used_pool_add(
             context, {
                 'initial_pool': pool.initial_pool,
                 'cidr': allocated_network,
                 'stack_id': stack_id,
                 'stack_name': stack_name
             })
         for free_pool in pool_list.iter_cidrs():
             db.api.free_pool_add(context, {
                 'initial_pool': pool.initial_pool,
                 'cidr': free_pool
             })
         db.api.pool_delete(context, pool.pool_id)
         logger.info('allocate pool id %s %s' %
                     (allocated_pool.pool_id, allocated_network))
     return allocated_pool