# this file is meant to be sourced
#
#   Copyright 2016 RIFT.IO Inc
#
#   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.
#
# import all functions
#
# 24 June 2016 -- Jeremy Mordkoff -- Genesis

if [ -z "$OSM_JENKINS" ]; then
	export OSM_JENKINS=$(realpath $(dirname ${BASH_SOURCE[0]} ))
fi

. ${OSM_JENKINS}/common/logging
INFO "logging sourced"
. ${OSM_JENKINS}/common/config
INFO "config sourced"
. ${OSM_JENKINS}/common/container
INFO "container sourced"
