Browse code

fix failing wget statements under -o errexit in vmdk upload routine

Fix the case when uploaded image has no descriptor.
Refactored the code a bit

Tested:
1. monithic Sparse
2. monolithic flat
2.1 flat file name mentioned in descriptor file
2.1 flat file name not mentioned in descriptor file
3. descriptor header not found in the file
3.1 image file name is *-flat, download descriptor
3.2 image file name does not end with *-flat
4. file name contains all image properties

Change-Id: I0df9be5c2a1b9ed53cdb22d5cd40b94e56c48f37
Closes-bug: #1289664

Sreeram Yerrapragada authored on 2014/03/11 06:12:58
Showing 1 changed files
... ...
@@ -122,7 +122,7 @@ function upload_image {
122 122
             flat_fname="$(head -25 $IMAGE | { grep -G 'RW\|RDONLY [0-9]+ FLAT\|VMFS' $IMAGE || true; })"
123 123
             flat_fname="${flat_fname#*\"}"
124 124
             flat_fname="${flat_fname%?}"
125
-            if [[ -z "$flat_name" ]]; then
125
+            if [[ -z "$flat_fname" ]]; then
126 126
                 flat_fname="$IMAGE_NAME-flat.vmdk"
127 127
             fi
128 128
             path_len=`expr ${#image_url} - ${#IMAGE_FNAME}`
... ...
@@ -133,27 +133,16 @@ function upload_image {
133 133
                 if [[ ! -f $FILES/$flat_fname || \
134 134
                 "$(stat -c "%s" $FILES/$flat_fname)" = "0" ]]; then
135 135
                     wget -c $flat_url -O $FILES/$flat_fname
136
-                    if [[ $? -ne 0 ]]; then
137
-                        echo "Flat disk not found: $flat_url"
138
-                        flat_found=false
139
-                    fi
140
-                fi
141
-                if $flat_found; then
142
-                    IMAGE="$FILES/${flat_fname}"
143 136
                 fi
137
+                IMAGE="$FILES/${flat_fname}"
144 138
             else
145 139
                 IMAGE=$(echo $flat_url | sed "s/^file:\/\///g")
146 140
                 if [[ ! -f $IMAGE || "$(stat -c "%s" $IMAGE)" == "0" ]]; then
147 141
                     echo "Flat disk not found: $flat_url"
148
-                    flat_found=false
142
+                    return 1
149 143
                 fi
150
-                if ! $flat_found; then
151
-                    IMAGE=$(echo $image_url | sed "s/^file:\/\///g")
152
-                fi
153
-            fi
154
-            if $flat_found; then
155
-                IMAGE_NAME="${flat_fname}"
156 144
             fi
145
+            IMAGE_NAME="${flat_fname}"
157 146
             vmdk_disktype="preallocated"
158 147
         elif [[ "$vmdk_create_type" = "streamOptimized" ]]; then
159 148
             vmdk_disktype="streamOptimized"
... ...
@@ -163,33 +152,27 @@ function upload_image {
163 163
             if [[ ${IMAGE_NAME: -5} != "-flat" ]]; then
164 164
                 warn $LINENO "Expected filename suffix: '-flat'."`
165 165
                             `" Filename provided: ${IMAGE_NAME}"
166
-            fi
167
-
168
-            descriptor_fname="${IMAGE_NAME:0:${#IMAGE_NAME} - 5}.vmdk"
169
-            path_len=`expr ${#image_url} - ${#IMAGE_FNAME}`
170
-            flat_path="${image_url:0:$path_len}"
171
-            descriptor_url=$flat_path$descriptor_fname
172
-            warn $LINENO "$descriptor_data_pair_msg"`
173
-                            `" Attempt to retrieve the descriptor *.vmdk: $descriptor_url"
174
-            if [[ $flat_path != file* ]]; then
175
-                if [[ ! -f $FILES/$descriptor_fname || \
176
-                "$(stat -c "%s" $FILES/$descriptor_fname)" = "0" ]]; then
177
-                    wget -c $descriptor_url -O $FILES/$descriptor_fname
178
-                    if [[ $? -ne 0 ]]; then
179
-                        warn $LINENO "Descriptor not found $descriptor_url"
180
-                        descriptor_found=false
181
-                    fi
182
-                fi
183
-                descriptor_url="$FILES/$descriptor_fname"
184 166
             else
185
-                descriptor_url=$(echo $descriptor_url | sed "s/^file:\/\///g")
186
-                if [[ ! -f $descriptor_url || \
187
-                "$(stat -c "%s" $descriptor_url)" == "0" ]]; then
188
-                    warn $LINENO "Descriptor not found $descriptor_url"
189
-                    descriptor_found=false
167
+                descriptor_fname="${IMAGE_NAME:0:${#IMAGE_NAME} - 5}.vmdk"
168
+                path_len=`expr ${#image_url} - ${#IMAGE_FNAME}`
169
+                flat_path="${image_url:0:$path_len}"
170
+                descriptor_url=$flat_path$descriptor_fname
171
+                warn $LINENO "$descriptor_data_pair_msg"`
172
+                                `" Attempt to retrieve the descriptor *.vmdk: $descriptor_url"
173
+                if [[ $flat_path != file* ]]; then
174
+                    if [[ ! -f $FILES/$descriptor_fname || \
175
+                    "$(stat -c "%s" $FILES/$descriptor_fname)" = "0" ]]; then
176
+                        wget -c $descriptor_url -O $FILES/$descriptor_fname
177
+                    fi
178
+                    descriptor_url="$FILES/$descriptor_fname"
179
+                else
180
+                    descriptor_url=$(echo $descriptor_url | sed "s/^file:\/\///g")
181
+                    if [[ ! -f $descriptor_url || \
182
+                    "$(stat -c "%s" $descriptor_url)" == "0" ]]; then
183
+                        echo "Descriptor not found: $descriptor_url"
184
+                        return 1
185
+                    fi
190 186
                 fi
191
-            fi
192
-            if $descriptor_found; then
193 187
                 vmdk_adapter_type="$(head -25 $descriptor_url | { grep -a -F -m 1 'ddb.adapterType =' $descriptor_url || true; })"
194 188
                 vmdk_adapter_type="${vmdk_adapter_type#*\"}"
195 189
                 vmdk_adapter_type="${vmdk_adapter_type%?}"