Add interface, address, and route objects

Add some initial objects for interfaces, routes and addresses.
This commit is contained in:
Dan Prince 2014-06-09 10:42:19 -04:00
parent 8d3dc89842
commit 846e00d007
8 changed files with 83 additions and 7 deletions

View File

@ -16,4 +16,4 @@ import pbr.version
__version__ = pbr.version.VersionInfo(
'os_net_config').version_string()
'os_net_config').version_string()

66
os_net_config/objects.py Normal file
View File

@ -0,0 +1,66 @@
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import netaddr
class NetworkObjectException(Exception):
pass
class Route(object):
"""Base class for network routes."""
def __init__(self, netmask_cidr, gateway):
self.netmask_cidr = netmask_cidr
self.gateway = gateway
class Address(object):
"""Base class for network addresses."""
def __init__(self, ip_netmask, routes=[]):
self.ip_netmask = ip_netmask
ip_nw = netaddr.IPNetwork(self.ip_netmask)
self.ip = str(ip_nw.ip)
self.netmask = str(ip_nw.netmask)
self.version = ip_nw.version
self.routes = routes
class Interface(object):
"""Base class for network interfaces."""
def __init__(self, name, use_dhcp=False, use_dhcpv6=False, addresses=[],
mtu=1500):
self.name = name
self.mtu = mtu
self.use_dhcp = use_dhcp
self.addresses = addresses
self.bridge = None
self.type = None
def v4_addresses(self):
v4_addresses = []
for addr in self.addresses:
if addr.version == 4:
v4_addresses.append(addr)
return v4_addresses
def v6_addresses(self):
v6_addresses = []
for addr in self.addresses:
if addr.version == 6:
v6_addresses.append(addr)
return v6_addresses

View File

@ -10,4 +10,4 @@
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
# under the License.

View File

@ -18,6 +18,7 @@
import os
import fixtures
import stubout
import testtools
_TRUE_VALUES = ('True', 'true', '1', 'yes')
@ -31,6 +32,7 @@ class TestCase(testtools.TestCase):
"""Run before each test method to initialize test environment."""
super(TestCase, self).setUp()
self.stubs = stubout.StubOutForTesting()
test_timeout = os.environ.get('OS_TEST_TIMEOUT', 0)
try:
test_timeout = int(test_timeout)
@ -50,4 +52,9 @@ class TestCase(testtools.TestCase):
stderr = self.useFixture(fixtures.StringStream('stderr')).stream
self.useFixture(fixtures.MonkeyPatch('sys.stderr', stderr))
self.log_fixture = self.useFixture(fixtures.FakeLogger())
self.log_fixture = self.useFixture(fixtures.FakeLogger())
def tearDown(self):
self.stubs.UnsetAll()
self.stubs.SmartUnsetAll()
super(TestCase, self).tearDown()

View File

@ -25,4 +25,4 @@ from os_net_config.tests import base
class TestOs_net_config(base.TestCase):
def test_something(self):
pass
pass

View File

@ -1,2 +1,3 @@
pbr>=0.5.21,<1.0
Babel>=0.9.6
Babel>=0.9.6
netaddr>=0.7.6

View File

@ -19,4 +19,4 @@ import setuptools
setuptools.setup(
setup_requires=['pbr'],
pbr=True)
pbr=True)

View File

@ -8,4 +8,6 @@ sphinx>=1.1.2
oslosphinx
testrepository>=0.0.17
testscenarios>=0.4,<0.5
testtools>=0.9.32
testtools>=0.9.32
mock>=1.0
mox>=0.5.3