#!/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. # Create block.tar.gz with a small ext2 filesystem. # It must be run as root (to mount with '-o loop')! # Exit on the first error. set -e global MNTDIR := $[mktemp -d] proc cleanup { # Make sure we return the right exit code global RET := $Status # Silently remove everything and ignore errors set +e /bin/umount $MNTDIR !2 >/dev/null /bin/rmdir $MNTDIR !2 >/dev/null /bin/rm block !2 >/dev/null exit $RET } trap cleanup TERM EXIT # Create 1MB device with ext2 dd if=/dev/zero of=block count=1 bs=1M mkfs.ext2 block # Add index.html to it mount -o loop block $MNTDIR echo "Hello from RBD" > $MNTDIR/index.html umount $MNTDIR rm block.tar.gz !2 >/dev/null || : tar cfz block.tar.gz block (CommandList children: [ (C {(set)} {(-e)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:MNTDIR) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(mktemp)} {(-d)})]) left_token: spids: [60 64] ) } spids: [59] ) ] spids: [59] ) (FuncDef name: cleanup body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RET) op: Equal rhs: {($ VSub_QMark "$?")} spids: [78] ) ] spids: [78] ) (C {(set)} {(Lit_Other "+") (e)}) (SimpleCommand words: [{(/bin/umount)} {($ VSub_Name "$MNTDIR")}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[96])] ) (SimpleCommand words: [{(/bin/rmdir)} {($ VSub_Name "$MNTDIR")}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[104])] ) (SimpleCommand words: [{(/bin/rm)} {(block)}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[112])] ) (C {(exit)} {($ VSub_Name "$RET")}) ] spids: [71] ) spids: [67 70] ) (C {(trap)} {(cleanup)} {(TERM)} {(EXIT)}) (C {(dd)} {(Lit_VarLike "if=") (/dev/zero)} {(Lit_VarLike "of=") (block)} {(Lit_VarLike "count=") (1)} {(Lit_VarLike "bs=") (1M)} ) (C {(mkfs.ext2)} {(block)}) (C {(mount)} {(-o)} {(loop)} {(block)} {($ VSub_Name "$MNTDIR")}) (SimpleCommand words: [{(echo)} {(DQ ("Hello from RBD"))}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {($ VSub_Name "$MNTDIR") (/index.html)} spids: [173] ) ] ) (C {(umount)} {($ VSub_Name "$MNTDIR")}) (AndOr children: [ (SimpleCommand words: [{(rm)} {(block.tar.gz)}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[187])] ) (C {(Lit_Other ":")}) ] op_id: Op_DPipe ) (C {(tar)} {(cfz)} {(block.tar.gz)} {(block)}) ] )