mirror of
https://github.com/TECHNOFAB11/zfs-localpv.git
synced 2025-12-12 06:20:11 +01:00
ZFS does not create the zvol if volume size is not multiple of the volblocksize. There are use cases where customer will create a PVC with size as 5G, which will be 5 * 1000 * 1000 * 1000 bytes and this is not the multiple of default volblocksize 8k. In ZFS, volblocksize and recordsize must be power of 2 from 512B to 1M, so keeping the size in the form of Gi or Mi should be sufficient to make volsize multiple of volblocksize/recordsize. Signed-off-by: Pawan <pawan@mayadata.io>
129 lines
3 KiB
Bash
Executable file
129 lines
3 KiB
Bash
Executable file
# Copyright 2019 The OpenEBS Authors.
|
|
#
|
|
# 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.
|
|
|
|
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
|
|
ZFS_OPERATOR=deploy/zfs-operator.yaml
|
|
SNAP_CLASS=deploy/sample/zfssnapclass.yaml
|
|
|
|
TEST_DIR="tests"
|
|
|
|
|
|
# Prepare env for runnging BDD tests
|
|
# Minikube is already running
|
|
kubectl apply -f $ZFS_OPERATOR
|
|
kubectl apply -f $SNAP_CLASS
|
|
|
|
dumpAgentLogs() {
|
|
NR=$1
|
|
AgentPOD=$(kubectl get pods -l app=openebs-zfs-node -o jsonpath='{.items[0].metadata.name}' -n kube-system)
|
|
kubectl describe po $AgentPOD -n kube-system
|
|
printf "\n\n"
|
|
kubectl logs --tail=${NR} $AgentPOD -n kube-system -c openebs-zfs-plugin
|
|
printf "\n\n"
|
|
}
|
|
|
|
dumpControllerLogs() {
|
|
NR=$1
|
|
ControllerPOD=$(kubectl get pods -l app=openebs-zfs-controller -o jsonpath='{.items[0].metadata.name}' -n kube-system)
|
|
kubectl describe po $ControllerPOD -n kube-system
|
|
printf "\n\n"
|
|
kubectl logs --tail=${NR} $ControllerPOD -n kube-system -c openebs-zfs-plugin
|
|
printf "\n\n"
|
|
}
|
|
|
|
|
|
isPodReady(){
|
|
[ "$(kubectl get po "$1" -o 'jsonpath={.status.conditions[?(@.type=="Ready")].status}' -n kube-system)" = 'True' ]
|
|
}
|
|
|
|
|
|
isDriverReady(){
|
|
for pod in $zfsDriver;do
|
|
isPodReady $pod || return 1
|
|
done
|
|
}
|
|
|
|
|
|
waitForZFSDriver() {
|
|
period=120
|
|
interval=1
|
|
|
|
i=0
|
|
while [ "$i" -le "$period" ]; do
|
|
zfsDriver="$(kubectl get pods -l role=openebs-zfs -o 'jsonpath={.items[*].metadata.name}' -n kube-system)"
|
|
if isDriverReady $zfsDriver; then
|
|
return 0
|
|
fi
|
|
|
|
i=$(( i + interval ))
|
|
echo "Waiting for zfs-driver to be ready..."
|
|
sleep "$interval"
|
|
done
|
|
|
|
echo "Waited for $period seconds, but all pods are not ready yet."
|
|
return 1
|
|
}
|
|
|
|
# wait for zfs-driver to be up
|
|
waitForZFSDriver
|
|
|
|
cd $TEST_DIR
|
|
|
|
kubectl get po -n kube-system
|
|
|
|
set +e
|
|
|
|
echo "running ginkgo test case"
|
|
|
|
ginkgo -v
|
|
|
|
if [ $? -ne 0 ]; then
|
|
|
|
sudo zpool status
|
|
|
|
sudo zfs list -t all
|
|
|
|
sudo zfs get all
|
|
|
|
echo "******************** ZFS Controller logs***************************** "
|
|
dumpControllerLogs 1000
|
|
|
|
echo "********************* ZFS Agent logs *********************************"
|
|
dumpAgentLogs 1000
|
|
|
|
echo "get all the pods"
|
|
kubectl get pods -owide --all-namespaces
|
|
|
|
echo "get pvc and pv details"
|
|
kubectl get pvc,pv -oyaml --all-namespaces
|
|
|
|
echo "get snapshot details"
|
|
kubectl get volumesnapshot.snapshot -oyaml --all-namespaces
|
|
|
|
echo "get sc details"
|
|
kubectl get sc --all-namespaces -oyaml
|
|
|
|
echo "get zfs volume details"
|
|
kubectl get zfsvolumes.zfs.openebs.io -n openebs -oyaml
|
|
|
|
echo "get zfs snapshot details"
|
|
kubectl get zfssnapshots.zfs.openebs.io -n openebs -oyaml
|
|
|
|
exit 1
|
|
fi
|
|
|
|
echo "\n\n######### All test cases passed #########\n\n"
|