add convenience tools

The following are some convenience tools that I created during grenade
refactor which might make sense in the tree. These make working on grenade
much easier.

cache_git.sh builds a local git mirror so you can set
GIT_BASE=/opt/git and iterate faster.

run_resource.sh <project> <phase> - lets you run resource test scripts
the way we'll run them in grenade for iterative development.

Both scripts include help with '-h' on their usage.

Change-Id: I997c3bfee09dab93ecaa52dd9b86d7811c63bfa3
This commit is contained in:
Sean Dague 2015-04-15 17:26:46 -04:00
parent e78a3357a6
commit c2d096c4f7
2 changed files with 156 additions and 0 deletions

81
cache_git.sh Executable file
View File

@ -0,0 +1,81 @@
#!/bin/bash
#
# Copyright 2015 Hewlett-Packard Development Company, L.P.
#
# 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.
GIT_DIR=/opt/git
PROJECTS=""
PROJECTS+="openstack/requirements "
PROJECTS+="openstack/keystone "
PROJECTS+="openstack/nova "
PROJECTS+="openstack/glance "
PROJECTS+="openstack/cinder "
PROJECTS+="openstack/keystone "
PROJECTS+="openstack/swift "
PROJECTS+="openstack/tempest "
PROJECTS+="openstack/neutron "
PROJECTS+="openstack/ironic "
PROJECTS+="openstack/ceilometer "
PROJECTS+="openstack/horizon "
PROJECTS+="openstack-dev/devstack "
function usage {
cat - <<EOF
Usage: cache_git.sh [-d dir]
Builds a local git cache of OpenStack projects for use with grenade
testing. After running this set GIT_BASE in localrc to the value of
DIRECTORY.
-d DIRECTORY: defaults to /opt/git
EOF
exit
}
# Process command-line args
while getopts hd: opt; do
case $opt in
d)
GIT_DIR=$OPTARG
;;
h)
usage
;;
esac
done
function git_update_mirror {
local project=$1
local dir=$GIT_DIR/$project.git
if [[ ! -d $(dirname $dir) ]]; then
echo "Creating $(dirname $dir)"
sudo mkdir -p $(dirname $dir)
sudo chown -R `whoami` $(dirname $dir)
fi
if [[ ! -d $dir ]]; then
echo "Creating initial git mirror for $project"
git clone --mirror https://github.com/$project $dir
else
echo "Updating git mirror for $project"
git --git-dir ${dir} fetch 2>/dev/null
echo " head is now: $(git --git-dir ${dir} log --oneline -1)"
fi
}
for project in $PROJECTS; do
git_update_mirror $project
done

75
run_resource.sh Executable file
View File

@ -0,0 +1,75 @@
#!/bin/bash
#
# Copyright 2015 Hewlett-Packard Development Company, L.P.
#
# 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.
set -o errexit
DEVSTACK_DIR=""
function usage {
cat - <<EOF
Usage: run_resource.sh [-d devstackdir] <project> <phase>
Runs the resource test scripts for the project. This is done
automatically during grenade runs, however when developing new
resource scripts, it's extremely helpful to iterate with this tool.
This tool can also be used to build same resources with only a
devstack tree. In that case run this script from your devstack tree
with the -d option.
../grenade/run_resource.sh -d . nova create
EOF
exit
}
# Process command-line args
while getopts hd: opt; do
case $opt in
h)
usage
;;
d)
DEVSTACK_DIR=$OPTARG
shift $((OPTIND-1))
;;
esac
done
export GRENADE_DIR=${GRENADE_DIR:-$(cd $(dirname "$0") && pwd)}
TARGET_DEVSTACK_DIR=$DEVSTACK_DIR
source $GRENADE_DIR/grenaderc
export TOP_DIR=${DEVSTACK_DIR:-$BASE_DEVSTACK_DIR}
PROJECT=$1
PHASE=$2
# These are required elements
if [[ -z "$PROJECT" || -z "$PHASE" ]]; then
usage
fi
FILE=$(ls -d $GRENADE_DIR/projects/*_$PROJECT/)
if [[ -e $FILE/resources.sh ]]; then
set -o xtrace
$FILE/resources.sh $PHASE
else
echo "Couldn't find $PROJECT"
exit
fi