#!/bin/bash # Note that these port numbers must match the configured values for the # various servers in their configuration files. declare -A port=(["account.builder"]=6012 ["container.builder"]=6011 \ ["object.builder"]=6010) print_usage() { echo " NAME gluster-swift-gen-builders - Registers GlusterFS volumes to be accessed by object storage. SYNOPSIS gluster-swift-gen-builders [-v] [-h] volumes... DESCRIPTION Register GlusterFS volumes to be accessed over OpenStack Swift object storage. OPTIONS -v or --verbose Verbose -h or --help Prints help screen EXAMPLES gluster-swift-gen-builders myvol1 myvol2 -Creates new ring files with myvol1 and myvol2 gluster-swift-gen-builders myvol2 -Creates new ring files by removing myvol1 " } builder_files="account.builder container.builder object.builder" function create { swift-ring-builder $1 create 1 1 1 >> /tmp/out } function add { swift-ring-builder $1 add z$2-127.0.0.1:$3/$4_ 100.0 } function rebalance { swift-ring-builder $1 rebalance } function build { swift-ring-builder $1 } verbose=0 outdev="/dev/null" if [ "$1" = "-v" ] || [ "$1" = "--verbose" ]; then verbose=1 outdev="/dev/stdout" shift fi if [ "x$1" = "x" ]; then echo "Please specify the gluster volume name to use." print_usage exit 1 fi if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then print_usage exit 0 fi cd /etc/swift for builder_file in $builder_files do create $builder_file zone=1 for volname in $@ do add $builder_file $zone ${port[$builder_file]} $volname >& $outdev zone=$(expr $zone + 1) done rebalance $builder_file >& $outdev build $builder_file >& $outdev done echo "Ring files are prepared in /etc/swift. Please restart object store services"