yield route
- def list_routes(self, ip_version):
+ def list_routes(self, ip_version, **kwargs):
args = ['list']
args += self._dev_args()
args += self._table_args()
+ for k, v in kwargs.items():
+ args += [k, v]
output = self._run([ip_version], tuple(args))
- return [r for r in self._parse_routes(ip_version, output)]
+ return [r for r in self._parse_routes(ip_version, output, **kwargs)]
def list_onlink_routes(self, ip_version):
- args = ['list']
- args += self._dev_args()
- args += ['scope', 'link']
- args += self._table_args()
-
- output = self._run([ip_version], tuple(args))
- return [r for r in self._parse_routes(ip_version, output, scope='link')
- if 'src' not in r]
+ routes = self.list_routes(ip_version, scope='link')
+ return [r for r in routes if 'src' not in r]
def add_onlink_route(self, cidr):
- ip_version = get_ip_version(cidr)
- args = ['replace', cidr]
- args += self._dev_args()
- args += ['scope', 'link']
- args += self._table_args()
- self._as_root([ip_version], tuple(args))
+ self.add_route(cidr, scope='link')
def delete_onlink_route(self, cidr):
- ip_version = get_ip_version(cidr)
- args = ['del', cidr]
- args += self._dev_args()
- args += ['scope', 'link']
- args += self._table_args()
- self._as_root([ip_version], tuple(args))
+ self.delete_route(cidr, scope='link')
def get_gateway(self, scope=None, filters=None, ip_version=None):
options = [ip_version] if ip_version else []
'proto', 'kernel',
'dev', device))
- def add_route(self, cidr, via=None, table=None):
+ def add_route(self, cidr, via=None, table=None, **kwargs):
ip_version = get_ip_version(cidr)
args = ['replace', cidr]
if via:
args += ['via', via]
args += self._dev_args()
args += self._table_args(table)
+ for k, v in kwargs.items():
+ args += [k, v]
self._as_root([ip_version], tuple(args))
- def delete_route(self, cidr, via=None, table=None):
+ def delete_route(self, cidr, via=None, table=None, **kwargs):
ip_version = get_ip_version(cidr)
args = ['del', cidr]
if via:
args += ['via', via]
args += self._dev_args()
args += self._table_args(table)
+ for k, v in kwargs.items():
+ args += [k, v]
self._as_root([ip_version], tuple(args))
'dev', self.parent.name,
'table', self.table))
+ def test_add_route_with_scope(self):
+ self.route_cmd.add_route(self.cidr, scope='link')
+ self._assert_sudo([self.ip_version],
+ ('replace', self.cidr,
+ 'dev', self.parent.name,
+ 'scope', 'link'))
+
def test_delete_route(self):
self.route_cmd.delete_route(self.cidr, self.ip, self.table)
self._assert_sudo([self.ip_version],
'dev', self.parent.name,
'table', self.table))
+ def test_delete_route_with_scope(self):
+ self.route_cmd.delete_route(self.cidr, scope='link')
+ self._assert_sudo([self.ip_version],
+ ('del', self.cidr,
+ 'dev', self.parent.name,
+ 'scope', 'link'))
+
def test_list_routes(self):
self.parent._run.return_value = (
"default via 172.124.4.1 dev eth0 metric 100\n"
self.ip_version)
self.assertEqual(['10.0.0.0/22'], [r['cidr'] for r in routes])
self._assert_call([self.ip_version],
- ('list', 'dev', self.parent.name, 'scope', 'link',
- 'table', self.table))
+ ('list', 'dev', self.parent.name,
+ 'table', self.table, 'scope', 'link'))
def test_add_onlink_route_subtable(self):
self.route_cmd.table(self.table).add_onlink_route(self.cidr)
self._assert_sudo([self.ip_version],
('replace', self.cidr,
'dev', self.parent.name,
- 'scope', 'link',
- 'table', self.table))
+ 'table', self.table,
+ 'scope', 'link'))
def test_delete_onlink_route_subtable(self):
self.route_cmd.table(self.table).delete_onlink_route(self.cidr)
self._assert_sudo([self.ip_version],
('del', self.cidr,
'dev', self.parent.name,
- 'scope', 'link',
- 'table', self.table))
+ 'table', self.table,
+ 'scope', 'link'))
class TestIPv6IpRouteCommand(TestIpRouteCommand):