Commit graph

2197 commits

Author SHA1 Message Date
bed08c2c5c Deal with deprecation of imp module.
importlib has been a thing since Python 3.1, and imp has been deprecated since
3.4.

Insert random complaint here about not being able to use f-strings because they
were introduced in Python 3.6 and apparently we support Python 3.5 >,<.

Output diff before to after for ./bin/cdist-build-helper test (on heavy load):
```
1,2d0
< /usr/home/evilham/s/cdist/cdist/cdist/test/__main__.py:23: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
<   import imp
72c70
< ERROR: cdisttesthost: __file/tmp/foobar requires object __file without object id. Defined at /tmp/tmp.cdist.test.g87lx7c8/tmp.cdist.test.6ramsakx
---
> ERROR: cdisttesthost: __file/tmp/foobar requires object __file without object id. Defined at /tmp/tmp.cdist.test.aqdf6vjz/tmp.cdist.test.jgv3udel
76c74
< test_nonexistent_type_requirement (cdist.test.emulator.EmulatorTestCase) ... ERROR: cdisttesthost: __file/tmp/foobar requires object __does-not-exist/some-id, but type __does-not-exist does not exist. Defined at /tmp/tmp.cdist.test.mma5j8ln/tmp.cdist.test.3zg4by4d
---
> test_nonexistent_type_requirement (cdist.test.emulator.EmulatorTestCase) ... ERROR: cdisttesthost: __file/tmp/foobar requires object __does-not-exist/some-id, but type __does-not-exist does not exist. Defined at /tmp/tmp.cdist.test.t8d6ockr/tmp.cdist.test.uimxurg9
86c84
< test_initial_manifest_environment (cdist.test.manifest.ManifestTestCase) ... VERBOSE: cdisttesthost: Running initial manifest /tmp/tmp.cdist.test.uvid60ij/759547ff4356de6e3d9e08522b0d0807/data/conf/manifest/dump_environment
---
> test_initial_manifest_environment (cdist.test.manifest.ManifestTestCase) ... VERBOSE: cdisttesthost: Running initial manifest /tmp/tmp.cdist.test._cttcnrj/759547ff4356de6e3d9e08522b0d0807/data/conf/manifest/dump_environment
89c87
< test_type_manifest_environment (cdist.test.manifest.ManifestTestCase) ... VERBOSE: cdisttesthost: Running type manifest /tmp/tmp.cdist.test.k1i2onpb/759547ff4356de6e3d9e08522b0d0807/data/conf/type/__dump_environment/manifest for object __dump_environment/whatever
---
> test_type_manifest_environment (cdist.test.manifest.ManifestTestCase) ... VERBOSE: cdisttesthost: Running type manifest /tmp/tmp.cdist.test.ukr7lrzd/759547ff4356de6e3d9e08522b0d0807/data/conf/type/__dump_environment/manifest for object __dump_environment/whatever
272c270
< Ran 225 tests in 44.457s
---
> Ran 225 tests in 43.750s
```
2020-12-06 20:24:00 +01:00
3930f69456 __block: fix escaping in here-doc
This changes the here-document to do not interpret any shell-things. It
also single-quotes some more strings that are printed to code-remote.

Fixes #838
2020-12-06 16:45:58 +01:00
087be130fa __iptables_apply: shorten copyright header
Do we need all the copyright header or is this sufficient? The licence
is given for cdist, but not on the target host. But it should be clear
anyway.
2020-12-04 19:23:49 +01:00
Dennis Camera
2d19856840 [type/__package_pkgng_freebsd] Set ASSUME_ALWAYS_YES instead of -y 2020-12-04 18:26:03 +01:00
ba7d16a155 __iptables_*: correct manpage spelling 2020-12-04 17:57:55 +01:00
a1db5c3d0e __iptables*: Update manpages for execution order
To make some thinks clear if someone needs it ..
2020-12-02 18:22:31 +01:00
bee255c1ae __iptables_apply: man updates 2020-12-02 18:04:50 +01:00
f568462e49 __iptables_rule: fix shellcheck SC2235 2020-12-02 17:48:41 +01:00
84172550df __iptables*: add IPv6 support
Because it currently only support IPv4. To implement this, it falls back
to IPv4 for backward compatibilty, but now supports rules for IPv6 and
both protocols at the same time.
2020-11-30 20:35:19 +01:00
a234445e85 Merge branch 'feature/type/__localedef' into 'master'
__localedef: Add new type to replace __locale

See merge request ungleich-public/cdist!951
2020-11-20 19:42:52 +01:00
58b28d2d75 Merge branch 'feature/type/__sshd_config' into 'master'
__sshd config: New type

