summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2017-05-21 15:02:22 +0300
committerLars Wirzenius <liw@liw.fi>2017-05-21 15:02:22 +0300
commit6de82e32e068cd14fac4c960c107c466f201f440 (patch)
tree83eb6e09095706c5519075373d4213a2df07ddd5
parente1603a745086902b1c5163da6513c216bb859879 (diff)
downloadvmdb2-6de82e32e068cd14fac4c960c107c466f201f440.tar.gz
Fix: make --verbose output to stdout
Drop ttystatus for progress reporting.
-rw-r--r--vmdb/__init__.py2
-rw-r--r--vmdb/app.py19
-rw-r--r--vmdb/plugins/error_plugin.py8
-rw-r--r--vmdb/runcmd.py14
4 files changed, 14 insertions, 29 deletions
diff --git a/vmdb/__init__.py b/vmdb/__init__.py
index 758a900..b9dbef4 100644
--- a/vmdb/__init__.py
+++ b/vmdb/__init__.py
@@ -24,5 +24,5 @@ from .step_list import (
NoMatchingRunner,
StepError,
)
-from .runcmd import runcmd, set_runcmd_progress, progress, error
+from .runcmd import runcmd, set_verbose_progress, progress, error
from .app import Vmdb2
diff --git a/vmdb/app.py b/vmdb/app.py
index 6ef5df2..0b62364 100644
--- a/vmdb/app.py
+++ b/vmdb/app.py
@@ -21,7 +21,6 @@ import sys
import cliapp
import jinja2
-import ttystatus
import yaml
import vmdb
@@ -43,7 +42,7 @@ class Vmdb2(cliapp.Application):
self.step_runners = vmdb.StepRunnerList()
def process_args(self, args):
- self.progress = self.create_progress()
+ vmdb.set_verbose_progress(self.settings['verbose'])
spec = self.load_spec_file(args[0])
@@ -54,27 +53,16 @@ class Vmdb2(cliapp.Application):
state = vmdb.State()
steps_taken, core_meltdown = self.run_steps(steps, state)
- self.progress.clear()
- self.progress = self.create_progress()
if core_meltdown:
vmdb.progress('Something went wrong, cleaning up!')
else:
vmdb.progress('All went fine, cleaning up.')
self.run_teardowns(steps_taken, state)
- self.progress.finish()
-
if core_meltdown:
logging.error('An error occurred, exiting with non-zero exit code')
sys.exit(1)
- def create_progress(self):
- progress = ttystatus.TerminalStatus(period=0)
- progress.format(
- '%ElapsedTime() Step %Index(step,steps): %String(current)')
- vmdb.set_runcmd_progress(progress, self.settings['verbose'])
- return progress
-
def load_spec_file(self, filename):
vmdb.progress('Load spec file {}'.format(filename))
with open(filename) as f:
@@ -92,7 +80,6 @@ class Vmdb2(cliapp.Application):
core_meltdown = False
steps_taken = []
- self.progress['steps'] = steps
for step in steps:
try:
logging.info(msg, step)
@@ -100,11 +87,9 @@ class Vmdb2(cliapp.Application):
expanded_step = self.expand_step_spec(step, state)
runner = self.step_runners.find(step)
method = getattr(runner, method_name)
- self.progress['step'] = step
- self.progress['curstep'] = self.format_step(runner, step)
method(expanded_step, self.settings, state)
except Exception as e:
- self.error(str(e))
+ vmdb.error(str(e))
core_meltdown = True
if not keep_going:
break
diff --git a/vmdb/plugins/error_plugin.py b/vmdb/plugins/error_plugin.py
index d085748..73db1bc 100644
--- a/vmdb/plugins/error_plugin.py
+++ b/vmdb/plugins/error_plugin.py
@@ -37,8 +37,12 @@ class ErrorStepRunner(vmdb.StepRunnerInterface):
return ['error', 'teardown']
def run(self, step, settings, state):
- vmdb.error('{}'.format(step['error']))
+ # We use vmdb.progress here to get output to go to stdout,
+ # instead of stderr. We want that for tests.
+ vmdb.progress('{}'.format(step['error']))
raise vmdb.StepError('an error occurred')
def teardown(self, step, settings, state):
- vmdb.error('{}'.format(step['teardown']))
+ # We use vmdb.progress here to get output to go to stdout,
+ # instead of stderr. We want that for tests.
+ vmdb.progress('{}'.format(step['teardown']))
diff --git a/vmdb/runcmd.py b/vmdb/runcmd.py
index 9cae459..81dc74c 100644
--- a/vmdb/runcmd.py
+++ b/vmdb/runcmd.py
@@ -23,28 +23,24 @@ import sys
import cliapp
-_progress = None
_verbose = False
-def set_runcmd_progress(progress, verbose):
- global _progress, _verbose
- _progress = progress
+def set_verbose_progress(verbose):
+ global _verbose
_verbose = verbose
def error(msg):
logging.error(msg, exc_info=True)
- _progress['current'] = msg
if _verbose:
- _progress.error(msg)
-
+ sys.stderr.write('ERROR: {}\n'.format(msg))
+
def progress(msg):
logging.info(msg)
- _progress['current'] = msg
if _verbose:
- _progress.notify(msg)
+ sys.stdout.write('{}\n'.format(msg))
def runcmd(argv, *argvs, **kwargs):