def validate_parms(self): """ Do some pre-install domain validation """ if self.domain is not None: raise RuntimeError, _("Domain has already been started!") if self.name is None or self.memory is None: raise RuntimeError(_("Name and memory must be specified for " "all guests!")) if _util.vm_uuid_collision(self.conn, self.uuid): raise RuntimeError(_("The UUID you entered is already in " "use by another guest!"))
def validate_parms(self): """ Do some pre-install domain validation """ if self.domain is not None: raise RuntimeError, _("Domain has already been started!") if self.name is None or self.memory is None: raise RuntimeError( _("Name and memory must be specified for " "all guests!")) if _util.vm_uuid_collision(self.conn, self.uuid): raise RuntimeError( _("The UUID you entered is already in " "use by another guest!"))
def __init__(self, connection=None, conn=None): conn = conn or connection if not isinstance(conn, libvirt.virConnect): raise ValueError(_("Connection must be a 'virConnect' instance.")) self._hyper_conn = conn # original guest name or uuid self._original_guest = None self._original_dom = None self._original_virtual_disks = [] self._original_xml = None # clone guest self._clone_name = None self._clone_devices = [] self._clone_virtual_disks = [] self._clone_bs = 1024 * 1024 * 10 self._clone_mac = [] self._clone_uuid = None self._clone_sparse = True self._clone_xml = None self._force_target = [] self._skip_target = [] self._preserve = True self._clone_running = False # Default clone policy for back compat: don't clone readonly, # shareable, or empty disks self._clone_policy = [ self.CLONE_POLICY_NO_READONLY, self.CLONE_POLICY_NO_SHAREABLE, self.CLONE_POLICY_NO_EMPTYMEDIA ] # Throwaway guest to use for easy validation self._valid_guest = Guest.Guest(conn=conn) # Generate a random UUID at the start while 1: uuid = _util.uuidToString(_util.randomUUID()) if _util.vm_uuid_collision(self._hyper_conn, uuid): continue self.clone_uuid = uuid break
def __init__(self, connection=None, conn=None): conn = conn or connection if not isinstance(conn, libvirt.virConnect): raise ValueError(_("Connection must be a 'virConnect' instance.")) self._hyper_conn = conn # original guest name or uuid self._original_guest = None self._original_dom = None self._original_virtual_disks = [] self._original_xml = None # clone guest self._clone_name = None self._clone_devices = [] self._clone_virtual_disks = [] self._clone_bs = 1024 * 1024 * 10 self._clone_mac = [] self._clone_uuid = None self._clone_sparse = True self._clone_xml = None self._force_target = [] self._skip_target = [] self._preserve = True self._clone_running = False # Default clone policy for back compat: don't clone readonly, # shareable, or empty disks self._clone_policy = [self.CLONE_POLICY_NO_READONLY, self.CLONE_POLICY_NO_SHAREABLE, self.CLONE_POLICY_NO_EMPTYMEDIA] # Throwaway guest to use for easy validation self._valid_guest = Guest.Guest(conn=conn) # Generate a random UUID at the start while 1: uuid = _util.uuidToString(_util.randomUUID()) if _util.vm_uuid_collision(self._hyper_conn, uuid): continue self.clone_uuid = uuid break
def _set_defaults(self, devlist_func): soundtype = VirtualDevice.VIRTUAL_DEV_AUDIO videotype = VirtualDevice.VIRTUAL_DEV_VIDEO inputtype = VirtualDevice.VIRTUAL_DEV_INPUT # Set default input values input_type = self._lookup_device_param(inputtype, "type") input_bus = self._lookup_device_param(inputtype, "bus") for inp in devlist_func(inputtype): if (inp.type == inp.INPUT_TYPE_DEFAULT and inp.bus == inp.INPUT_BUS_DEFAULT): inp.type = input_type inp.bus = input_bus # Generate disk targets, and set preferred disk bus used_targets = [] for disk in devlist_func(VirtualDevice.VIRTUAL_DEV_DISK): if not disk.bus: if disk.device == disk.DEVICE_FLOPPY: disk.bus = "fdc" else: disk.bus = self._diskbus used_targets.append(disk.generate_target(used_targets)) # Set sound device model sound_model = self._lookup_device_param(soundtype, "model") for sound in devlist_func(soundtype): if sound.model == sound.MODEL_DEFAULT: sound.model = sound_model # Set video device model video_model = self._lookup_device_param(videotype, "model_type") for video in devlist_func(videotype): if video.model_type == video.MODEL_DEFAULT: video.model_type = video_model # Generate UUID if self.uuid is None: while 1: self.uuid = _util.uuidToString(_util.randomUUID()) if _util.vm_uuid_collision(self.conn, self.uuid): continue break
except ValueError, e: raise ValueError(_("Invalid name for new guest: %s") % e) self._clone_name = name clone_name = property(get_clone_name, set_clone_name, doc="Name to use for the new guest clone.") def set_clone_uuid(self, uuid): try: self._valid_guest.set_uuid(uuid) except ValueError, e: raise ValueError(_("Invalid uuid for new guest: %s") % e) if _util.vm_uuid_collision(self._hyper_conn, uuid): raise ValueError(_("UUID '%s' is in use by another guest.") % uuid) self._clone_uuid = uuid def get_clone_uuid(self): return self._clone_uuid clone_uuid = property(get_clone_uuid, set_clone_uuid, doc="UUID to use for the new guest clone") def set_clone_devices(self, devpath): # Devices here is a string path. Every call to set_clone_devices # Adds the path (if valid) to the internal _clone_devices list disklist = []
try: self._valid_guest.set_name(name) except ValueError, e: raise ValueError(_("Invalid name for new guest: %s") % e) self._clone_name = name clone_name = property(get_clone_name, set_clone_name, doc="Name to use for the new guest clone.") def set_clone_uuid(self, uuid): try: self._valid_guest.set_uuid(uuid) except ValueError, e: raise ValueError(_("Invalid uuid for new guest: %s") % e) if _util.vm_uuid_collision(self._hyper_conn, uuid): raise ValueError(_("UUID '%s' is in use by another guest.") % uuid) self._clone_uuid = uuid def get_clone_uuid(self): return self._clone_uuid clone_uuid = property(get_clone_uuid, set_clone_uuid, doc="UUID to use for the new guest clone") def set_clone_devices(self, devpath): # Devices here is a string path. Every call to set_clone_devices # Adds the path (if valid) to the internal _clone_devices list disklist = [] is_list, pathlist = _listify(devpath)