See merge request ungleich-public/cdist!958
2020-11-19 19:33:49 +01:00
9d4f69250e __sshd config: New type 2020-11-19 19:33:47 +01:00
6c539d67af Merge branch 'fix/type/__hostname/fix-os-version-detection' into 'master'
__hostname: fix guessing of SuSE OS version

See merge request ungleich-public/cdist!953
2020-11-19 19:31:53 +01:00
Dennis Camera
87faffd875 [type/__localdef] Also check for aliases in state explorer 2020-11-14 11:45:31 +01:00
Dennis Camera
eeb9871919 [type/__localedef] glibc: Also delete aliases when removing a locale 2020-11-14 11:45:31 +01:00
Dennis Camera
575bb62dc5 [type/__localedef] Externalise functions to separate files 2020-11-14 11:45:31 +01:00
Dennis Camera
c1c60e3374 [type/__localedef] Blacklist OpenBSD and NetBSD 2020-11-14 11:45:31 +01:00
Dennis Camera
dcef2c19f5 [type/__localedef] Add support for FreeBSD 2020-11-14 11:45:31 +01:00
Dennis Camera
f44888f192 [type/__localedef] Only install dependencies in manifest. OS checking moved to gencode-remote 2020-11-14 11:45:31 +01:00
Dennis Camera
cc29e54b85 [type/__localedef] Differentiate between OSes and better handling of normalized locale names 2020-11-14 11:45:31 +01:00
Dennis Camera
54e689f7c2 [type/__localedef] Add state explorer 2020-11-14 10:48:18 +01:00
Dennis Camera
f75d477209 Deprecate __locale and replace with __localedef 2020-11-14 10:48:18 +01:00
105797ccb4 Merge branch 'feature/type/__hwclock' into 'master'
__hwclock: New type

See merge request ungleich-public/cdist!956
2020-11-13 06:35:58 +01:00
Dennis Camera
ebf471e8d0 [type/__hwclock] Add new type 2020-11-13 02:32:45 +01:00
Dennis Camera
c39eb1dbce [cdist.emulator] Fix setting of log level (tests OK) 2020-11-11 15:16:33 +01:00
Dennis Camera
0ee3fda94d Fix paths to cdist executable 2020-11-11 15:05:04 +01:00
Dennis Camera
21dd500c05 Make pycodestyle pipeline happy 2020-11-11 14:44:44 +01:00
Dennis Camera
87a0d91587 [type/__hostname] Fix OS version detection for SuSE
everything should be suse now…
2020-11-11 14:21:35 +01:00
Dennis Camera
702f3eba4f [type/__hostname] Remove opensuse-leap OS string
everything should be suse now…
2020-11-11 14:21:35 +01:00
Dennis Camera
3e48ef9e11 [type/__hostname] Lint
- Error if expected environment variables are unset
- Always wrap variable expansions in {}
2020-11-11 14:21:35 +01:00
bf9d70bb8c Merge branch 'reorg' into 'master'
small reorganization

See merge request ungleich-public/cdist!942
2020-11-11 07:49:08 +01:00
a95eab77a5 __locale: add state explorer
.. so it doesn't execute code all the time.
2020-11-08 15:28:14 +01:00
fe8920740f Merge branch 'feature/__package_apt/recommends' into 'master'
__package_apt: add --install-recommends parameter

See merge request ungleich-public/cdist!949
2020-11-08 13:26:39 +01:00
729fdb9c1a Merge branch 'type/__dpkg_architecture' into 'master'
New type __dpkg_architecture

See merge request ungleich-public/cdist!948
2020-11-08 13:24:58 +01:00
1b3e1acd22 Merge branch 'feature/type/__hostname/openwrt-support' into 'master'
__hostname: Add support for OpenWrt

See merge request ungleich-public/cdist!947
2020-11-08 13:23:36 +01:00
77397514ca Merge branch 'fix/type/__file/pre-exists' into 'master'
__file: Fix --state pre-exists (this time for real)

See merge request ungleich-public/cdist!946
2020-11-08 13:22:06 +01:00
9fc6ee0948 __package_apt: add --install-recommends parameter
For a good reason, __package_apt doesn't install recommended packages as
default. But the option --install-recommends comes handy if you want to
install a package where you want to install all recommended packages
(and not to install all of them separately).

Also, the manpage now explains that the type won't install recommended
packages by default.
2020-11-08 13:19:46 +01:00
91bcc2a293 __dpkg_architecture: make type nonparallel
I think it's not good that dpkg or apt is running in parallel.
2020-11-07 21:03:38 +01:00
7777580d8f __dpkg_architecture: add copyright headers 2020-11-07 20:56:17 +01:00
b0f3bb3350 New type __dpkg_architecture
This type handles foreign architectures added to dpkg.
2020-11-07 18:24:27 +01:00
Dennis Camera
10abe514b8 [type/__hostname] Add support for OpenWrt 2020-11-07 12:20:16 +01:00
Darko Poljak
0f1df5ef68 Fix shellcheck source directives 2020-11-07 12:07:58 +01:00
bd9b21394f Merge branch 'type/openwrt-uci' into 'master'
Add OpenWrt UCI types

