exercises/sec_groups.sh
dbdf6be8
 #!/usr/bin/env bash
 
 # **sec_groups.sh**
 
da85cdad
 # Test security groups via the command line
dbdf6be8
 
 echo "*********************************************************************"
 echo "Begin DevStack Exercise: $0"
 echo "*********************************************************************"
 
 # This script exits on an error so that errors don't compound and you see
 # only the first error that occured.
 set -o errexit
 
 # Print the commands being run so that we can see the command that triggers
 # an error.  It is also useful for following allowing as the install occurs.
 set -o xtrace
 
 
 # Settings
 # ========
 
 # Keep track of the current directory
 EXERCISE_DIR=$(cd $(dirname "$0") && pwd)
 TOP_DIR=$(cd $EXERCISE_DIR/..; pwd)
 
 # Import common functions
 source $TOP_DIR/functions
 
 # Import configuration
 source $TOP_DIR/openrc
 
 # Import exercise configuration
 source $TOP_DIR/exerciserc
 
 
 # Testing Security Groups
c5dfecd8
 # =======================
dbdf6be8
 
 # List security groups
 nova secgroup-list
 
 # Create random name for new sec group and create secgroup of said name
da85cdad
 SEC_GROUP_NAME="ex-secgroup-$(openssl rand -hex 4)"
dbdf6be8
 nova secgroup-create $SEC_GROUP_NAME 'a test security group'
 
 # Add some rules to the secgroup
 RULES_TO_ADD=( 22 3389 5900 )
 
 for RULE in "${RULES_TO_ADD[@]}"; do
029598ea
     nova secgroup-add-rule $SEC_GROUP_NAME tcp $RULE $RULE 0.0.0.0/0
dbdf6be8
 done
 
 # Check to make sure rules were added
 SEC_GROUP_RULES=( $(nova secgroup-list-rules $SEC_GROUP_NAME | grep -v \- | grep -v 'Source Group' | cut -d '|' -f3 | tr -d ' ') )
 for i in "${RULES_TO_ADD[@]}"; do
     skip=
     for j in "${SEC_GROUP_RULES[@]}"; do
         [[ $i == $j ]] && { skip=1; break; }
     done
     [[ -n $skip ]] || exit 1
 done
 
 # Delete rules and secgroup
 for RULE in "${RULES_TO_ADD[@]}"; do
029598ea
     nova secgroup-delete-rule $SEC_GROUP_NAME tcp $RULE $RULE 0.0.0.0/0
dbdf6be8
 done
 
da85cdad
 # Delete secgroup
 nova secgroup-delete $SEC_GROUP_NAME || \
07115eb5
     die $LINENO "Failure deleting security group $SEC_GROUP_NAME"
dbdf6be8
 
 set +o xtrace
 echo "*********************************************************************"
 echo "SUCCESS: End DevStack Exercise: $0"
 echo "*********************************************************************"