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:
@@ -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
21
ifupdown/ifupdownflags.py
Normal 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()
|
@@ -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()
|
||||
|
||||
|
@@ -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)
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user