Repository: scylladb/scylla-manager
Pull request #4306: Test against scylla:2025.1.0-rc4
Author: login: Michal-Leszczynski
Created: 2025-03-18T12:19:39Z | Merged: 2025-03-27T15:18:08Z

Fixes #4303

Linked issue #4303: Adjust testing env to ubi9-minimal image
The 2025.1.0 Scylla uses the ubi9-minimal image, which uses `microdnf` for installing packages instead of the `apt-get` which we use for setting up our test env. We need to adjust our testing docker files for this before we will be able to test Scylla 2025.1.0.

cc: @karol-kokoszka

Diff:
diff --git a/.github/cfg/integration-test-cfg.yaml b/.github/cfg/integration-test-cfg.yaml
index 96edc65c1b..8e0ee5ce62 100644
--- a/.github/cfg/integration-test-cfg.yaml
+++ b/.github/cfg/integration-test-cfg.yaml
@@ -46,13 +46,13 @@
   tablets: enabled
   ssl-enabled: false
 
-- scylla-version: scylladb-ci:2025.2.0-dev-0.20250310.8d676048a6d9
-  ip-family: IPV4
+- scylla-version: scylla:2025.1.0-rc4
+  ip-family: IPV6
   raft-schema: none
   tablets: disabled
   ssl-enabled: true
 
-- scylla-version: scylladb-ci:2025.2.0-dev-0.20250310.8d676048a6d9
+- scylla-version: scylla:2025.1.0-rc4
   ip-family: IPV4
   raft-schema: none
   tablets: enabled
diff --git a/.github/workflows/integration-tests-2025.2.0-dev-0.20250310.8d676048a6d9-IPV4-tablets-nossl.yaml b/.github/workflows/integration-tests-2025.1.0-rc4-IPV4-tablets-nossl.yaml
similarity index 97%
rename from .github/workflows/integration-tests-2025.2.0-dev-0.20250310.8d676048a6d9-IPV4-tablets-nossl.yaml
rename to .github/workflows/integration-tests-2025.1.0-rc4-IPV4-tablets-nossl.yaml
index f6163b3b39..1ff89707c8 100644
--- a/.github/workflows/integration-tests-2025.2.0-dev-0.20250310.8d676048a6d9-IPV4-tablets-nossl.yaml
+++ b/.github/workflows/integration-tests-2025.1.0-rc4-IPV4-tablets-nossl.yaml
@@ -2,7 +2,7 @@ concurrency:
     cancel-in-progress: true
     group: int-${{ github.workflow }}-${{ github.ref }}
 env:
-    scylla-version: scylladb-ci:2025.2.0-dev-0.20250310.8d676048a6d9
+    scylla-version: scylla:2025.1.0-rc4
     ip-family: IPV4
     raft-schema: none
     tablets: enabled
@@ -106,7 +106,7 @@ jobs:
               run: make pkg-integration-test PKG=./pkg/store
             - name: Run migrate tests
               run: make pkg-integration-test PKG=./pkg/schema/migrate
-name: integration-tests-2025.2.0-dev-0.20250310.8d676048a6d9-IPV4-tablets-nossl
+name: integration-tests-2025.1.0-rc4-IPV4-tablets-nossl
 "on":
     pull_request:
         types:
diff --git a/.github/workflows/integration-tests-2025.2.0-dev-0.20250310.8d676048a6d9-IPV4.yaml b/.github/workflows/integration-tests-2025.1.0-rc4-IPV6.yaml
similarity index 97%
rename from .github/workflows/integration-tests-2025.2.0-dev-0.20250310.8d676048a6d9-IPV4.yaml
rename to .github/workflows/integration-tests-2025.1.0-rc4-IPV6.yaml
index 6620677ac7..5c5a08beff 100644
--- a/.github/workflows/integration-tests-2025.2.0-dev-0.20250310.8d676048a6d9-IPV4.yaml
+++ b/.github/workflows/integration-tests-2025.1.0-rc4-IPV6.yaml
@@ -2,8 +2,8 @@ concurrency:
     cancel-in-progress: true
     group: int-${{ github.workflow }}-${{ github.ref }}
 env:
