datastore.sheepdog.patch

sheepdog datastore - Fabian Zimmermann, 05/25/2014 05:52 PM

Download (23.7 KB)

View differences:

/var/lib/one/remotes/datastore/sheepdog/clone 2014-05-25 19:18:00.946579548 +0200
1
#!/bin/bash
2

  
3
# -------------------------------------------------------------------------- #
4
# Copyright 2002-2014, OpenNebula Project (OpenNebula.org), C12G Labs        #
5
#                                                                            #
6
# Licensed under the Apache License, Version 2.0 (the "License"); you may    #
7
# not use this file except in compliance with the License. You may obtain    #
8
# a copy of the License at                                                   #
9
#                                                                            #
10
# http://www.apache.org/licenses/LICENSE-2.0                                 #
11
#                                                                            #
12
# Unless required by applicable law or agreed to in writing, software        #
13
# distributed under the License is distributed on an "AS IS" BASIS,          #
14
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #
15
# See the License for the specific language governing permissions and        #
16
# limitations under the License.                                             #
17
#--------------------------------------------------------------------------- #
18

  
19
###############################################################################
20
# This script is used to copy a VM image (SRC) to the image repository as DST
21
# Several SRC types are supported
22
###############################################################################
23
# -------- Set up the environment to source common tools & conf ------------
24
if [ -z "${ONE_LOCATION}" ]; then
25
    LIB_LOCATION=/usr/lib/one
26
else
27
    LIB_LOCATION=$ONE_LOCATION/lib
28
fi
29

  
30
. $LIB_LOCATION/sh/scripts_common.sh
31

  
32
DRIVER_PATH=$(dirname $0)
33
source ${DRIVER_PATH}/../libfs.sh
34
source ${DRIVER_PATH}/sheepdog.conf
35

  
36
# -------- Get cp and datastore arguments from OpenNebula core ------------
37

  
38
DRV_ACTION=$1
39
ID=$2
40

  
41
XPATH="${DRIVER_PATH}/../xpath.rb -b $DRV_ACTION"
42

  
43
unset i XPATH_ELEMENTS
44

  
45
while IFS= read -r -d '' element; do
46
    XPATH_ELEMENTS[i++]="$element"
47
done < <($XPATH     /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH \
48
                    /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/BRIDGE_LIST \
49
                    /DS_DRIVER_ACTION_DATA/IMAGE/PATH \
50
                    /DS_DRIVER_ACTION_DATA/IMAGE/SIZE)
51

  
52
unset i
53

  
54
BASE_PATH="${XPATH_ELEMENTS[i++]}"
55
BRIDGE_LIST="${XPATH_ELEMENTS[i++]}"
56
SRC="${XPATH_ELEMENTS[i++]}"
57
SIZE="${XPATH_ELEMENTS[i++]}"
58

  
59
DST_HOST=`get_destination_host $ID`
60

  
61
if [ -z "$DST_HOST" ]; then
62
    error_message "Datastore template missing 'BRIDGE_LIST' attribute."
63
    exit -1
64
fi
65

  
66
SAFE_DIRS=""
67

  
68
IMAGE_NAME="one-${ID}"
69
SHEEPDOG_DST="${IMAGE_NAME}"
70

  
71
ssh_exec_and_log "$DST_HOST" "$QEMU_IMG snapshot -c source_snap_$ID sheepdog:$SRC && $QEMU_IMG create -b sheepdog:$SRC:source_snap_$ID sheepdog:$SHEEPDOG_DST && $DOG vdi delete -s source_snap_$ID $SRC" \
72
                "Error cloning $SRC to $SHEEPDOG_DST in $DST_HOST"
73

  
74
echo "$SHEEPDOG_DST"
/var/lib/one/remotes/datastore/sheepdog/cp 2014-05-25 19:24:49.366579548 +0200
1
#!/bin/bash
2

  
3
# -------------------------------------------------------------------------- #
4
# Copyright 2002-2014, OpenNebula Project (OpenNebula.org), C12G Labs        #
5
#                                                                            #
6
# Licensed under the Apache License, Version 2.0 (the "License"); you may    #
7
# not use this file except in compliance with the License. You may obtain    #
8
# a copy of the License at                                                   #
9
#                                                                            #
10
# http://www.apache.org/licenses/LICENSE-2.0                                 #
11
#                                                                            #
12
# Unless required by applicable law or agreed to in writing, software        #
13
# distributed under the License is distributed on an "AS IS" BASIS,          #
14
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #
15
# See the License for the specific language governing permissions and        #
16
# limitations under the License.                                             #
17
#--------------------------------------------------------------------------- #
18

  
19
###############################################################################
20
# This script is used to copy a VM image (SRC) to the image repository as DST
21
# Several SRC types are supported
22
###############################################################################
23

  
24
# -------- Set up the environment to source common tools & conf ------------
25

  
26
if [ -z "${ONE_LOCATION}" ]; then
27
    LIB_LOCATION=/usr/lib/one
