summaryrefslogtreecommitdiff
path: root/vmdb/app.py
diff options
context:
space:
mode:
Diffstat (limited to 'vmdb/app.py')
-rw-r--r--vmdb/app.py121
1 files changed, 0 insertions, 121 deletions
diff --git a/vmdb/app.py b/vmdb/app.py
deleted file mode 100644
index 5073a05..0000000
--- a/vmdb/app.py
+++ /dev/null
@@ -1,121 +0,0 @@
-# Copyright 2017 Lars Wirzenius
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-# =*= License: GPL-3+ =*=
-
-
-import logging
-import sys
-
-import cliapp
-
-import vmdb
-
-
-class Vmdb2(cliapp.Application):
-
- def add_settings(self):
- self.settings.string(
- ['image'],
- 'create image file FILE',
- metavar='FILE')
-
- self.settings.boolean(
- ['verbose', 'v'],
- 'verbose output')
-
- def setup(self):
- self.step_runners = vmdb.StepRunnerList()
-
- def process_args(self, args):
- if len(args) != 1:
- sys.exit("No image specification was given on the command line.")
-
- vmdb.set_verbose_progress(self.settings['verbose'])
-
- spec = self.load_spec_file(args[0])
- state = vmdb.State()
- state.tags = vmdb.Tags()
- params = self.create_template_vars(state)
- steps = spec.get_steps(params)
-
- # Check that we have step runners for each step
- for step in steps:
- self.step_runners.find(step)
-
- steps_taken, core_meltdown = self.run_steps(steps, state)
- if core_meltdown:
- vmdb.progress('Something went wrong, cleaning up!')
- else:
- vmdb.progress('All went fine, cleaning up.')
- self.run_teardowns(steps_taken, state)
-
- if core_meltdown:
- logging.error('An error occurred, exiting with non-zero exit code')
- sys.exit(1)
-
- def load_spec_file(self, filename):
- vmdb.progress('Load spec file {}'.format(filename))
- spec = vmdb.Spec()
- spec.load_file(filename)
- return spec
-
- def run_steps(self, steps, state):
- return self.run_steps_helper(
- steps, state, 'Running step: %r', 'run', False)
-
- def run_teardowns(self, steps, state):
- return self.run_steps_helper(
- list(reversed(steps)), state, 'Running teardown: %r', 'teardown', True)
-
- def run_steps_helper(self, steps, state, msg, method_name, keep_going):
- core_meltdown = False
- steps_taken = []
-
- even_if_skipped = method_name + '_even_if_skipped'
- for step in steps:
- try:
- logging.info(msg, step)
- steps_taken.append(step)
- runner = self.step_runners.find(step)
- if runner.skip(step, self.settings, state):
- logging.info('Skipping as requested by unless')
- method_names = [even_if_skipped]
- else:
- method_names = [method_name, even_if_skipped]
-
- methods = [
- getattr(runner, name)
- for name in method_names
- if hasattr(runner, name)
- ]
-
- for method in methods:
- logging.info('Calling %s', method)
- method(step, self.settings, state)
- except BaseException as e:
- vmdb.error(str(e))
- core_meltdown = True
- if not keep_going:
- break
-
- return steps_taken, core_meltdown
-
- def create_template_vars(self, state):
- vars = dict()
- for key in self.settings:
- vars[key] = self.settings[key]
- vars.update(state.as_dict())
- return vars