diff --git a/pkg/ifupdownbase.py b/pkg/ifupdownbase.py index 81d1c8f..9d46525 100644 --- a/pkg/ifupdownbase.py +++ b/pkg/ifupdownbase.py @@ -22,24 +22,22 @@ class ifupdownBase(object): def exec_command(self, cmd, cmdenv=None, nowait=False): cmd_returncode = 0 cmdout = '' - try: self.logger.info('Executing ' + cmd) + if self.DRYRUN: + return cmdout ch = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE, shell=False, env=cmdenv, stderr=subprocess.STDOUT) cmdout = ch.communicate()[0] cmd_returncode = ch.wait() - except OSError, e: raise Exception('could not execute ' + cmd + '(' + str(e) + ')') - if cmd_returncode != 0: raise Exception('error executing cmd \'%s\'' %cmd + '\n(' + cmdout.strip('\n ') + ')') - return cmdout def ignore_error(self, errmsg): diff --git a/pkg/ifupdownmain.py b/pkg/ifupdownmain.py index 77c4193..c72c232 100644 --- a/pkg/ifupdownmain.py +++ b/pkg/ifupdownmain.py @@ -118,6 +118,8 @@ class ifupdownMain(ifupdownBase): self.STATEMANAGER_ENABLE = statemanager_enable self.CACHE = cache + self.logger.debug("Roopa: DRYRUN = %s" %self.DRYRUN) + # Can be used to provide hints for caching self.CACHE_FLAGS = 0x0 self._DELETE_DEPENDENT_IFACES_WITH_NOCONFIG = False @@ -290,7 +292,7 @@ class ifupdownMain(ifupdownBase): self.ifaceobjdict.keys()) if dlist: self.logger.debug('%s: ' %ifaceobj.name + - 'got lowerifaces/dependents: %s' %str(dlist)) + 'lowerifaces/dependents: %s' %str(dlist)) break return dlist @@ -614,12 +616,11 @@ class ifupdownMain(ifupdownBase): else: self.populate_dependency_info(ops) - self._sched_ifaces(filtered_ifacenames, ops) - - if self.DRYRUN and self.ADDONS_ENABLE: - return - - self._save_state() + try: + self._sched_ifaces(filtered_ifacenames, ops) + finally: + if not self.DRYRUN and self.ADDONS_ENABLE: + self._save_state() def down(self, ops, auto=False, allow_classes=None, ifacenames=None, excludepats=None, printdependency=None, usecurrentconfig=False): @@ -664,10 +665,12 @@ class ifupdownMain(ifupdownBase): return else: self.populate_dependency_info(ops) - self._sched_ifaces(filtered_ifacenames, ops) - if self.DRYRUN and self.ADDONS_ENABLE: - return - self._save_state() + + try: + self._sched_ifaces(filtered_ifacenames, ops) + finally: + if not self.DRYRUN and self.ADDONS_ENABLE: + self._save_state() def query(self, ops, auto=False, allow_classes=None, ifacenames=None, excludepats=None, printdependency=None, @@ -835,9 +838,9 @@ class ifupdownMain(ifupdownBase): self._save_state() def _pretty_print_ordered_dict(self, prefix, argdict): - outbuf = prefix + ' {' + outbuf = prefix + ' {\n' for k, vlist in argdict.items(): - outbuf += '%s : %s\n' %(k, str(vlist)) + outbuf += '\t%s : %s\n' %(k, str(vlist)) self.logger.debug(outbuf + '}') def print_dependency(self, ifacenames, format): diff --git a/pkg/scheduler.py b/pkg/scheduler.py index a087093..6a15235 100644 --- a/pkg/scheduler.py +++ b/pkg/scheduler.py @@ -100,7 +100,7 @@ class ifaceScheduler(): # minor optimization. If operation is 'down', proceed only # if interface exists in the system if 'down' in ops[0] and not ifupdownobj.link_exists(ifacename): - ifupdownobj.logger.info('%s: does not exist' %ifacename) + ifupdownobj.logger.debug('%s: does not exist' %ifacename) return cenv=None if ifupdownobj.COMPAT_EXEC_SCRIPTS: diff --git a/pkg/statemanager.py b/pkg/statemanager.py index 5263dd0..4b7782f 100644 --- a/pkg/statemanager.py +++ b/pkg/statemanager.py @@ -108,8 +108,9 @@ class stateManager(): try: with open(self.state_file, 'w') as f: if not len(self.ifaceobjdict): - os.remove(self.state_file) + f.truncate(0) return + self.logger.debug('saving state ..') for ifaceobjs in self.ifaceobjdict.values(): [pickling.save_obj(f, i) for i in ifaceobjs] except: diff --git a/sbin/ifupdown b/sbin/ifupdown index 96982c1..d7335c3 100755 --- a/sbin/ifupdown +++ b/sbin/ifupdown @@ -52,15 +52,11 @@ def run_down(args): try: iflist = args.iflist logger.debug('creating ifupdown object ..') - cachearg=(False if (iflist or args.nocache or - args.perfmode or args.noact) - else True) ifupdown_handle = ifupdownMain(force=args.force, withdepends=args.withdepends, perfmode=args.perfmode, njobs=args.jobs, dryrun=args.noact, - cache=cachearg, addons_enable=not args.noaddons, statemanager_enable=not args.noaddons) @@ -116,12 +112,9 @@ def run_reload(args): try: logger.debug('creating ifupdown object ..') - cachearg=(False if (args.nocache or - args.perfmode or args.noact) else True) ifupdown_handle = ifupdownMain(withdepends=args.withdepends, perfmode=args.perfmode, - njobs=args.jobs, - cache=cachearg) + njobs=args.jobs) ifupdown_handle.reload(['pre-up', 'up', 'post-up'], ['pre-down', 'down', 'post-down'], args.all, None, None,