forked from rook/rook
ceph: load test crds from files or urls
The integration tests will now read the manifests from the same source that is used in the examples for installation. No longer is there a need for a copy of the CRDs in the integration test code. The tests will read the manifests directly from disk under a path relative to the rook root. The upgrade test will read the manifests from a github url where the base version has been published. Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
This commit is contained in:
Vendored
+1
-1
@@ -150,7 +150,7 @@ pipeline {
|
||||
}
|
||||
steps {
|
||||
sh 'cat _output/version | xargs tests/scripts/makeTestImages.sh save amd64'
|
||||
stash name: 'repo-amd64',includes: 'ceph-amd64.tar,cassandra-amd64.tar,nfs-amd64.tar,build/common.sh,_output/tests/linux_amd64/,_output/charts/,tests/scripts/,cluster/charts/'
|
||||
stash name: 'repo-amd64',includes: 'ceph-amd64.tar,cassandra-amd64.tar,nfs-amd64.tar,build/common.sh,_output/tests/linux_amd64/,_output/charts/,tests/scripts/,cluster/'
|
||||
script {
|
||||
def data = [
|
||||
"aws_1.15.x": "v1.15.12",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -17,9 +17,13 @@ limitations under the License.
|
||||
package installer
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
"github.com/rook/rook/tests/framework/utils"
|
||||
)
|
||||
|
||||
@@ -33,700 +37,28 @@ type CephManifestsV1_5 struct {
|
||||
imageTag string
|
||||
}
|
||||
|
||||
func readManifestFromGithub(filename string) string {
|
||||
url := fmt.Sprintf("https://raw.githubusercontent.com/rook/rook/%s/cluster/examples/kubernetes/ceph/%s", Version1_5, filename)
|
||||
logger.Infof("Retrieving manifest: %s", url)
|
||||
// nolint:gosec G107 This is only test code and is expected to read from a url
|
||||
response, err := http.Get(url)
|
||||
if err != nil {
|
||||
panic(errors.Wrapf(err, "failed to read manifest from %s", url))
|
||||
}
|
||||
defer response.Body.Close()
|
||||
|
||||
content, err := ioutil.ReadAll(response.Body)
|
||||
if err != nil {
|
||||
panic(errors.Wrapf(err, "failed to read content from %s", url))
|
||||
}
|
||||
return string(content)
|
||||
}
|
||||
|
||||
func (m *CephManifestsV1_5) GetRookCRDs(v1ExtensionsSupported bool) string {
|
||||
return `
|
||||
apiVersion: apiextensions.k8s.io/v1beta1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
name: cephclusters.ceph.rook.io
|
||||
spec:
|
||||
group: ceph.rook.io
|
||||
names:
|
||||
kind: CephCluster
|
||||
listKind: CephClusterList
|
||||
plural: cephclusters
|
||||
singular: cephcluster
|
||||
scope: Namespaced
|
||||
version: v1
|
||||
validation:
|
||||
openAPIV3Schema:
|
||||
properties:
|
||||
spec:
|
||||
properties:
|
||||
annotations: {}
|
||||
cephVersion:
|
||||
properties:
|
||||
allowUnsupported:
|
||||
type: boolean
|
||||
image:
|
||||
type: string
|
||||
dashboard:
|
||||
properties:
|
||||
enabled:
|
||||
type: boolean
|
||||
urlPrefix:
|
||||
type: string
|
||||
port:
|
||||
type: integer
|
||||
minimum: 0
|
||||
maximum: 65535
|
||||
ssl:
|
||||
type: boolean
|
||||
dataDirHostPath:
|
||||
pattern: ^/(\S+)
|
||||
type: string
|
||||
disruptionManagement:
|
||||
properties:
|
||||
machineDisruptionBudgetNamespace:
|
||||
type: string
|
||||
managePodBudgets:
|
||||
type: boolean
|
||||
osdMaintenanceTimeout:
|
||||
type: integer
|
||||
manageMachineDisruptionBudgets:
|
||||
type: boolean
|
||||
skipUpgradeChecks:
|
||||
type: boolean
|
||||
mon:
|
||||
properties:
|
||||
allowMultiplePerNode:
|
||||
type: boolean
|
||||
count:
|
||||
maximum: 9
|
||||
minimum: 0
|
||||
type: integer
|
||||
volumeClaimTemplate: {}
|
||||
mgr:
|
||||
properties:
|
||||
modules:
|
||||
items:
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
enabled:
|
||||
type: boolean
|
||||
network:
|
||||
properties:
|
||||
hostNetwork:
|
||||
type: boolean
|
||||
provider:
|
||||
type: string
|
||||
selectors: {}
|
||||
storage:
|
||||
properties:
|
||||
disruptionManagement:
|
||||
properties:
|
||||
machineDisruptionBudgetNamespace:
|
||||
type: string
|
||||
managePodBudgets:
|
||||
type: boolean
|
||||
osdMaintenanceTimeout:
|
||||
type: integer
|
||||
manageMachineDisruptionBudgets:
|
||||
type: boolean
|
||||
useAllNodes:
|
||||
type: boolean
|
||||
nodes:
|
||||
items:
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
config:
|
||||
properties:
|
||||
metadataDevice:
|
||||
type: string
|
||||
storeType:
|
||||
type: string
|
||||
pattern: ^(bluestore)$
|
||||
databaseSizeMB:
|
||||
type: string
|
||||
walSizeMB:
|
||||
type: string
|
||||
journalSizeMB:
|
||||
type: string
|
||||
osdsPerDevice:
|
||||
type: string
|
||||
encryptedDevice:
|
||||
type: string
|
||||
pattern: ^(true|false)$
|
||||
useAllDevices:
|
||||
type: boolean
|
||||
deviceFilter: {}
|
||||
devices:
|
||||
type: array
|
||||
items:
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
config: {}
|
||||
resources: {}
|
||||
type: array
|
||||
useAllDevices:
|
||||
type: boolean
|
||||
deviceFilter: {}
|
||||
config: {}
|
||||
storageClassDeviceSets: {}
|
||||
driveGroups:
|
||||
type: array
|
||||
items:
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
spec: {}
|
||||
placement: {}
|
||||
required:
|
||||
- name
|
||||
- spec
|
||||
monitoring:
|
||||
properties:
|
||||
enabled:
|
||||
type: boolean
|
||||
rulesNamespace:
|
||||
type: string
|
||||
rbdMirroring:
|
||||
properties:
|
||||
workers:
|
||||
type: integer
|
||||
removeOSDsIfOutAndSafeToRemove:
|
||||
type: boolean
|
||||
external:
|
||||
properties:
|
||||
enable:
|
||||
type: boolean
|
||||
cleanupPolicy:
|
||||
properties:
|
||||
confirmation:
|
||||
type: string
|
||||
pattern: ^$|^yes-really-destroy-data$
|
||||
sanitizeDisks:
|
||||
properties:
|
||||
method:
|
||||
type: string
|
||||
pattern: ^(complete|quick)$
|
||||
dataSource:
|
||||
type: string
|
||||
pattern: ^(zero|random)$
|
||||
iteration:
|
||||
type: integer
|
||||
format: int32
|
||||
placement: {}
|
||||
resources: {}
|
||||
additionalPrinterColumns:
|
||||
- name: DataDirHostPath
|
||||
type: string
|
||||
description: Directory used on the K8s nodes
|
||||
JSONPath: .spec.dataDirHostPath
|
||||
- name: MonCount
|
||||
type: string
|
||||
description: Number of MONs
|
||||
JSONPath: .spec.mon.count
|
||||
- name: Age
|
||||
type: date
|
||||
JSONPath: .metadata.creationTimestamp
|
||||
- name: State
|
||||
type: string
|
||||
description: Current State
|
||||
JSONPath: .status.state
|
||||
- name: Health
|
||||
type: string
|
||||
description: Ceph Health
|
||||
JSONPath: .status.ceph.health
|
||||
subresources:
|
||||
status: {}
|
||||
---
|
||||
apiVersion: apiextensions.k8s.io/v1beta1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
name: cephfilesystems.ceph.rook.io
|
||||
spec:
|
||||
group: ceph.rook.io
|
||||
names:
|
||||
kind: CephFilesystem
|
||||
listKind: CephFilesystemList
|
||||
plural: cephfilesystems
|
||||
singular: cephfilesystem
|
||||
scope: Namespaced
|
||||
version: v1
|
||||
validation:
|
||||
openAPIV3Schema:
|
||||
properties:
|
||||
spec:
|
||||
properties:
|
||||
metadataServer:
|
||||
properties:
|
||||
activeCount:
|
||||
minimum: 1
|
||||
maximum: 10
|
||||
type: integer
|
||||
activeStandby:
|
||||
type: boolean
|
||||
annotations: {}
|
||||
placement: {}
|
||||
resources: {}
|
||||
metadataPool:
|
||||
properties:
|
||||
failureDomain:
|
||||
type: string
|
||||
crushRoot:
|
||||
type: string
|
||||
replicated:
|
||||
properties:
|
||||
size:
|
||||
minimum: 0
|
||||
maximum: 10
|
||||
type: integer
|
||||
requireSafeReplicaSize:
|
||||
type: boolean
|
||||
erasureCoded:
|
||||
properties:
|
||||
dataChunks:
|
||||
minimum: 0
|
||||
maximum: 10
|
||||
type: integer
|
||||
codingChunks:
|
||||
minimum: 0
|
||||
maximum: 10
|
||||
type: integer
|
||||
compressionMode:
|
||||
type: string
|
||||
enum:
|
||||
- ""
|
||||
- none
|
||||
- passive
|
||||
- aggressive
|
||||
- force
|
||||
dataPools:
|
||||
type: array
|
||||
items:
|
||||
properties:
|
||||
failureDomain:
|
||||
type: string
|
||||
crushRoot:
|
||||
type: string
|
||||
replicated:
|
||||
properties:
|
||||
size:
|
||||
minimum: 0
|
||||
maximum: 10
|
||||
type: integer
|
||||
requireSafeReplicaSize:
|
||||
type: boolean
|
||||
erasureCoded:
|
||||
properties:
|
||||
dataChunks:
|
||||
minimum: 0
|
||||
maximum: 10
|
||||
type: integer
|
||||
codingChunks:
|
||||
minimum: 0
|
||||
maximum: 10
|
||||
type: integer
|
||||
compressionMode:
|
||||
type: string
|
||||
enum:
|
||||
- ""
|
||||
- none
|
||||
- passive
|
||||
- aggressive
|
||||
- force
|
||||
parameters:
|
||||
type: object
|
||||
preservePoolsOnDelete:
|
||||
type: boolean
|
||||
additionalPrinterColumns:
|
||||
- name: ActiveMDS
|
||||
type: string
|
||||
description: Number of desired active MDS daemons
|
||||
JSONPath: .spec.metadataServer.activeCount
|
||||
- name: Age
|
||||
type: date
|
||||
JSONPath: .metadata.creationTimestamp
|
||||
subresources:
|
||||
status: {}
|
||||
---
|
||||
apiVersion: apiextensions.k8s.io/v1beta1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
name: cephnfses.ceph.rook.io
|
||||
spec:
|
||||
group: ceph.rook.io
|
||||
names:
|
||||
kind: CephNFS
|
||||
listKind: CephNFSList
|
||||
plural: cephnfses
|
||||
singular: cephnfs
|
||||
shortNames:
|
||||
- nfs
|
||||
scope: Namespaced
|
||||
version: v1
|
||||
validation:
|
||||
openAPIV3Schema:
|
||||
properties:
|
||||
spec:
|
||||
properties:
|
||||
rados:
|
||||
properties:
|
||||
pool:
|
||||
type: string
|
||||
namespace:
|
||||
type: string
|
||||
server:
|
||||
properties:
|
||||
active:
|
||||
type: integer
|
||||
annotations: {}
|
||||
placement: {}
|
||||
resources: {}
|
||||
subresources:
|
||||
status: {}
|
||||
---
|
||||
apiVersion: apiextensions.k8s.io/v1beta1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
name: cephobjectstores.ceph.rook.io
|
||||
spec:
|
||||
group: ceph.rook.io
|
||||
names:
|
||||
kind: CephObjectStore
|
||||
listKind: CephObjectStoreList
|
||||
plural: cephobjectstores
|
||||
singular: cephobjectstore
|
||||
scope: Namespaced
|
||||
version: v1
|
||||
validation:
|
||||
openAPIV3Schema:
|
||||
properties:
|
||||
spec:
|
||||
properties:
|
||||
gateway:
|
||||
properties:
|
||||
type:
|
||||
type: string
|
||||
sslCertificateRef: {}
|
||||
port:
|
||||
type: integer
|
||||
minimum: 1
|
||||
maximum: 65535
|
||||
securePort: {}
|
||||
instances:
|
||||
type: integer
|
||||
annotations: {}
|
||||
placement: {}
|
||||
resources: {}
|
||||
metadataPool:
|
||||
properties:
|
||||
failureDomain:
|
||||
type: string
|
||||
crushRoot:
|
||||
type: string
|
||||
replicated:
|
||||
properties:
|
||||
size:
|
||||
type: integer
|
||||
requireSafeReplicaSize:
|
||||
type: boolean
|
||||
erasureCoded:
|
||||
properties:
|
||||
dataChunks:
|
||||
type: integer
|
||||
codingChunks:
|
||||
type: integer
|
||||
compressionMode:
|
||||
type: string
|
||||
enum:
|
||||
- ""
|
||||
- none
|
||||
- passive
|
||||
- aggressive
|
||||
- force
|
||||
parameters:
|
||||
type: object
|
||||
dataPool:
|
||||
properties:
|
||||
failureDomain:
|
||||
type: string
|
||||
crushRoot:
|
||||
type: string
|
||||
replicated:
|
||||
properties:
|
||||
size:
|
||||
type: integer
|
||||
requireSafeReplicaSize:
|
||||
type: boolean
|
||||
erasureCoded:
|
||||
properties:
|
||||
dataChunks:
|
||||
type: integer
|
||||
codingChunks:
|
||||
type: integer
|
||||
compressionMode:
|
||||
type: string
|
||||
enum:
|
||||
- ""
|
||||
- none
|
||||
- passive
|
||||
- aggressive
|
||||
- force
|
||||
parameters:
|
||||
type: object
|
||||
preservePoolsOnDelete:
|
||||
type: boolean
|
||||
healthCheck:
|
||||
properties:
|
||||
bucket:
|
||||
properties:
|
||||
enabled:
|
||||
type: boolean
|
||||
interval:
|
||||
type: string
|
||||
subresources:
|
||||
subresources:
|
||||
status: {}
|
||||
---
|
||||
apiVersion: apiextensions.k8s.io/v1beta1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
name: cephobjectstoreusers.ceph.rook.io
|
||||
spec:
|
||||
group: ceph.rook.io
|
||||
names:
|
||||
kind: CephObjectStoreUser
|
||||
listKind: CephObjectStoreUserList
|
||||
plural: cephobjectstoreusers
|
||||
singular: cephobjectstoreuser
|
||||
shortNames:
|
||||
- rcou
|
||||
- objectuser
|
||||
scope: Namespaced
|
||||
version: v1
|
||||
subresources:
|
||||
status: {}
|
||||
---
|
||||
apiVersion: apiextensions.k8s.io/v1beta1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
name: cephobjectrealms.ceph.rook.io
|
||||
spec:
|
||||
group: ceph.rook.io
|
||||
names:
|
||||
kind: CephObjectRealm
|
||||
listKind: CephObjectRealmList
|
||||
plural: cephobjectrealms
|
||||
singular: cephobjectrealm
|
||||
shortNames:
|
||||
- realm
|
||||
- realms
|
||||
scope: Namespaced
|
||||
version: v1
|
||||
---
|
||||
apiVersion: apiextensions.k8s.io/v1beta1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
name: cephobjectzonegroups.ceph.rook.io
|
||||
spec:
|
||||
group: ceph.rook.io
|
||||
names:
|
||||
kind: CephObjectZoneGroup
|
||||
listKind: CephObjectZoneGroupList
|
||||
plural: cephobjectzonegroups
|
||||
singular: cephobjectzonegroup
|
||||
shortNames:
|
||||
- zonegroup
|
||||
- zonegroups
|
||||
scope: Namespaced
|
||||
version: v1
|
||||
---
|
||||
apiVersion: apiextensions.k8s.io/v1beta1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
name: cephobjectzones.ceph.rook.io
|
||||
spec:
|
||||
group: ceph.rook.io
|
||||
names:
|
||||
kind: CephObjectZone
|
||||
listKind: CephObjectZoneList
|
||||
plural: cephobjectzones
|
||||
singular: cephobjectzone
|
||||
shortNames:
|
||||
- zone
|
||||
- zones
|
||||
scope: Namespaced
|
||||
version: v1
|
||||
---
|
||||
apiVersion: apiextensions.k8s.io/v1beta1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
name: cephblockpools.ceph.rook.io
|
||||
spec:
|
||||
group: ceph.rook.io
|
||||
names:
|
||||
kind: CephBlockPool
|
||||
listKind: CephBlockPoolList
|
||||
plural: cephblockpools
|
||||
singular: cephblockpool
|
||||
scope: Namespaced
|
||||
version: v1
|
||||
validation:
|
||||
openAPIV3Schema:
|
||||
properties:
|
||||
spec:
|
||||
properties:
|
||||
failureDomain:
|
||||
type: string
|
||||
crushRoot:
|
||||
type: string
|
||||
replicated:
|
||||
properties:
|
||||
size:
|
||||
type: integer
|
||||
minimum: 0
|
||||
maximum: 9
|
||||
targetSizeRatio:
|
||||
type: number
|
||||
requireSafeReplicaSize:
|
||||
type: boolean
|
||||
erasureCoded:
|
||||
properties:
|
||||
dataChunks:
|
||||
type: integer
|
||||
minimum: 0
|
||||
maximum: 9
|
||||
codingChunks:
|
||||
type: integer
|
||||
minimum: 0
|
||||
maximum: 9
|
||||
compressionMode:
|
||||
type: string
|
||||
enum:
|
||||
- ""
|
||||
- none
|
||||
- passive
|
||||
- aggressive
|
||||
- force
|
||||
enableRBDStats:
|
||||
description: EnableRBDStats is used to enable gathering of statistics
|
||||
for all RBD images in the pool
|
||||
type: boolean
|
||||
parameters:
|
||||
type: object
|
||||
subresources:
|
||||
status: {}
|
||||
---
|
||||
apiVersion: apiextensions.k8s.io/v1beta1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
name: volumes.rook.io
|
||||
spec:
|
||||
group: rook.io
|
||||
names:
|
||||
kind: Volume
|
||||
listKind: VolumeList
|
||||
plural: volumes
|
||||
singular: volume
|
||||
shortNames:
|
||||
- rv
|
||||
scope: Namespaced
|
||||
version: v1alpha2
|
||||
subresources:
|
||||
status: {}
|
||||
---
|
||||
apiVersion: apiextensions.k8s.io/v1beta1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
name: objectbuckets.objectbucket.io
|
||||
spec:
|
||||
group: objectbucket.io
|
||||
versions:
|
||||
- name: v1alpha1
|
||||
served: true
|
||||
storage: true
|
||||
names:
|
||||
kind: ObjectBucket
|
||||
listKind: ObjectBucketList
|
||||
plural: objectbuckets
|
||||
singular: objectbucket
|
||||
shortNames:
|
||||
- ob
|
||||
- obs
|
||||
scope: Cluster
|
||||
subresources:
|
||||
status: {}
|
||||
---
|
||||
apiVersion: apiextensions.k8s.io/v1beta1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
name: objectbucketclaims.objectbucket.io
|
||||
spec:
|
||||
versions:
|
||||
- name: v1alpha1
|
||||
served: true
|
||||
storage: true
|
||||
group: objectbucket.io
|
||||
names:
|
||||
kind: ObjectBucketClaim
|
||||
listKind: ObjectBucketClaimList
|
||||
plural: objectbucketclaims
|
||||
singular: objectbucketclaim
|
||||
shortNames:
|
||||
- obc
|
||||
- obcs
|
||||
scope: Namespaced
|
||||
subresources:
|
||||
status: {}
|
||||
---
|
||||
apiVersion: apiextensions.k8s.io/v1beta1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
name: cephclients.ceph.rook.io
|
||||
spec:
|
||||
group: ceph.rook.io
|
||||
names:
|
||||
kind: CephClient
|
||||
listKind: CephClientList
|
||||
plural: cephclients
|
||||
singular: cephclient
|
||||
scope: Namespaced
|
||||
version: v1
|
||||
validation:
|
||||
openAPIV3Schema:
|
||||
properties:
|
||||
spec:
|
||||
properties:
|
||||
caps:
|
||||
properties:
|
||||
mon:
|
||||
type: string
|
||||
osd:
|
||||
type: string
|
||||
mds:
|
||||
type: string
|
||||
subresources:
|
||||
status: {}
|
||||
---
|
||||
apiVersion: apiextensions.k8s.io/v1beta1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
name: cephrbdmirrors.ceph.rook.io
|
||||
spec:
|
||||
group: ceph.rook.io
|
||||
names:
|
||||
kind: CephRBDMirror
|
||||
listKind: CephRBDMirrorList
|
||||
plural: cephrbdmirrors
|
||||
singular: cephrbdmirror
|
||||
scope: Namespaced
|
||||
version: v1
|
||||
validation:
|
||||
openAPIV3Schema:
|
||||
properties:
|
||||
spec:
|
||||
properties:
|
||||
count:
|
||||
type: integer
|
||||
minimum: 1
|
||||
maximum: 100
|
||||
subresources:
|
||||
status: {}`
|
||||
if v1ExtensionsSupported {
|
||||
return readManifestFromGithub("crds.yaml")
|
||||
}
|
||||
return readManifestFromGithub("pre-k8s-1.16/crds.yaml")
|
||||
}
|
||||
|
||||
// GetRookOperator returns rook Operator manifest
|
||||
|
||||
Reference in New Issue
Block a user