| 
									
										
										
										
											2011-03-26 00:25:46 +01:00
										 |  |  | #!/bin/sh | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # 2011 Nico Schottelius (nico-cdist at schottelius.org) | 
					
						
							|  |  |  | # 2011 Steven Armstrong (steven-cdist at armstrong.cc) | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # 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/>. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | #  | 
					
						
							|  |  |  | # For each created object: | 
					
						
							|  |  |  | #  - run type explorers | 
					
						
							|  |  |  | #  - generate code | 
					
						
							|  |  |  | #  - copy object to target | 
					
						
							|  |  |  | #  - execute code on target | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | . cdist-config | 
					
						
							|  |  |  | [ $# -eq 1 ] || __cdist_usage "<target host>" | 
					
						
							|  |  |  | set -eu | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | __cdist_target_host="$1"; shift | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-26 22:09:19 +01:00
										 |  |  | __cdist_objects="$__cdist_tmp_dir/objects" | 
					
						
							|  |  |  | __cdist_types_pushed="$__cdist_tmp_dir/types_pushed" | 
					
						
							|  |  |  | touch "$__cdist_types_pushed" | 
					
						
							| 
									
										
										
										
											2011-03-26 00:25:46 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Get listing of objects | 
					
						
							| 
									
										
										
										
											2011-03-26 22:09:19 +01:00
										 |  |  | __cdist_object_list "$__cdist_out_object_dir" > "$__cdist_objects" | 
					
						
							| 
									
										
										
										
											2011-03-26 00:25:46 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-26 01:46:02 +01:00
										 |  |  | # NEED TO CREATE ARRAY, SSH DESTROYS WHILE READ LOOP | 
					
						
							| 
									
										
										
										
											2011-03-26 22:09:19 +01:00
										 |  |  | while read __cdist_object; do | 
					
						
							|  |  |  |    set -- "$@" "$__cdist_object" | 
					
						
							|  |  |  | done < "$__cdist_objects" | 
					
						
							| 
									
										
										
										
											2011-03-26 01:46:02 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | while [ $# -gt 0 ]; do | 
					
						
							| 
									
										
										
										
											2011-03-26 22:09:19 +01:00
										 |  |  |    __cdist_object="$1"; shift | 
					
						
							| 
									
										
										
										
											2011-03-26 01:46:02 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-26 22:09:19 +01:00
										 |  |  |    __cdist_type="$(__cdist_type_from_object "$__cdist_object")" | 
					
						
							| 
									
										
										
										
											2011-03-26 01:46:02 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |    # Check if type of object has >= 1 explorer | 
					
						
							| 
									
										
										
										
											2011-03-26 22:09:19 +01:00
										 |  |  |    __cdist_has_explorer="$(__cdist_type_has_explorer "$__cdist_type")" | 
					
						
							| 
									
										
										
										
											2011-03-26 01:46:02 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |    # If so, run explorers on remote side | 
					
						
							| 
									
										
										
										
											2011-03-26 22:09:19 +01:00
										 |  |  |    if [ "$__cdist_has_explorer" ]; then | 
					
						
							| 
									
										
										
										
											2011-03-26 00:25:46 +01:00
										 |  |  |       # Transfer the type explorers | 
					
						
							| 
									
										
										
										
											2011-03-26 22:09:19 +01:00
										 |  |  |       if ! grep -q "$__cdist_type" "$__cdist_types_pushed"; then | 
					
						
							| 
									
										
										
										
											2011-03-26 00:25:46 +01:00
										 |  |  |          cdist-type-explorer-push "$__cdist_target_host" "$__cdist_type" | 
					
						
							| 
									
										
										
										
											2011-03-26 22:09:19 +01:00
										 |  |  |          echo "$__cdist_type" >> "$__cdist_types_pushed" | 
					
						
							| 
									
										
										
										
											2011-03-26 00:25:46 +01:00
										 |  |  |       fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       # Run the type explorers for the current object | 
					
						
							| 
									
										
										
										
											2011-03-26 22:09:19 +01:00
										 |  |  |       cdist-object-explorer-run "$__cdist_target_host" "$__cdist_object" | 
					
						
							| 
									
										
										
										
											2011-03-26 00:25:46 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |    fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-26 01:46:02 +01:00
										 |  |  |    # Run the gencode scripts for the current object | 
					
						
							| 
									
										
										
										
											2011-03-26 22:09:19 +01:00
										 |  |  |    cdist-object-gencode-run "$__cdist_target_host" "$__cdist_object" | 
					
						
							| 
									
										
										
										
											2011-03-26 01:46:02 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |    # Transfer the current object to the target | 
					
						
							| 
									
										
										
										
											2011-03-26 22:09:19 +01:00
										 |  |  |    cdist-object-push "$__cdist_target_host" "$__cdist_object" | 
					
						
							| 
									
										
										
										
											2011-03-26 01:46:02 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |    # Run the code for the current object | 
					
						
							| 
									
										
										
										
											2011-03-26 22:09:19 +01:00
										 |  |  |    cdist-object-code-run "$__cdist_target_host" "$__cdist_object" | 
					
						
							| 
									
										
										
										
											2011-03-26 01:46:02 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | done | 
					
						
							| 
									
										
										
										
											2011-03-26 00:25:46 +01:00
										 |  |  | 
 |