| 
									
										
										
										
											2019-10-07 23:05:36 -06:00
										 |  |  | #!/usr/bin/env bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # XXX: This file isn't *quite* a script.  It is intended to be passed via stdin | 
					
						
							|  |  |  | # to a node to requisition logic up node creation.  Currently this is done in | 
					
						
							|  |  |  | # colo_node_requisition using the eval-cat trick.  While this gets us what we | 
					
						
							|  |  |  | # want, care must be taken to ensure variable expansion happens at the right | 
					
						
							|  |  |  | # time. Any unescaped variable references ($X) in this file will be expanded by | 
					
						
							|  |  |  | # eval in colo_node_requisition. Escaped variable references (\$X) will be | 
					
						
							|  |  |  | # expanded upon execution on the remote node. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if [ ! -f "$SOLANA_LOCK_FILE" ]; then | 
					
						
							|  |  |  |   exec 9>>"$SOLANA_LOCK_FILE" | 
					
						
							| 
									
										
										
										
											2019-10-28 09:20:49 -06:00
										 |  |  |   flock -x -n 9 || ( echo "Failed to acquire lock!" 1>&2 && exit 1 ) | 
					
						
							| 
									
										
										
										
											2019-10-07 23:05:36 -06:00
										 |  |  |   [ -n "\$SOLANA_USER" ] && { | 
					
						
							|  |  |  |     echo "export SOLANA_LOCK_USER=\$SOLANA_USER" | 
					
						
							|  |  |  |     echo "export SOLANA_LOCK_INSTANCENAME=$INSTANCE_NAME" | 
					
						
							|  |  |  |     echo "[ -v SSH_TTY -a -f \"\${HOME}/.solana-motd\" ] && cat \"\${HOME}/.solana-motd\" 1>&2" | 
					
						
							| 
									
										
										
										
											2019-10-28 09:20:49 -06:00
										 |  |  |   } >&9 || ( rm "$SOLANA_LOCK_FILE" && echo "SOLANA_USER undefined" 1>&2 && false ) | 
					
						
							| 
									
										
										
										
											2019-10-07 23:05:36 -06:00
										 |  |  |   9>&- | 
					
						
							|  |  |  |   cat > /solana-scratch/id_ecdsa <<EOK | 
					
						
							|  |  |  | $(cat "$SSH_PRIVATE_KEY") | 
					
						
							|  |  |  | EOK | 
					
						
							|  |  |  |   cat > /solana-scratch/id_ecdsa.pub <<EOK | 
					
						
							|  |  |  | $(cat "${SSH_PRIVATE_KEY}.pub") | 
					
						
							|  |  |  | EOK | 
					
						
							|  |  |  |   chmod 0600 /solana-scratch/id_ecdsa | 
					
						
							|  |  |  |   cat > /solana-scratch/authorized_keys <<EOAK | 
					
						
							|  |  |  | $("$__colo_here"/add-datacenter-solana-user-authorized_keys.sh 2> /dev/null) | 
					
						
							|  |  |  | $(cat "${SSH_PRIVATE_KEY}.pub") | 
					
						
							|  |  |  | EOAK | 
					
						
							|  |  |  |   cp /solana-scratch/id_ecdsa "\${HOME}/.ssh/id_ecdsa" | 
					
						
							|  |  |  |   cp /solana-scratch/id_ecdsa.pub "\${HOME}/.ssh/id_ecdsa.pub" | 
					
						
							|  |  |  |   cp /solana-scratch/authorized_keys "\${HOME}/.ssh/authorized_keys" | 
					
						
							|  |  |  |   cat > "\${HOME}/.solana-motd" <<EOM | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | $(printNetworkInfo) | 
					
						
							|  |  |  | $(creationInfo) | 
					
						
							|  |  |  | EOM | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   # XXX: Stamp creation MUST be last! | 
					
						
							|  |  |  |   touch /solana-scratch/.instance-startup-complete | 
					
						
							|  |  |  | else | 
					
						
							| 
									
										
										
										
											2019-10-28 09:20:49 -06:00
										 |  |  |   exec 9<"$SOLANA_LOCK_FILE" && flock -s 9 && . "$SOLANA_LOCK_FILE" && exec 9>&- | 
					
						
							|  |  |  |   echo "${INSTANCE_NAME} candidate is already \${SOLANA_LOCK_INSTANCENAME}" 1>&2 | 
					
						
							| 
									
										
										
										
											2019-10-07 23:05:36 -06:00
										 |  |  |   false | 
					
						
							|  |  |  | fi |