Removes the usage of the IPy module in favor of the netaddr module.

This commit is contained in:
Chuck Short 2011-06-25 01:54:28 +00:00 committed by Tarmac
commit 543a57a3d0
11 changed files with 46 additions and 48 deletions

View File

@ -56,11 +56,11 @@
import gettext import gettext
import glob import glob
import json import json
import netaddr
import os import os
import sys import sys
import time import time
import IPy
# If ../nova/__init__.py exists, add ../ to Python search path, so that # If ../nova/__init__.py exists, add ../ to Python search path, so that
# it will override what happens to be installed in /usr/(local/)lib/python... # it will override what happens to be installed in /usr/(local/)lib/python...
@ -518,7 +518,7 @@ class FloatingIpCommands(object):
def create(self, host, range): def create(self, host, range):
"""Creates floating ips for host by range """Creates floating ips for host by range
arguments: host ip_range""" arguments: host ip_range"""
for address in IPy.IP(range): for address in netaddr.IPNetwork(range):
db.floating_ip_create(context.get_admin_context(), db.floating_ip_create(context.get_admin_context(),
{'address': str(address), {'address': str(address),
'host': host}) 'host': host})
@ -526,7 +526,7 @@ class FloatingIpCommands(object):
def delete(self, ip_range): def delete(self, ip_range):
"""Deletes floating ips by range """Deletes floating ips by range
arguments: range""" arguments: range"""
for address in IPy.IP(ip_range): for address in netaddr.IPNetwork(ip_range):
db.floating_ip_destroy(context.get_admin_context(), db.floating_ip_destroy(context.get_admin_context(),
str(address)) str(address))

View File

@ -23,7 +23,7 @@ datastore.
""" """
import base64 import base64
import IPy import netaddr
import os import os
import urllib import urllib
import tempfile import tempfile
@ -452,7 +452,7 @@ class CloudController(object):
elif cidr_ip: elif cidr_ip:
# If this fails, it throws an exception. This is what we want. # If this fails, it throws an exception. This is what we want.
cidr_ip = urllib.unquote(cidr_ip).decode() cidr_ip = urllib.unquote(cidr_ip).decode()
IPy.IP(cidr_ip) netaddr.IPNetwork(cidr_ip)
values['cidr'] = cidr_ip values['cidr'] = cidr_ip
else: else:
values['cidr'] = '0.0.0.0/0' values['cidr'] = '0.0.0.0/0'

View File

@ -20,6 +20,7 @@
import calendar import calendar
import inspect import inspect
import netaddr
import os import os
from nova import db from nova import db
@ -27,7 +28,6 @@ from nova import exception
from nova import flags from nova import flags
from nova import log as logging from nova import log as logging
from nova import utils from nova import utils
from IPy import IP
LOG = logging.getLogger("nova.linux_net") LOG = logging.getLogger("nova.linux_net")
@ -707,7 +707,7 @@ def _dnsmasq_cmd(net):
'--listen-address=%s' % net['gateway'], '--listen-address=%s' % net['gateway'],
'--except-interface=lo', '--except-interface=lo',
'--dhcp-range=%s,static,120s' % net['dhcp_start'], '--dhcp-range=%s,static,120s' % net['dhcp_start'],
'--dhcp-lease-max=%s' % IP(net['cidr']).len(), '--dhcp-lease-max=%s' % len(netaddr.IPNetwork(net['cidr'])),
'--dhcp-hostsfile=%s' % _dhcp_file(net['bridge'], 'conf'), '--dhcp-hostsfile=%s' % _dhcp_file(net['bridge'], 'conf'),
'--dhcp-script=%s' % FLAGS.dhcpbridge, '--dhcp-script=%s' % FLAGS.dhcpbridge,
'--leasefile-ro'] '--leasefile-ro']

View File

