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:
Travis Nielsen authored and GitHub committed 2023-07-17 07:34:12 -06:00
commit cc754e83b7
7 files changed
+96 -27

No files matched your search

+36
View File
@@ -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
+1 -1
View File
@@ -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
+28 -22
View File
@@ -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
+11 -2
View File
@@ -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 {
+1 -1
View File
@@ -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) {
+8 -1
View File
@@ -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
}
+11
View File
@@ -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)
}