def create_backup_be(self, be_name=None): """Create a backup BE if the BE being modified is the live one. 'be_name' is an optional string indicating the name to use for the new backup BE.""" self.check_be_name(be_name) if self.is_live_BE: # Create a clone of the live BE, but do not mount or # activate it. Do nothing with the returned snapshot # name that is taken of the clone during beCopy. ret, be_name_clone, not_used = be.beCopy() if ret != 0: raise api_errors.UnableToCopyBE() if not be_name: be_name = self.__get_new_be_name( suffix="-backup-1") ret = be.beRename(be_name_clone, be_name) if ret != 0: raise api_errors.UnableToRenameBE( be_name_clone, be_name) elif be_name is not None: raise api_errors.BENameGivenOnDeadBE(be_name)
def init_image_recovery(self, img, be_name=None): """Initialize for an update. If a be_name is given, validate it. If we're operating on a live BE then clone the live BE and operate on the clone. If we're operating on a non-live BE we use the already created snapshot""" self.img = img if self.is_live_BE: # Create a clone of the live BE and mount it. self.destroy_snapshot() self.check_be_name(be_name) # Do nothing with the returned snapshot name # that is taken of the clone during beCopy. ret, self.be_name_clone, not_used = be.beCopy() if ret != 0: raise api_errors.UnableToCopyBE() if be_name: ret = be.beRename(self.be_name_clone, be_name) if ret == 0: self.be_name_clone = be_name else: raise api_errors.UnableToRenameBE( self.be_name_clone, be_name) if be.beMount(self.be_name_clone, self.clone_dir) != 0: raise api_errors.UnableToMountBE( self.be_name_clone, self.clone_dir) # record the UUID of this cloned boot environment not_used, self.be_name_clone_uuid = \ BootEnv.get_be_name(self.clone_dir) # Set the image to our new mounted BE. img.find_root(self.clone_dir, exact_match=True) elif be_name is not None: raise api_errors.BENameGivenOnDeadBE(be_name)
def init_image_recovery(self, img, be_name=None): """Initialize for an update. If a be_name is given, validate it. If we're operating on a live BE then clone the live BE and operate on the clone. If we're operating on a non-live BE we use the already created snapshot""" self.img = img if self.is_live_BE: # Create a clone of the live BE and mount it. self.destroy_snapshot() self.check_be_name(be_name) # Do nothing with the returned snapshot name # that is taken of the clone during beCopy. ret, self.be_name_clone, not_used = be.beCopy() if ret != 0: raise api_errors.UnableToCopyBE() if be_name: ret = be.beRename(self.be_name_clone, be_name) if ret == 0: self.be_name_clone = be_name else: raise api_errors.UnableToRenameBE(self.be_name_clone, be_name) if be.beMount(self.be_name_clone, self.clone_dir) != 0: raise api_errors.UnableToMountBE(self.be_name_clone, self.clone_dir) # record the UUID of this cloned boot environment not_used, self.be_name_clone_uuid = \ BootEnv.get_be_name(self.clone_dir) # Set the image to our new mounted BE. img.find_root(self.clone_dir, exact_match=True) elif be_name is not None: raise api_errors.BENameGivenOnDeadBE(be_name)
def create_backup_be(self, be_name=None): """Create a backup BE if the BE being modified is the live one. 'be_name' is an optional string indicating the name to use for the new backup BE.""" self.check_be_name(be_name) if self.is_live_BE: # Create a clone of the live BE, but do not mount or # activate it. Do nothing with the returned snapshot # name that is taken of the clone during beCopy. ret, be_name_clone, not_used = be.beCopy() if ret != 0: raise api_errors.UnableToCopyBE() if not be_name: be_name = self.get_new_be_name(suffix="-backup-1") ret = be.beRename(be_name_clone, be_name) if ret != 0: raise api_errors.UnableToRenameBE(be_name_clone, be_name) elif be_name is not None: raise api_errors.BENameGivenOnDeadBE(be_name)
def rename_be(orig_name, new_name): return be.beRename(orig_name, new_name)