Defer explorer logic
This commit is contained in:
		
					parent
					
						
							
								6a4e047538
							
						
					
				
			
			
				commit
				
					
						3020ee91c2
					
				
			
		
					 5 changed files with 40 additions and 119 deletions
				
			
		| 
						 | 
					@ -1,20 +0,0 @@
 | 
				
			||||||
#!/bin/sh -e
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 2021 Daniel Fancsali (fancsali@gmail.com)
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 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 <http://www.gnu.org/licenses/>.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
| 
						 | 
					@ -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 <http://www.gnu.org/licenses/>.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
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
 | 
					 | 
				
			||||||
| 
						 | 
					@ -18,15 +18,9 @@
 | 
				
			||||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
					# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
state_is="$( cat "$__object/explorer/state" )"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
state_should="$( cat "$__object/parameter/state" )"
 | 
					state_should="$( cat "$__object/parameter/state" )"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [ "$state_is" = "$state_should" ]
 | 
					 | 
				
			||||||
then
 | 
					 | 
				
			||||||
    exit 0
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [ -f "$__object/parameter/name" ]
 | 
					if [ -f "$__object/parameter/name" ]
 | 
				
			||||||
then
 | 
					then
 | 
				
			||||||
    name="$( cat "$__object/parameter/name" )"
 | 
					    name="$( cat "$__object/parameter/name" )"
 | 
				
			||||||
| 
						 | 
					@ -34,6 +28,20 @@ else
 | 
				
			||||||
    name="$__object_id"
 | 
					    name="$__object_id"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Figure out the current state
 | 
				
			||||||
 | 
					# Not an explorer, as otherwise there'd be issues around the dependencies
 | 
				
			||||||
 | 
					if [ -n "$( $__remote_exec $__target_host "mysql -B -N -e \"show databases like '$name'\"" )" ]
 | 
				
			||||||
 | 
					then
 | 
				
			||||||
 | 
					    state_is="present"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					    state_is="absent"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ "$state_is" = "$state_should" ]
 | 
				
			||||||
 | 
					then
 | 
				
			||||||
 | 
					    exit 0
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
case "$state_should" in
 | 
					case "$state_should" in
 | 
				
			||||||
    present)
 | 
					    present)
 | 
				
			||||||
        echo "mysql -e 'create database \`$name\`'"
 | 
					        echo "mysql -e 'create database \`$name\`'"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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 <http://www.gnu.org/licenses/>.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
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
 | 
					 | 
				
			||||||
| 
						 | 
					@ -18,15 +18,9 @@
 | 
				
			||||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
					# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
state_is="$( cat "$__object/explorer/state" )"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
state_should="$( cat "$__object/parameter/state" )"
 | 
					state_should="$( cat "$__object/parameter/state" )"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [ "$state_is" = "$state_should" ]
 | 
					 | 
				
			||||||
then
 | 
					 | 
				
			||||||
    exit 0
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [ -f "$__object/parameter/name" ]
 | 
					if [ -f "$__object/parameter/name" ]
 | 
				
			||||||
then
 | 
					then
 | 
				
			||||||
    name="$( cat "$__object/parameter/name" )"
 | 
					    name="$( cat "$__object/parameter/name" )"
 | 
				
			||||||
| 
						 | 
					@ -49,6 +43,32 @@ else
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Current state
 | 
				
			||||||
 | 
					# Not an exploerer, to avoid issues with mysql not installed YET
 | 
				
			||||||
 | 
					check_user="$( $__remote_exec $__target_host "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="$( $__remote_exec $__target_host "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
 | 
				
			||||||
 | 
					        state_is='change-password'
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        state_is='present'
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					    state_is='absent'
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ "$state_is" = "$state_should" ]
 | 
				
			||||||
 | 
					then
 | 
				
			||||||
 | 
					    exit 0
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [ "$state_is" = 'absent' ] && [ "$state_should" = 'present' ]
 | 
					if [ "$state_is" = 'absent' ] && [ "$state_should" = 'present' ]
 | 
				
			||||||
then
 | 
					then
 | 
				
			||||||
    echo "mysql -e 'create user \`$name\`@\`$host\` identified by \"$password\"'"
 | 
					    echo "mysql -e 'create user \`$name\`@\`$host\` identified by \"$password\"'"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue