From 8b53003a16d1f80a6e3031a58f29b7bb60b264cd Mon Sep 17 00:00:00 2001 From: Tomas Pospisek Date: Tue, 9 Sep 2014 15:42:30 +0200 Subject: [PATCH] add __postgres_extension type --- .../type/__postgres_extension/gencode-remote | 39 ++++++++++++++ cdist/conf/type/__postgres_extension/man.text | 52 +++++++++++++++++++ .../parameter/default/state | 1 + .../__postgres_extension/parameter/optional | 1 + 4 files changed, 93 insertions(+) create mode 100755 cdist/conf/type/__postgres_extension/gencode-remote create mode 100644 cdist/conf/type/__postgres_extension/man.text create mode 100644 cdist/conf/type/__postgres_extension/parameter/default/state create mode 100644 cdist/conf/type/__postgres_extension/parameter/optional diff --git a/cdist/conf/type/__postgres_extension/gencode-remote b/cdist/conf/type/__postgres_extension/gencode-remote new file mode 100755 index 00000000..3408df86 --- /dev/null +++ b/cdist/conf/type/__postgres_extension/gencode-remote @@ -0,0 +1,39 @@ +#!/bin/sh +# +# 2011 Steven Armstrong (steven-cdist at armstrong.cc) +# 2013 Tomas Pospisek (tpo_deb at sourcepole.ch) +# +# This type was created by Tomas Pospisek based on the +#__postgres_role type by Steven Armstrong +# +# 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 . +# + +dbname=$( echo "$__object_id" | cut -d":" -f1 ) +extension=$( echo "$__object_id" | cut -d":" -f2 ) + +state_should=$( cat "$__object/parameter/state" ) + +case "$state_should" in + present) + cmd="CREATE EXTENSION IF NOT EXISTS $extension" + echo "su - postgres -c 'psql -c \"$cmd\" \"$dbname\"'" + ;; + absent) + cmd="DROP EXTENSION IF EXISTS $extenstion" + echo "su - postgres -c 'psql -c \"$cmd\" \"$dbname\"'" + ;; +esac diff --git a/cdist/conf/type/__postgres_extension/man.text b/cdist/conf/type/__postgres_extension/man.text new file mode 100644 index 00000000..6d722d68 --- /dev/null +++ b/cdist/conf/type/__postgres_extension/man.text @@ -0,0 +1,52 @@ +cdist-type__postgres_extension(7) +================================= +Tomas Pospisek + + +NAME +---- +cdist-type__postgres_extension - manage postgres extensions + + +DESCRIPTION +----------- +This cdist type allows you to create or drop postgres extensions. + +The object you need to pass to __postgres_extension consists of +the database name and the extension name joined by a colon in the +following form: + + dbname:extension + +f.ex. + + rails_test:unaccent + + +OPTIONAL PARAMETERS +------------------- +state:: + Either "present" or "absent", defaults to "present" + + +EXAMPLES +-------- + +-------------------------------------------------------------------------------- +__postgres_extension rails_test:unaccent +__postgres_extension --present rails_test:unaccent +__postgres_extension --absent rails_test:unaccent +-------------------------------------------------------------------------------- + + +SEE ALSO +-------- +- cdist-type(7) +- cdist-type__postgres_database(7) +- http://www.postgresql.org/docs/current/static/sql-createextension.html + + +COPYING +------- +Copyright \(C) 2014 Tomas Pospisek. Free use of this software is +granted under the terms of the GNU General Public License version 3 (GPLv3). diff --git a/cdist/conf/type/__postgres_extension/parameter/default/state b/cdist/conf/type/__postgres_extension/parameter/default/state new file mode 100644 index 00000000..e7f6134f --- /dev/null +++ b/cdist/conf/type/__postgres_extension/parameter/default/state @@ -0,0 +1 @@ +present diff --git a/cdist/conf/type/__postgres_extension/parameter/optional b/cdist/conf/type/__postgres_extension/parameter/optional new file mode 100644 index 00000000..ff72b5c7 --- /dev/null +++ b/cdist/conf/type/__postgres_extension/parameter/optional @@ -0,0 +1 @@ +state