Commit 11f56995 authored by Darko Poljak's avatar Darko Poljak

Fix missing configuration file usage, support -g

PreOS code did not use configuration support. This fix adds support
for using cdist configuration, which takes into account cdist
configuration file, environment variables and command line options,
especially conf_dir.

It also adds support for -g, --config-file option, for specifying
custom configuration file.
parent 51ba4a49
Pipeline #562 passed with stage
in 1 minute and 15 seconds
......@@ -5,8 +5,9 @@ import inspect
import argparse
import cdist
import logging
import re
import cdist.argparse
import cdist.configuration
import cdist.exec.util as util
_PREOS_CALL = "commandline"
......@@ -24,16 +25,6 @@ def extend_plugins_path(dirs):
cdist_home = cdist.home_dir()
if cdist_home:
extend_plugins_path((cdist_home, ))
if x in os.environ:
vals = re.split(r'(?<!\\):', os.environ[x])
vals = [x for x in vals if x]
def preos_plugin(obj):
"""It is preos if _PREOS_MARKER is True and has _PREOS_CALL."""
if hasattr(obj, _PREOS_MARKER):
......@@ -102,6 +93,9 @@ class PreOS(object):
help=('Add configuration directory (one that '
'contains "preos" subdirectory)'),
parser.add_argument('-g', '--config-file',
help='Use specified custom configuration file.',
dest="config_file", required=False)
parser.add_argument('-L', '--list-preoses',
help='List available PreOS-es',
action='store_true', default=False)
......@@ -110,8 +104,12 @@ class PreOS(object):
log.debug("preos args : {}".format(args))
if args.conf_dir:
cfg = cdist.configuration.Configuration(args)
configuration = cfg.get_config(section='GLOBAL')
conf_dirs = util.resolve_conf_dirs(configuration,
cls.preoses = find_preoses()
......@@ -3,6 +3,7 @@ Changelog
* Type __acl: Add --entry parameter to replace --acl, deprecate --acl (Ander Punnar)
* Core: preos: Fix missing configuration file usage, support -g, --config-file option (Darko Poljak)
6.4.0: 2020-01-04
* Type __consul_agent: Don't deploy init script on Alpine anymore, it ships with one itself (Nico Schottelius)
......@@ -59,7 +59,9 @@ SYNOPSIS
[-I INVENTORY_DIR] [-a] [-f HOSTFILE] [-H] [-t]
[host [host ...]]
cdist preos [-h] [-l LOGLEVEL] [-q] [-v] [-c CONF_DIR] [-L] [preos] ...
cdist preos [-h] [-l LOGLEVEL] [-q] [-v] [-c CONF_DIR] [-g CONFIG_FILE]
[preos] ...
cdist preos [preos-options] debian [-h] [-l LOGLEVEL] [-q] [-v] [-b] [-a ARCH] [-B]
......@@ -464,6 +466,9 @@ Create PreOS.
**-c CONF_DIR, --conf-dir CONF_DIR**
Add configuration directory (one that contains "preos" subdirectory).
**-g CONFIG_FILE, --config-file CONFIG_FILE**
Use specified custom configuration file.
**-L, --list-preoses**
List available PreOS-es.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment