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