-    scylla-version: scylladb-ci:2025.2.0-dev-0.20250310.8d676048a6d9
-    ip-family: IPV4
+    scylla-version: scylla:2025.1.0-rc4
+    ip-family: IPV6
     raft-schema: none
     tablets: disabled
     ssl-enabled: "true"
@@ -106,7 +106,7 @@ jobs:
               run: make pkg-integration-test PKG=./pkg/store
             - name: Run migrate tests
               run: make pkg-integration-test PKG=./pkg/schema/migrate
-name: integration-tests-2025.2.0-dev-0.20250310.8d676048a6d9-IPV4
+name: integration-tests-2025.1.0-rc4-IPV6
 "on":
     pull_request:
         types:
diff --git a/Makefile b/Makefile
index 569ca52b3e..ada1cac1d7 100644
--- a/Makefile
+++ b/Makefile
@@ -16,7 +16,7 @@ GIT_ROOT = $(shell git rev-parse --show-toplevel)
 GOBIN ?= $(shell pwd)/bin
 GOFILES = go list -f '{{range .GoFiles}}{{ $$.Dir }}/{{ . }} {{end}}{{range .TestGoFiles}}{{ $$.Dir }}/{{ . }} {{end}}' $(PKG)
 
-SCYLLA_VERSION?=scylla:6.0.1
+SCYLLA_VERSION?=scylla:latest
 IP_FAMILY?=IPV4
 RAFT_SCHEMA?=none
 TABLETS?=enabled
diff --git a/README.md b/README.md
index 5cd4e90e6b..87eaebf7f5 100644
--- a/README.md
+++ b/README.md
@@ -15,12 +15,12 @@ Scylla Manager consists of tree components:
 
 ## Scylla integration status
 
-| ScyllaDB version                         | Workflows                                                                                                                                       | Limitations                                                                                                                                           |
-|------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------|
-| **2024.1.12**                            | ![integration-tests-2024.1.12-IPV4]<br/>![integration-tests-2024.1.12-IPV6]                                                                     | Restoration of schema into cluster with `consistant_cluster_management: true` is not supported                                                        |
-| **2023.1.11**                            | ![integration-tests-2023.1.11-IPV4]<br/>![integration-tests-2023.1.11-IPV4-raftschema]<br/>![integration-tests-2023.1.11-IPV6-raftschema]       | Restoration of schema into cluster with `consistant_cluster_management: true` is not supported                                                        |
-| **6.2.0**                                | ![integration-tests-6.2.0-IPV4]<br/>![integration-tests-6.2.0-IPV4-tablets]<br/>![integration-tests-6.2.0-IPV6-tablets-nossl]                   | Restoration of **Authentication** and **Service Levels** is not supported<br/>Restoration of schema containing **Alternator** tables is not supported |
-| **2025.2.0-dev-0.20250310.8d676048a6d9** | ![integration-tests-2025.2.0-dev-0.20250310.8d676048a6d9-IPV4]<br/>![integration-tests-2025.2.0-dev-0.20250310.8d676048a6d9-IPV4-tablets-nossl] | Restoration of **Authentication** and **Service Levels** is not supported<br/>Restoration of schema containing **Alternator** tables is not supported |
+| ScyllaDB version | Workflows                                                                                                                                 | Limitations                                                                                                                                           |
+|------------------|-------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **2024.1.12**    | ![integration-tests-2024.1.12-IPV4]<br/>![integration-tests-2024.1.12-IPV6]                                                               | Restoration of schema into cluster with `consistant_cluster_management: true` is not supported                                                        |
+| **2023.1.11**    | ![integration-tests-2023.1.11-IPV4]<br/>![integration-tests-2023.1.11-IPV4-raftschema]<br/>![integration-tests-2023.1.11-IPV6-raftschema] | Restoration of schema into cluster with `consistant_cluster_management: true` is not supported                                                        |
+| **6.2.0**        | ![integration-tests-6.2.0-IPV4]<br/>![integration-tests-6.2.0-IPV4-tablets]<br/>![integration-tests-6.2.0-IPV6-tablets-nossl]             | Restoration of **Authentication** and **Service Levels** is not supported<br/>Restoration of schema containing **Alternator** tables is not supported |
+| **2025.1.0-rc4** | ![integration-tests-2025.1.0-rc4-IPV6]<br/>![integration-tests-2025.1.0-rc4-IPV4-tablets-nossl]                                           | Restoration of **Authentication** and **Service Levels** is not supported<br/>Restoration of schema containing **Alternator** tables is not supported |
 
 [integration-tests-2024.1.12-IPV4]: https://github.com/scylladb/scylla-manager/actions/workflows/integration-tests-2024.1.12-IPV4.yaml/badge.svg?branch=master
 [integration-tests-2024.1.12-IPV6]: https://github.com/scylladb/scylla-manager/actions/workflows/integration-tests-2024.1.12-IPV6.yaml/badge.svg?branch=master
