Example #1
0
    def lease_ip(self, node_id):
        """
        Rent IP for the VPS on the node.
        :param node_id: Node, on which VPS is created.
        :param count: Number of IPs to rent.
        :return: list of rented IPs
        """
        assert node_id > 0

        hv_node = Server.active.get(pk=node_id)

        datacenters = hv_node.filter_parents(Datacenter)
        if len(datacenters) <= 0:
            raise Exception("Missing parent datacenters of hypervisor node %s" % node_id)

        datacenter = datacenters[0]

        # Find free IPNetworkPool (we have free and used IP pools in  this DC)
        ippools = datacenter.filter_childs(IPNetworkPool, status=Resource.STATUS_FREE)

        leased_ips = IPAddressPool.lease_ips([ippool.id for ippool in ippools], count=1)
        if len(leased_ips) <= 0:
            raise Exception("Unable to lease main IP for hypervisor %s" % node_id)

        return self.find_ip_info(leased_ips[0].address)
Example #2
0
    def lease_ip(self, node_id):
        """
        Rent IP for the VPS on the node.
        :param node_id: Node, on which VPS is created.
        :param count: Number of IPs to rent.
        :return: list of rented IPs
        """
        assert node_id > 0

        hv_node = Server.active.get(pk=node_id)

        datacenters = hv_node.filter_parents(Datacenter)
        if len(datacenters) <= 0:
            raise Exception(
                "Missing parent datacenters of hypervisor node %s" % node_id)

        datacenter = datacenters[0]

        # Find free IPNetworkPool (we have free and used IP pools in  this DC)
        ippools = datacenter.filter_childs(IPNetworkPool,
                                           status=Resource.STATUS_FREE)

        leased_ips = IPAddressPool.lease_ips([ippool.id for ippool in ippools],
                                             count=1)
        if len(leased_ips) <= 0:
            raise Exception("Unable to lease main IP for hypervisor %s" %
                            node_id)

        return self.find_ip_info(leased_ips[0].address)
Example #3
0
    def _handle_pool_addcidr(self, *args, **options):
        if not IPAddressPool.is_valid_network(options['net']):
            raise ValueError("Invalid network")

        IPNetworkPool.objects.create(network=options['net'])

        self._list_pools()
Example #4
0
    def get(self, request, format=None, *args, **kwargs):
        ip_pools = request.query_params.getlist('pool', None)
        ip_count = int(request.query_params.get('count', 1))

        if not ip_pools:
            raise ParseError()

        logger.debug(request.query_params)
        logger.info("Getting %s new ip addresses from pools: %s" %
                    (ip_count, ip_pools))

        rented_ips = IPAddressPool.lease_ips(ip_pools, ip_count)

        serializer = self.get_serializer(rented_ips, many=True)

        response = {'count': len(rented_ips), 'results': serializer.data}

        return Response(response)
Example #5
0
    def get(self, request, format=None, *args, **kwargs):
        ip_pools = request.query_params.getlist('pool', None)
        ip_count = int(request.query_params.get('count', 1))

        if not ip_pools:
            raise ParseError()

        logger.debug(request.query_params)
        logger.info("Getting %s new ip addresses from pools: %s" % (ip_count, ip_pools))

        rented_ips = IPAddressPool.lease_ips(ip_pools, ip_count)

        serializer = self.get_serializer(rented_ips, many=True)

        response = {
            'count': len(rented_ips),
            'results': serializer.data
        }

        return Response(response)
Example #6
0
 def __init__(self):
     self.available_ip_pools = IPAddressPool.get_all_pools()
Example #7
0
 def __init__(self):
     self.available_ip_pools = IPAddressPool.get_all_pools()
Example #8
0
    def _handle_pool_rent(self, *args, **options):
        ip_pool_ids = options['pool-id']
        ip_count = options['count']

        rent_ips = IPAddressPool.lease_ips(ip_pool_ids, count=ip_count)
        self._print_addresses(rent_ips)
Example #9
0
 def _list_pools(self):
     resource_writer = ConsoleResourceWriter(IPAddressPool.get_all_pools())
     resource_writer.print_table(fields=['id', 'parent', 'self', 'type', 'status', 'usage'], sort_by='parent')