diff options
Diffstat (limited to 'tools/gce_setup')
-rwxr-xr-x | tools/gce_setup/grpc_docker.sh | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/tools/gce_setup/grpc_docker.sh b/tools/gce_setup/grpc_docker.sh index d2614fbb13..c5d02d77a3 100755 --- a/tools/gce_setup/grpc_docker.sh +++ b/tools/gce_setup/grpc_docker.sh @@ -18,6 +18,20 @@ # * on startup, some of the docker images will be regenerated automatically # - used grpc_update_image to update images via that instance + +# Creates the ssh key file expect by 'gcloud compute ssh' if it does not exist. +# +# Allows gcloud ssh commands to run on freshly started docker instances. +_grpc_ensure_gcloud_ssh() { + local default_key_file="$HOME/.ssh/google_compute_engine" + [ -f $default_key_file ] || { + ssh-keygen -f $default_key_file -N '' > /dev/null || { + echo "could not precreate $default_key_file" 1>&2 + return 1 + } + } +} + # Pushes a dockerfile dir to cloud storage. # # dockerfile is expected to the parent directory to a nunber of directoies each @@ -50,6 +64,7 @@ grpc_push_dockerfiles() { # Adds the user to docker group on a GCE instance, and restarts the docker # daemon grpc_add_docker_user() { + _grpc_ensure_gcloud_ssh || return 1; local host=$1 [[ -n $host ]] || { echo "$FUNCNAME: missing arg: host" 1>&2 @@ -81,6 +96,7 @@ grpc_add_docker_user() { # grpc_update_image gs://bucket/path/to/dockerfile parent \. # image_label path/to/docker_dir docker_gce_instance [project] [zone] grpc_update_image() { + _grpc_ensure_gcloud_ssh || return 1; local gs_root_uri=$1 [[ -n $gs_root_uri ]] || { echo "$FUNCNAME: missing arg: gs_root_uri" 1>&2 @@ -350,6 +366,8 @@ grpc_update_docker_images_args() { # # Updates the GCE docker instance <server_name> grpc_update_docker_images() { + _grpc_ensure_gcloud_ssh || return 1; + # declare vars local so that they don't pollute the shell environment # where they this func is used. local grpc_zone grpc_project dry_run # set by grpc_set_project_and_zone @@ -469,6 +487,7 @@ grpc_launch_server() { # # --server_host=<svr_addr> --server_port=<svr_port> --test_case=<...> grpc_interop_test() { + _grpc_ensure_gcloud_ssh || return 1; # declare vars local so that they don't pollute the shell environment # where they this func is used. |