Beispiel #1
0
        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)
Beispiel #2
0
        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)
Beispiel #3
0
    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)
Beispiel #4
0
    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)
Beispiel #5
0
 def rename_be(orig_name, new_name):
     return be.beRename(orig_name, new_name)
Beispiel #6
0
 def rename_be(orig_name, new_name):
         return be.beRename(orig_name, new_name)