@@ -30,8 +30,8 @@ Scylla Manager consists of tree components:
 [integration-tests-6.2.0-IPV4]: https://github.com/scylladb/scylla-manager/actions/workflows/integration-tests-6.2.0-IPV4.yaml/badge.svg?branch=master
 [integration-tests-6.2.0-IPV4-tablets]: https://github.com/scylladb/scylla-manager/actions/workflows/integration-tests-6.2.0-IPV4-tablets.yaml/badge.svg?branch=master
 [integration-tests-6.2.0-IPV6-tablets-nossl]: https://github.com/scylladb/scylla-manager/actions/workflows/integration-tests-6.2.0-IPV6-tablets-nossl.yaml/badge.svg?branch=master
-[integration-tests-2025.2.0-dev-0.20250310.8d676048a6d9-IPV4]: https://github.com/scylladb/scylla-manager/actions/workflows/integration-tests-2025.2.0-dev-0.20250310.8d676048a6d9-IPV4.yaml/badge.svg?branch=master
-[integration-tests-2025.2.0-dev-0.20250310.8d676048a6d9-IPV4-tablets-nossl]: https://github.com/scylladb/scylla-manager/actions/workflows/integration-tests-2025.2.0-dev-0.20250310.8d676048a6d9-IPV4-tablets-nossl.yaml/badge.svg?branch=master
+[integration-tests-2025.1.0-rc4-IPV6]: https://github.com/scylladb/scylla-manager/actions/workflows/integration-tests-2025.1.0-rc4-IPV6.yaml/badge.svg?branch=master
+[integration-tests-2025.1.0-rc4-IPV4-tablets-nossl]: https://github.com/scylladb/scylla-manager/actions/workflows/integration-tests-2025.1.0-rc4-IPV4-tablets-nossl.yaml/badge.svg?branch=master
 
 ## Installing and updating Go
 
