except ImportError:
import elementtree.ElementTree as ET
+try:
+ ParseError = ET.ParseError # pylint: disable=E1103
+except AttributeError:
+ ParseError = None
+
from ganeti import constants
from ganeti import errors
from ganeti import utils
# AllocationUnits values and conversion
ALLOCATION_UNITS = {
- 'b': ["bytes", "b"],
- 'kb': ["kilobytes", "kb", "byte * 2^10", "kibibytes", "kib"],
- 'mb': ["megabytes", "mb", "byte * 2^20", "mebibytes", "mib"],
- 'gb': ["gigabytes", "gb", "byte * 2^30", "gibibytes", "gib"],
+ "b": ["bytes", "b"],
+ "kb": ["kilobytes", "kb", "byte * 2^10", "kibibytes", "kib"],
+ "mb": ["megabytes", "mb", "byte * 2^20", "mebibytes", "mib"],
+ "gb": ["gigabytes", "gb", "byte * 2^30", "gibibytes", "gib"],
}
CONVERT_UNITS_TO_MB = {
- 'b': lambda x: x / (1024 * 1024),
- 'kb': lambda x: x / 1024,
- 'mb': lambda x: x,
- 'gb': lambda x: x * 1024,
+ "b": lambda x: x / (1024 * 1024),
+ "kb": lambda x: x / 1024,
+ "mb": lambda x: x,
+ "gb": lambda x: x * 1024,
}
# Names of the config fields
}
+def CheckQemuImg():
+ """ Make sure that qemu-img is present before performing operations.
+
+ @raise errors.OpPrereqError: when qemu-img was not found in the system
+
+ """
+ if not constants.QEMUIMG_PATH:
+ raise errors.OpPrereqError("qemu-img not found at build time, unable"
+ " to continue")
+
+
def LinkFile(old_path, prefix=None, suffix=None, directory=None):
"""Create link with a given prefix and suffix.
self.tree = ET.ElementTree()
try:
self.tree.parse(input_path)
- except xml.parsers.expat.ExpatError, err:
+ except (ParseError, xml.parsers.expat.ExpatError), err:
raise errors.OpPrereqError("Error while reading %s file: %s" %
(OVF_EXT, err))
@raise errors.OpPrereqError: convertion of the disk failed
"""
+ CheckQemuImg()
disk_file = os.path.basename(disk_path)
(disk_name, disk_extension) = os.path.splitext(disk_file)
if disk_extension != disk_format:
prefix=disk_name, dir=self.output_dir)
self.temp_file_manager.Add(new_disk_path)
args = [
- "qemu-img",
+ constants.QEMUIMG_PATH,
"convert",
"-O",
disk_format,
@raise errors.OpPrereqError: format information cannot be retrieved
"""
- args = ["qemu-img", "info", disk_path]
+ CheckQemuImg()
+ args = [constants.QEMUIMG_PATH, "info", disk_path]
run_result = utils.RunCmd(args, cwd=os.getcwd())
if run_result.failed:
raise errors.OpPrereqError("Gathering info about the disk using qemu-img"
information or size information is invalid or creation failed
"""
+ CheckQemuImg()
assert self.options.disks
results = {}
for (disk_id, disk_desc) in self.options.disks:
(disk_id, disk_desc["size"]))
new_path = utils.PathJoin(self.output_dir, str(disk_id))
args = [
- "qemu-img",
+ constants.QEMUIMG_PATH,
"create",
"-f",
"raw",