Commit 9e89088e authored by Darko Poljak's avatar Darko Poljak

Merge branch 'master' into beta

parents cde6a91e 2885c6a2
Pipeline #2260 passed with stage
in 1 minute and 1 second
......@@ -81,7 +81,7 @@ version:
}
# Manpages #3: generic part
man: version $(MANTYPES) $(DOCSREF)
man: version configskel $(MANTYPES) $(DOCSREF) $(DOCSTYPESREF)
$(SPHINXM)
html: version configskel $(MANTYPES) $(DOCSREF) $(DOCSTYPESREF)
......@@ -104,7 +104,7 @@ DOTMANTYPES=$(subst /man.rst,.rst,$(DOTMANTYPEPREFIX))
$(DOTMAN7DSTDIR)/cdist-type%.rst: $(DOTTYPEDIR)/%/man.rst
ln -sf "$^" $@
dotman: version $(DOTMANTYPES)
dotman: version configskel $(DOTMANTYPES) $(DOCSREF) $(DOCSTYPESREF)
$(SPHINXM)
################################################################################
......
......@@ -144,7 +144,9 @@ esac
if [ -f /etc/os-release ]; then
# after sles15, suse don't provide an /etc/SuSE-release anymore, but there is almost no difference between sles and opensuse leap, so call it suse
if grep -q ^ID_LIKE=\"suse\" /etc/os-release 2>/dev/null; then
# shellcheck disable=SC1091
if (. /etc/os-release && echo "${ID_LIKE}" | grep -q '\(^\|\ \)suse\($\|\ \)')
then
echo suse
exit 0
fi
......
......@@ -31,7 +31,32 @@ case "$("$__explorer/os")" in
cat /etc/arch-release
;;
debian)
cat /etc/debian_version
debian_version=$(cat /etc/debian_version)
case $debian_version
in
testing/unstable)
# previous to Debian 4.0 testing/unstable was used
# cf. https://metadata.ftp-master.debian.org/changelogs/main/b/base-files/base-files_11_changelog
echo 3.99
;;
*/sid)
# sid versions don't have a number, so we decode by codename:
case $(expr "$debian_version" : '\([a-z]\{1,\}\)/')
in
bullseye) echo 10.99 ;;
buster) echo 9.99 ;;
stretch) echo 8.99 ;;
jessie) echo 7.99 ;;
wheezy) echo 6.99 ;;
squeeze) echo 5.99 ;;
lenny) echo 4.99 ;;
*) exit 1
esac
;;
*)
echo "$debian_version"
;;
esac
;;
devuan)
cat /etc/devuan_version
......@@ -73,4 +98,4 @@ case "$("$__explorer/os")" in
alpine)
cat /etc/alpine-release
;;
esac
\ No newline at end of file
esac
......@@ -30,9 +30,6 @@ sum
By default output of ``cksum`` without filename is expected.
Other hash formats supported with prefixes: ``md5:``, ``sha1:`` and ``sha256:``.
onchange
Execute this command after download.
OPTIONAL PARAMETERS
-------------------
......@@ -54,6 +51,9 @@ cmd-sum
format specification ``%s`` which will become destination.
For example: ``md5sum '%s' | awk '{print $1}'``.
onchange
Execute this command after download.
EXAMPLES
--------
......
......@@ -18,16 +18,16 @@
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
#
os=$("$__explorer/os")
os=$("${__explorer:?}/os")
if [ -f "$__object/parameter/device" ]; then
if [ -f "${__object:?}/parameter/device" ]; then
blkdev="$(cat "$__object/parameter/device")"
else
blkdev="$__object_id"
blkdev="${__object_id:?}"
fi
case "$os" in
centos|fedora|redhat|suse|gentoo)
alpine|centos|fedora|redhat|suse|gentoo)
if [ ! -x "$(command -v lsblk)" ]; then
echo "lsblk is required for __filesystem type" >&2
exit 1
......
......@@ -24,6 +24,22 @@
# Configure system-wide locale by modifying i18n file.
#
version_ge() {
awk -F '[^0-9.]' -v target="${1:?}" '
function max(x, y) { return x > y ? x : y }
BEGIN {
getline
nx = split($1, x, ".")
ny = split(target, y, ".")
for (i = 1; i <= max(nx, ny); ++i) {
diff = int(x[i]) - int(y[i])
if (diff == 0) continue
exit (diff < 0)
}
}'
}
key=$__object_id
onchange_cmd= # none, by default
quote_value=false
......@@ -40,8 +56,7 @@ os=$(cat "$__global/explorer/os")
case $os
in
debian)
os_version=$(cat "${__global}/explorer/os_version")
if expr "${os_version}" '>=' 4 >/dev/null
if version_ge 4 <"${__global}/explorer/os_version"
then
# Debian 4 (etch) and later
locale_conf="/etc/default/locale"
......@@ -53,8 +68,7 @@ in
locale_conf="/etc/default/locale"
;;
ubuntu)
os_version=$(cat "${__global}/explorer/os_version")
if expr "${os_version}" '>=' 6.10 >/dev/null
if version_ge 6.10 <"${__global}/explorer/os_version"
then
# Ubuntu 6.10 (edgy) and later
locale_conf="/etc/default/locale"
......@@ -68,7 +82,7 @@ in
centos|redhat|scientific)
# shellcheck source=/dev/null
version_id=$(. "${__global}/explorer/os_release" && echo "${VERSION_ID:-0}")
if expr "${version_id}" '>=' 7 >/dev/null
if echo "${version_id}" | version_ge 7
then
locale_conf="/etc/locale.conf"
else
......@@ -78,7 +92,7 @@ in
fedora)
# shellcheck source=/dev/null
version_id=$(. "${__global}/explorer/os_release" && echo "${VERSION_ID:-0}")
if expr "${version_id}" '>=' 18 >/dev/null
if echo "${version_id}" | version_ge 18
then
locale_conf="/etc/locale.conf"
quote_value=false
......@@ -113,7 +127,7 @@ in
locale_conf="/etc/default/init"
locale_conf_group="sys"
if expr "$(cat "${__global}/explorer/os_version")" '>=' 5.11 >/dev/null
if version_ge 5.11 <"${__global}/explorer/os_version"
then
# mode on Oracle Solaris 11 is actually 0444,
# but the write bit makes sense, IMO
......@@ -149,7 +163,13 @@ in
key="export ${__object_id}"
;;
suse)
os_version=$(cat "${__global}/explorer/os_version")
if test -s "${__global}/explorer/os_release"
then
# shellcheck source=/dev/null
os_version=$(. "${__global}/explorer/os_release" && echo "${VERSION}")
else
os_version=$(sed -n 's/^VERSION\ *=\ *//p' "${__global}/explorer/os_version")
fi
os_major=$(expr "${os_version}" : '\([0-9]\{1,\}\)')
# https://documentation.suse.com/sles/15-SP2/html/SLES-all/cha-suse.html#sec-suse-l10n
......
......@@ -31,8 +31,8 @@ manager-password-hash
Generate e.g. with: `slappasswd -s weneedgoodsecurity`.
See `slappasswd(8C)`, `slapd.conf(5)`.
TODO: implement this: http://blog.adamsbros.org/2015/06/09/openldap-ssha-salted-hashes-by-hand/
to derive from the manager-password parameter and ensure idempotency (care with salts).
At that point, manager-password-hash should be deprecated and ignored.
to derive from the manager-password parameter and ensure idempotency (care with salts).
At that point, manager-password-hash should be deprecated and ignored.
serverid
The server for the directory.
......
cdist-type__systemd-service(7)
cdist-type__systemd_service(7)
==============================
NAME
----
cdist-type__systemd-service - Controls a systemd service state
cdist-type__systemd_service - Controls a systemd service state
DESCRIPTION
-----------
......@@ -14,11 +15,12 @@ service after configuration applied or shutdown one service.
The activation or deactivation is out of scope. Look for the
:strong:`cdist-type__systemd_util`\ (7) type instead.
REQUIRED PARAMETERS
-------------------
None.
OPTIONAL PARAMETERS
-------------------
......@@ -31,12 +33,12 @@ state
running
Service should run (default)
stoppend
Service should stopped
stopped
Service should be stopped
action
Executes an action on on the service. It will only execute it if the
service keeps the state **running**. There are following actions, where:
service keeps the state ``running``. There are following actions, where:
reload
Reloads the service
......@@ -48,11 +50,12 @@ BOOLEAN PARAMETERS
------------------
if-required
Only execute the action if minimum one required type outputs a message to
**$__messages_out**. Through this, the action should only executed if a
Only execute the action if at minimum one required type outputs a message
to ``$__messages_out``. Through this, the action should only executed if a
dependency did something. The action will not executed if no dependencies
given.
MESSAGES
--------
......@@ -68,12 +71,14 @@ restart
reload
Reloaded the service
ABORTS
------
Aborts in following cases:
systemd or the service does not exist
EXAMPLES
--------
.. code-block:: sh
......@@ -95,13 +100,15 @@ EXAMPLES
# reload the service for a modified configuration file
# only reloads the service if the file really changed
require="__config_file/etc/foo.conf" __systemd_service foo \
require="__file/etc/foo.conf" __systemd_service foo \
--action reload --if-required
AUTHORS
-------
Matthias Stecher <matthiasstecher at gmx.de>
COPYRIGHT
---------
Copyright \(C) 2020 Matthias Stecher. You can redistribute it
......
......@@ -22,7 +22,7 @@
# This type allows to configure the desired localtime timezone.
timezone_is=$(cat "$__object/explorer/timezone_is")
timezone_should="$__object_id"
timezone_should=$(cat "$__object/parameter/tz")
os=$(cat "$__global/explorer/os")
if [ "$timezone_is" = "$timezone_should" ]; then
......
......@@ -14,7 +14,8 @@ This type creates a symlink (/etc/localtime) to the selected timezone
REQUIRED PARAMETERS
-------------------
None.
tz
The name of timezone to set.
OPTIONAL PARAMETERS
......@@ -27,19 +28,24 @@ EXAMPLES
.. code-block:: sh
#Set up Europe/Andorra as our timezone.
__timezone Europe/Andorra
# Set up Europe/Andorra as our timezone.
__timezone --tz Europe/Andorra
#Set up US/Central as our timezone.
__timezone US/Central
# Set up US/Central as our timezone.
__timezone --tz US/Central
AUTHORS
-------
Ramon Salvadó <rsalvado--@--gnuine--dot--com>
| Steven Armstrong <steven-cdist--@--armstrong.cc>
| Nico Schottelius <nico-cdist--@--schottelius.org>
| Ramon Salvadó <rsalvado--@--gnuine--dot--com>
| Dennis Camera <dennis.camera--@--ssrq-sds-fds.ch>
COPYING
-------
Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).
Copyright \(C) 2012-2020 the `AUTHORS`_. 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.
......@@ -22,7 +22,7 @@
#
# This type allows to configure the desired localtime timezone.
timezone="$__object_id"
timezone=$(cat "$__object/parameter/tz")
os=$(cat "$__global/explorer/os")
case "$os" in
......
......@@ -23,6 +23,13 @@ case "$src" in
cmd="$cmd --strip-components=$tar_strip"
fi
if [ -f "$__object/parameter/tar-extra-args" ]
then
tar_extra_args="$( cat "$__object/parameter/tar-extra-args" )"
cmd="$cmd $tar_extra_args"
fi
;;
*.7z)
case "$os" in
......@@ -73,3 +80,8 @@ if [ ! -f "$__object/parameter/preserve-archive" ]
then
echo "rm -f '$src'"
fi
if [ -f "$__object/parameter/onchange" ]
then
cat "$__object/parameter/onchange"
fi
......@@ -33,6 +33,10 @@ sum-file
tar-strip
Tarball specific. See ``man tar`` for ``--strip-components``.
tar-extra-args
Tarball sepcific. Append additional arguments to ``tar`` command.
See ``man tar`` for possible arguments.
OPTIONAL BOOLEAN PARAMETERS
---------------------------
......@@ -46,6 +50,9 @@ backup-destination
preserve-archive
Don't delete archive after unpacking.
onchange
Execute this command after unpack.
EXAMPLES
--------
......@@ -65,6 +72,13 @@ EXAMPLES
--preserve-archive \
--destination /opt/cpma/server
# example usecase for --tar-* args
__unpack /root/strelaysrv.tar.gz \
--preserve-archive \
--destination /usr/local/bin \
--tar-strip 1 \
--tar-extra-args '--wildcards "*/strelaysrv"'
AUTHORS
-------
......
......@@ -25,6 +25,7 @@ import argparse
import logging
import os
import sys
import re
import cdist
from cdist import core
......@@ -412,12 +413,15 @@ class Emulator:
if "require" in self.env:
requirements = self.env['require']
self.log.debug("reqs = " + requirements)
for requirement in requirements.split(" "):
for requirement in self._parse_require(requirements):
# Ignore empty fields - probably the only field anyway
if len(requirement) == 0:
continue
self.record_requirement(requirement)
def _parse_require(self, require):
return re.split(r'[ \t\n]+', require)
def record_auto_requirements(self):
"""An object shall automatically depend on all objects that it
defined in it's type manifest.
......
......@@ -685,6 +685,16 @@ class EmulatorAlreadyExistingRequirementsWarnTestCase(test.CdistTestCase):
self.env['require'] = '__directory/spam'
emu = emulator.Emulator(argv, env=self.env)
def test_parse_require(self):
require = " \t \n \t\t\n\t\na\tb\nc d \te\t\nf\ng\t "
expected = ['', 'a', 'b', 'c', 'd', 'e', 'f', 'g', '', ]
argv = ['__directory', 'spam']
emu = emulator.Emulator(argv, env=self.env)
requirements = emu._parse_require(require)
self.assertEqual(expected, requirements)
if __name__ == '__main__':
import unittest
......
......@@ -5,6 +5,19 @@ next:
* Core: Add trigger functionality (Nico Schottelius, Darko Poljak)
* Core: Implement core support for python types (Darko Poljak)
6.8.0: 2020-09-11
* Type __locale_system: Fix for debian and ubuntu (Ander Punnar)
* Type __unpack: Add --tar-extra-args parameter (Ander Punnar)
* Explorer os: Fix OS detection for openSUSE (Dennis Camera)
* Type __filesystem: Support Alpine Linux (Joachim Desroches)
* Type __locale_system: Fix version comparison (Dennis Camera)
* Type __unpack: Add --onchange parameter (Ander Punnar)
* Type __download: Fix manual (Ander Punnar)
* Explorer os_version: Convert Debian sid to version number (Dennis Camera)
* Core: Expand require delimiter characters, split by consecutive delimiters (Darko Poljak)
* Type __timezone: Make singleton (Dennis Camera)
* Type __systemd_service: Fix manpage typos (Matthias Stecher)
6.7.0: 2020-07-28
* Delete deprecated type: __pf_apply (Darko Poljak)
* New type: __download (Ander Punnar)
......
......@@ -95,7 +95,8 @@ Dependencies
------------
If you want to describe that something requires something else, just
setup the variable "require" to contain the requirements. Multiple
requirements can be added white space separated.
requirements can be added separated with (optionally consecutive)
delimiters including space, tab and newline.
::
......
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