diff --git a/bin/build-helper b/bin/build-helper index ed41e438..69dee4c7 100755 --- a/bin/build-helper +++ b/bin/build-helper @@ -370,7 +370,7 @@ eof cat << eof Manual steps post release: - cdist-web - - send generated mailinglist.tmp mail + - send mail body generated in mailinglist.tmp and inform Dmitry for deb - twitter eof ;; diff --git a/cdist/argparse.py b/cdist/argparse.py index 611c484a..9311bdf4 100644 --- a/cdist/argparse.py +++ b/cdist/argparse.py @@ -440,8 +440,8 @@ def get_parsers(): # Info parser['info'] = parser['sub'].add_parser('info') parser['info'].add_argument( - '-a', '--all', help='Display all info. This is the default.', - action='store_true', default=False) + '-a', '--all', help='Display all info.', action='store_true', + default=False) parser['info'].add_argument( '-c', '--conf-dir', help='Add configuration directory (can be repeated).', @@ -451,16 +451,9 @@ def get_parsers(): help='Display info for global explorers.', action='store_true', default=False) parser['info'].add_argument( - '-F', '--fixed-string', - help='Interpret pattern as a fixed string.', action='store_true', + '-H', '--suppress-headers', + help='Suppress displaying header lines.', action='store_true', default=False) - parser['info'].add_argument( - '-f', '--full', help='Display full details.', - action='store_true', default=False) - parser['info'].add_argument( - '-g', '--config-file', - help='Use specified custom configuration file.', - dest="config_file", required=False) parser['info'].add_argument( '-t', '--types', help='Display info for types.', action='store_true', default=False) diff --git a/cdist/conf/type/__acl/gencode-remote b/cdist/conf/type/__acl/gencode-remote index f4f0d1e2..6dab4d09 100755 --- a/cdist/conf/type/__acl/gencode-remote +++ b/cdist/conf/type/__acl/gencode-remote @@ -28,10 +28,7 @@ acl_path="/$__object_id" acl_is="$( cat "$__object/explorer/acl_is" )" -if [ -f "$__object/parameter/entry" ] -then - acl_should="$( cat "$__object/parameter/entry" )" -elif [ -f "$__object/parameter/acl" ] +if [ -f "$__object/parameter/acl" ] then acl_should="$( cat "$__object/parameter/acl" )" elif diff --git a/cdist/conf/type/__acl/man.rst b/cdist/conf/type/__acl/man.rst index c3493e49..85e946ce 100644 --- a/cdist/conf/type/__acl/man.rst +++ b/cdist/conf/type/__acl/man.rst @@ -15,7 +15,7 @@ See ``setfacl`` and ``acl`` manpages for more details. REQUIRED MULTIPLE PARAMETERS ---------------------------- -entry +acl Set ACL entry following ``getfacl`` output syntax. @@ -36,8 +36,8 @@ remove DEPRECATED PARAMETERS --------------------- -Parameters ``acl``, ``user``, ``group``, ``mask`` and ``other`` are deprecated and they -will be removed in future versions. Please use ``entry`` parameter instead. +Parameters ``user``, ``group``, ``mask`` and ``other`` are deprecated and they +will be removed in future versions. Please use ``acl`` parameter instead. EXAMPLES @@ -49,27 +49,27 @@ EXAMPLES --default \ --recursive \ --remove \ - --entry user:alice:rwx \ - --entry user:bob:r-x \ - --entry group:project-group:rwx \ - --entry group:some-other-group:r-x \ - --entry mask::r-x \ - --entry other::r-x + --acl user:alice:rwx \ + --acl user:bob:r-x \ + --acl group:project-group:rwx \ + --acl group:some-other-group:r-x \ + --acl mask::r-x \ + --acl other::r-x # give Alice read-only access to subdir, # but don't allow her to see parent content. __acl /srv/project2 \ --remove \ - --entry default:group:secret-project:rwx \ - --entry group:secret-project:rwx \ - --entry user:alice:--x + --acl default:group:secret-project:rwx \ + --acl group:secret-project:rwx \ + --acl user:alice:--x __acl /srv/project2/subdir \ --default \ --remove \ - --entry group:secret-project:rwx \ - --entry user:alice:r-x + --acl group:secret-project:rwx \ + --acl user:alice:r-x AUTHORS diff --git a/cdist/conf/type/__acl/parameter/deprecated/acl b/cdist/conf/type/__acl/parameter/deprecated/acl deleted file mode 100644 index 94e14159..00000000 --- a/cdist/conf/type/__acl/parameter/deprecated/acl +++ /dev/null @@ -1 +0,0 @@ -see manual for details diff --git a/cdist/conf/type/__acl/parameter/optional_multiple b/cdist/conf/type/__acl/parameter/optional_multiple index c615d507..95c25d55 100644 --- a/cdist/conf/type/__acl/parameter/optional_multiple +++ b/cdist/conf/type/__acl/parameter/optional_multiple @@ -1,4 +1,3 @@ -entry acl user group diff --git a/cdist/conf/type/__mysql_database/explorer/state b/cdist/conf/type/__mysql_database/explorer/state deleted file mode 100755 index 79858695..00000000 --- a/cdist/conf/type/__mysql_database/explorer/state +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/sh -e -# -# 2020 Ander Punnar (ander-at-kvlt-dot-ee) -# -# 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 . -# - -if [ -f "$__object/parameter/name" ] -then - name="$( cat "$__object/parameter/name" )" -else - name="$__object_id" -fi - -if [ -n "$( mysql -B -N -e "show databases like '$name'" )" ] -then - echo 'present' -else - echo 'absent' -fi diff --git a/cdist/conf/type/__mysql_database/gencode-remote b/cdist/conf/type/__mysql_database/gencode-remote index 1bdb2b11..23e51b05 100755 --- a/cdist/conf/type/__mysql_database/gencode-remote +++ b/cdist/conf/type/__mysql_database/gencode-remote @@ -1,6 +1,6 @@ #!/bin/sh -e # -# 2020 Ander Punnar (ander-at-kvlt-dot-ee) +# 2012 Benedikt Koeppel (code@benediktkoeppel.ch) # # This file is part of cdist. # @@ -17,30 +17,38 @@ # You should have received a copy of the GNU General Public License # along with cdist. If not, see . # +# -state_is="$( cat "$__object/explorer/state" )" - -state_should="$( cat "$__object/parameter/state" )" - -if [ "$state_is" = "$state_should" ] -then - exit 0 +# if --database was specified +if [ -f "$__object/parameter/name" ]; then + database="$(cat "$__object/parameter/name")" +else # otherwise use the object id as database name + database="$__object_id" fi -if [ -f "$__object/parameter/name" ] -then - name="$( cat "$__object/parameter/name" )" -else - name="$__object_id" -fi +cat <<-EOFF +mysql -u root <<-EOF + CREATE DATABASE IF NOT EXISTS $database +EOF +EOFF -case "$state_should" in - present) - echo "mysql -e 'create database \`$name\`'" - echo "create database $name" >> "$__messages_out" - ;; - absent) - echo "mysql -e 'drop database \`$name\`'" - echo "drop database $name" >> "$__messages_out" - ;; -esac +# if --user was specified +if [ -f "$__object/parameter/user" ]; then + user="$(cat "$__object/parameter/user")" + + # if --password was specified + if [ -f "$__object/parameter/password" ]; then + password="$(cat "$__object/parameter/password")" + cat <<-EOFF + mysql -u root <<-EOF + GRANT ALL PRIVILEGES ON $database.* to '$user'@'localhost' IDENTIFIED BY '$password'; +EOF +EOFF + else + cat <<-EOFF + mysql -u root <<-EOF + GRANT ALL PRIVILEGES ON $database.* to '$user'@'localhost'; +EOF +EOFF + fi +fi diff --git a/cdist/conf/type/__mysql_database/man.rst b/cdist/conf/type/__mysql_database/man.rst index b3b56b5f..1e245a08 100644 --- a/cdist/conf/type/__mysql_database/man.rst +++ b/cdist/conf/type/__mysql_database/man.rst @@ -8,24 +8,24 @@ cdist-type__mysql_database - Manage a MySQL database DESCRIPTION ----------- +This cdist type allows you to install a MySQL database. -Create MySQL database and optionally user with all privileges. +REQUIRED PARAMETERS +------------------- +None. OPTIONAL PARAMETERS ------------------- name - Name of database. Defaults to object id. + The name of the database to install + defaults to the object id user - Create user and give all privileges to database. + A user that should have access to the database password - Password for user. - -state - Defaults to present. - If absent and user is also set, both will be removed (with privileges). + The password for the user who manages the database EXAMPLES @@ -33,23 +33,17 @@ EXAMPLES .. code-block:: sh - # just create database - __mysql_database foo - - # create database with respective user with all privileges to database - __mysql_database bar \ - --user name \ - --password secret + __mysql_database "cdist" --name "cdist" --user "myuser" --password "mypwd" AUTHORS ------- -Ander Punnar +Benedikt Koeppel COPYING ------- -Copyright \(C) 2020 Ander Punnar. 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. +Copyright \(C) 2012 Benedikt Koeppel. 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. diff --git a/cdist/conf/type/__mysql_database/manifest b/cdist/conf/type/__mysql_database/manifest deleted file mode 100755 index a3c9ed5d..00000000 --- a/cdist/conf/type/__mysql_database/manifest +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/sh -e -# -# 2020 Ander Punnar (ander-at-kvlt-dot-ee) -# -# 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 . -# - -if [ -f "$__object/parameter/user" ] -then - user="$( cat "$__object/parameter/user" )" -fi - -if [ -f "$__object/parameter/password" ] -then - password="$( cat "$__object/parameter/password" )" -fi - -if [ -n "$user" ] && [ -n "$password" ] -then - if [ -f "$__object/parameter/name" ] - then - database="$( cat "$__object/parameter/name" )" - else - database="$__object_id" - fi - - state_should="$( cat "$__object/parameter/state" )" - - __mysql_user "$user" \ - --password "$password" \ - --state "$state_should" - - # removing user should remove all user's privileges - require="__mysql_user/$user" \ - __mysql_privileges "$database/$user" \ - --database "$database" \ - --user "$user" \ - --state "$state_should" -fi diff --git a/cdist/conf/type/__mysql_database/parameter/default/state b/cdist/conf/type/__mysql_database/parameter/default/state deleted file mode 100644 index e7f6134f..00000000 --- a/cdist/conf/type/__mysql_database/parameter/default/state +++ /dev/null @@ -1 +0,0 @@ -present diff --git a/cdist/conf/type/__mysql_database/parameter/optional b/cdist/conf/type/__mysql_database/parameter/optional index 6c0b1e85..756afee7 100644 --- a/cdist/conf/type/__mysql_database/parameter/optional +++ b/cdist/conf/type/__mysql_database/parameter/optional @@ -1,4 +1,3 @@ name user password -state diff --git a/cdist/conf/type/__mysql_privileges/explorer/state b/cdist/conf/type/__mysql_privileges/explorer/state deleted file mode 100755 index 0cfbaacd..00000000 --- a/cdist/conf/type/__mysql_privileges/explorer/state +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/sh -e -# -# 2020 Ander Punnar (ander-at-kvlt-dot-ee) -# -# 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 . -# - -privileges="$( cat "$__object/parameter/privileges" )" - -database="$( cat "$__object/parameter/database" )" - -table="$( cat "$__object/parameter/table" )" - -user="$( cat "$__object/parameter/user" )" - -host="$( cat "$__object/parameter/host" )" - -check_privileges="$( - mysql -B -N -e "show grants for '$user'@'$host'" \ - | grep -Ei "^grant $privileges on .$database.\..$table. to " || true )" - -if [ -n "$check_privileges" ] -then - echo 'present' -else - echo 'absent' -fi diff --git a/cdist/conf/type/__mysql_privileges/gencode-remote b/cdist/conf/type/__mysql_privileges/gencode-remote deleted file mode 100755 index bcd362e6..00000000 --- a/cdist/conf/type/__mysql_privileges/gencode-remote +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/sh -e -# -# 2020 Ander Punnar (ander-at-kvlt-dot-ee) -# -# 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 . -# - -state_is="$( cat "$__object/explorer/state" )" - -state_should="$( cat "$__object/parameter/state" )" - -if [ "$state_is" = "$state_should" ] -then - exit 0 -fi - -privileges="$( cat "$__object/parameter/privileges" )" - -database="$( cat "$__object/parameter/database" )" - -table="$( cat "$__object/parameter/table" )" - -user="$( cat "$__object/parameter/user" )" - -host="$( cat "$__object/parameter/host" )" - -case "$state_should" in - present) - echo "mysql -e 'grant $privileges on \`$database\`.\`$table\` to \`$user\`@\`$host\`'" - echo "grant $privileges on $database.$table to $user@$host" >> "$__messages_out" - ;; - absent) - echo "mysql -e 'revoke $privileges on \`$database\`.\`$table\` from \`$user\`@\`$host\`'" - echo "revoke $privileges on $database.$table from $user@$host" >> "$__messages_out" - ;; -esac diff --git a/cdist/conf/type/__mysql_privileges/man.rst b/cdist/conf/type/__mysql_privileges/man.rst deleted file mode 100644 index 8208d7d4..00000000 --- a/cdist/conf/type/__mysql_privileges/man.rst +++ /dev/null @@ -1,57 +0,0 @@ -cdist-type__mysql_privileges(7) -=============================== - -NAME ----- -cdist-type__mysql_privileges - Manage MySQL privileges - - -DESCRIPTION ------------ - -Grant and revoke privileges of MySQL user. - - -REQUIRED PARAMETERS -------------------- -database - Name of database. - -User - Name of user. - - -OPTIONAL PARAMETERS -------------------- -privileges - Defaults to "all". - -table - Defaults to "*". - -host - Defaults to localhost. - -state - "present" grants and "absent" revokes. Defaults to present. - - -EXAMPLES --------- - -.. code-block:: sh - - __mysql_privileges user-to-db --database db --user user - - -AUTHORS -------- -Ander Punnar - - -COPYING -------- -Copyright \(C) 2020 Ander Punnar. 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. diff --git a/cdist/conf/type/__mysql_privileges/parameter/default/host b/cdist/conf/type/__mysql_privileges/parameter/default/host deleted file mode 100644 index 2fbb50c4..00000000 --- a/cdist/conf/type/__mysql_privileges/parameter/default/host +++ /dev/null @@ -1 +0,0 @@ -localhost diff --git a/cdist/conf/type/__mysql_privileges/parameter/default/privileges b/cdist/conf/type/__mysql_privileges/parameter/default/privileges deleted file mode 100644 index 5472efad..00000000 --- a/cdist/conf/type/__mysql_privileges/parameter/default/privileges +++ /dev/null @@ -1 +0,0 @@ -all privileges diff --git a/cdist/conf/type/__mysql_privileges/parameter/default/state b/cdist/conf/type/__mysql_privileges/parameter/default/state deleted file mode 100644 index e7f6134f..00000000 --- a/cdist/conf/type/__mysql_privileges/parameter/default/state +++ /dev/null @@ -1 +0,0 @@ -present diff --git a/cdist/conf/type/__mysql_privileges/parameter/default/table b/cdist/conf/type/__mysql_privileges/parameter/default/table deleted file mode 100644 index 72e8ffc0..00000000 --- a/cdist/conf/type/__mysql_privileges/parameter/default/table +++ /dev/null @@ -1 +0,0 @@ -* diff --git a/cdist/conf/type/__mysql_privileges/parameter/optional b/cdist/conf/type/__mysql_privileges/parameter/optional deleted file mode 100644 index d4ed5bc5..00000000 --- a/cdist/conf/type/__mysql_privileges/parameter/optional +++ /dev/null @@ -1,4 +0,0 @@ -privileges -table -host -state diff --git a/cdist/conf/type/__mysql_privileges/parameter/required b/cdist/conf/type/__mysql_privileges/parameter/required deleted file mode 100644 index 152b4a1e..00000000 --- a/cdist/conf/type/__mysql_privileges/parameter/required +++ /dev/null @@ -1,2 +0,0 @@ -database -user diff --git a/cdist/conf/type/__mysql_user/explorer/state b/cdist/conf/type/__mysql_user/explorer/state deleted file mode 100755 index 6817ee9d..00000000 --- a/cdist/conf/type/__mysql_user/explorer/state +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/sh -e -# -# 2020 Ander Punnar (ander-at-kvlt-dot-ee) -# -# 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 . -# - -if [ -f "$__object/parameter/name" ] -then - name="$( cat "$__object/parameter/name" )" -else - name="$__object_id" -fi - -if [ -f "$__object/parameter/password" ] -then - password="$( cat "$__object/parameter/password" )" -else - password='' -fi - -host="$( cat "$__object/parameter/host" )" - -check_user="$( mysql -B -N -e "select user from mysql.user where user = '$name' and host = '$host'" )" - -if [ -n "$check_user" ] -then - if [ -n "$password" ] - then - check_password="$( mysql -B -N -e "select user from mysql.user where user = '$name' and host = '$host' and password = password( '$password' )" )" - fi - - if [ -n "$password" ] && [ -z "$check_password" ] - then - echo 'change-password' - else - echo 'present' - fi -else - echo 'absent' -fi diff --git a/cdist/conf/type/__mysql_user/gencode-remote b/cdist/conf/type/__mysql_user/gencode-remote deleted file mode 100755 index 5f13bc87..00000000 --- a/cdist/conf/type/__mysql_user/gencode-remote +++ /dev/null @@ -1,68 +0,0 @@ -#!/bin/sh -e -# -# 2020 Ander Punnar (ander-at-kvlt-dot-ee) -# -# 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 . -# - -state_is="$( cat "$__object/explorer/state" )" - -state_should="$( cat "$__object/parameter/state" )" - -if [ "$state_is" = "$state_should" ] -then - exit 0 -fi - -if [ -f "$__object/parameter/name" ] -then - name="$( cat "$__object/parameter/name" )" -else - name="$__object_id" -fi - -host="$( cat "$__object/parameter/host" )" - -if [ -f "$__object/parameter/password" ] -then - password="$( cat "$__object/parameter/password" )" -else - if [ "$state_should" = 'present' ] - then - echo '--password needed' >&2 - exit 1 - else - password='' - fi -fi - -if [ "$state_is" = 'absent' ] && [ "$state_should" = 'present' ] -then - echo "mysql -e 'create user \`$name\`@\`$host\` identified by \"$password\"'" - echo "create user $name@$host" >> "$__messages_out" - -elif [ "$state_is" != 'absent' ] && [ "$state_should" = 'absent' ] -then - echo "mysql -e 'drop user \`$name\`@\`$host\`'" - echo "drop user $name@$host" >> "$__messages_out" - -elif [ "$state_is" = 'change-password' ] -then - # this only works with MySQL 5.7.6 and later or MariaDB 10.1.20 and later - echo "mysql -e 'alter user \`$name\`@\`$host\` identified by \"$password\"'" - echo "mysql -e 'flush privileges'" - echo "change password $name@$host" >> "$__messages_out" -fi diff --git a/cdist/conf/type/__mysql_user/man.rst b/cdist/conf/type/__mysql_user/man.rst deleted file mode 100644 index c2b222d5..00000000 --- a/cdist/conf/type/__mysql_user/man.rst +++ /dev/null @@ -1,48 +0,0 @@ -cdist-type__mysql_user(7) -========================= - -NAME ----- -cdist-type__mysql_user - Manage a MySQL user - - -DESCRIPTION ------------ - -Create MySQL user or change password for the user. - - -OPTIONAL PARAMETERS -------------------- -name - Name of user. Defaults to object id. - -host - Host of user. Defaults to localhost. - -password - Password of user. - -state - Defaults to present. - - -EXAMPLES --------- - -.. code-block:: sh - - __mysql_user user --password secret - - -AUTHORS -------- -Ander Punnar - - -COPYING -------- -Copyright \(C) 2020 Ander Punnar. 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. diff --git a/cdist/conf/type/__mysql_user/parameter/default/host b/cdist/conf/type/__mysql_user/parameter/default/host deleted file mode 100644 index 2fbb50c4..00000000 --- a/cdist/conf/type/__mysql_user/parameter/default/host +++ /dev/null @@ -1 +0,0 @@ -localhost diff --git a/cdist/conf/type/__mysql_user/parameter/default/state b/cdist/conf/type/__mysql_user/parameter/default/state deleted file mode 100644 index e7f6134f..00000000 --- a/cdist/conf/type/__mysql_user/parameter/default/state +++ /dev/null @@ -1 +0,0 @@ -present diff --git a/cdist/conf/type/__mysql_user/parameter/optional b/cdist/conf/type/__mysql_user/parameter/optional deleted file mode 100644 index a286266c..00000000 --- a/cdist/conf/type/__mysql_user/parameter/optional +++ /dev/null @@ -1,4 +0,0 @@ -name -host -password -state diff --git a/cdist/conf/type/__postgres_database/gencode-remote b/cdist/conf/type/__postgres_database/gencode-remote index 47e6b97c..61cfa50d 100755 --- a/cdist/conf/type/__postgres_database/gencode-remote +++ b/cdist/conf/type/__postgres_database/gencode-remote @@ -41,16 +41,12 @@ if [ "$state_should" != "$state_is" ]; then present) owner="" if [ -f "$__object/parameter/owner" ]; then - owner="-O \"$(cat "$__object/parameter/owner")\"" + owner="-O '$(cat "$__object/parameter/owner")'" fi - cat << EOF -su - '$postgres_user' -c "createdb $owner \"$name\"" -EOF + echo "su - '$postgres_user' -c \"createdb $owner '$name'\"" ;; absent) - cat << EOF -su - '$postgres_user' -c "dropdb \"$name\"" -EOF + echo "su - '$postgres_user' -c \"dropdb '$name'\"" ;; esac fi diff --git a/cdist/conf/type/__postgres_role/gencode-remote b/cdist/conf/type/__postgres_role/gencode-remote index 977832c9..fd56e85d 100755 --- a/cdist/conf/type/__postgres_role/gencode-remote +++ b/cdist/conf/type/__postgres_role/gencode-remote @@ -53,13 +53,11 @@ case "$state_should" in done [ -n "$password" ] && password="PASSWORD '$password'" - cat << EOF -su - '$postgres_user' -c "psql postgres -wc 'CREATE ROLE \"$name\" WITH $password $booleans;'" -EOF + + cmd="CREATE ROLE $name WITH $password $booleans" + echo "su - '$postgres_user' -c \"psql postgres -wc \\\"$cmd\\\"\"" ;; absent) - cat << EOF -su - '$postgres_user' -c "dropuser \"$name\"" -EOF + echo "su - '$postgres_user' -c \"dropuser \\\"$name\\\"\"" ;; esac diff --git a/cdist/exec/util.py b/cdist/exec/util.py index 9787f431..5ee76287 100644 --- a/cdist/exec/util.py +++ b/cdist/exec/util.py @@ -24,7 +24,6 @@ import os from tempfile import TemporaryFile import cdist -import cdist.configuration # IMPORTANT: @@ -193,17 +192,10 @@ def resolve_conf_dirs(configuration, add_conf_dirs): conf_dirs.append(home_dir) if 'conf_dir' in configuration: - x = configuration['conf_dir'] - if x: - conf_dirs.extend(x) + conf_dirs = configuration['conf_dir'] + if conf_dirs: + conf_dirs.extend(conf_dirs) if add_conf_dirs: conf_dirs.extend(add_conf_dirs) - conf_dirs = set(conf_dirs) return conf_dirs - - -def resolve_conf_dirs_from_config_and_args(args): - cfg = cdist.configuration.Configuration(args) - configuration = cfg.get_config(section='GLOBAL') - return resolve_conf_dirs(configuration, args.conf_dir) diff --git a/cdist/info.py b/cdist/info.py index b896a3d1..5aeeb701 100644 --- a/cdist/info.py +++ b/cdist/info.py @@ -38,144 +38,72 @@ class Info(object): self.display_types = args.types if not self.display_global_explorers and not self.display_types: self.all = True - self.fixed_string = args.fixed_string - self._setup_glob_pattern(args.pattern) - self.full = args.full - - def _setup_glob_pattern(self, pattern): - if pattern is None: + if args.pattern is None: self.glob_pattern = '*' - elif ('?' in pattern or '*' in pattern or '[' in pattern or - self.fixed_string): - self.glob_pattern = pattern else: - self.glob_pattern = '*' + pattern + '*' + self.glob_pattern = args.pattern + self.display_headers = not args.suppress_headers @classmethod def commandline(cls, args): - conf_dirs = util.resolve_conf_dirs_from_config_and_args(args) + cfg = cdist.configuration.Configuration(args) + configuration = cfg.get_config(section='GLOBAL') + conf_dirs = util.resolve_conf_dirs(configuration, + args.conf_dir) c = cls(conf_dirs, args) c.run() - def _get_global_explorers(self, conf_path): - rv = [] + def _print_line(self): + print('-' * 78) + + def _print_double_line(self): + print('=' * 78) + + def _display_global_explorers_info(self, conf_path): + if self.display_headers: + print("{} config directory global explorers:".format(conf_path)) + self._print_double_line() global_explorer_path = os.path.join(conf_path, "explorer", self.glob_pattern) - if self.fixed_string: - if os.path.exists(global_explorer_path): - rv.append(global_explorer_path) - else: - for explorer in glob.glob(global_explorer_path): - rv.append(explorer) - return rv + for explorer in glob.glob(global_explorer_path): + print(explorer) + if self.display_headers: + self._print_line() def _should_display_type(self, dir_entry): if not dir_entry.is_dir(): return False if self.glob_pattern is None: return True - if self.fixed_string: - return dir_entry.name == self.glob_pattern - else: - return fnmatch.fnmatch(dir_entry.name, self.glob_pattern) + return fnmatch.fnmatch(dir_entry.name, self.glob_pattern) - def _get_types(self, conf_path): - rv = [] + def _display_types_info(self, conf_path): + if self.display_headers: + print("{} config directory types:".format(conf_path)) + self._print_double_line() types_path = os.path.join(conf_path, "type") if not os.path.exists(types_path): - return rv + if self.display_headers: + self._print_line() + return with os.scandir(types_path) as it: for entry in it: if self._should_display_type(entry): - rv.append(entry.path) - return rv + print(entry.path) + if self.display_headers: + self._print_line() - def _display_details(self, title, details, default_values=None, - deprecated=None): - if not details: - return - if isinstance(details, bool): - print("\t{}: {}".format(title, 'yes' if details else 'no')) - elif isinstance(details, str): - print("\t{}: {}".format(title, details)) - elif isinstance(details, list): - dv = dict(default_values) if default_values else {} - dp = dict(deprecated) if deprecated else {} - - print("\t{}:".format(title)) - for x in sorted(details): - print("\t\t{}".format(x), end='') - has_default = x in dv - is_deprecated = x in dp - need_comma = False - if has_default or is_deprecated: - print(" (", end='') - if has_default: - print("default: {}".format(dv[x]), end='') - need_comma = True - if is_deprecated: - print("{}deprecated".format(', ' if need_comma else ''), - end='') - if has_default or is_deprecated: - print(")", end='') - print() - - def _display_type_parameters(self, cdist_type): - self._display_details("required parameters", - cdist_type.required_parameters, - default_values=cdist_type.parameter_defaults, - deprecated=cdist_type.deprecated_parameters) - self._display_details("required multiple parameters", - cdist_type.required_multiple_parameters, - default_values=cdist_type.parameter_defaults, - deprecated=cdist_type.deprecated_parameters) - self._display_details("optional parameters", - cdist_type.optional_parameters, - default_values=cdist_type.parameter_defaults, - deprecated=cdist_type.deprecated_parameters) - self._display_details("optional multiple parameters", - cdist_type.optional_multiple_parameters, - default_values=cdist_type.parameter_defaults, - deprecated=cdist_type.deprecated_parameters) - self._display_details("boolean parameters", - cdist_type.boolean_parameters, - default_values=cdist_type.parameter_defaults, - deprecated=cdist_type.deprecated_parameters) - - def _display_type_characteristics(self, cdist_type): - characteristics = [] - if cdist_type.is_install: - characteristics.append('install') - else: - characteristics.append('config') - if cdist_type.is_singleton: - characteristics.append('singleton') - if cdist_type.is_nonparallel: - characteristics.append('nonparallel') - else: - characteristics.append('parallel') - if cdist_type.deprecated is not None: - characteristics.append('deprecated') - print("\t{}".format(', '.join(characteristics))) - - def _display_type_details(self, type_path): - dirname, basename = os.path.split(type_path) - cdist_type = cdist.core.CdistType(dirname, basename) - - self._display_type_characteristics(cdist_type) - self._display_type_parameters(cdist_type) + def _display_conf_dirs(self): + print("Config directories:") + self._print_double_line() + print("{}".format('\n'.join(self.conf_dirs))) + self._print_line() def run(self): - rv = [] - for cp in self.conf_dirs: - conf_path = os.path.expanduser(cp) + if self.display_headers: + self._display_conf_dirs() + for conf_path in self.conf_dirs: if self.all or self.display_global_explorers: - rv.extend((x, 'E', ) for x in self._get_global_explorers( - conf_path)) + self._display_global_explorers_info(conf_path) if self.all or self.display_types: - rv.extend((x, 'T', ) for x in self._get_types(conf_path)) - rv = sorted(rv, key=lambda x: x[0]) - for x, t in rv: - print(x) - if self.full and t == 'T': - self._display_type_details(x) + self._display_types_info(conf_path) diff --git a/cdist/preos.py b/cdist/preos.py index bf2a8e60..378071db 100644 --- a/cdist/preos.py +++ b/cdist/preos.py @@ -5,9 +5,8 @@ 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" @@ -25,6 +24,16 @@ def extend_plugins_path(dirs): _PLUGINS_PATH.append(preos_dir) +cdist_home = cdist.home_dir() +if cdist_home: + extend_plugins_path((cdist_home, )) +x = 'CDIST_PATH' +if x in os.environ: + vals = re.split(r'(?