Пример #1
0
 def _get_modifyvm_args(self, config, create):
     args = []
     for config_key, value in config.items():
         if not config_key.startswith('vm-'):
             continue
         key = config_key[3:]
         if not create and key.startswith(('natpf', 'hostonlyadapter')):
             continue
         if key.startswith('hostonlyadapter'):
             hostonlyif = self.master.hostonlyifs[value]
             hostonlyif.ensure(self)
         if key.startswith('uartmode'):
             if value == 'disconnected':
                 pass
             elif value.startswith(('server ', 'client ', 'file ')):
                 value = value.split(None, 1)
                 args.extend(("--%s" % key, value[0], expand_path(value[1], config.get_path(config_key))))
             else:
                 args.extend(("--%s" % key, expand_path(value, config.get_path(config_key))))
         elif key.startswith('uart') and value != 'off':
             value = value.split()
             args.append("--%s" % key)
             args.extend(value)
         else:
             args.extend(("--%s" % key, value))
     return args
Пример #2
0
 def _get_modifyvm_args(self, config, create):
     args = []
     for config_key, value in config.items():
         if not config_key.startswith('vm-'):
             continue
         key = config_key[3:]
         if not create and key.startswith(('natpf', 'hostonlyadapter')):
             continue
         if key.startswith('hostonlyadapter'):
             hostonlyif = self.master.hostonlyifs[value]
             hostonlyif.ensure(self)
         if key.startswith('uartmode'):
             if value == 'disconnected':
                 pass
             elif value.startswith(('server ', 'client ', 'file ')):
                 value = value.split(None, 1)
                 args.extend(("--%s" % key, value[0],
                              expand_path(value[1],
                                          config.get_path(config_key))))
             else:
                 args.extend(("--%s" % key,
                              expand_path(value,
                                          config.get_path(config_key))))
         elif key.startswith('uart') and value != 'off':
             value = value.split()
             args.append("--%s" % key)
             args.extend(value)
         else:
             args.extend(("--%s" % key, value))
     return args
Пример #3
0
 def _get_storages(self, config):
     storages = list(filter(None, config.get('storage', '').splitlines()))
     result = []
     for storage in storages:
         args = shlex.split(storage)
         args_dict = {}
         for k, v in zip(*[iter(args)] * 2):
             args_dict[k[2:]] = v
         if 'medium' in args_dict:
             medium = args_dict['medium']
             medium_url = urlparse(medium)
             if medium_url.netloc:
                 medium = (medium_url, args_dict.pop('medium_sha1', None))
             elif '.' in medium:
                 medium = expand_path(medium, config.get_path('storage'))
             elif medium.startswith('vb-disk:'):
                 try:
                     medium = self.master.disks[medium[8:]]
                 except KeyError:
                     log.error("Couldn't find [vb-disk:%s] section referenced by [%s]." % (medium[8:], self.config_id))
                     sys.exit(1)
             args_dict['medium'] = medium
         if 'type' not in args_dict:
             args_dict['type'] = 'hdd'
         result.append(args_dict)
     return result
Пример #4
0
 def _get_storages(self, config):
     storages = list(filter(None, config.get('storage', '').splitlines()))
     result = []
     for storage in storages:
         args = shlex.split(storage)
         args_dict = {}
         for k, v in zip(*[iter(args)] * 2):
             args_dict[k[2:]] = v
         if 'medium' in args_dict:
             medium = args_dict['medium']
             medium_url = urlparse(medium)
             if medium_url.netloc:
                 medium = (medium_url, args_dict.pop('medium_sha1', None))
             elif '.' in medium:
                 medium = expand_path(medium, config.get_path('storage'))
             elif medium.startswith('vb-disk:'):
                 try:
                     medium = self.master.disks[medium[8:]]
                 except KeyError:
                     log.error(
                         "Couldn't find [vb-disk:%s] section referenced by [%s]."
                         % (medium[8:], self.config_id))
                     sys.exit(1)
             args_dict['medium'] = medium
         if 'type' not in args_dict:
             args_dict['type'] = 'hdd'
         result.append(args_dict)
     return result
Пример #5
0
 def filename(self, instance):
     filename = self.config.get('filename')
     if filename is None:
         filename = self.name
     ext = ".%s" % self.format.lower()
     if not filename.endswith(ext):
         filename = filename + ext
     filename = expand_path(filename, instance._vmfolder)
     if not os.path.exists(filename):
         kw = {}
         if self.size:
             kw['size'] = self.size
         if self.variant:
             kw['variant'] = self.variant
         try:
             instance.vb.createhd(filename=filename, format=self.format, **kw)
         except subprocess.CalledProcessError as e:
             log.error("Failed to create disk '%s' at '%s':\n%s" % (self.name, filename, e))
             sys.exit(1)
     return filename
Пример #6
0
 def filename(self, instance):
     filename = self.config.get('filename')
     if filename is None:
         filename = self.name
     ext = ".%s" % self.format.lower()
     if not filename.endswith(ext):
         filename = filename + ext
     filename = expand_path(filename, instance._vmfolder)
     if not os.path.exists(filename):
         kw = {}
         if self.size:
             kw['size'] = self.size
         if self.variant:
             kw['variant'] = self.variant
         try:
             instance.vb.createhd(filename=filename,
                                  format=self.format,
                                  **kw)
         except subprocess.CalledProcessError as e:
             log.error("Failed to create disk '%s' at '%s':\n%s" %
                       (self.name, filename, e))
             sys.exit(1)
     return filename