<driver executable> mount <mount dir><json options>
3.9. unmount
<driver executable> unmount <mount dir>
3.10. 插件输出
{"status":"<Success/Failure/Not supported>","message":"<Reason for success/failure>","device":"<Path to the device attached. This field is valid only for attach & waitforattach call-outs>""volumeName": "<Cluster wide unique name of the volume. Valid only for getvolumename call-out>""attached": <True/False (Return true if volume is attached on the node. Valid only for isattached call-out)>"capabilities": <Only included as part of the Init response> {"attach": <True/False (Return true if the driver implements attach and detach)> }}
#!/bin/bash# Copyright 2015 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.# Notes:# - Please install "jq" package before using this driver.usage() {err"Invalid usage. Usage: "err"\t$0 init"err"\t$0 mount <mount dir> <json params>"err"\t$0 unmount <mount dir>"exit1}err() {echo-ne $* 1>&2}log() {echo-ne $* >&1}ismounted() { MOUNT=`findmnt-n ${MNTPATH} 2>/dev/null|cut-d' ' -f1`if [ "${MOUNT}"=="${MNTPATH}" ]; thenecho"1"elseecho"0"fi}domount() { MNTPATH=$1 NFS_SERVER=$(echo $2 |jq-r'.server') SHARE=$(echo $2 |jq-r'.share')if [ $(ismounted) -eq1 ] ; thenlog'{"status": "Success"}'exit0fimkdir-p ${MNTPATH} &> /dev/nullmount-tnfs ${NFS_SERVER}:/${SHARE} ${MNTPATH} &> /dev/nullif [ $? -ne0 ]; thenerr"{ \"status\": \"Failure\", \"message\": \"Failed to mount ${NFS_SERVER}:${SHARE} at ${MNTPATH}\"}"exit1filog'{"status": "Success"}'exit0}unmount() { MNTPATH=$1if [ $(ismounted) -eq0 ] ; thenlog'{"status": "Success"}'exit0fiumount ${MNTPATH} &> /dev/nullif [ $? -ne0 ]; thenerr"{ \"status\": \"Failed\", \"message\": \"Failed to unmount volume at ${MNTPATH}\"}"exit1filog'{"status": "Success"}'exit0}op=$1if!command-vjq>/dev/null2>&1; then err "{ \"status\": \"Failure\", \"message\": \"'jq' binary not found. Please install jq package before using this driver\"}"
exit1fiif [ "$op"="init" ]; thenlog'{"status": "Success", "capabilities": {"attach": false}}'exit0fiif [ $# -lt2 ]; thenusagefishiftcase"$op"inmount)domount $* ;;unmount)unmount $* ;;*)log'{"status": "Not supported"}'exit0esacexit1