28
else
29
    LIB_LOCATION=$ONE_LOCATION/lib
30
fi
31

  
32
. $LIB_LOCATION/sh/scripts_common.sh
33

  
34
DRIVER_PATH=$(dirname $0)
35
source ${DRIVER_PATH}/../libfs.sh
36
source ${DRIVER_PATH}/sheepdog.conf
37

  
38
# -------- Get cp and datastore arguments from OpenNebula core ------------
39

  
40
DRV_ACTION=$1
41
ID=$2
42

  
43
UTILS_PATH="${DRIVER_PATH}/.."
44

  
45
XPATH="$UTILS_PATH/xpath.rb -b $DRV_ACTION"
46

  
47
unset i XPATH_ELEMENTS
48

  
49
while IFS= read -r -d '' element; do
50
    XPATH_ELEMENTS[i++]="$element"
51
done < <($XPATH     /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH \
52
                    /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/RESTRICTED_DIRS \
53
                    /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/SAFE_DIRS \
54
                    /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/BRIDGE_LIST \
55
                    /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/POOL_NAME \
56
                    /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/STAGING_DIR \
57
                    /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/SHEEPDOG_FORMAT \
58
                    /DS_DRIVER_ACTION_DATA/IMAGE/PATH \
59
                    /DS_DRIVER_ACTION_DATA/IMAGE/SIZE \
60
                    /DS_DRIVER_ACTION_DATA/IMAGE/TEMPLATE/MD5 \
61
                    /DS_DRIVER_ACTION_DATA/IMAGE/TEMPLATE/SHA1 \
62
                    /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/NO_DECOMPRESS \
63
                    /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/LIMIT_TRANSFER_BW)
64

  
65
unset i
66

  
67
BASE_PATH="${XPATH_ELEMENTS[i++]}"
68
RESTRICTED_DIRS="${XPATH_ELEMENTS[i++]}"
69
SAFE_DIRS="${XPATH_ELEMENTS[i++]}"
70
BRIDGE_LIST="${XPATH_ELEMENTS[i++]}"
71
POOL_NAME="${XPATH_ELEMENTS[i++]:-$POOL_NAME}"
72
STAGING_DIR="${XPATH_ELEMENTS[i++]:-$STAGING_DIR}"
73
SHEEPDOG_FORMAT="${XPATH_ELEMENTS[i++]:-$SHEEPDOG_FORMAT}"
74
SRC="${XPATH_ELEMENTS[i++]}"
75
SIZE="${XPATH_ELEMENTS[i++]}"
76
MD5="${XPATH_ELEMENTS[i++]}"
77
SHA1="${XPATH_ELEMENTS[i++]}"
78
NO_DECOMPRESS="${XPATH_ELEMENTS[i++]}"
79
LIMIT_TRANSFER_BW="${XPATH_ELEMENTS[i++]}"
80

  
81
DST_HOST=`get_destination_host $ID`
82

  
83
if [ -z "$DST_HOST" ]; then
84
    error_message "Datastore template missing 'BRIDGE_LIST' attribute."
85
    exit -1
86
fi
87

  
88
set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS"
89

  
90
IMAGE_HASH=`generate_image_hash`
91
TMP_DST="$STAGING_DIR/$IMAGE_HASH"
92

  
93
IMAGE_NAME="one-${ID}"
94
SHEEPDOG_SOURCE="${IMAGE_NAME}"
95

  
96
DOWNLOADER_ARGS=`set_downloader_args "$MD5" "$SHA1" "$NO_DECOMPRESS" "$LIMIT_TRANSFER_BW" "$SRC" -`
97

  
98
COPY_COMMAND="$UTILS_PATH/downloader.sh $DOWNLOADER_ARGS"
99

  
100
case $SRC in
101
http://*|https://*)
102
    log "Downloading $SRC to the image repository"
103

  
104
    DUMP="$COPY_COMMAND"
