1
0
mirror of https://github.com/CumulusNetworks/ifupdown2.git synced 2024-05-06 15:54:50 +00:00

ifupdown: add new ifupdownflags class to carry ifupdown flags

Ticket: cleanup
Reviewed By:
Testing Done: Tested ifupdown sanity

This gets rid of some ugly previous flag handling which was
passed through modules. This creates a global instance of
flags that all addon modules and helper modules can use.

Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com>
This commit is contained in:
Roopa Prabhu
2016-04-14 14:45:47 -07:00
parent 96a71b65cb
commit fc5e1735c0
24 changed files with 144 additions and 151 deletions

View File

@@ -17,7 +17,7 @@ import shlex
from iface import *
from ifupdown.utils import utils
import ifupdownflags as ifupdownflags
class ifupdownBase(object):
@@ -30,7 +30,7 @@ class ifupdownBase(object):
cmdout = ''
try:
self.logger.info('executing ' + cmd)
if self.DRYRUN:
if ifupdownflags.flags.DRYRUN:
return cmdout
ch = subprocess.Popen(shlex.split(cmd),
stdout=subprocess.PIPE,
@@ -51,7 +51,7 @@ class ifupdownBase(object):
return cmdout
def ignore_error(self, errmsg):
if (self.FORCE == True or re.search(r'exists', errmsg,
if (ifupdownflags.flags.FORCE == True or re.search(r'exists', errmsg,
re.IGNORECASE | re.MULTILINE) is not None):
return True
return False

21
ifupdown/ifupdownflags.py Normal file
View File

@@ -0,0 +1,21 @@
#!/usr/bin/env python
#
# Copyright 2015 Cumulus Networks, Inc. All rights reserved.
#
# Author: Roopa Prabhu, roopa@cumulusnetworks.com
#
#
class ifupdownFlags():
def __init__(self):
self.FORCE = False
self.DRYRUN = False
self.NOWAIT = False
self.PERFMODE = False
self.CACHE = False
# Flags
self.CACHE_FLAGS = 0x0
flags = ifupdownFlags()

View File

@@ -17,6 +17,7 @@ import copy
import json
import ifupdown.statemanager as statemanager
import ifupdown.ifupdownconfig as ifupdownConfig
import ifupdown.ifupdownflags as ifupdownflags
from networkinterfaces import *
from iface import *
from scheduler import *
@@ -38,16 +39,6 @@ _crossmark = u'\u2717'
_success_sym = '(%s)' %_tickmark
_error_sym = '(%s)' %_crossmark
class ifupdownFlags():
FORCE = False
DRYRUN = False
NOWAIT = False
PERFMODE = False
CACHE = False
# Flags
CACHE_FLAGS = 0x0
class ifupdownMainFlags():
WITH_DEPENDS = False
ALL = False
@@ -195,13 +186,14 @@ class ifupdownMain(ifupdownBase):
AttributeError, KeyError """
self.logger = logging.getLogger('ifupdown')
self.FORCE = force
self.DRYRUN = dryrun
self.NOWAIT = nowait
self.PERFMODE = perfmode
self.CACHE = cache
ifupdownflags.flags.FORCE = force
ifupdownflags.flags.DRYRUN = dryrun
ifupdownflags.flags.NOWAIT = nowait
ifupdownflags.flags.PERFMODE = perfmode
ifupdownflags.flags.CACHE = cache
# Can be used to provide hints for caching
self.CACHE_FLAGS = 0x0
ifupdownflags.flags.CACHE_FLAGS = 0x0
self.flags = ifupdownMainFlags()
@@ -219,14 +211,6 @@ class ifupdownMain(ifupdownBase):
self.flags.DELETE_DEPENDENT_IFACES_WITH_NOCONFIG = False
self.flags.ADDONS_ENABLE = addons_enable
# Copy flags into ifupdownFlags
# XXX: before we transition fully to ifupdownFlags
ifupdownFlags.FORCE = force
ifupdownFlags.DRYRUN = dryrun
ifupdownFlags.NOWAIT = nowait
ifupdownFlags.PERFMODE = perfmode
ifupdownFlags.CACHE = cache
self.ifaces = OrderedDict()
self.njobs = njobs
self.pp = pprint.PrettyPrinter(indent=4)
@@ -826,12 +810,7 @@ class ifupdownMain(ifupdownBase):
mclass = getattr(m, mname)
except:
raise
minstance = mclass(force=self.FORCE,
dryrun=self.DRYRUN,
nowait=self.NOWAIT,
perfmode=self.PERFMODE,
cache=self.CACHE,
cacheflags=self.CACHE_FLAGS)
minstance = mclass()
self.modules[mname] = minstance
try:
self.module_attrs[mname] = minstance.get_modinfo()
@@ -1157,7 +1136,7 @@ class ifupdownMain(ifupdownBase):
if self.flags.WITH_DEPENDS else False)
finally:
self._process_delay_admin_state_queue('up')
if not self.DRYRUN and self.flags.ADDONS_ENABLE:
if not ifupdownflags.flags.DRYRUN and self.flags.ADDONS_ENABLE:
self._save_state()
if not iface_read_ret or not ret:
@@ -1224,7 +1203,7 @@ class ifupdownMain(ifupdownBase):
if self.flags.WITH_DEPENDS else False)
finally:
self._process_delay_admin_state_queue('down')
if not self.DRYRUN and self.flags.ADDONS_ENABLE:
if not ifupdownflags.flags.DRYRUN and self.flags.ADDONS_ENABLE:
self._save_state()
def query(self, ops, auto=False, allow_classes=None, ifacenames=None,
@@ -1390,7 +1369,7 @@ class ifupdownMain(ifupdownBase):
ret = self._sched_ifaces(interfaces_to_up, upops,
followdependents=True
if self.flags.WITH_DEPENDS else False)
if self.DRYRUN:
if ifupdownflags.flags.DRYRUN:
return
self._save_state()
@@ -1579,7 +1558,7 @@ class ifupdownMain(ifupdownBase):
pass
finally:
self._process_delay_admin_state_queue('up')
if self.DRYRUN:
if ifupdownflags.flags.DRYRUN:
return
self._save_state()

View File

@@ -12,7 +12,7 @@ from socket import AF_BRIDGE
from iff import IFF_UP
from rtnetlink import *
import os
import ifupdownmain
import ifupdownflags as ifupdownflags
class rtnetlinkApi(RtNetlink):
@@ -42,7 +42,7 @@ class rtnetlinkApi(RtNetlink):
def create_vlan(self, link, ifname, vlanid):
self.logger.info('rtnetlink: ip link add link %s name %s type vlan id %s' %(link, ifname, vlanid))
if ifupdownmain.ifupdownFlags.DRYRUN:
if ifupdownflags.flags.DRYRUN:
return
try:
ifindex = self.get_ifindex(link)
@@ -66,7 +66,7 @@ class rtnetlinkApi(RtNetlink):
def create_macvlan(self, ifname, link, mode='private'):
self.logger.info('rtnetlink: ip link add link %s name %s type macvlan mode private' %(link, ifname))
if ifupdownmain.ifupdownFlags.DRYRUN:
if ifupdownflags.flags.DRYRUN:
return
try:
ifindex = self.get_ifindex(link)
@@ -91,7 +91,7 @@ class rtnetlinkApi(RtNetlink):
def link_set(self, ifname, state):
flags = 0
self.logger.info('rtnetlink: ip link set dev %s %s' %(ifname, state))
if ifupdownmain.ifupdownFlags.DRYRUN:
if ifupdownflags.flags.DRYRUN:
return
if state == "up":
@@ -106,9 +106,8 @@ class rtnetlinkApi(RtNetlink):
self.process_wait([token])
def link_set_protodown(self, ifname, state):
flags = 0
self.logger.info('rtnetlink: setting link %s protodown %s' %(ifname, state))
if ifupdownmain.ifupdownFlags.DRYRUN:
if ifupdownflags.flags.DRYRUN:
return
protodown = 1 if state == "on" else 0
@@ -123,7 +122,7 @@ class rtnetlinkApi(RtNetlink):
def link_set_hwaddress(self, ifname, hwaddress):
flags = 0
self.logger.info('rtnetlink: ip link set dev %s address %s' %(ifname, hwaddress))
if ifupdownmain.ifupdownFlags.DRYRUN:
if ifupdownflags.flags.DRYRUN:
return
flags &= ~IFF_UP
@@ -139,7 +138,7 @@ class rtnetlinkApi(RtNetlink):
def addr_add(self, ifname, address, broadcast=None, peer=None, scope=None,
preferred_lifetime=None):
self.logger.info('rtnetlink: setting address')
if ifupdownmain.ifupdownFlags.DRYRUN:
if ifupdownflags.flags.DRYRUN:
return
try:
@@ -176,7 +175,7 @@ class rtnetlinkApi(RtNetlink):
ifi_change = IFF_UP
rtas = {}
self.logger.info('rtnetlink: setting link %s %s' %(ifname, state))
if ifupdownmain.ifupdownFlags.DRYRUN:
if ifupdownflags.flags.DRYRUN:
return
if not ifattrs:
return
@@ -214,7 +213,7 @@ class rtnetlinkApi(RtNetlink):
%(vid, 'untagged' if untagged else '',
'pvid' if pvid else '', dev,
'self' if not master else ''))
if ifupdownmain.ifupdownFlags.DRYRUN:
if ifupdownflags.flags.DRYRUN:
return
try:
ifindex = self.get_ifindex(dev)

View File

@@ -8,6 +8,7 @@
#
from statemanager import *
import ifupdown.ifupdownflags as ifupdownflags
from iface import *
from graph import *
from collections import deque
@@ -179,7 +180,7 @@ class ifaceScheduler():
if (ifupdownobj.flags.SCHED_SKIP_CHECK_UPPERIFACES):
return True
if (ifupdownobj.FORCE or
if (ifupdownflags.flags.FORCE or
not ifupdownobj.flags.ADDONS_ENABLE or
(not ifupdownobj.is_ifaceobj_noconfig(ifaceobj) and
ifupdownobj.config.get('warn_on_ifdown', '0') == '0' and