@ -45,10 +45,9 @@ topologies. All of the network commands are issued to a subclass of
import datetime import datetime
import math import math
import netaddr
import socket import socket
import IPy
from nova import context from nova import context
from nova import db from nova import db
from nova import exception from nova import exception
@ -295,8 +294,8 @@ class NetworkManager(manager.SchedulerDependentManager):
def create_networks(self, context, cidr, num_networks, network_size, def create_networks(self, context, cidr, num_networks, network_size,
cidr_v6, gateway_v6, label, *args, **kwargs): cidr_v6, gateway_v6, label, *args, **kwargs):
"""Create networks based on parameters.""" """Create networks based on parameters."""
fixed_net = IPy.IP(cidr) fixed_net = netaddr.IPNetwork(cidr)
fixed_net_v6 = IPy.IP(cidr_v6) fixed_net_v6 = netaddr.IPNetwork(cidr_v6)
significant_bits_v6 = 64 significant_bits_v6 = 64
network_size_v6 = 1 << 64 network_size_v6 = 1 << 64
count = 1 count = 1
@ -305,15 +304,15 @@ class NetworkManager(manager.SchedulerDependentManager):
start_v6 = index * network_size_v6 start_v6 = index * network_size_v6
significant_bits = 32 - int(math.log(network_size, 2)) significant_bits = 32 - int(math.log(network_size, 2))
cidr = '%s/%s' % (fixed_net[start], significant_bits) cidr = '%s/%s' % (fixed_net[start], significant_bits)
project_net = IPy.IP(cidr) project_net = netaddr.IPNetwork(cidr)
net = {} net = {}
net['bridge'] = FLAGS.flat_network_bridge net['bridge'] = FLAGS.flat_network_bridge
net['dns'] = FLAGS.flat_network_dns net['dns'] = FLAGS.flat_network_dns
net['cidr'] = cidr net['cidr'] = cidr
net['netmask'] = str(project_net.netmask()) net['netmask'] = str(project_net.netmask)
net['gateway'] = str(project_net[1]) net['gateway'] = str(list(project_net)[1])
net['broadcast'] = str(project_net.broadcast()) net['broadcast'] = str(project_net.broadcast)
net['dhcp_start'] = str(project_net[2]) net['dhcp_start'] = str(list(project_net)[2])
if num_networks > 1: if num_networks > 1:
net['label'] = '%s_%d' % (label, count) net['label'] = '%s_%d' % (label, count)
else: else:
@ -324,15 +323,16 @@ class NetworkManager(manager.SchedulerDependentManager):
cidr_v6 = '%s/%s' % (fixed_net_v6[start_v6], cidr_v6 = '%s/%s' % (fixed_net_v6[start_v6],
significant_bits_v6) significant_bits_v6)
net['cidr_v6'] = cidr_v6 net['cidr_v6'] = cidr_v6
project_net_v6 = IPy.IP(cidr_v6)
project_net_v6 = netaddr.IPNetwork(cidr_v6)
if gateway_v6: if gateway_v6:
# use a pre-defined gateway if one is provided # use a pre-defined gateway if one is provided
net['gateway_v6'] = str(gateway_v6) net['gateway_v6'] = str(list(gateway_v6)[1])
else: else:
net['gateway_v6'] = str(project_net_v6[1]) net['gateway_v6'] = str(list(project_net_v6)[1])
net['netmask_v6'] = str(project_net_v6.prefixlen()) net['netmask_v6'] = str(project_net_v6._prefixlen)
network_ref = self.db.network_create_safe(context, net) network_ref = self.db.network_create_safe(context, net)
@ -356,7 +356,7 @@ class NetworkManager(manager.SchedulerDependentManager):
# to properties of the manager class? # to properties of the manager class?
bottom_reserved = self._bottom_reserved_ips bottom_reserved = self._bottom_reserved_ips
top_reserved = self._top_reserved_ips top_reserved = self._top_reserved_ips
project_net = IPy.IP(network_ref['cidr']) project_net = netaddr.IPNetwork(network_ref['cidr'])
num_ips = len(project_net) num_ips = len(project_net)
for index in range(num_ips): for index in range(num_ips):
address = str(project_net[index]) address = str(project_net[index])
@ -546,13 +546,13 @@ class VlanManager(NetworkManager):
' the vlan start cannot be greater' ' the vlan start cannot be greater'
' than 4094')) ' than 4094'))
fixed_net = IPy.IP(cidr) fixed_net = netaddr.IPNetwork(cidr)
if fixed_net.len() < num_networks * network_size: if len(fixed_net) < num_networks * network_size:
raise ValueError(_('The network range is not big enough to fit ' raise ValueError(_('The network range is not big enough to fit '
'%(num_networks)s. Network size is %(network_size)s' % '%(num_networks)s. Network size is %(network_size)s' %
locals())) locals()))
fixed_net_v6 = IPy.IP(cidr_v6) fixed_net_v6 = netaddr.IPNetwork(cidr_v6)
network_size_v6 = 1 << 64 network_size_v6 = 1 << 64
significant_bits_v6 = 64 significant_bits_v6 = 64
for index in range(num_networks): for index in range(num_networks):
@ -561,14 +561,14 @@ class VlanManager(NetworkManager):
start_v6 = index * network_size_v6 start_v6 = index * network_size_v6
significant_bits = 32 - int(math.log(network_size, 2)) significant_bits = 32 - int(math.log(network_size, 2))
cidr = "%s/%s" % (fixed_net[start], significant_bits) cidr = "%s/%s" % (fixed_net[start], significant_bits)
project_net = IPy.IP(cidr) project_net = netaddr.IPNetwork(cidr)
net = {} net = {}
net['cidr'] = cidr net['cidr'] = cidr
net['netmask'] = str(project_net.netmask()) net['netmask'] = str(project_net.netmask)
net['gateway'] = str(project_net[1]) net['gateway'] = str(list(project_net)[1])
net['broadcast'] = str(project_net.broadcast()) net['broadcast'] = str(project_net.broadcast)
net['vpn_private_address'] = str(project_net[2]) net['vpn_private_address'] = str(list(project_net)[2])
net['dhcp_start'] = str(project_net[3]) net['dhcp_start'] = str(list(project_net)[3])
net['vlan'] = vlan net['vlan'] = vlan
net['bridge'] = 'br%s' % vlan net['bridge'] = 'br%s' % vlan
if(FLAGS.use_ipv6): if(FLAGS.use_ipv6):

