예제 #1
0
    def test_restore_data(self):
        # Test for unsupported storage backend.
        flexmock(backup_recovery_constants.StorageTypes()).\
          should_receive("get_storage_types").and_return([])
        self.assertEquals(False, zookeeper_backup.restore_data('blah', ''))

        # Test with failure to download backup from GCS.
        flexmock(gcs_helper).should_receive('download_from_bucket').and_return(
            False)
        self.assertEquals(
            False,
            zookeeper_backup.restore_data(
                backup_recovery_constants.StorageTypes.GCS, ''))

        # Test with successful download from GCS and failure to untar.
        flexmock(gcs_helper).should_receive('download_from_bucket').and_return(
            True)
        flexmock(zookeeper_backup).should_receive('flush_zk').and_return()
        flexmock(backup_recovery_helper).should_receive(
            'untar_backup_files').and_raise(backup_exceptions.BRException)
        flexmock(backup_recovery_helper).\
          should_receive('delete_local_backup_file').\
          and_return()
        self.assertEquals(
            False,
            zookeeper_backup.restore_data(
                backup_recovery_constants.StorageTypes.GCS, ''))

        # Test normal case for GCS.
        flexmock(backup_recovery_helper).should_receive('untar_backup_files').\
          and_return()
        flexmock(zookeeper_backup).should_receive('restore_zk').and_return()
        flexmock(backup_recovery_helper).should_receive('remove').and_return()
        flexmock(backup_recovery_helper).\
          should_receive('delete_local_backup_file').\
          and_return()
        self.assertEquals(
            True,
            zookeeper_backup.restore_data(
                backup_recovery_constants.StorageTypes.GCS, ''))

        # Test with failure to untar in local mode.
        flexmock(zookeeper_backup).should_receive('flush_zk').and_return()
        flexmock(backup_recovery_helper).should_receive('untar_backup_files').\
          and_raise(backup_exceptions.BRException)
        flexmock(zookeeper_backup).should_receive('restore_zk').and_return()
        flexmock(backup_recovery_helper).should_receive('remove').and_return()
        self.assertEquals(False, zookeeper_backup.restore_data('', ''))

        # Test normal case in local mode.
        flexmock(backup_recovery_helper).should_receive('untar_backup_files').\
          and_return()
        flexmock(zookeeper_backup).should_receive('restore_zk').and_return()
        flexmock(backup_recovery_helper).should_receive('remove').and_return()
        self.assertEquals(True, zookeeper_backup.restore_data('', ''))
예제 #2
0
  def test_restore_data(self):
    # Test for unsupported storage backend.
    flexmock(backup_recovery_constants.StorageTypes()).\
      should_receive("get_storage_types").and_return([])
    self.assertEquals(False, zookeeper_backup.restore_data('blah', ''))

    # Test with failure to download backup from GCS.
    flexmock(gcs_helper).should_receive('download_from_bucket').and_return(
      False)
    self.assertEquals(False, zookeeper_backup.restore_data(
      backup_recovery_constants.StorageTypes.GCS, ''))

    # Test with successful download from GCS and failure to untar.
    flexmock(gcs_helper).should_receive('download_from_bucket').and_return(
      True)
    flexmock(zookeeper_backup).should_receive('flush_zk').and_return()
    flexmock(backup_recovery_helper).should_receive(
      'untar_backup_files').and_raise(backup_exceptions.BRException)
    flexmock(backup_recovery_helper).\
      should_receive('delete_local_backup_file').\
      and_return()
    self.assertEquals(False, zookeeper_backup.restore_data(
      backup_recovery_constants.StorageTypes.GCS, ''))

    # Test normal case for GCS.
    flexmock(backup_recovery_helper).should_receive('untar_backup_files').\
      and_return()
    flexmock(zookeeper_backup).should_receive('restore_zk').and_return()
    flexmock(backup_recovery_helper).should_receive('remove').and_return()
    flexmock(backup_recovery_helper).\
      should_receive('delete_local_backup_file').\
      and_return()
    self.assertEquals(True, zookeeper_backup.restore_data(
      backup_recovery_constants.StorageTypes.GCS, ''))

    # Test with failure to untar in local mode.
    flexmock(zookeeper_backup).should_receive('flush_zk').and_return()
    flexmock(backup_recovery_helper).should_receive('untar_backup_files').\
      and_raise(backup_exceptions.BRException)
    flexmock(zookeeper_backup).should_receive('restore_zk').and_return()
    flexmock(backup_recovery_helper).should_receive('remove').and_return()
    self.assertEquals(False, zookeeper_backup.restore_data('', ''))

    # Test normal case in local mode.
    flexmock(backup_recovery_helper).should_receive('untar_backup_files').\
      and_return()
    flexmock(zookeeper_backup).should_receive('restore_zk').and_return()
    flexmock(backup_recovery_helper).should_receive('remove').and_return()
    self.assertEquals(True, zookeeper_backup.restore_data('', ''))
예제 #3
0
  def do_zookeeper_restore(self, storage, path):
    """ Top level function for doing Zookeeper restores.

    Args:
      storage: A str, one of the StorageTypes class members.
      path: A str, the name of the backup file to be created.
    Returns:
      A JSON string to return to the client.
    """
    success = True
    reason = "success"
    try:
      logging.info("Acquiring lock for zk restore.")
      self.__zookeeper_backup_lock.acquire(True)
      logging.info("Got the lock for zk restore.")
      if not zookeeper_backup.restore_data(storage, path):
        return self.bad_request("ZK restore failed!")
      else:
        logging.info("Successful zk restore!")
    except backup_exceptions.BRException, exception:
      logging.error("Unable to complete zk restore: {0}".format(exception))
      success = False
      reason = str(exception)
예제 #4
0
    def do_zookeeper_restore(self, storage, path):
        """ Top level function for doing Zookeeper restores.

    Args:
      storage: A str, one of the StorageTypes class members.
      path: A str, the name of the backup file to be created.
    Returns:
      A JSON string to return to the client.
    """
        success = True
        reason = "success"
        try:
            logging.info("Acquiring lock for zk restore.")
            self.__zookeeper_backup_lock.acquire(True)
            logging.info("Got the lock for zk restore.")
            if not zookeeper_backup.restore_data(storage, path):
                return self.bad_request("ZK restore failed!")
            else:
                logging.info("Successful zk restore!")
        except backup_exceptions.BRException, exception:
            logging.error(
                "Unable to complete zk restore: {0}".format(exception))
            success = False
            reason = str(exception)