mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-12-04 12:10:20 +00:00
127 lines
2.7 KiB
Bash
Executable File
127 lines
2.7 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Copyright 2017 The Kubernetes 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.
|
|
|
|
# This driver implements a tmpfs with a pre-populated file index.html.
|
|
# Attach is required, but it is a no-op that always returns success.
|
|
|
|
FLEX_DUMMY_LOG=${FLEX_DUMMY_LOG:-"/tmp/flex-dummy.log"}
|
|
|
|
VALID_MNTDEVICE=foo
|
|
|
|
# attach always returns one valid mount device so a different device
|
|
# showing up in a subsequent driver call implies a bug
|
|
validateMountDeviceOrDie() {
|
|
MNTDEVICE=$1
|
|
CALL=$2
|
|
if [ "$MNTDEVICE" != "$VALID_MNTDEVICE" ]; then
|
|
log "{\"status\":\"Failure\",\"message\":\"call "${CALL}" expected device "${VALID_MNTDEVICE}", got device "${MNTDEVICE}"\"}"
|
|
exit 0
|
|
fi
|
|
}
|
|
|
|
log() {
|
|
printf "$*" >&1
|
|
}
|
|
|
|
debug() {
|
|
echo "$(date) $*" >> "${FLEX_DUMMY_LOG}"
|
|
}
|
|
|
|
attach() {
|
|
debug "attach $@"
|
|
log "{\"status\":\"Success\",\"device\":\""${VALID_MNTDEVICE}"\"}"
|
|
exit 0
|
|
}
|
|
|
|
detach() {
|
|
debug "detach $@"
|
|
log "{\"status\":\"Success\"}"
|
|
exit 0
|
|
}
|
|
|
|
waitforattach() {
|
|
debug "waitforattach $@"
|
|
MNTDEVICE=$1
|
|
validateMountDeviceOrDie "$MNTDEVICE" "waitforattach"
|
|
log "{\"status\":\"Success\",\"device\":\""${MNTDEVICE}"\"}"
|
|
exit 0
|
|
}
|
|
|
|
isattached() {
|
|
debug "isattached $@"
|
|
log "{\"status\":\"Success\",\"attached\":true}"
|
|
exit 0
|
|
}
|
|
|
|
domountdevice() {
|
|
debug "domountdevice $@"
|
|
MNTDEVICE=$2
|
|
validateMountDeviceOrDie "$MNTDEVICE" "domountdevice"
|
|
MNTPATH=$1
|
|
mkdir -p ${MNTPATH} >/dev/null 2>&1
|
|
mount -t tmpfs none ${MNTPATH} >/dev/null 2>&1
|
|
echo "Hello from flexvolume!" >> "${MNTPATH}/index.html"
|
|
log "{\"status\":\"Success\"}"
|
|
exit 0
|
|
}
|
|
|
|
unmountdevice() {
|
|
debug "unmountdevice $@"
|
|
MNTDEVICE=$2
|
|
validateMountDeviceOrDie "$MNTDEVICE" "unmountdevice"
|
|
MNTPATH=$1
|
|
rm "${MNTPATH}/index.html" >/dev/null 2>&1
|
|
umount ${MNTPATH} >/dev/null 2>&1
|
|
log "{\"status\":\"Success\"}"
|
|
exit 0
|
|
}
|
|
|
|
op=$1
|
|
|
|
if [ "$op" = "init" ]; then
|
|
debug "init $@"
|
|
log "{\"status\":\"Success\",\"capabilities\":{\"attach\":true}}"
|
|
exit 0
|
|
fi
|
|
|
|
shift
|
|
|
|
case "$op" in
|
|
attach)
|
|
attach $*
|
|
;;
|
|
detach)
|
|
detach $*
|
|
;;
|
|
waitforattach)
|
|
waitforattach $*
|
|
;;
|
|
isattached)
|
|
isattached $*
|
|
;;
|
|
mountdevice)
|
|
domountdevice $*
|
|
;;
|
|
unmountdevice)
|
|
unmountdevice $*
|
|
;;
|
|
*)
|
|
log "{\"status\":\"Not supported\"}"
|
|
exit 0
|
|
esac
|
|
|
|
exit 1
|