105
    ;;
106

  
107
*)
108
    if [ `check_restricted $SRC` -eq 1 ]; then
109
        log_error "Not allowed to copy images from $RESTRICTED_DIRS"
110
        error_message "Not allowed to copy image file $SRC"
111
        exit -1
112
    fi
113

  
114
    log "Copying local image $SRC to the image repository"
115

  
116
    DUMP="$COPY_COMMAND"
117
    ;;
118
esac
119

  
120
exec_and_log "eval $DUMP | $SSH $DST_HOST $DD of=$TMP_DST bs=64k" \
121
    "Error dumping $SRC to $DST_HOST:$TMP_DST"
122

  
123
REGISTER_CMD=$(cat <<EOF
124
    set -e
125

  
126
    if [ "$SHEEPDOG_FORMAT" = "raw" ]; then
127
        FORMAT=\$($QEMU_IMG info $TMP_DST | grep "^file format:" | awk '{print $3}')
128

  
129
        if [ "\$FORMAT" != "raw" ]; then
130
            $QEMU_IMG convert -O raw $TMP_DST $TMP_DST.raw
131
            mv $TMP_DST.raw $TMP_DST
132
        fi
133
    fi
134
    $QEMU_IMG convert -t directsync $QEMU_IMG_CONVERT_ARGS $TMP_DST sheepdog:$SHEEPDOG_SOURCE
135

  
136
    # remove original
137
    $RM -f $TMP_DST
138
EOF
139
)
140

  
141
ssh_exec_and_log    "$DST_HOST" "$REGISTER_CMD" \
142
                    "Error registering $SHEEPDOG_SOURCE in $DST_HOST"
143

  
144
echo "$SHEEPDOG_SOURCE"
/var/lib/one/remotes/datastore/sheepdog/mkfs 2014-05-25 19:30:30.654579548 +0200
1
#!/bin/bash
2

  
3
# -------------------------------------------------------------------------- #
4
# Copyright 2002-2014, OpenNebula Project (OpenNebula.org), C12G Labs        #
5
#                                                                            #
6
# Licensed under the Apache License, Version 2.0 (the "License"); you may    #
7
# not use this file except in compliance with the License. You may obtain    #
8
# a copy of the License at                                                   #
9
#                                                                            #
10
# http://www.apache.org/licenses/LICENSE-2.0                                 #
11
#                                                                            #
12
# Unless required by applicable law or agreed to in writing, software        #
13
# distributed under the License is distributed on an "AS IS" BASIS,          #
14
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #
15
# See the License for the specific language governing permissions and        #
16
# limitations under the License.                                             #
17
#--------------------------------------------------------------------------- #
18

  
19
###############################################################################
20
# This script is used to create a VM image (SRC) of size (SIZE) and formatted
21
# as (FS)
22
###############################################################################
23

  
24
# -------- Set up the environment to source common tools & conf ------------
25

  
26
if [ -z "${ONE_LOCATION}" ]; then
27
    LIB_LOCATION=/usr/lib/one
28
else
29
    LIB_LOCATION=$ONE_LOCATION/lib
30
fi
31

  
32
. $LIB_LOCATION/sh/scripts_common.sh
33

  
34
DRIVER_PATH=$(dirname $0)
35
source ${DRIVER_PATH}/../libfs.sh
36
source ${DRIVER_PATH}/sheepdog.conf
37

  
38
# -------- Get mkfs and datastore arguments from OpenNebula core ------------
39

  
40
DRV_ACTION=$1
41
ID=$2
42

  
43
XPATH="${DRIVER_PATH}/../xpath.rb -b $DRV_ACTION"
44

  
45
unset i XPATH_ELEMENTS
46

  
47
while IFS= read -r -d '' element; do
48
    XPATH_ELEMENTS[i++]="$element"
49
done < <($XPATH     /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH \
50
                    /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/RESTRICTED_DIRS \
51
                    /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/SAFE_DIRS \
52
                    /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/BRIDGE_LIST \
53
                    /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/POOL_NAME \
54
                    /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/STAGING_DIR \
55
                    /DS_DRIVER_ACTION_DATA/IMAGE/FSTYPE \
56
                    /DS_DRIVER_ACTION_DATA/IMAGE/SIZE)
