Skip to content

Instantly share code, notes, and snippets.

@shreddedbacon
Created October 24, 2019 22:17
Show Gist options
  • Save shreddedbacon/93e63feb1c369b5981e729d13b418bee to your computer and use it in GitHub Desktop.
Save shreddedbacon/93e63feb1c369b5981e729d13b418bee to your computer and use it in GitHub Desktop.
A script to migrate a route between namespaces
#!/bin/bash
# use oc
OC=oc
usage() {
echo "Usage: ./migrate-route.sh -s nginx-ns1 -d nginx-ns2 -r my.route.example"
echo "Options:"
echo " -s <SOURCE_NAMESPACE> #required"
echo " -d <DEST_NAMESPACE> #required"
echo " -r <ROUTE_NAME> #required"
exit 1
}
if [[ ! $@ =~ ^\-.+ ]]
then
usage
fi
while getopts ":s:d:r:h:" opt; do
case ${opt} in
s ) # process option p
SOURCE_NAMESPACE=$OPTARG;;
d ) # process option d
DEST_NAMESPACE=$OPTARG;;
r ) # process option s
ROUTE_NAME=$OPTARG;;
h )
usage;;
*)
usage;;
esac
done
# need these, make sure we have them
if [[ -z "${SOURCE_NAMESPACE}" || -z "${DEST_NAMESPACE}" || -z "${ROUTE_NAME}" ]]; then
usage
fi
SOURCE_ROUTE_EXISTS=$(${OC} -n ${SOURCE_NAMESPACE} get route ${ROUTE_NAME} -o name --no-headers 2>/dev/null)
if [ "$SOURCE_ROUTE_EXISTS" = "" ]; then
echo "Route ${DEST_NAMESPACE}/${ROUTE_NAME} doesn't exist! Bailing!"
exit 1
fi
DEST_ROUTE_EXISTS=$(${OC} -n ${DEST_NAMESPACE} get route ${ROUTE_NAME} -o name --no-headers 2>/dev/null)
if [ "$DEST_ROUTE_EXISTS" != "" ]; then
echo "Route ${DEST_NAMESPACE}/${ROUTE_NAME} exists! Bailing!"
exit 1
fi
echo "Getting ready to migrate the route"
TMP=$(mktemp temp.${SOURCE_NAMESPACE}-${ROUTE_NAME}.yaml.XXXX)
echo ">> exporting route config from ${SOURCE_NAMESPACE}/${ROUTE_NAME}"
${OC} -n ${SOURCE_NAMESPACE} get route ${ROUTE_NAME} -o yaml --export > ${TMP}
echo ">> deleting route ${SOURCE_NAMESPACE}/${ROUTE_NAME}"
${OC} -n ${SOURCE_NAMESPACE} delete route ${ROUTE_NAME}
sleep 2
echo ">> importing route config to ${DEST_NAMESPACE}/${ROUTE_NAME}"
${OC} -n ${DEST_NAMESPACE} create -f ${TMP}
rm ${TMP}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment