Création d'une réservation de volume persistant Cognos PowerCubes

Utilisez le script create_powercube_pvc.sh pour créer une réservation de volume persistant Cognos PowerCubes .

Syntaxe

./create_powercube_pvc.sh -t espace-noms -s classe_stockage -p nom_volume_persistant -g taille_stockage_en_Gi [-v] [-h]

Options

-v
Active le mode prolixe.
-g taille_stockage_en_Gi
Taille de stockage, en Gi.
-p nom_volume_persistant
Nom du volume persistant.
-s classe_stockage
Classe de stockage utilisée lors de l'allocation. Pour trouver la classe de stockage, utilisez la commande co get sc .
-t espace_de_nom
Espace de nom dans lequel Cognos Analytics est mis à disposition.
-h
Imprime l'aide dans la console et quitte.

Exemple

L'exemple suivant crée une réservation de volume persistant nommée powercube1-pvc dans l'espace de nom cat avec 2 Gi de stockage:

./create_powercube_pvc.sh -t cat -s nfsstorage -p powercube1 -g 2

Fichier script

Le script create_powercube_pvc.sh est un fichier dont le contenu est le suivant:

#!/usr/bin/env bash
#
# -----------------------------------------------------------------------------
#         Licensed Materials - Property of IBM
#
#         IBM Cognos Products: ca
#
#         (C) Copyright IBM Corp. 2023
#
#         US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule
# -----------------------------------------------------------------------------
#
#
set -e
#set -x
function usage {
    echo $0: usage: $0 [-h] -t tethered_namespace -s storageclass -p persistentvolume -g storage_size [-v]
}
​
function help {
    usage
    echo "-h                    Prints help to the console and exits."
    echo "-t                    Required. Namespace in which Cognos
Analytics is provisioned."
    echo "-s                    Storage class that is used during provisioning."
    echo "-p                    Name of the persistent volume."
    echo "-g                    Size of the storage, in Gi."
    echo "-v                    Enables verbose mode"
    echo ""
    exit 0
}
​
while getopts ":ht:s:p:g:v" opt; do
     case ${opt} in
     h)
        help
        ;;
     t)
        tethered_namespace=$OPTARG
        ;;
     s)
        storage_class=$OPTARG
        ;;
     p)
        pvc_name=$OPTARG
        ;;
     g)
        storage_size=$OPTARG
        ;;
     v)
        verbose_flag="true"
        ;;
     \?)
        usage
        exit 0
        ;;
     esac
done
​
if [[ -z ${tethered_namespace} ]]; then
    echo "A tethered_namespace must be provided"
    help
fi
if [[ -z ${storage_class} ]]; then
    echo "A storage class must be provided"
    help
fi
if [[ -z ${pvc_name} ]]; then
    echo "A persistent volume to be used name must be provided"
    help
fi
if [[ -z ${storage_size} ]]; then
    echo "A storage size must be provided"
    help
fi
​
echo "Current List of PVC's under namespace: $tethered_namespace"
oc get pvc -n $tethered_namespace
​
#mount_dir='./testFiles'
echo "Creating PVC.."
# Create a PVC
cat << EOF | oc create -f -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: ${pvc_name}-pvc
  namespace: ${tethered_namespace}
  labels:
    icpdsupport/ignore-on-nd-backup: 'false'
    powercubes_support: 'true'
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: ${storage_size}Gi
  storageClassName: ${storage_class}
  volumeMode: Filesystem
EOF
sleep 10
​
check_status="Bound"
# Checking status of pvc
for i in {1..12};do
    pvcStatus=$(oc get pvc ${pvc_name}-pvc -o jsonpath="{.status.phase}" -n ${tethered_namespace})
    if [[ ${pvcStatus} == ${check_status} ]];then
        echo "pvc status:${pvcStatus} "
        break
    elif [[ ${pvcStatus} == "Pending" ]];then
        echo "pvc status: ${pvcStatus}! please check the PVC:$pvc_name-pvc Events.."
        EVENTS=$(oc describe pvc $pvc_name-pvc -n ${tethered_namespace} | grep 'Events')
        echo "$EVENTS"
        echo "Deleting PVC $pvc_name-pvc..."
        oc delete pvc $pvc_name-pvc -n $tethered_namespace
        exit 1
    fi
    sleep 30
done
​
echo "PVC $pvc_name-pvc added..."
oc get pvc $pvc_name-pvc -n $tethered_namespace
echo "Please add the PVC : ${pvc_name}-pvc to the caserviceinstances CR under $tethered_namespace"