57

  
58
unset i
59

  
60
BASE_PATH="${XPATH_ELEMENTS[i++]}"
61
RESTRICTED_DIRS="${XPATH_ELEMENTS[i++]}"
62
SAFE_DIRS="${XPATH_ELEMENTS[i++]}"
63
BRIDGE_LIST="${XPATH_ELEMENTS[i++]}"
64
POOL_NAME="${XPATH_ELEMENTS[i++]:-$POOL_NAME}"
65
STAGING_DIR="${XPATH_ELEMENTS[i++]:-$STAGING_DIR}"
66
FSTYPE="${XPATH_ELEMENTS[i++]}"
67
SIZE="${XPATH_ELEMENTS[i++]}"
68

  
69
DST_HOST=`get_destination_host $ID`
70

  
71
if [ -z "$DST_HOST" ]; then
72
    error_message "Datastore template missing 'BRIDGE_LIST' attribute."
73
    exit -1
74
fi
75

  
76
set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS"
77

  
78
IMAGE_HASH=`generate_image_hash`
79
TMP_DST="$STAGING_DIR/$IMAGE_HASH"
80

  
81
IMAGE_NAME="one-${ID}"
82
SHEEPDOG_SOURCE="${IMAGE_NAME}"
83

  
84
# ------------ Image to save_as disk, no need to create a FS ------------
85

  
86
if [ "$FSTYPE" = "save_as" ]; then
87
    echo "$SHEEPDOG_SOURCE"
88
    exit 0
89
fi
90

  
91
# ------------ Create the image in the repository ------------
92

  
93
MKFS_CMD=`mkfs_command $TMP_DST $FSTYPE $SIZE`
94

  
95
REGISTER_CMD=$(cat <<EOF
96
    set -e
97
    export PATH=/usr/sbin:/sbin:\$PATH
98
    if [ "$FSTYPE" = "raw" ]; then
99
	$QEMU_IMG create sheepdog:$SHEEPDOG_SOURCE ${SIZE}M
100
    else
101
        # create and format
102
        $DD if=/dev/zero of=$TMP_DST bs=1 count=1 seek=${SIZE}M
103
        $MKFS_CMD
104

  
105
        # create sheepdog 
106
        $QEMU_IMG convert -t directsync $QEMU_IMG_CONVERT_ARGS $TMP_DST sheepdog:$SHEEPDOG_SOURCE
107

  
108
        # remove original
109
        $RM -f $TMP_DST
110
    fi
111

  
112

  
113
EOF
114
)
115

  
116
ssh_exec_and_log "$DST_HOST" "$REGISTER_CMD" \
117
    "Error registering $SHEEPDOG_SOURCE in $DST_HOST"
118

  
119
echo "$SHEEPDOG_SOURCE"
/var/lib/one/remotes/datastore/sheepdog/monitor 2014-05-25 18:11:24.886579548 +0200
1
#!/bin/bash
2

  
3
# -------------------------------------------------------------------------- #
4
# Copyright 2002-2014, OpenNebula Project (OpenNebula.org), C12G Labs        #
5
#                                                                            #
6
# Licensed under the Apache License, Version 2.0 (the "License"); you may    #
7
# not use this file except in compliance with the License. You may obtain    #
8
# a copy of the License at                                                   #
9
#                                                                            #
10
# http://www.apache.org/licenses/LICENSE-2.0                                 #
11
#                                                                            #
12
# Unless required by applicable law or agreed to in writing, software        #
13
# distributed under the License is distributed on an "AS IS" BASIS,          #
14
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #
15
# See the License for the specific language governing permissions and        #
16
# limitations under the License.                                             #
17
#--------------------------------------------------------------------------- #
18

  
19
###############################################################################
20
# This script is used to monitor the free and used space of a datastore
21
###############################################################################
22

  
23
# -------- Set up the environment to source common tools & conf ------------
24

  
25
if [ -z "${ONE_LOCATION}" ]; then
26
    LIB_LOCATION=/usr/lib/one
27
else
28
    LIB_LOCATION=$ONE_LOCATION/lib
29
fi
30

  
31
. $LIB_LOCATION/sh/scripts_common.sh
32

  
33
DRIVER_PATH=$(dirname $0)
34
source ${DRIVER_PATH}/../libfs.sh
35
source ${DRIVER_PATH}/sheepdog.conf
36

  
37
# -------- Get datastore arguments from OpenNebula core ------------
38

  
39
DRV_ACTION=$1
40
ID=$2
41

  
42
XPATH="${DRIVER_PATH}/../xpath.rb -b $DRV_ACTION"
43

  
44
unset i j XPATH_ELEMENTS
45

  
46
while IFS= read -r -d '' element; do
47
    XPATH_ELEMENTS[i++]="$element"
