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