]> git.proxmox.com Git - mirror_ifupdown2.git/blob - ifupdown2/ifupdown/ifupdownbase.py
addons: addressvirtual: keep macvlan down if link-down specified on lower device
[mirror_ifupdown2.git] / ifupdown2 / ifupdown / ifupdownbase.py
1 #!/usr/bin/python
2 #
3 # Copyright 2014-2017 Cumulus Networks, Inc. All rights reserved.
4 # Author: Roopa Prabhu, roopa@cumulusnetworks.com
5 #
6 # ifupdownBase --
7 # base object for various ifupdown objects
8 #
9
10 import re
11 import os
12 import logging
13 import traceback
14
15 try:
16 from ifupdown2.ifupdown.netlink import netlink
17
18 import ifupdown2.ifupdown.ifupdownflags as ifupdownflags
19 except ImportError:
20 from ifupdown.netlink import netlink
21
22 import ifupdown.ifupdownflags as ifupdownflags
23
24
25 class ifupdownBase(object):
26
27 def __init__(self):
28 modulename = self.__class__.__name__
29 self.logger = logging.getLogger('ifupdown.' + modulename)
30
31 def ignore_error(self, errmsg):
32 if (ifupdownflags.flags.FORCE == True or re.search(r'exists', errmsg,
33 re.IGNORECASE | re.MULTILINE) is not None):
34 return True
35 return False
36
37 def log_warn(self, str):
38 if self.ignore_error(str) == False:
39 if self.logger.getEffectiveLevel() == logging.DEBUG:
40 traceback.print_stack()
41 traceback.print_exc()
42 self.logger.warn(str)
43 pass
44
45 def log_error(self, str):
46 if self.ignore_error(str) == False:
47 raise Exception(str)
48 else:
49 pass
50
51 def link_exists(self, ifacename):
52 return os.path.exists('/sys/class/net/%s' %ifacename)
53
54 def link_up(self, ifacename):
55 netlink.link_set_updown(ifacename, "up")
56
57 def link_down(self, ifacename):
58 netlink.link_set_updown(ifacename, "down")