48
done < <($XPATH     /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/BRIDGE_LIST \
49
                    /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/POOL_NAME)
50

  
51
BRIDGE_LIST="${XPATH_ELEMENTS[j++]}"
52
POOL_NAME="${XPATH_ELEMENTS[j++]:-$POOL_NAME}"
53

  
54
HOST=`get_destination_host`
55

  
56
if [ -z "$HOST" ]; then
57
    error_message "Datastore template missing 'BRIDGE_LIST' attribute."
58
    exit -1
59
fi
60

  
61
# ------------ Compute datastore usage -------------
62

  
63
MONITOR_SCRIPT=$(cat <<EOF
64
$DOG node info -r | $AWK '{
65
    if (\$1 == "Total") {
66

  
67
        print "TOTAL_MB=" int(\$2/1024/1024)
68
        print "USED_MB=" int(\$3/1024/1024)
69
        print "FREE_MB=" int(\$4/1024/1024)
70

  
71
    }
72
}'
73
EOF
74
)
75

  
76
MONITOR_DATA=$(ssh_monitor_and_log $HOST "$MONITOR_SCRIPT" 2>&1 | tee -a /tmp/mon.log )
77
MONITOR_STATUS=$?
78

  
79
if [ "$MONITOR_STATUS" = "0" ]; then
80
    echo "$MONITOR_DATA" | tr ' ' '\n'
81
else
82
    echo "$MONITOR_DATA"
83
    exit $MONITOR_STATUS
84
fi
85

  
/var/lib/one/remotes/datastore/sheepdog/rm 2014-05-25 17:35:48.670579548 +0200
1
#!/bin/bash
2

  
3
# -------------------------------------------------------------------------- #
4
# Copyright 2002-2014, OpenNebula Project (OpenNebula.org), C12G Labs        #
5
#                                                                            #
6
# Licensed under the Apache License, Version 2.0 (the "License"); you may    #
7
# not use this file except in compliance with the License. You may obtain    #
8
# a copy of the License at                                                   #
9
#                                                                            #
10
# http://www.apache.org/licenses/LICENSE-2.0                                 #
11
#                                                                            #
12
# Unless required by applicable law or agreed to in writing, software        #
13
# distributed under the License is distributed on an "AS IS" BASIS,          #
14
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #
15
# See the License for the specific language governing permissions and        #
16
# limitations under the License.                                             #
17
#--------------------------------------------------------------------------- #
18

  
19
###############################################################################
20
# This script is used to remove a VM image (SRC) from the image repository
21
###############################################################################
22

  
23
# ------------ Set up the environment to source common tools ------------
24
if [ -z "${ONE_LOCATION}" ]; then
25
    LIB_LOCATION=/usr/lib/one
26
else
27
    LIB_LOCATION=$ONE_LOCATION/lib
28
fi
29

  
30
. $LIB_LOCATION/sh/scripts_common.sh
31

  
32
DRIVER_PATH=$(dirname $0)
33
source ${DRIVER_PATH}/../libfs.sh
34
source ${DRIVER_PATH}/sheepdog.conf
35

  
36
# -------- Get rm and datastore arguments from OpenNebula core ------------
37

  
38
DRV_ACTION=$1
39
ID=$2
40

  
41
XPATH="${DRIVER_PATH}/../xpath.rb -b $DRV_ACTION"
42

  
43
unset i j XPATH_ELEMENTS
44

  
45
while IFS= read -r -d '' element; do
46
    XPATH_ELEMENTS[i++]="$element"
47
done < <($XPATH     /DS_DRIVER_ACTION_DATA/IMAGE/SOURCE \
48
                    /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/BRIDGE_LIST)
49

  
50
SRC="${XPATH_ELEMENTS[j++]}"
51
BRIDGE_LIST="${XPATH_ELEMENTS[j++]}"
52

  
53
DST_HOST=`get_destination_host $ID`
54

  
55
if [ -z "$DST_HOST" ]; then
56
    error_message "Datastore template missing 'BRIDGE_LIST' attribute."
57
    exit -1
58
fi
59

  
60
log "Removing $SRC from the sheepdog image repository in $DST_HOST"
61

  
62
ssh_exec_and_log "$DST_HOST" "$DOG vdi delete $SRC" \
63
    "Error removing $SRC in $DST_HOST"
