mirror of
https://github.com/CumulusNetworks/ifupdown2.git
synced 2024-05-06 15:54:50 +00:00
vrf: add and delete l3mdev task cgroups
Ticket: CM-9776 Reviewed By: Testing Done: Tested ifup and ifdown of a vrf dev $ifup -a -v info: Executing cgcreate -g l3mdev:blue info: Executing cgset -r l3mdev.master-device=blue blue $ifdown -a -v info: Executing cgdelete -g l3mdev:blue
This commit is contained in:
@@ -267,29 +267,41 @@ class vrf(moduleBase):
|
|||||||
%(ifaceobj.name, s, str(e)))
|
%(ifaceobj.name, s, str(e)))
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def _create_cgroup(self, ifaceobj):
|
||||||
|
try:
|
||||||
|
self.exec_command('cgcreate -g l3mdev:%s' %ifaceobj.name)
|
||||||
|
self.exec_command('cgset -r l3mdev.master-device=%s %s'
|
||||||
|
%(ifaceobj.name, ifaceobj.name))
|
||||||
|
except Exception, e:
|
||||||
|
self.log_warn('%s: cgroup create failed (%s)\n'
|
||||||
|
%(ifaceobj.name, str(e)), ifaceobj)
|
||||||
|
|
||||||
def _up_vrf_dev(self, ifaceobj, vrf_table):
|
def _up_vrf_dev(self, ifaceobj, vrf_table):
|
||||||
if vrf_table == 'auto':
|
if vrf_table == 'auto':
|
||||||
vrf_table = _get_avail_vrf_table_id(ifaceobj.name)
|
vrf_table = _get_avail_vrf_table_id(ifaceobj.name)
|
||||||
|
|
||||||
try:
|
if not self.ipcmd.link_exists(ifaceobj.name):
|
||||||
if not self.ipcmd.link_exists(ifaceobj.name):
|
try:
|
||||||
self.ipcmd.link_create(ifaceobj.name, 'vrf',
|
self.ipcmd.link_create(ifaceobj.name, 'vrf',
|
||||||
{'table' : '%s' %vrf_table})
|
{'table' : '%s' %vrf_table})
|
||||||
else:
|
except Exception, e:
|
||||||
# if the device exists, check if table id is same
|
self.log_error('%s: create failed (%s)\n'
|
||||||
vrfdev_attrs = self.ipcmd.link_get_linkinfo_attrs(ifaceobj.name)
|
%(ifaceobj.name, str(e)))
|
||||||
if vrfdev_attrs:
|
else:
|
||||||
running_table = vrfdev_attrs.get('table', None)
|
# if the device exists, check if table id is same
|
||||||
if vrf_table != running_table:
|
vrfdev_attrs = self.ipcmd.link_get_linkinfo_attrs(ifaceobj.name)
|
||||||
self.log_error("cannot change vrf table id,"
|
if vrfdev_attrs:
|
||||||
" running table id %s is different from config id %s)"
|
running_table = vrfdev_attrs.get('table', None)
|
||||||
%(running_table, vrf_table))
|
if vrf_table != running_table:
|
||||||
|
self.log_error('%s: cannot change vrf table id,running table id %s is different from config id %s' %(running_table, vrf_table))
|
||||||
|
|
||||||
|
try:
|
||||||
self._iproute2_vrf_table_entry_add(ifaceobj.name, vrf_table)
|
self._iproute2_vrf_table_entry_add(ifaceobj.name, vrf_table)
|
||||||
self._add_vrf_rules(ifaceobj.name, vrf_table)
|
self._add_vrf_rules(ifaceobj.name, vrf_table)
|
||||||
self._add_vrf_slaves(ifaceobj)
|
self._add_vrf_slaves(ifaceobj)
|
||||||
|
self._create_cgroup(ifaceobj)
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
self.logger.warn('%s: %s' %(ifaceobj.name, str(e)))
|
self.log_error('%s: %s' %(ifaceobj.name, str(e)))
|
||||||
|
|
||||||
|
|
||||||
def _up_vrf_default_route(self, ifaceobj, vrf_table):
|
def _up_vrf_default_route(self, ifaceobj, vrf_table):
|
||||||
vrf_default_route = ifaceobj.get_attr_value_first('vrf-default-route')
|
vrf_default_route = ifaceobj.get_attr_value_first('vrf-default-route')
|
||||||
@@ -319,6 +331,13 @@ class vrf(moduleBase):
|
|||||||
except Exception, e:
|
except Exception, e:
|
||||||
self.log_error(str(e))
|
self.log_error(str(e))
|
||||||
|
|
||||||
|
def _delete_cgroup(self, ifaceobj):
|
||||||
|
try:
|
||||||
|
self.exec_command('cgdelete -g l3mdev:%s' %ifaceobj.name)
|
||||||
|
except Exception, e:
|
||||||
|
self.log_warn('%s: cgroup create failed (%s)\n'
|
||||||
|
%(ifaceobj.name, str(e)), ifaceobj)
|
||||||
|
|
||||||
def _down_vrf_dev(self, ifaceobj, vrf_table):
|
def _down_vrf_dev(self, ifaceobj, vrf_table):
|
||||||
if vrf_table == 'auto':
|
if vrf_table == 'auto':
|
||||||
vrf_table = self._get_iproute2_vrf_table(ifaceobj.name)
|
vrf_table = self._get_iproute2_vrf_table(ifaceobj.name)
|
||||||
@@ -330,6 +349,7 @@ class vrf(moduleBase):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
self._iproute2_vrf_table_entry_del(vrf_table)
|
self._iproute2_vrf_table_entry_del(vrf_table)
|
||||||
|
self._delete_cgroup(ifaceobj)
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
self.logger.info('%s: %s' %(ifaceobj.name, str(e)))
|
self.logger.info('%s: %s' %(ifaceobj.name, str(e)))
|
||||||
pass
|
pass
|
||||||
|
Reference in New Issue
Block a user