cdist configuration management
Latest manual: https://www.cdi.st/manual/latest/
Home page: https://www.cdi.st
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.4 KiB
90 lines
2.4 KiB
#!/usr/bin/env python3 |
|
# -*- coding: utf-8 -*- |
|
# |
|
# 2010-2016 Nico Schottelius (nico-cdist at schottelius.org) |
|
# 2016 Darko Poljak (darko.poljak at gmail.com) |
|
# |
|
# This file is part of cdist. |
|
# |
|
# cdist 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. |
|
# |
|
# cdist 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 cdist. If not, see <http://www.gnu.org/licenses/>. |
|
# |
|
# |
|
|
|
import logging |
|
import sys |
|
import cdist |
|
import cdist.argparse |
|
import cdist.banner |
|
import cdist.config |
|
import cdist.install |
|
import cdist.shell |
|
import cdist.inventory |
|
|
|
|
|
def commandline(): |
|
"""Parse command line""" |
|
|
|
# preos subcommand hack |
|
if len(sys.argv) > 1 and sys.argv[1] == 'preos': |
|
return cdist.preos.PreOS.commandline(sys.argv[1:]) |
|
parser, cfg = cdist.argparse.parse_and_configure(sys.argv[1:]) |
|
args = cfg.get_args() |
|
|
|
# Work around python 3.3 bug: |
|
# http://bugs.python.org/issue16308 |
|
# http://bugs.python.org/issue9253 |
|
|
|
# FIXME: catching AttributeError also hides |
|
# real problems.. try a different way |
|
|
|
# FIXME: we always print main help, not |
|
# the help of the actual parser being used! |
|
try: |
|
getattr(args, "func") |
|
except AttributeError: |
|
parser['main'].print_help() |
|
sys.exit(0) |
|
|
|
args.func(args) |
|
|
|
|
|
if __name__ == "__main__": |
|
cdistpythonversion = '3.2' |
|
if sys.version < cdistpythonversion: |
|
print('Python >= {} is required on the source host.'.format( |
|
cdistpythonversion), file=sys.stderr) |
|
sys.exit(1) |
|
|
|
exit_code = 0 |
|
|
|
try: |
|
import re |
|
import os |
|
|
|
if re.match("__", os.path.basename(sys.argv[0])): |
|
import cdist.emulator |
|
emulator = cdist.emulator.Emulator(sys.argv) |
|
emulator.run() |
|
else: |
|
commandline() |
|
|
|
except KeyboardInterrupt: |
|
exit_code = 2 |
|
|
|
except cdist.Error as e: |
|
log = logging.getLogger("cdist") |
|
log.error(e) |
|
exit_code = 1 |
|
|
|
sys.exit(exit_code)
|
|
|