RIFT OSM R1 Initial Submission
[osm/SO.git] / rwcal / plugins / vala / rwcal_cloudsim / rift / rwcal / cloudsim / image.py
1
2 #
3 # Copyright 2016 RIFT.IO Inc
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
18 import math
19 import re
20
21 from . import shell
22
23
24 class ImageInfoError(Exception):
25 pass
26
27
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)
33 if match is None:
34 raise ImageInfoError("Could not parse image size")
35
36 num_bytes = int(match.group(1))
37 num_mbytes = num_bytes / 1024 / 1024
38 return math.ceil(num_mbytes)
39
40 raise ImageInfoError("Could not image virtual size field in output")