...
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 implements a tmpfs with a pre-populated file index.html.
18# Attach is required, but it is a no-op that always returns success.
19
20FLEX_DUMMY_LOG=${FLEX_DUMMY_LOG:-"/tmp/flex-dummy.log"}
21
22VALID_MNTDEVICE=foo
23
24# attach always returns one valid mount device so a different device
25# showing up in a subsequent driver call implies a bug
26validateMountDeviceOrDie() {
27 MNTDEVICE=$1
28 CALL=$2
29 if [ "$MNTDEVICE" != "$VALID_MNTDEVICE" ]; then
30 log "{\"status\":\"Failure\",\"message\":\"call "${CALL}" expected device "${VALID_MNTDEVICE}", got device "${MNTDEVICE}"\"}"
31 exit 0
32 fi
33}
34
35log() {
36 printf "$*" >&1
37}
38
39debug() {
40 echo "$(date) $*" >> "${FLEX_DUMMY_LOG}"
41}
42
43attach() {
44 debug "attach $@"
45 log "{\"status\":\"Success\",\"device\":\""${VALID_MNTDEVICE}"\"}"
46 exit 0
47}
48
49detach() {
50 debug "detach $@"
51 # TODO issue 44737 detach is passed PV name, not mount device
52 log "{\"status\":\"Success\"}"
53 exit 0
54}
55
56waitforattach() {
57 debug "waitforattach $@"
58 MNTDEVICE=$1
59 validateMountDeviceOrDie "$MNTDEVICE" "waitforattach"
60 log "{\"status\":\"Success\",\"device\":\""${MNTDEVICE}"\"}"
61 exit 0
62}
63
64isattached() {
65 debug "isattached $@"
66 log "{\"status\":\"Success\",\"attached\":true}"
67 exit 0
68}
69
70domountdevice() {
71 debug "domountdevice $@"
72 MNTDEVICE=$2
73 validateMountDeviceOrDie "$MNTDEVICE" "domountdevice"
74 MNTPATH=$1
75 mkdir -p ${MNTPATH} >/dev/null 2>&1
76 mount -t tmpfs none ${MNTPATH} >/dev/null 2>&1
77 echo "Hello from flexvolume!" >> "${MNTPATH}/index.html"
78 log "{\"status\":\"Success\"}"
79 exit 0
80}
81
82unmountdevice() {
83 debug "unmountdevice $@"
84 MNTPATH=$1
85 rm "${MNTPATH}/index.html" >/dev/null 2>&1
86 umount ${MNTPATH} >/dev/null 2>&1
87 log "{\"status\":\"Success\"}"
88 exit 0
89}
90
91expandvolume() {
92 debug "expandvolume $@"
93 log "{\"status\":\"Success\"}"
94 exit 0
95}
96
97expandfs() {
98 debug "expandfs $@"
99 log "{\"status\":\"Success\"}"
100 exit 0
101}
102
103op=$1
104
105if [ "$op" = "init" ]; then
106 debug "init $@"
107 log "{\"status\":\"Success\",\"capabilities\":{\"attach\":true, \"requiresFSResize\":true}}"
108 exit 0
109fi
110
111shift
112
113case "$op" in
114 attach)
115 attach $*
116 ;;
117 detach)
118 detach $*
119 ;;
120 waitforattach)
121 waitforattach $*
122 ;;
123 isattached)
124 isattached $*
125 ;;
126 mountdevice)
127 domountdevice $*
128 ;;
129 unmountdevice)
130 unmountdevice $*
131 ;;
132 expandvolume)
133 expandvolume $*
134 ;;
135 expandfs)
136 expandfs $*
137 ;;
138 *)
139 log "{\"status\":\"Not supported\"}"
140 exit 0
141esac
142
143exit 1
View as plain text