64

  
65
exit 0
/var/lib/one/remotes/datastore/sheepdog/sheepdog.conf 2014-05-25 17:38:27.354579548 +0200
1
# -------------------------------------------------------------------------- #
2
# Copyright 2002-2014, OpenNebula Project (OpenNebula.org), C12G Labs        #
3
#                                                                            #
4
# Licensed under the Apache License, Version 2.0 (the "License"); you may    #
5
# not use this file except in compliance with the License. You may obtain    #
6
# a copy of the License at                                                   #
7
#                                                                            #
8
# http://www.apache.org/licenses/LICENSE-2.0                                 #
9
#                                                                            #
10
# Unless required by applicable law or agreed to in writing, software        #
11
# distributed under the License is distributed on an "AS IS" BASIS,          #
12
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #
13
# See the License for the specific language governing permissions and        #
14
# limitations under the License.                                             #
15
#--------------------------------------------------------------------------- #
16

  
17
# Default POOL_NAME
18
POOL_NAME=one
19

  
20
# Staging directory
21
#   A directory in the Ceph server host where image will be transferred to
22
#   temporarily during the create/mkfs processes. This directoy MUST exist,
23
#   have enough space and be writeable by 'oneadmin'
24
STAGING_DIR=/var/tmp
25

  
26
# Default SHEEPDOG_FORMAT. By default RAW format will be used. Uncomment the
27
# following options to enable support for qcow2. This value affects all the sheepdog 
28
# datastores, however it can be enabled per sheepdog datastore using the same
29
# option in the datastore template
30
# SHEEPDOG_FORMAT=qcow2
31

  
32
# Extra arguments send to "qemu-img convert".
33
# QEMU_IMG_CONVERT_ARGS=" "
/var/lib/one/remotes/datastore/sheepdog/stat 2014-05-25 17:36:24.290579548 +0200
1
#!/bin/bash
2

  
3
# -------------------------------------------------------------------------- #
4
# Copyright 2002-2014, OpenNebula Project (OpenNebula.org), C12G Labs        #
5
#                                                                            #
6
# Licensed under the Apache License, Version 2.0 (the "License"); you may    #
7
# not use this file except in compliance with the License. You may obtain    #
8
# a copy of the License at                                                   #
9
#                                                                            #
10
# http://www.apache.org/licenses/LICENSE-2.0                                 #
11
#                                                                            #
12
# Unless required by applicable law or agreed to in writing, software        #
13
# distributed under the License is distributed on an "AS IS" BASIS,          #
14
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #
15
# See the License for the specific language governing permissions and        #
16
# limitations under the License.                                             #
17
#--------------------------------------------------------------------------- #
18

  
19
# ------------------------------------------------------------------------------
20
#  Set up Environment and transfer arguments
21
# ------------------------------------------------------------------------------
22
#
23
#  vmfs.conf: includes default TMP_DIR
24
#  libfs.sh a& scripts_common.sh: includes tools and lib calls
25
# ------------------------------------------------------------------------------
26

  
27
if [ -z "${ONE_LOCATION}" ]; then
28
    LIB_LOCATION=/usr/lib/one
29
else
30
    LIB_LOCATION=$ONE_LOCATION/lib
31
fi
32

  
33
. $LIB_LOCATION/sh/scripts_common.sh
34

  
35
DRIVER_PATH=$(dirname $0)
36
source ${DRIVER_PATH}/../libfs.sh
37

  
38
# -------- Get stat and datastore arguments from OpenNebula core ------------
39

  
40
DRV_ACTION=$1
41
ID=$2
42

  
43
XPATH="${DRIVER_PATH}/../xpath.rb -b $DRV_ACTION"
44

  
45
unset i XPATH_ELEMENTS
46

  
47
while IFS= read -r -d '' element; do
48
    XPATH_ELEMENTS[i++]="$element"
49
done < <($XPATH /DS_DRIVER_ACTION_DATA/IMAGE/PATH)
50

  
51
SRC="${XPATH_ELEMENTS[0]}"
52

  
53
# ------------------------------------------------------------------------------
54
#  Compute the size
55
# ------------------------------------------------------------------------------
56

  
57
SIZE=`fs_size $SRC`
58

  
59
if [ "$SIZE" = "0" ]; then
60
    log_error "Cannot determine size for $SRC"
61
    exit -1
62
fi
63

  
64
echo "$SIZE"