k8s.io/kubernetes@v1.29.3/test/e2e/testing-manifests/flexvolume/attachable-with-long-mount (about) 1 #!/bin/sh 2 3 # Copyright 2017 The Kubernetes Authors. 4 # 5 # Licensed under the Apache License, Version 2.0 (the "License"); 6 # you may not use this file except in compliance with the License. 7 # You may obtain a copy of the License at 8 # 9 # http://www.apache.org/licenses/LICENSE-2.0 10 # 11 # Unless required by applicable law or agreed to in writing, software 12 # distributed under the License is distributed on an "AS IS" BASIS, 13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 # See the License for the specific language governing permissions and 15 # limitations under the License. 16 17 # This driver is especially designed to test a long mounting scenario 18 # which can cause a volume to be detached while mount is in progress. 19 20 21 FLEX_DUMMY_LOG=${FLEX_DUMMY_LOG:-"/tmp/flex-dummy.log"} 22 23 VALID_MNTDEVICE=foo 24 25 # attach always returns one valid mount device so a different device 26 # showing up in a subsequent driver call implies a bug 27 validateMountDeviceOrDie() { 28 MNTDEVICE=$1 29 CALL=$2 30 if [ "$MNTDEVICE" != "$VALID_MNTDEVICE" ]; then 31 log "{\"status\":\"Failure\",\"message\":\"call "${CALL}" expected device "${VALID_MNTDEVICE}", got device "${MNTDEVICE}"\"}" 32 exit 0 33 fi 34 } 35 36 log() { 37 printf "$*" >&1 38 } 39 40 debug() { 41 echo "$(date) $*" >> "${FLEX_DUMMY_LOG}" 42 } 43 44 attach() { 45 debug "attach $@" 46 log "{\"status\":\"Success\",\"device\":\""${VALID_MNTDEVICE}"\"}" 47 exit 0 48 } 49 50 detach() { 51 debug "detach $@" 52 # TODO issue 44737 detach is passed PV name, not mount device 53 log "{\"status\":\"Success\"}" 54 exit 0 55 } 56 57 waitforattach() { 58 debug "waitforattach $@" 59 MNTDEVICE=$1 60 validateMountDeviceOrDie "$MNTDEVICE" "waitforattach" 61 log "{\"status\":\"Success\",\"device\":\""${MNTDEVICE}"\"}" 62 exit 0 63 } 64 65 isattached() { 66 debug "isattached $@" 67 log "{\"status\":\"Success\",\"attached\":true}" 68 exit 0 69 } 70 71 domountdevice() { 72 debug "domountdevice $@" 73 MNTDEVICE=$2 74 validateMountDeviceOrDie "$MNTDEVICE" "domountdevice" 75 MNTPATH=$1 76 mkdir -p ${MNTPATH} >/dev/null 2>&1 77 mount -t tmpfs none ${MNTPATH} >/dev/null 2>&1 78 sleep 120 79 echo "Hello from flexvolume!" >> "${MNTPATH}/index.html" 80 log "{\"status\":\"Success\"}" 81 exit 0 82 } 83 84 unmountdevice() { 85 debug "unmountdevice $@" 86 MNTPATH=$1 87 rm "${MNTPATH}/index.html" >/dev/null 2>&1 88 umount ${MNTPATH} >/dev/null 2>&1 89 log "{\"status\":\"Success\"}" 90 exit 0 91 } 92 93 expandvolume() { 94 debug "expandvolume $@" 95 log "{\"status\":\"Success\"}" 96 exit 0 97 } 98 99 expandfs() { 100 debug "expandfs $@" 101 log "{\"status\":\"Success\"}" 102 exit 0 103 } 104 105 op=$1 106 107 if [ "$op" = "init" ]; then 108 debug "init $@" 109 log "{\"status\":\"Success\",\"capabilities\":{\"attach\":true, \"requiresFSResize\":true}}" 110 exit 0 111 fi 112 113 shift 114 115 case "$op" in 116 attach) 117 attach $* 118 ;; 119 detach) 120 detach $* 121 ;; 122 waitforattach) 123 waitforattach $* 124 ;; 125 isattached) 126 isattached $* 127 ;; 128 mountdevice) 129 domountdevice $* 130 ;; 131 unmountdevice) 132 unmountdevice $* 133 ;; 134 expandvolume) 135 expandvolume $* 136 ;; 137 expandfs) 138 expandfs $* 139 ;; 140 *) 141 log "{\"status\":\"Not supported\"}" 142 exit 0 143 esac 144 145 exit 1