# This file is meant to be SOURCED # # Copyright 2016 RIFT.IO Inc # Copyright 2016 Telefónica Investigación y Desarrollo S.A.U. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # container_funcs # 24 June 2016 -- Jeremy Mordkoff -- Genesis # -- Gerardo García container_exists() { if [ $# -ne 1 ]; then FATAL "arg is container name" fi lxc config show $1 >/dev/null 2>&1 if [ $? -eq 0 ]; then DEBUG "container $1 exists" return 0 else DEBUG "container $1 not found" return 1 fi } create_container() { if [ $# -lt 2 ]; then FATAL "args are image container [options]" fi INFO "creating container $2 using image $1" image=$1 container=$2 shift 2 DEBUG "lxc launch $image $container $*" lxc launch "$image" "$container" $* } container_exec() { container="$1" shift DEBUG "exec in $container \"$*\"" lxc exec "$container" -- $* } container_exec_stderr() { container="$1" shift DEBUG "exec in $container \"$*\"" lxc exec "$container" -- $* 2>&1 } wait_container_up() { [ $# -eq 1 ] || FATAL "arg is container name got $# args - $*" RE="200" ct=0 while [ $ct -lt 10 ]; do let ct=ct+1 output=$(container_exec_stderr "$1" curl -sL -w "%{http_code}\\n" "http://www.google.com/" -o /dev/null) if [[ $output =~ $RE ]]; then DEBUG "$1 is up" return fi INFO "waiting for container $1 to start" DEBUG "expected '$RE' in $output" sleep 5 done FATAL "container $1 did not start" } container_push_tree() { # create a tarball locally, pipe it into the container and unpack it there [ $# -eq 3 ] || FATAL "args are container dir_from dir_to (dir_to MUST exist)" tar -C "$2" -c . -f - | container_exec $1 tar -C "$3" -x -f - } container_push_devops() { [ $# -eq 1 ] || FATAL "arg is container name got $# args - $*" container_exec "$1" mkdir -p /root/devops container_push_tree "$1" "$(dirname $OSM_JENKINS)" "/root/devops" }