diff --git a/pkg/scyllaclient/client_scylla_integration_test.go b/pkg/scyllaclient/client_scylla_integration_test.go
index 619613eaf2..eab2a4e99c 100644
--- a/pkg/scyllaclient/client_scylla_integration_test.go
+++ b/pkg/scyllaclient/client_scylla_integration_test.go
@@ -169,14 +169,37 @@ func TestClientActiveRepairsIntegration(t *testing.T) {
 	if err != nil {
 		t.Fatal(err)
 	}
-	hosts, err := client.Hosts(context.Background())
+	ni, err := client.AnyNodeInfo(context.Background())
 	if err != nil {
 		t.Fatal(err)
 	}
+	tabletAPI, err := ni.SupportsTabletRepair()
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	Print("Given: cluster with table to repair")
+	const ks = "test_active_repairs_ks"
+	s := db.CreateSessionAndDropAllKeyspaces(t, client)
+	db.WriteData(t, s, ks, 1)
+
+	rd := scyllaclient.NewRingDescriber(context.Background(), client)
+	asyncRepair := func(ctx context.Context, ks, tab, master string) {
+		if _, err := client.RawRepair(ctx, ks, tab, master); err != nil {
+			t.Error(err)
+		}
+	}
+	if rd.IsTabletKeyspace(ks) && tabletAPI {
+		asyncRepair = func(ctx context.Context, ks, tab, master string) {
+			if _, err := client.TabletRepair(ctx, ks, tab, master, nil, nil); err != nil {
+				t.Error(err)
+			}
+		}
+	}
 
 	Print("When: cluster is idle")
 	Print("Then: no repairs are running")
-	active, err := client.ActiveRepairs(context.Background(), hosts)
+	active, err := client.ActiveRepairs(context.Background(), ManagedClusterHosts())
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -184,23 +207,23 @@ func TestClientActiveRepairsIntegration(t *testing.T) {
 		t.Fatal(active)
 	}
 
-	Print("When: repair is running on host 0")
-	go func() {
-		ExecOnHost(hosts[0], "nodetool repair -pr")
-	}()
 	defer func() {
-		if err := client.KillAllRepairs(context.Background(), hosts[0]); err != nil {
+		// Make sure that repairs don't spill to other tests
+		if err := client.KillAllRepairs(context.Background(), ManagedClusterHosts()...); err != nil {
 			t.Fatal(err)
 		}
 	}()
 
-	Print("Then: active repairs reports host 0")
+	Print("When: repairs are running")
+	Print("Then: repairs are reported as active")
 	WaitCond(t, func() bool {
-		active, err = client.ActiveRepairs(context.Background(), hosts)
+		// Multiple repair requests in order to reduce flakiness
+		asyncRepair(context.Background(), ks, db.BigTableName, ManagedClusterHost())
+		active, err = client.ActiveRepairs(context.Background(), ManagedClusterHosts())
 		if err != nil {
 			t.Fatal(err)
 		}
-		return cmp.Diff(active, hosts[0:1]) == ""
+		return len(active) > 0
 	}, 500*time.Millisecond, 4*time.Second)
 }
 
diff --git a/pkg/scyllaclient/export_test.go b/pkg/scyllaclient/export_test.go
index 0615d25b32..17375b331f 100644
--- a/pkg/scyllaclient/export_test.go
+++ b/pkg/scyllaclient/export_test.go
@@ -5,6 +5,8 @@ package scyllaclient
 import (
 	"context"
 	"time"
+
+	"github.com/scylladb/scylla-manager/v3/swagger/gen/scylla/v1/client/operations"
 )
 
 func NoRetry(ctx context.Context) context.Context {
@@ -38,3 +40,16 @@ func (p *CachedProvider) SetValidity(d time.Duration) {
 func (c *Client) Hosts(ctx context.Context) ([]string, error) {
 	return c.hosts(ctx)
 }
+
+func (c *Client) RawRepair(ctx context.Context, ks, tab, master string) (int32, error) {
+	p := operations.StorageServiceRepairAsyncByKeyspacePostParams{
+		Context:        forceHost(ctx, master),
+		Keyspace:       ks,
+		ColumnFamilies: &tab,
+	}
+	resp, err := c.scyllaOps.StorageServiceRepairAsyncByKeyspacePost(&p)
+	if err != nil {
+		return 0, err
+	}
+	return resp.GetPayload(), nil
+}
diff --git a/pkg/scyllaclient/retry_integration_test.go b/pkg/scyllaclient/retry_integration_test.go
index db81d62c56..4d4cfedbe5 100644
--- a/pkg/scyllaclient/retry_integration_test.go
+++ b/pkg/scyllaclient/retry_integration_test.go
@@ -101,11 +101,7 @@ func testRetry(t *testing.T, hosts []string, n int, shouldTimeout bool) error {
 	config := scyllaclient.TestConfig(hosts, AgentAuthToken())
 	config.Transport = hostRecorder(scyllaclient.DefaultTransport(), triedHosts)
 
-	ctx, cancel := context.WithTimeout(context.Background(), time.Duration(n+1)*config.Timeout)
-	defer cancel()
-	defer unblock(context.Background())
-
-	if err := block(ctx, hosts[0:n]); err != nil {
+	if err := block(context.Background(), hosts[0:n]); err != nil {
 		return err
 	}
 
@@ -114,6 +110,10 @@ func testRetry(t *testing.T, hosts []string, n int, shouldTimeout bool) error {
 		return err
 	}
 
+	ctx, cancel := context.WithTimeout(context.Background(), time.Duration(n+1)*config.Timeout)
+	defer cancel()
+	defer unblock(context.Background())
+
 	if _, err = client.Hosts(ctx); err != nil {
 		if shouldTimeout {
 			if !strings.HasSuffix(err.Error(), fmt.Sprintf("after %s: context deadline exceeded", client.Config().Timeout)) {
diff --git a/pkg/service/backup/service_backup_integration_test.go b/pkg/service/backup/service_backup_integration_test.go
index 24b22b6fc6..630ae12397 100644
--- a/pkg/service/backup/service_backup_integration_test.go
+++ b/pkg/service/backup/service_backup_integration_test.go
@@ -20,7 +20,6 @@ import (
 	"testing"
 	"time"
 
-	"github.com/gocql/gocql"
 	"github.com/google/go-cmp/cmp"
 	"github.com/google/go-cmp/cmp/cmpopts"
 	"github.com/pkg/errors"
@@ -2120,141 +2119,6 @@ func TestValidateIntegration(t *testing.T) {
 	}
 }
 
-func TestBackupRestoreIntegration(t *testing.T) {
-	const (
-		testBucket   = "backuptest-restore"
-		testKeyspace = "backuptest_restore"
-	)
-
-	location := s3Location(testBucket)
-	config := defaultConfig()
-
-	var (
-		session         = CreateScyllaManagerDBSession(t)
-		h               = newBackupTestHelper(t, session, config, location, nil)
-		ctx             = context.Background()
-		clusterSession  = CreateSessionAndDropAllKeyspaces(t, h.Client)
-		initialRowCount = 100
-		addedRowCount   = 150
-	)
-
-	Print("When: cluster has data")
-	ExecStmt(t, clusterSession, "CREATE KEYSPACE IF NOT EXISTS "+testKeyspace+" WITH replication = {'class': 'NetworkTopologyStrategy', 'dc1': 3, 'dc2': 3}")
-	ExecStmt(t, clusterSession, "CREATE TABLE IF NOT EXISTS "+testKeyspace+".test_table (id int PRIMARY KEY)")
-	for i := 1; i <= initialRowCount; i++ {
-		ExecStmt(t, clusterSession, "INSERT INTO "+testKeyspace+".test_table (id) VALUES "+fmt.Sprintf("(%d)", i))
-	}
-
-	target := backup.Target{
-		Units: []backup.Unit{
-			{
-				Keyspace: testKeyspace,
-				Tables:   []string{"test_table"},
-			},
-			{
-				Keyspace:  "system_schema",
-				AllTables: true,
-			},
-		},
-		DC:        []string{"dc1", "dc2"},
-		Location:  []backupspec.Location{location},
-		Retention: 3,
-	}
-	if err := h.service.InitTarget(ctx, h.ClusterID, &target); err != nil {
-		t.Fatal(err)
-	}
-
-	Print("And: run backup")
-	if err := h.service.Backup(ctx, h.ClusterID, h.TaskID, h.RunID, target); err != nil {
-		t.Fatal(err)
-	}
-
-	Print("Then: there is one backup")
-	items, err := h.service.List(ctx, h.ClusterID, []backupspec.Location{location}, backup.ListFilter{ClusterID: h.ClusterID})
-	if err != nil {
-		t.Fatal(err)
-	}
-	if len(items) != 1 {
-		t.Fatalf("List() = %v, expected one item", items)
-	}
-	item := items[0]
-	if len(item.SnapshotInfo) != 1 {
-		t.Fatalf("List() = %v, expected one SnapshotTag", items)
-	}
-	snapshotTag := item.SnapshotInfo[0].SnapshotTag
-
-	Print("And: add more data")
-	for i := initialRowCount + 1; i <= addedRowCount; i++ {
-		ExecStmt(t, clusterSession, "INSERT INTO "+testKeyspace+".test_table (id) VALUES "+fmt.Sprintf("(%d)", i))
-	}
-
-	Print("Then: there is 15 rows")
-	count := func() int {
-		c := 0
-		if err := clusterSession.Query("SELECT COUNT(*) FROM "+testKeyspace+".test_table;", nil).Scan(&c); err != nil {
-			t.Fatal("select count:", err)
-		}
-		return c
-	}
-	if c := count(); c != addedRowCount {
-		t.Errorf("SELECT COUNT(*) = %d, expected %d", c, addedRowCount)
-	}
-
-	Print("When: delete data")
-	q := clusterSession.Query("TRUNCATE "+testKeyspace+".test_table", nil)
-	q.Consistency(gocql.All)
-	if err := q.ExecRelease(); err != nil {
-		t.Fatal("TRUNCATE error", err)
-	}
-
-	Print("And: restore snapshot")
-	status, err := h.Client.Status(ctx)
-	if err != nil {
-		t.Fatal("Status() error", err)
-	}
-
-	for _, nis := range status {
-		stdout, stderr, err := ExecOnHost(nis.Addr, "chown scylla:scylla -R /var/lib/scylla/data/"+testKeyspace)
-		if err != nil {
-			t.Log("stdout", stdout)
-			t.Log("stderr", stderr)
-			t.Fatal("Command failed on host", nis.Addr, err)
-		}
-	}
-	downloadFilesCmd := []string{
-		"sudo -u scylla",
-		"scylla-manager-agent",
-		"download-files",
-		"-d", "/var/lib/scylla/data",
-		"-L", location.String(),
-		"-T", snapshotTag,
-		"-K", testKeyspace,
-		"--mode", "upload",
-	}
-	for _, nis := range status {
-		stdout, stderr, err := ExecOnHost(nis.Addr, strings.Join(downloadFilesCmd, " "))
-		if err != nil {
-			t.Log("stdout", stdout)
-			t.Log("err", err)
-			t.Log("stderr", stderr)
-			t.Fatal("Command failed on host", nis.Addr, err)
-		}
-	}
-	for _, nis := range status {
-		stdout, stderr, err := ExecOnHost(nis.Addr, "nodetool refresh "+testKeyspace+" test_table")
-		if err != nil {
-			t.Log("stdout", stdout)
-			t.Log("stderr", stderr)
-			t.Fatal("Command failed on host", nis.Addr, err)
-		}
-	}
-
-	Print("Then: there is previous number of rows")
-	if c := count(); c != initialRowCount {
-		t.Errorf("SELECT COUNT(*) = %d, expected %d", c, addedRowCount)
-	}
-}
-
 func TestBackupListIntegration(t *testing.T) {
 	const (
 		testBucket    = "backuptest-list"
diff --git a/pkg/service/healthcheck/service_integration_test.go b/pkg/service/healthcheck/service_integration_test.go
index 894807bbcc..d37e8b992e 100644
--- a/pkg/service/healthcheck/service_integration_test.go
+++ b/pkg/service/healthcheck/service_integration_test.go
@@ -439,9 +439,6 @@ func testStatusIntegration(t *testing.T, clusterID uuid.UUID, clusterSvc cluster
 	})
 
 	t.Run("all nodes REST DOWN", func(t *testing.T) {
-		ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
-		defer cancel()
-
 		for _, h := range ManagedClusterHosts() {
 			BlockREST(t, h)
 		}
@@ -452,6 +449,8 @@ func testStatusIntegration(t *testing.T, clusterID uuid.UUID, clusterSvc cluster
 		}()
 
 		msg := ""
+		ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
+		defer cancel()
 		if _, err := s.Status(ctx, clusterID); err != nil {
 			msg = err.Error()
 		}
diff --git a/pkg/service/repair/service_repair_integration_test.go b/pkg/service/repair/service_repair_integration_test.go
index 4e2daf96a9..036f424de6 100644
--- a/pkg/service/repair/service_repair_integration_test.go
+++ b/pkg/service/repair/service_repair_integration_test.go
@@ -267,7 +267,7 @@ func (h *repairTestHelper) assertParallelIntensity(parallel, intensity int) {
 func (h *repairTestHelper) stopNode(host string) {
 	h.T.Helper()
 
-	_, _, err := ExecOnHost(host, "sudo supervisorctl stop scylla")
+	_, _, err := ExecOnHost(host, "supervisorctl stop scylla")
 	if err != nil {
 		h.T.Fatal(err)
 	}
@@ -276,7 +276,7 @@ func (h *repairTestHelper) stopNode(host string) {
 func (h *repairTestHelper) startNode(host string, ni *scyllaclient.NodeInfo) {
 	h.T.Helper()
 
-	_, _, err := ExecOnHost(host, "sudo supervisorctl start scylla")
+	_, _, err := ExecOnHost(host, "supervisorctl start scylla")
 	if err != nil {
 		h.T.Fatal(err)
 	}
diff --git a/testing/Makefile b/testing/Makefile
index fadbf85582..b2b32a5b00 100644
--- a/testing/Makefile
+++ b/testing/Makefile
@@ -10,7 +10,7 @@ YQ           := ../bin/yq
 CURRENT_UID  := $(shell id -u)
 CURRENT_GID  := $(shell id -g)
 
-SCYLLA_VERSION?=scylla:6.0.1
+SCYLLA_VERSION?=scylla:latest
 IP_FAMILY?=IPV4
 RAFT_SCHEMA?=none
 TABLETS?=enabled
@@ -93,8 +93,7 @@ endif
 	mkdir -p $(MINIO_DATA_DIR)
 
 	@. ./.env && CURRENT_UID=$(CURRENT_UID) CURRENT_GID=$(CURRENT_GID) $(COMPOSE) -f docker-compose.yaml -f $(COMPOSE_FILE) up -d dc1_node_1 second_cluster_dc1_node_1
-	$(COMPOSE) exec -T --privileged dc1_node_1 sudo bash -c 'echo "fs.aio-max-nr = 1048579" > /etc/sysctl.d/50-scylla.conf'
-	$(COMPOSE) exec -T --privileged dc1_node_1 sudo sysctl -p /etc/sysctl.d/50-scylla.conf
+	$(COMPOSE) exec -T --privileged dc1_node_1 su root -c 'echo 1048579 > /proc/sys/fs/aio-max-nr'
 	@echo "==> Waiting for dc1 node1"
 	@cnt=0; until [ 1 -le $$($(NODETOOL) status | grep -c "UN") ]; do \
 		cnt=$$(expr $$cnt + 1); \
@@ -110,8 +109,9 @@ endif
 		echo "==> Waiting node $$node number $$cnt"; \
 		until [ $$cnt -le $$($(NODETOOL) status | grep -c "UN") ]; do echo -n "."; sleep 2; done ; echo ""; done
 
+	@echo "==> Start ssh servers"
 	@for node in dc1_node_1 dc1_node_2 dc1_node_3 dc2_node_1 dc2_node_2 dc2_node_3 second_cluster_dc1_node_1 second_cluster_dc1_node_2; do \
-		$(COMPOSE) exec -T --privileged $$node sudo bash -c 'service ssh start'; done
+		$(COMPOSE) exec -T --privileged $$node su root -c '/usr/sbin/sshd'; done
 
 	@. ./.env && CURRENT_UID=$(CURRENT_UID) CURRENT_GID=$(CURRENT_GID) $(COMPOSE) -f docker-compose.yaml -f $(COMPOSE_FILE) up -d
 	@echo "==> Waiting for the rest of containers"
@@ -168,11 +168,11 @@ deploy-agent: ## Update agent to the latest build on all nodes
 	@./nodes_cp ../scylla-manager-agent.dev /usr/bin/scylla-manager-agent
 	@./nodes_cp $(AGENT_CONFIG) /etc/scylla-manager-agent/scylla-manager-agent.yaml
 ifeq ($(IP_FAMILY), IPV6)
-	@./nodes_cp minio/certs_ipv6/CAs/rootCA.pem /usr/local/share/ca-certificates/rootCA.crt
+	@(./nodes_cp minio/certs_ipv6/CAs/rootCA.pem /usr/local/share/ca-certificates/rootCA.crt) || (./nodes_cp minio/certs_ipv6/CAs/rootCA.pem /etc/pki/ca-trust/source/anchors/rootCA.crt)
 else
-	@./nodes_cp minio/certs_ipv4/CAs/rootCA.pem /usr/local/share/ca-certificates/rootCA.crt
+	@(./nodes_cp minio/certs_ipv4/CAs/rootCA.pem /usr/local/share/ca-certificates/rootCA.crt) || (./nodes_cp minio/certs_ipv4/CAs/rootCA.pem /etc/pki/ca-trust/source/anchors/rootCA.crt)
 endif
-	@./nodes_exec "sudo update-ca-certificates"
+	@(./nodes_exec "sudo update-ca-certificates") || (./nodes_exec "su root -c update-ca-trust")
 
 .PHONY: restart-agent
 restart-agent: ## Restart agent on all nodes
diff --git a/testing/scylla/Dockerfile b/testing/scylla/Dockerfile
index 941823b8bd..124cf08b98 100644
--- a/testing/scylla/Dockerfile
+++ b/testing/scylla/Dockerfile
@@ -3,7 +3,8 @@ ARG SCYLLA_VERSION
 FROM scylladb/${SCYLLA_VERSION}
 
 # Install 3rd party tools
-RUN apt-get update && apt-get install -y iptables less net-tools ssh
+USER root
+RUN (apt-get update && apt-get install -y iptables less net-tools openssh-server) || (microdnf install --refresh -y iptables less net-tools openssh-server)
 
 # Set root password
 RUN echo "root:root" | chpasswd root
@@ -21,7 +22,12 @@ RUN rm /etc/supervisord.conf.d/scylla-housekeeping.conf \
        /etc/supervisord.conf.d/scylla-node-exporter.conf
 
 # Allow SSH as root
-RUN echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
+RUN mkdir /var/run/sshd && chmod 0755 /var/run/sshd && ssh-keygen -A && \
+    echo "PermitRootLogin yes" >> /etc/ssh/sshd_config && \
+    echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config && \
+    echo "PubkeyAuthentication no" >> /etc/ssh/sshd_config && \
+    echo "PermitEmptyPasswords yes" >> /etc/ssh/sshd_config && \
+    rm -rf /etc/ssh/sshd_config.d/*
 
 # Add agent config dir, needed to copy the actual config file into it later
 RUN mkdir /etc/scylla-manager-agent


Reviews:
user: login: VAveryanov8
body: :+1: 
state: APPROVED
author_association: COLLABORATOR
submitted_at: 2025-03-27T10:57:41Z
user: login: karol-kokoszka
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-03-27T11:00:29Z
user: login: Michal-Leszczynski
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-03-27T11:10:13Z
user: login: karol-kokoszka
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-03-27T11:13:50Z
user: login: karol-kokoszka
state: APPROVED
author_association: COLLABORATOR
submitted_at: 2025-03-27T11:14:06Z

Review comments:
diff_hunk: @@ -2120,141 +2119,6 @@ func TestValidateIntegration(t *testing.T) {
 	}
 }
 
-func TestBackupRestoreIntegration(t *testing.T) {
path: pkg/service/backup/service_backup_integration_test.go
user: login: karol-kokoszka
body: @Michal-Leszczynski why this test is removed ?
created_at: 2025-03-27T11:00:29Z
author_association: COLLABORATOR
diff_hunk: @@ -2120,141 +2119,6 @@ func TestValidateIntegration(t *testing.T) {
 	}
 }
 
-func TestBackupRestoreIntegration(t *testing.T) {
path: pkg/service/backup/service_backup_integration_test.go
user: login: Michal-Leszczynski
body: It's described in the commit message.
created_at: 2025-03-27T11:10:13Z
author_association: COLLABORATOR
diff_hunk: @@ -2120,141 +2119,6 @@ func TestValidateIntegration(t *testing.T) {
 	}
 }
 
-func TestBackupRestoreIntegration(t *testing.T) {
path: pkg/service/backup/service_backup_integration_test.go
user: login: karol-kokoszka
body: got it, it's ansible script
created_at: 2025-03-27T11:13:49Z
author_association: COLLABORATOR

PR comments:
user: login: Michal-Leszczynski
created_at: 2025-03-20T11:00:31Z
body: @karol-kokoszka This PR is ready, but we need to wait for https://github.com/scylladb/scylladb/issues/23353 to get fixed before replacing the hand picked Scylla version with `scylla-nightly:latest`.
author_association: COLLABORATOR
user: login: Michal-Leszczynski
created_at: 2025-03-27T08:51:29Z
body: @karol-kokoszka @VAveryanov8 This PR is ready for review!
It would be good to merge it before releasing SM 3.5, as it allows for testing Scylla 2025.1.
author_association: COLLABORATOR