Merge pull request #12498 from rook/mergify/bp/release-1.12/pr-12423
test: add support Ceph Reef v18 with updated integration tests (backport #12423)
This commit is contained in:
7 files changed
+96
-27
No files matched your search
@@ -178,6 +178,42 @@ jobs:
|
||||
name: ceph-smoke-suite-quincy-artifact
|
||||
path: /home/runner/work/rook/rook/tests/integration/_output/tests/
|
||||
|
||||
smoke-suite-reef-devel:
|
||||
if: github.repository == 'rook/rook'
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- name: checkout
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: setup cluster resources
|
||||
uses: ./.github/workflows/integration-test-config-latest-k8s
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
kubernetes-version: "1.25.0"
|
||||
|
||||
- name: TestCephSmokeSuite
|
||||
run: |
|
||||
export DEVICE_FILTER=$(lsblk|awk '/14G/ {print $1}'| head -1)
|
||||
SKIP_CLEANUP_POLICY=false CEPH_SUITE_VERSION="reef-devel" go test -v -timeout 1800s -run TestCephSmokeSuite github.com/rook/rook/tests/integration
|
||||
|
||||
- name: collect common logs
|
||||
if: always()
|
||||
run: |
|
||||
export LOG_DIR="/home/runner/work/rook/rook/tests/integration/_output/tests/"
|
||||
export CLUSTER_NAMESPACE="smoke-ns"
|
||||
export OPERATOR_NAMESPACE="smoke-ns-system"
|
||||
tests/scripts/collect-logs.sh
|
||||
|
||||
- name: Artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
if: failure()
|
||||
with:
|
||||
name: ceph-smoke-suite-reef-artifact
|
||||
path: /home/runner/work/rook/rook/tests/integration/_output/tests/
|
||||
|
||||
|
||||
smoke-suite-ceph-main:
|
||||
if: github.repository == 'rook/rook'
|
||||
runs-on: ubuntu-20.04
|
||||
|
||||
@@ -29,7 +29,7 @@ metadata:
|
||||
spec:
|
||||
dataDirHostPath: /var/lib/rook
|
||||
cephVersion:
|
||||
image: quay.io/ceph/ceph:v17
|
||||
image: quay.io/ceph/ceph:v18
|
||||
allowUnsupported: true
|
||||
mon:
|
||||
count: 1
|
||||
|
||||
@@ -33,16 +33,16 @@ import (
|
||||
func TestDiffImageSpecAndClusterRunningVersion(t *testing.T) {
|
||||
|
||||
// 1st test
|
||||
fakeImageVersion := cephver.Quincy
|
||||
fakeImageVersion := cephver.Reef
|
||||
fakeRunningVersions := []byte(`
|
||||
{
|
||||
"mon": {
|
||||
"ceph version 16.2.5 (cbff874f9007f1869bfd3821b7e33b2a6ffd4988) pacific (stable)": 1,
|
||||
"ceph version 17.2.0 (3a54b2b6d167d4a2a19e003a705696d4fe619afc) quincy (stable)": 2
|
||||
"ceph version 17.2.0 (3a54b2b6d167d4a2a19e003a705696d4fe619afc) quincy (stable)": 1,
|
||||
"ceph version 18.1.0 (4be78cea2b4ae54a27b1049cffa1208df48bffae) reef (stable)": 2
|
||||
}
|
||||
}`)
|
||||
var dummyRunningVersions cephv1.CephDaemonsVersions
|
||||
err := json.Unmarshal([]byte(fakeRunningVersions), &dummyRunningVersions)
|
||||
err := json.Unmarshal(fakeRunningVersions, &dummyRunningVersions)
|
||||
assert.NoError(t, err)
|
||||
|
||||
m, err := diffImageSpecAndClusterRunningVersion(fakeImageVersion, dummyRunningVersions)
|
||||
@@ -53,12 +53,12 @@ func TestDiffImageSpecAndClusterRunningVersion(t *testing.T) {
|
||||
fakeRunningVersions = []byte(`
|
||||
{
|
||||
"overall": {
|
||||
"ceph version 16.2.5 (cbff874f9007f1869bfd3821b7e33b2a6ffd4988) pacific (stable)": 1,
|
||||
"ceph version 17.2.0 (3a54b2b6d167d4a2a19e003a705696d4fe619afc) quincy (stable)": 2
|
||||
"ceph version 17.2.0 (3a54b2b6d167d4a2a19e003a705696d4fe619afc) quincy (stable)": 1,
|
||||
"ceph version 18.1.0 (4be78cea2b4ae54a27b1049cffa1208df48bffae) reef (stable)": 2
|
||||
}
|
||||
}`)
|
||||
var dummyRunningVersions2 cephv1.CephDaemonsVersions
|
||||
err = json.Unmarshal([]byte(fakeRunningVersions), &dummyRunningVersions2)
|
||||
err = json.Unmarshal(fakeRunningVersions, &dummyRunningVersions2)
|
||||
assert.NoError(t, err)
|
||||
|
||||
m, err = diffImageSpecAndClusterRunningVersion(fakeImageVersion, dummyRunningVersions2)
|
||||
@@ -69,11 +69,11 @@ func TestDiffImageSpecAndClusterRunningVersion(t *testing.T) {
|
||||
fakeRunningVersions = []byte(`
|
||||
{
|
||||
"overall": {
|
||||
"ceph version 16.2.0 (3a54b2b6d167d4a2a19e003a705696d4fe619afc) pacific (stable)": 2
|
||||
"ceph version 17.2.0 (3a54b2b6d167d4a2a19e003a705696d4fe619afc) quincy (stable)": 2
|
||||
}
|
||||
}`)
|
||||
var dummyRunningVersions3 cephv1.CephDaemonsVersions
|
||||
err = json.Unmarshal([]byte(fakeRunningVersions), &dummyRunningVersions3)
|
||||
err = json.Unmarshal(fakeRunningVersions, &dummyRunningVersions3)
|
||||
assert.NoError(t, err)
|
||||
|
||||
// Allow the downgrade
|
||||
@@ -86,11 +86,11 @@ func TestDiffImageSpecAndClusterRunningVersion(t *testing.T) {
|
||||
fakeRunningVersions = []byte(`
|
||||
{
|
||||
"overall": {
|
||||
"ceph version 16.2.5 (cbff874f9007f1869bfd3821b7e33b2a6ffd4988) pacific (stable)": 2
|
||||
"ceph version 17.2.0 (3a54b2b6d167d4a2a19e003a705696d4fe619afc) quincy (stable)": 2
|
||||
}
|
||||
}`)
|
||||
var dummyRunningVersions4 cephv1.CephDaemonsVersions
|
||||
err = json.Unmarshal([]byte(fakeRunningVersions), &dummyRunningVersions4)
|
||||
err = json.Unmarshal(fakeRunningVersions, &dummyRunningVersions4)
|
||||
assert.NoError(t, err)
|
||||
|
||||
m, err = diffImageSpecAndClusterRunningVersion(fakeImageVersion, dummyRunningVersions4)
|
||||
@@ -98,16 +98,16 @@ func TestDiffImageSpecAndClusterRunningVersion(t *testing.T) {
|
||||
assert.True(t, m)
|
||||
|
||||
// 5 test - spec version and running cluster versions are identical --> we upgrade
|
||||
fakeImageVersion = cephver.CephVersion{Major: 16, Minor: 2, Extra: 2,
|
||||
fakeImageVersion = cephver.CephVersion{Major: 17, Minor: 2, Extra: 0,
|
||||
CommitID: "3a54b2b6d167d4a2a19e003a705696d4fe619afc"}
|
||||
fakeRunningVersions = []byte(`
|
||||
{
|
||||
"overall": {
|
||||
"ceph version 16.2.2 (3a54b2b6d167d4a2a19e003a705696d4fe619afc) pacific (stable)": 2
|
||||
"ceph version 17.2.0 (3a54b2b6d167d4a2a19e003a705696d4fe619afc) quincy (stable)": 2
|
||||
}
|
||||
}`)
|
||||
var dummyRunningVersions5 cephv1.CephDaemonsVersions
|
||||
err = json.Unmarshal([]byte(fakeRunningVersions), &dummyRunningVersions5)
|
||||
err = json.Unmarshal(fakeRunningVersions, &dummyRunningVersions5)
|
||||
assert.NoError(t, err)
|
||||
|
||||
m, err = diffImageSpecAndClusterRunningVersion(fakeImageVersion, dummyRunningVersions5)
|
||||
@@ -115,16 +115,16 @@ func TestDiffImageSpecAndClusterRunningVersion(t *testing.T) {
|
||||
assert.False(t, m)
|
||||
|
||||
// 6 test - spec version and running cluster have different commit ID
|
||||
fakeImageVersion = cephver.CephVersion{Major: 16, Minor: 2, Extra: 11, Build: 139,
|
||||
CommitID: "5c0dc966af809fd1d429ec7bac48962a746af243"}
|
||||
fakeImageVersion = cephver.CephVersion{Major: 17, Minor: 2, Extra: 0, Build: 139,
|
||||
CommitID: "3a54b2b6d167d4a2a19e003a705696d4fe619afc"}
|
||||
fakeRunningVersions = []byte(`
|
||||
{
|
||||
"overall": {
|
||||
"ceph version 16.2.11-139.el8cp (3a54b2b6d167d4a2a19e003a705696d4fe619afc) pacific (stable)": 2
|
||||
"ceph version 17.2.0 (3a54b2b6d167d4a2a19e003a705696d4fe619afc) quincy (stable)": 2
|
||||
}
|
||||
}`)
|
||||
var dummyRunningVersions6 cephv1.CephDaemonsVersions
|
||||
err = json.Unmarshal([]byte(fakeRunningVersions), &dummyRunningVersions6)
|
||||
err = json.Unmarshal(fakeRunningVersions, &dummyRunningVersions6)
|
||||
assert.NoError(t, err)
|
||||
|
||||
m, err = diffImageSpecAndClusterRunningVersion(fakeImageVersion, dummyRunningVersions6)
|
||||
@@ -132,16 +132,16 @@ func TestDiffImageSpecAndClusterRunningVersion(t *testing.T) {
|
||||
assert.True(t, m)
|
||||
|
||||
// 7 test - spec version and running cluster have same commit ID
|
||||
fakeImageVersion = cephver.CephVersion{Major: 16, Minor: 2, Extra: 11, Build: 139,
|
||||
fakeImageVersion = cephver.CephVersion{Major: 17, Minor: 2, Extra: 0,
|
||||
CommitID: "3a54b2b6d167d4a2a19e003a705696d4fe619afc"}
|
||||
fakeRunningVersions = []byte(`
|
||||
{
|
||||
"overall": {
|
||||
"ceph version 16.2.11-139.el8cp (3a54b2b6d167d4a2a19e003a705696d4fe619afc) pacific (stable)": 2
|
||||
"ceph version 17.2.0 (3a54b2b6d167d4a2a19e003a705696d4fe619afc) quincy (stable)": 2
|
||||
}
|
||||
}`)
|
||||
var dummyRunningVersions7 cephv1.CephDaemonsVersions
|
||||
err = json.Unmarshal([]byte(fakeRunningVersions), &dummyRunningVersions7)
|
||||
err = json.Unmarshal(fakeRunningVersions, &dummyRunningVersions7)
|
||||
assert.NoError(t, err)
|
||||
|
||||
m, err = diffImageSpecAndClusterRunningVersion(fakeImageVersion, dummyRunningVersions7)
|
||||
@@ -165,6 +165,8 @@ func TestMinVersion(t *testing.T) {
|
||||
assert.NoError(t, c.validateCephVersion(v))
|
||||
v = &cephver.CephVersion{Major: 17}
|
||||
assert.NoError(t, c.validateCephVersion(v))
|
||||
v = &cephver.CephVersion{Major: 18}
|
||||
assert.NoError(t, c.validateCephVersion(v))
|
||||
}
|
||||
|
||||
func TestSupportedVersion(t *testing.T) {
|
||||
@@ -183,8 +185,12 @@ func TestSupportedVersion(t *testing.T) {
|
||||
v = &cephver.CephVersion{Major: 17, Minor: 2, Extra: 0}
|
||||
assert.NoError(t, c.validateCephVersion(v))
|
||||
|
||||
// Reef is not supported
|
||||
// Reef is supported
|
||||
v = &cephver.CephVersion{Major: 18, Minor: 2, Extra: 0}
|
||||
assert.NoError(t, c.validateCephVersion(v))
|
||||
|
||||
// Squid is not supported
|
||||
v = &cephver.CephVersion{Major: 19, Minor: 1, Extra: 0}
|
||||
assert.Error(t, c.validateCephVersion(v))
|
||||
|
||||
// Unsupported versions are now valid
|
||||
|
||||
@@ -48,12 +48,14 @@ var (
|
||||
Quincy = CephVersion{17, 0, 0, 0, ""}
|
||||
// Reef Ceph version
|
||||
Reef = CephVersion{18, 0, 0, 0, ""}
|
||||
// Squid ceph version
|
||||
Squid = CephVersion{19, 0, 0, 0, ""}
|
||||
|
||||
// supportedVersions are production-ready versions that rook supports
|
||||
supportedVersions = []CephVersion{Pacific, Quincy}
|
||||
supportedVersions = []CephVersion{Pacific, Quincy, Reef}
|
||||
|
||||
// unsupportedVersions are possibly Ceph pin-point release that introduced breaking changes and not recommended
|
||||
unsupportedVersions = []CephVersion{}
|
||||
unsupportedVersions []CephVersion
|
||||
|
||||
// for parsing the output of `ceph --version`
|
||||
versionPattern = regexp.MustCompile(`ceph version (\d+)\.(\d+)\.(\d+)`)
|
||||
@@ -90,6 +92,8 @@ func (v *CephVersion) ReleaseName() string {
|
||||
return "quincy"
|
||||
case Reef.Major:
|
||||
return "reef"
|
||||
case Squid.Major:
|
||||
return "squid"
|
||||
default:
|
||||
return unknownVersionString
|
||||
}
|
||||
@@ -180,6 +184,11 @@ func (v *CephVersion) IsReef() bool {
|
||||
return v.isRelease(Reef)
|
||||
}
|
||||
|
||||
// IsSquid checks if the Ceph version is Squid
|
||||
func (v *CephVersion) IsSquid() bool {
|
||||
return v.isRelease(Squid)
|
||||
}
|
||||
|
||||
// IsAtLeast checks a given Ceph version is at least a given one
|
||||
func (v *CephVersion) IsAtLeast(other CephVersion) bool {
|
||||
if v.Major > other.Major {
|
||||
|
||||
@@ -101,7 +101,7 @@ func TestSupported(t *testing.T) {
|
||||
for _, v := range supportedVersions {
|
||||
assert.True(t, v.Supported())
|
||||
}
|
||||
assert.False(t, Reef.Supported())
|
||||
assert.False(t, Squid.Supported())
|
||||
}
|
||||
|
||||
func TestIsRelease(t *testing.T) {
|
||||
|
||||
@@ -44,11 +44,14 @@ import (
|
||||
const (
|
||||
// test with the latest pacific build
|
||||
pacificTestImage = "quay.io/ceph/ceph:v16"
|
||||
// test with the latest pacific build
|
||||
// test with the latest quincy build
|
||||
quincyTestImage = "quay.io/ceph/ceph:v17"
|
||||
// test with the latest reef build
|
||||
reefTestImage = "quay.io/ceph/ceph:v18"
|
||||
// test with the current development version of Pacific
|
||||
pacificDevelTestImage = "quay.io/ceph/daemon-base:latest-pacific-devel"
|
||||
quincyDevelTestImage = "quay.io/ceph/daemon-base:latest-quincy-devel"
|
||||
reefDevelTestImage = "quay.io/ceph/daemon-base:latest-reef-devel"
|
||||
// test with the latest Ceph main image
|
||||
mainTestImage = "quay.io/ceph/daemon-base:latest-main-devel"
|
||||
cephOperatorLabel = "app=rook-ceph-operator"
|
||||
@@ -67,6 +70,8 @@ var (
|
||||
PacificDevelVersion = cephv1.CephVersionSpec{Image: pacificDevelTestImage}
|
||||
QuincyVersion = cephv1.CephVersionSpec{Image: quincyTestImage}
|
||||
QuincyDevelVersion = cephv1.CephVersionSpec{Image: quincyDevelTestImage}
|
||||
ReefVersion = cephv1.CephVersionSpec{Image: reefTestImage}
|
||||
ReefDevelVersion = cephv1.CephVersionSpec{Image: reefDevelTestImage}
|
||||
MainVersion = cephv1.CephVersionSpec{Image: mainTestImage, AllowUnsupported: true}
|
||||
volumeReplicationBaseURL = fmt.Sprintf("https://raw.githubusercontent.com/csi-addons/kubernetes-csi-addons/%s/config/crd/bases/", volumeReplicationVersion)
|
||||
volumeReplicationCRDURL = volumeReplicationBaseURL + "replication.storage.openshift.io_volumereplications.yaml"
|
||||
@@ -93,6 +98,8 @@ func ReturnCephVersion() cephv1.CephVersionSpec {
|
||||
return PacificDevelVersion
|
||||
case "quincy-devel":
|
||||
return QuincyDevelVersion
|
||||
case "reef-devel":
|
||||
return ReefDevelVersion
|
||||
default:
|
||||
return QuincyVersion
|
||||
}
|
||||
|
||||
@@ -168,6 +168,17 @@ func (s *UpgradeSuite) testUpgrade(useHelm bool, initialCephVersion v1.CephVersi
|
||||
s.verifyFilesAfterUpgrade(newFile, rbdFilesToRead, cephfsFilesToRead)
|
||||
logger.Infof("Verified upgrade from pacific to quincy")
|
||||
|
||||
//
|
||||
// Upgrade from quincy to reef
|
||||
//
|
||||
logger.Infof("*** UPGRADING CEPH FROM QUINCY TO REEF ***")
|
||||
s.gatherLogs(s.settings.OperatorNamespace, "_before_reef_upgrade")
|
||||
s.upgradeCephVersion(installer.ReefVersion.Image, numOSDs)
|
||||
// Verify reading and writing to the test clients
|
||||
newFile = "post-reef-upgrade-file"
|
||||
s.verifyFilesAfterUpgrade(newFile, rbdFilesToRead, cephfsFilesToRead)
|
||||
logger.Infof("Verified upgrade from quincy to reef")
|
||||
|
||||
checkCephObjectUser(&s.Suite, s.helper, s.k8sh, s.namespace, installer.ObjectStoreName, objectUserID, true, false)
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user