Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions ifupdown2/addons/vrf.py
Original file line number Diff line number Diff line change
Expand Up @@ -265,13 +265,21 @@ def _iproute2_map_warn(self, errstr):
'map (%s)' %errstr)
self.warn_on_vrf_map_write_err = False

def _ensure_iproute2_vrf_dir(self):
"""Ensure the iproute2 VRF map directory exists"""
vrf_dir = os.path.dirname(self.iproute2_vrf_filename)
if not os.path.exists(vrf_dir):
os.makedirs(vrf_dir, exist_ok=True)
self.logger.info('vrf: created directory %s' % vrf_dir)

def _iproute2_vrf_map_sync_to_disk(self):
if (ifupdownflags.flags.DRYRUN or
not self.iproute2_vrf_map_sync_to_disk):
return
self.logger.info('vrf: syncing table map to %s'
%self.iproute2_vrf_filename)
try:
self._ensure_iproute2_vrf_dir()
with open(self.iproute2_vrf_filename, 'w') as f:
f.write(self.iproute2_vrf_filehdr %(self.vrf_table_id_start,
self.vrf_table_id_end))
Expand All @@ -286,6 +294,7 @@ def _iproute2_vrf_map_open(self, sync_vrfs=False, append=False):
%self.iproute2_vrf_filename)
if ifupdownflags.flags.DRYRUN:
return
self._ensure_iproute2_vrf_dir()
fmode = 'a+' if append else 'w'
if not append:
# write file header
Expand Down Expand Up @@ -357,6 +366,7 @@ def _iproute2_vrf_table_entry_add(self, vrfifaceobj, table_id):
old_vrf_name = self.iproute2_vrf_map.get(int(table_id))
if not old_vrf_name:
self.iproute2_vrf_map[int(table_id)] = vrfifaceobj.name
self._ensure_iproute2_vrf_dir()
with open(self.iproute2_vrf_filename, "a+") as vrf_map_fd:
vrf_map_fd.write('%s %s\n'
% (table_id, vrfifaceobj.name))
Expand Down