See merge request ungleich-public/cdist!886
2020-11-07 11:59:56 +01:00
67f1475a20 Merge branch 'feature/type/__apt_norecommends/reuse-file' into 'master'
__apt_norecommends: Use 00InstallRecommends file as debian-installer does

See merge request ungleich-public/cdist!945
2020-11-06 08:26:36 +01:00
Dennis Camera
df881c0f98 [type/__file] Fix --state pre-exists also for non-dry-runs 2020-11-04 08:34:17 +01:00
Darko Poljak
2be8c63458 pycodestyle fixes 2020-11-03 06:43:57 +01:00
Dennis Camera
ade69729dd [type/__uci_section] Only generate UCI commands if state differs 2020-11-01 21:36:21 +01:00
Dennis Camera
9d40500570 [type/__uci_section] Apply all commands in a single batch 2020-11-01 21:36:21 +01:00
Dennis Camera
3e5f18d409 [type/__uci] Apply all commands in a single batch 2020-11-01 21:36:21 +01:00
Dennis Camera
ec984f81b5 [type/__uci] Delete --transaction parameter 2020-11-01 21:36:21 +01:00
Dennis Camera
dfe9e08c28 [type/__uci_commit] Delete type 2020-11-01 21:36:21 +01:00
Dennis Camera
e264fb004f [type/__uci] Convert to immediate remote execution 2020-11-01 21:36:21 +01:00
Dennis Camera
c1ae3ccb2f [type/__uci*] Remove public-facing transaction "interface" 2020-11-01 21:36:16 +01:00
Dennis Camera
a6c37095f1 [type/__uci_section] Externalise functions to separate file 2020-11-01 21:35:24 +01:00
Dennis Camera
7b30119504 [type/__uci] Externalise functions to separate file 2020-11-01 21:35:24 +01:00
Dennis Camera
63d41a1053 [type/__uci_section] Improve --match support with existing named sections
Use section if named section exists without --match option (e.g. empty section).
2020-11-01 21:35:24 +01:00
Dennis Camera
4aebb1f127 [type/__uci*] Update man.rst regarding quoting requirements 2020-11-01 21:35:24 +01:00
Dennis Camera
8728817af6 [type/__uci] Unquote UCI reported values
Without unquoting values printed in single quotes by UCI would always lead to
the state explorer reporting "different".
2020-11-01 21:35:24 +01:00
Dennis Camera
b99ca3cbdf [type/__uci_section] Split up --option and --list 2020-11-01 21:35:16 +01:00
Dennis Camera
49e867fab4 [type/__uci_section] Add more parameter checks 2020-11-01 15:49:17 +01:00
Dennis Camera
0840afce03 [type/__uci] Add --type parameter 2020-11-01 15:49:13 +01:00
Dennis Camera
fe26c119b5 [type/__uci*] Update man pages 2020-11-01 13:34:31 +01:00
Dennis Camera
c37253b852 [type/__uci_section] Check __object_id for syntax errors 2020-11-01 13:34:31 +01:00
Dennis Camera
3a6b085145 [type/__uci] Check __object_id for syntax errors 2020-11-01 13:34:31 +01:00
Dennis Camera
f782a5a370 [type/__uci] Refactor to do proper quoting of UCI commands 2020-11-01 13:34:31 +01:00
Dennis Camera
d453d964e1 [type/__uci_section] Fix in section matching 2020-11-01 13:34:31 +01:00
Dennis Camera
179815b5e9 [type/__uci_section] Ignore SC2015 error (notabug) 2020-11-01 13:34:31 +01:00
Dennis Camera
4da3968118 [type/__uci_section] Add type 2020-11-01 13:34:31 +01:00
Dennis Camera
3ef638a611 [type/__uci_commit] Fail when uci(1) reports errors 2020-11-01 13:34:31 +01:00
Dennis Camera
cc599dab15 [type/__uci_commit] Move uncommited changes check from explorer to code-remote
This is done to prevent false positives/negatives (see NOTE in code)
2020-11-01 13:34:22 +01:00
Dennis Camera
e7369a1f99 [type/__uci_commit] Abort if uncommited changes are present on the target 2020-11-01 13:32:00 +01:00
Dennis Camera
3a3be36310 [type/__uci_commit] Send message on commit of a transaction 2020-11-01 11:01:25 +01:00
Dennis Camera
d3574b2d3e [type/__uci] Send messages when options are set to be altered 2020-11-01 11:01:25 +01:00
Dennis Camera
d8f20a6a20 [type/__uci] Implement "real" transactions using batch files 2020-11-01 11:01:25 +01:00
Dennis Camera
a09120977f [type/__uci] Allow omission of --value parameter if --state absent 2020-11-01 11:01:25 +01:00
Dennis Camera
55e7b32449 [type/__uci] Only generate __uci_commit if changes are required 2020-11-01 11:01:25 +01:00
Dennis Camera
e30ecdda53 Add __uci and __uci_commit types 2020-11-01 11:01:25 +01:00
Nico Schottelius
09dfcfe81e [scanner] add to beta commands 2020-10-29 23:16:08 +01:00
Nico Schottelius
87b46a6224 [scanner] finish prototype
ping @poljakowski - it's your turn now
2020-10-29 18:49:20 +01:00
Nico Schottelius
b9ad22595f [scanner] begin scanner implementation - non invasive 2020-10-29 18:03:27 +01:00
Dennis Camera
82a9aa7902 [type/__apt_norecommends] Use 00InstallRecommends file as debian-installer does
debian-installer can be preseeded with `base-installer/install-recommends` to
disable installation of recommended packages already during OS installation.
d-i will then create the file `/etc/apt/apt.conf.d/00InstallRecommends`
(cf. https://salsa.debian.org/installer-team/base-installer/-/blob/master/library.sh).

__apt_norecommends should use the same file to avoid having two config files
effectively doing the same thing.
2020-10-29 10:45:18 +01:00
eda96a06a0 Merge branch 'fix/type/__file/pre-exists-dryrun' into 'master'
__file: Fix --state pre-exists

See merge request ungleich-public/cdist!944
2020-10-29 09:29:41 +01:00
Dennis Camera
367da4b77e [type/__file] Fix --state pre-exists 2020-10-28 18:18:24 +01:00
aa5e882fce Merge branch 'master' into reorg 2020-10-21 20:26:51 +03:00
b139ba2a5c Merge branch '__update_alternatives_improvements' into 'master'
[__update_alternatives] rewrite and support --install

See merge request ungleich-public/cdist!936
2020-10-19 06:55:35 +02:00
f96f23e970 Merge branch '__acl_remove_deprecated' into 'master'
[__acl] remove deprecated parameters, fix some bugs and improve manual

Closes #823

See merge request ungleich-public/cdist!933
2020-10-19 06:54:13 +02:00
716cd37281 [__update_alternatives] rewrite and support --install 2020-10-18 23:57:25 +03:00
e3d906a85f [__acl] remove deprecated parameters, fix some bugs and improve manual 2020-10-18 23:54:01 +03:00
b2e6afb57e __download: adapt download+unpack example in manpage 2020-10-17 23:01:36 +02:00
507fa6fa93 __download: fix non-existent parameter of __unpack
Probably happened due to renaming .. guess it's correct now.
2020-10-17 17:09:41 +02:00
e55db1b427 use check_output for git describe execution and define fallback VERSION earlier 2020-10-16 15:41:38 +03:00
42d5d6c3e2 redundant str() 2020-10-16 14:12:39 +03:00
65c8af4ba3 overengineered version discovery 2020-10-16 14:11:12 +03:00
1614b62f70 fallback VERSION to "unknown version" 2020-10-16 13:48:28 +03:00
86057cef19 don't die if there is no version.py 2020-10-14 02:20:58 +03:00
1057ceef01 Merge branch 'line-replace' into 'master'
[__line] Add support for '--state replace'

See merge request ungleich-public/cdist!939
2020-10-09 06:51:45 +02:00
c030deea3d [__line] Add support for '--state replace'
It is currently counter-intuitive that something like:

    # File '/thing' contents
    #SomeSetting WrongValue

    # Manifest
    __line '/thing' \
           --line 'SomeSeting GoodValue' \
           --regex '^(#[[:space:]]*)?SomeSetting[[:space:]]'

Produces:

    # Resulting '/thing' contents
    #SomeSetting WrongValue

This makes sense given the implementation, but it masks a very common use-case.

Changing the default behaviour for such a base type is not really an option, so
instead we add a `replace` as a valid value for `--state`, which would result
in:

    # Resulting '/thing' contents with: --state replace
    SomeSetting GoodValue

For compatibility, if the regex is missing, `--state replace` behaves just as
`--state present`.
2020-10-09 06:51:44 +02:00
Mark Verboom
5aeed14b1b Fixed calling of __systemd_service type with correct arguments. 2020-10-08 16:15:20 +02:00
Darko Poljak
3fa74b454a Fix typo 2020-09-30 15:43:32 +02:00
f994226d0e [__package_pkgng_freebsd] Bootstrap pkg if necessary
In a pristine FreeBSD base installation, pkg is really a bootstrapper utility,
in such cases the type used to fail instead of automatically bootstrapping pkg.
2020-09-29 19:47:59 +02:00