3 # Copyright 2016 RIFT.IO Inc
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
9 # http://www.apache.org/licenses/LICENSE-2.0
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.
24 class ImageInfoError(Exception):
28 def qcow2_virtual_size_mbytes(qcow2_filepath
):
29 info_output
= shell
.command("qemu-img info {}".format(qcow2_filepath
))
30 for line
in info_output
:
31 if line
.startswith("virtual size"):
32 match
= re
.search("\(([0-9]*) bytes\)", line
)
34 raise ImageInfoError("Could not parse image size")
36 num_bytes
= int(match
.group(1))
37 num_mbytes
= num_bytes
/ 1024 / 1024
38 return math
.ceil(num_mbytes
)
40 raise ImageInfoError("Could not image virtual size field in output")