43 def execute(self, capability, *args, **kwargs):
44 """! Executes capability by name
46 @param capability Capability name
47 @param args Additional arguments
48 @param kwargs Additional arguments
49 @details Each capability e.g. may directly just call some command line program or execute building pythonic function
50 @return Capability call return value
52 if not kwargs[
'image_path']:
56 if not kwargs[
'destination_disk']:
61 target_id = kwargs.get(
'target_id',
None)
62 pooling_timeout = kwargs.get(
'polling_timeout', 60)
66 if kwargs[
'image_path']
and kwargs[
'destination_disk']:
67 image_path = os.path.normpath(kwargs[
'image_path'])
68 destination_disk = os.path.normpath(kwargs[
'destination_disk'])
72 mount_res, destination_disk = self.
check_mount_point_ready(destination_disk, target_id=target_id, timeout=pooling_timeout)
76 image_base_name = basename(image_path)
77 destination_path = join(destination_disk, image_base_name)
78 if capability ==
'shell':
79 if os.name ==
'nt': capability =
'copy'
80 elif os.name ==
'posix': capability =
'cp'
81 if capability ==
'cp' or capability ==
'copy' or capability ==
'copy':
82 copy_method = capability
83 cmd = [copy_method, image_path, destination_path]
84 if os.name ==
'posix':
86 if os.uname()[0] ==
'Linux':
87 result = result
and self.
run_command([
"sync",
"-f", destination_path])