View File

@ -18,7 +18,7 @@
""" """
Base class of Unit Tests for all network models Base class of Unit Tests for all network models
""" """
import IPy import netaddr
import os import os
from nova import context from nova import context

View File

@ -18,7 +18,7 @@
""" """
Unit Tests for flat network code Unit Tests for flat network code
""" """
import IPy import netaddr
import os import os
import unittest import unittest
@ -45,8 +45,8 @@ class FlatNetworkTestCase(base.NetworkTestCase):
self.context._project = self.projects[0] self.context._project = self.projects[0]
self.context.project_id = self.projects[0].id self.context.project_id = self.projects[0].id
pubnet = IPy.IP(flags.FLAGS.floating_range) pubnet = netaddr.IPRange(flags.FLAGS.floating_range)
address = str(pubnet[0]) address = str(list(pubnet)[0])
try: try:
db.floating_ip_get_by_address(context.get_admin_context(), address) db.floating_ip_get_by_address(context.get_admin_context(), address)
except exception.NotFound: except exception.NotFound:

View File

@ -18,7 +18,7 @@
""" """
Unit Tests for network code Unit Tests for network code
""" """
import IPy import netaddr
import os import os
from nova import test from nova import test

View File

@ -18,7 +18,7 @@
""" """
Unit Tests for vlan network code Unit Tests for vlan network code
""" """
import IPy import netaddr
import os import os
from nova import context from nova import context
@ -44,8 +44,8 @@ class VlanNetworkTestCase(base.NetworkTestCase):
# TODO(vish): better way of adding floating ips # TODO(vish): better way of adding floating ips
self.context._project = self.projects[0] self.context._project = self.projects[0]
self.context.project_id = self.projects[0].id self.context.project_id = self.projects[0].id
pubnet = IPy.IP(flags.FLAGS.floating_range) pubnet = netaddr.IPNetwork(flags.FLAGS.floating_range)
address = str(pubnet[0]) address = str(list(pubnet)[0])
try: try:
db.floating_ip_get_by_address(context.get_admin_context(), address) db.floating_ip_get_by_address(context.get_admin_context(), address)
except exception.NotFound: except exception.NotFound:

View File

@ -38,6 +38,7 @@ Supports KVM, LXC, QEMU, UML, and XEN.
import hashlib import hashlib
import multiprocessing import multiprocessing
import netaddr
import os import os
import random import random
import re import re
@ -53,8 +54,6 @@ from xml.etree import ElementTree
from eventlet import greenthread from eventlet import greenthread
from eventlet import tpool from eventlet import tpool
import IPy
from nova import context from nova import context
from nova import db from nova import db
from nova import exception from nova import exception

View File

@ -21,7 +21,7 @@
"""Network-releated utilities for supporting libvirt connection code.""" """Network-releated utilities for supporting libvirt connection code."""
import IPy import netaddr
from nova import context from nova import context
from nova import db from nova import db
@ -34,18 +34,18 @@ FLAGS = flags.FLAGS
def get_net_and_mask(cidr): def get_net_and_mask(cidr):
net = IPy.IP(cidr) net = netaddr.IPNetwork(cidr)
return str(net.net()), str(net.netmask()) return str(net.ip), str(net.netmask)
def get_net_and_prefixlen(cidr): def get_net_and_prefixlen(cidr):
net = IPy.IP(cidr) net = netaddr.IPNetwork(cidr)
return str(net.net()), str(net.prefixlen()) return str(net.ip), str(net._prefixlen)
def get_ip_version(cidr): def get_ip_version(cidr):
net = IPy.IP(cidr) net = netaddr.IPNetwork(cidr)
return int(net.version()) return int(net.version)
def get_network_info(instance): def get_network_info(instance):

View File

@ -1,7 +1,6 @@
SQLAlchemy==0.6.3 SQLAlchemy==0.6.3
pep8==0.5.0 pep8==0.5.0
pylint==0.19 pylint==0.19
IPy==0.70
Cheetah==2.4.4 Cheetah==2.4.4
M2Crypto==0.20.2 M2Crypto==0.20.2
amqplib==0.6.1 amqplib==0.6.1