def METHOD_NAME(
    self,
    pgsql,
    postgres_pvcs_obj,
    snapshot_factory,
    snapshot_restore_factory,
    sc_name=None,
):
    # Take a snapshot
    log.info("Creating snapshot of all postgres PVCs")
    snapshots = []
    for pvc_obj in postgres_pvcs_obj:
        log.info(f"Creating snapshot of PVC {pvc_obj.name}")
        snap_obj = snapshot_factory(
            pvc_obj=pvc_obj, snapshot_name=f"{pvc_obj.name}-snap"
        )
        snapshots.append(snap_obj)
    log.info("Snapshots creation completed and in Ready state")
    # Create PVCs out of the snapshots
    log.info("Creating new PVCs from snapshots")
    restore_pvc_objs = []
    for snapshot in snapshots:
        log.info(f"Creating a PVC from snapshot {snapshot.name}")
        restore_pvc_obj = snapshot_restore_factory(
            snapshot_obj=snapshot,
            restore_pvc_name=f"{snapshot.name}-restored",
            storageclass=sc_name,
            volume_mode=snapshot.parent_volume_mode,
            access_mode=snapshot.parent_access_mode,
        )
        log.info(
            f"Created PVC {restore_pvc_obj.name} from snapshot " f"{snapshot.name}"
        )
        restore_pvc_objs.append(restore_pvc_obj)
    log.info("Created new PVCs from all the snapshots and in Bound state")
    self.pgsql_obj_list = pgsql.attach_pgsql_pod_to_claim_pvc(
        pvc_objs=restore_pvc_objs,
        postgres_name="postgres-snap",
        pgbench_name="pgbench-snap",
    )
    return snapshots, restore_pvc_objs