mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-12-22 04:50:23 +00:00
deploy: API for CSI Config Struct
This commit exposes CSI ConfigMap over an API. This will allow projects like Rook to consume CSI configMap directly from Ceph-CSI. Signed-off-by: Praveen M <m.praveen@ibm.com>
This commit is contained in:
parent
7e262515a8
commit
878eef803e
@ -22,6 +22,7 @@ import (
|
||||
"fmt"
|
||||
"text/template"
|
||||
|
||||
"github.com/ceph/ceph-csi/api/deploy/kubernetes"
|
||||
"github.com/ghodss/yaml"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
)
|
||||
@ -30,11 +31,13 @@ import (
|
||||
var csiConfigMap string
|
||||
|
||||
type CSIConfigMapValues struct {
|
||||
Name string
|
||||
Name string
|
||||
ClusterInfo []kubernetes.ClusterInfo
|
||||
}
|
||||
|
||||
var CSIConfigMapDefaults = CSIConfigMapValues{
|
||||
Name: "ceph-csi-config",
|
||||
Name: "ceph-csi-config",
|
||||
ClusterInfo: []kubernetes.ClusterInfo{},
|
||||
}
|
||||
|
||||
// NewCSIConfigMap takes a name from the CSIConfigMapValues struct and relaces
|
||||
|
@ -5,4 +5,4 @@ metadata:
|
||||
name: "{{ .Name }}"
|
||||
data:
|
||||
config.json: |-
|
||||
[]
|
||||
{{ .ClusterInfo }}
|
||||
|
@ -7,3 +7,4 @@ spec:
|
||||
attachRequired: false
|
||||
podInfoOnMount: false
|
||||
fsGroupPolicy: File
|
||||
seLinuxMount: true
|
||||
|
59
api/deploy/kubernetes/csi-config-map.go
Normal file
59
api/deploy/kubernetes/csi-config-map.go
Normal file
@ -0,0 +1,59 @@
|
||||
/*
|
||||
Copyright 2023 The Ceph-CSI Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package kubernetes
|
||||
|
||||
type ClusterInfo struct {
|
||||
// ClusterID is used for unique identification
|
||||
ClusterID string
|
||||
// Monitors is monitor list for corresponding cluster ID
|
||||
Monitors []string
|
||||
// CephFS contains CephFS specific options
|
||||
CephFS CephFS
|
||||
// RBD Contains RBD specific options
|
||||
RBD RBD
|
||||
// NFS contains NFS specific options
|
||||
NFS NFS
|
||||
// Read affinity map options
|
||||
ReadAffinity ReadAffinity
|
||||
}
|
||||
|
||||
type CephFS struct {
|
||||
// symlink filepath for the network namespace where we need to execute commands.
|
||||
NetNamespaceFilePath string
|
||||
// SubvolumeGroup contains the name of the SubvolumeGroup for CSI volumes
|
||||
SubvolumeGroup string
|
||||
// KernelMountOptions contains the kernel mount options for CephFS volumes
|
||||
KernelMountOptions string
|
||||
// FuseMountOptions contains the fuse mount options for CephFS volumes
|
||||
FuseMountOptions string
|
||||
}
|
||||
type RBD struct {
|
||||
// symlink filepath for the network namespace where we need to execute commands.
|
||||
NetNamespaceFilePath string
|
||||
// RadosNamespace is a rados namespace in the pool
|
||||
RadosNamespace string
|
||||
}
|
||||
|
||||
type NFS struct {
|
||||
// symlink filepath for the network namespace where we need to execute commands.
|
||||
NetNamespaceFilePath string
|
||||
}
|
||||
|
||||
type ReadAffinity struct {
|
||||
Enabled bool
|
||||
CrushLocationLabels []string
|
||||
}
|
@ -22,6 +22,7 @@ import (
|
||||
"fmt"
|
||||
"text/template"
|
||||
|
||||
"github.com/ceph/ceph-csi/api/deploy/kubernetes"
|
||||
"github.com/ghodss/yaml"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
)
|
||||
@ -30,11 +31,13 @@ import (
|
||||
var csiConfigMap string
|
||||
|
||||
type CSIConfigMapValues struct {
|
||||
Name string
|
||||
Name string
|
||||
ClusterInfo []kubernetes.ClusterInfo
|
||||
}
|
||||
|
||||
var CSIConfigMapDefaults = CSIConfigMapValues{
|
||||
Name: "ceph-csi-config",
|
||||
Name: "ceph-csi-config",
|
||||
ClusterInfo: []kubernetes.ClusterInfo{},
|
||||
}
|
||||
|
||||
// NewCSIConfigMap takes a name from the CSIConfigMapValues struct and relaces
|
||||
|
@ -5,4 +5,4 @@ metadata:
|
||||
name: "{{ .Name }}"
|
||||
data:
|
||||
config.json: |-
|
||||
[]
|
||||
{{ .ClusterInfo }}
|
||||
|
@ -6,5 +6,6 @@ metadata:
|
||||
spec:
|
||||
attachRequired: false
|
||||
fsGroupPolicy: File
|
||||
seLinuxMount: true
|
||||
volumeLifecycleModes:
|
||||
- Persistent
|
||||
|
@ -22,6 +22,7 @@ import (
|
||||
"fmt"
|
||||
"text/template"
|
||||
|
||||
"github.com/ceph/ceph-csi/api/deploy/kubernetes"
|
||||
"github.com/ghodss/yaml"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
)
|
||||
@ -30,11 +31,13 @@ import (
|
||||
var csiConfigMap string
|
||||
|
||||
type CSIConfigMapValues struct {
|
||||
Name string
|
||||
Name string
|
||||
ClusterInfo []kubernetes.ClusterInfo
|
||||
}
|
||||
|
||||
var CSIConfigMapDefaults = CSIConfigMapValues{
|
||||
Name: "ceph-csi-config",
|
||||
Name: "ceph-csi-config",
|
||||
ClusterInfo: []kubernetes.ClusterInfo{},
|
||||
}
|
||||
|
||||
// NewCSIConfigMap takes a name from the CSIConfigMapValues struct and relaces
|
||||
|
@ -5,4 +5,4 @@ metadata:
|
||||
name: "{{ .Name }}"
|
||||
data:
|
||||
config.json: |-
|
||||
[]
|
||||
{{ .ClusterInfo }}
|
||||
|
@ -6,4 +6,5 @@ metadata:
|
||||
spec:
|
||||
attachRequired: true
|
||||
podInfoOnMount: false
|
||||
seLinuxMount: true
|
||||
fsGroupPolicy: File
|
||||
|
7
vendor/github.com/ceph/ceph-csi/api/deploy/kubernetes/cephfs/csi-config-map.go
generated
vendored
7
vendor/github.com/ceph/ceph-csi/api/deploy/kubernetes/cephfs/csi-config-map.go
generated
vendored
@ -22,6 +22,7 @@ import (
|
||||
"fmt"
|
||||
"text/template"
|
||||
|
||||
"github.com/ceph/ceph-csi/api/deploy/kubernetes"
|
||||
"github.com/ghodss/yaml"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
)
|
||||
@ -30,11 +31,13 @@ import (
|
||||
var csiConfigMap string
|
||||
|
||||
type CSIConfigMapValues struct {
|
||||
Name string
|
||||
Name string
|
||||
ClusterInfo []kubernetes.ClusterInfo
|
||||
}
|
||||
|
||||
var CSIConfigMapDefaults = CSIConfigMapValues{
|
||||
Name: "ceph-csi-config",
|
||||
Name: "ceph-csi-config",
|
||||
ClusterInfo: []kubernetes.ClusterInfo{},
|
||||
}
|
||||
|
||||
// NewCSIConfigMap takes a name from the CSIConfigMapValues struct and relaces
|
||||
|
2
vendor/github.com/ceph/ceph-csi/api/deploy/kubernetes/cephfs/csi-config-map.yaml
generated
vendored
2
vendor/github.com/ceph/ceph-csi/api/deploy/kubernetes/cephfs/csi-config-map.yaml
generated
vendored
@ -5,4 +5,4 @@ metadata:
|
||||
name: "{{ .Name }}"
|
||||
data:
|
||||
config.json: |-
|
||||
[]
|
||||
{{ .ClusterInfo }}
|
||||
|
1
vendor/github.com/ceph/ceph-csi/api/deploy/kubernetes/cephfs/csidriver.yaml
generated
vendored
1
vendor/github.com/ceph/ceph-csi/api/deploy/kubernetes/cephfs/csidriver.yaml
generated
vendored
@ -7,3 +7,4 @@ spec:
|
||||
attachRequired: false
|
||||
podInfoOnMount: false
|
||||
fsGroupPolicy: File
|
||||
seLinuxMount: true
|
||||
|
59
vendor/github.com/ceph/ceph-csi/api/deploy/kubernetes/csi-config-map.go
generated
vendored
Normal file
59
vendor/github.com/ceph/ceph-csi/api/deploy/kubernetes/csi-config-map.go
generated
vendored
Normal file
@ -0,0 +1,59 @@
|
||||
/*
|
||||
Copyright 2023 The Ceph-CSI Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package kubernetes
|
||||
|
||||
type ClusterInfo struct {
|
||||
// ClusterID is used for unique identification
|
||||
ClusterID string
|
||||
// Monitors is monitor list for corresponding cluster ID
|
||||
Monitors []string
|
||||
// CephFS contains CephFS specific options
|
||||
CephFS CephFS
|
||||
// RBD Contains RBD specific options
|
||||
RBD RBD
|
||||
// NFS contains NFS specific options
|
||||
NFS NFS
|
||||
// Read affinity map options
|
||||
ReadAffinity ReadAffinity
|
||||
}
|
||||
|
||||
type CephFS struct {
|
||||
// symlink filepath for the network namespace where we need to execute commands.
|
||||
NetNamespaceFilePath string
|
||||
// SubvolumeGroup contains the name of the SubvolumeGroup for CSI volumes
|
||||
SubvolumeGroup string
|
||||
// KernelMountOptions contains the kernel mount options for CephFS volumes
|
||||
KernelMountOptions string
|
||||
// FuseMountOptions contains the fuse mount options for CephFS volumes
|
||||
FuseMountOptions string
|
||||
}
|
||||
type RBD struct {
|
||||
// symlink filepath for the network namespace where we need to execute commands.
|
||||
NetNamespaceFilePath string
|
||||
// RadosNamespace is a rados namespace in the pool
|
||||
RadosNamespace string
|
||||
}
|
||||
|
||||
type NFS struct {
|
||||
// symlink filepath for the network namespace where we need to execute commands.
|
||||
NetNamespaceFilePath string
|
||||
}
|
||||
|
||||
type ReadAffinity struct {
|
||||
Enabled bool
|
||||
CrushLocationLabels []string
|
||||
}
|
20
vendor/github.com/ceph/ceph-csi/api/deploy/kubernetes/doc.go
generated
vendored
Normal file
20
vendor/github.com/ceph/ceph-csi/api/deploy/kubernetes/doc.go
generated
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
/*
|
||||
Copyright 2021 The Ceph-CSI Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// Package kubernetes contains functions to obtain standard and recommended
|
||||
// deployment artifacts for Kubernetes. These artifacts can be used by
|
||||
// automation tools that want to deploy Ceph-CSI.
|
||||
package kubernetes
|
7
vendor/github.com/ceph/ceph-csi/api/deploy/kubernetes/nfs/csi-config-map.go
generated
vendored
7
vendor/github.com/ceph/ceph-csi/api/deploy/kubernetes/nfs/csi-config-map.go
generated
vendored
@ -22,6 +22,7 @@ import (
|
||||
"fmt"
|
||||
"text/template"
|
||||
|
||||
"github.com/ceph/ceph-csi/api/deploy/kubernetes"
|
||||
"github.com/ghodss/yaml"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
)
|
||||
@ -30,11 +31,13 @@ import (
|
||||
var csiConfigMap string
|
||||
|
||||
type CSIConfigMapValues struct {
|
||||
Name string
|
||||
Name string
|
||||
ClusterInfo []kubernetes.ClusterInfo
|
||||
}
|
||||
|
||||
var CSIConfigMapDefaults = CSIConfigMapValues{
|
||||
Name: "ceph-csi-config",
|
||||
Name: "ceph-csi-config",
|
||||
ClusterInfo: []kubernetes.ClusterInfo{},
|
||||
}
|
||||
|
||||
// NewCSIConfigMap takes a name from the CSIConfigMapValues struct and relaces
|
||||
|
2
vendor/github.com/ceph/ceph-csi/api/deploy/kubernetes/nfs/csi-config-map.yaml
generated
vendored
2
vendor/github.com/ceph/ceph-csi/api/deploy/kubernetes/nfs/csi-config-map.yaml
generated
vendored
@ -5,4 +5,4 @@ metadata:
|
||||
name: "{{ .Name }}"
|
||||
data:
|
||||
config.json: |-
|
||||
[]
|
||||
{{ .ClusterInfo }}
|
||||
|
1
vendor/github.com/ceph/ceph-csi/api/deploy/kubernetes/nfs/csidriver.yaml
generated
vendored
1
vendor/github.com/ceph/ceph-csi/api/deploy/kubernetes/nfs/csidriver.yaml
generated
vendored
@ -6,5 +6,6 @@ metadata:
|
||||
spec:
|
||||
attachRequired: false
|
||||
fsGroupPolicy: File
|
||||
seLinuxMount: true
|
||||
volumeLifecycleModes:
|
||||
- Persistent
|
||||
|
7
vendor/github.com/ceph/ceph-csi/api/deploy/kubernetes/rbd/csi-config-map.go
generated
vendored
7
vendor/github.com/ceph/ceph-csi/api/deploy/kubernetes/rbd/csi-config-map.go
generated
vendored
@ -22,6 +22,7 @@ import (
|
||||
"fmt"
|
||||
"text/template"
|
||||
|
||||
"github.com/ceph/ceph-csi/api/deploy/kubernetes"
|
||||
"github.com/ghodss/yaml"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
)
|
||||
@ -30,11 +31,13 @@ import (
|
||||
var csiConfigMap string
|
||||
|
||||
type CSIConfigMapValues struct {
|
||||
Name string
|
||||
Name string
|
||||
ClusterInfo []kubernetes.ClusterInfo
|
||||
}
|
||||
|
||||
var CSIConfigMapDefaults = CSIConfigMapValues{
|
||||
Name: "ceph-csi-config",
|
||||
Name: "ceph-csi-config",
|
||||
ClusterInfo: []kubernetes.ClusterInfo{},
|
||||
}
|
||||
|
||||
// NewCSIConfigMap takes a name from the CSIConfigMapValues struct and relaces
|
||||
|
2
vendor/github.com/ceph/ceph-csi/api/deploy/kubernetes/rbd/csi-config-map.yaml
generated
vendored
2
vendor/github.com/ceph/ceph-csi/api/deploy/kubernetes/rbd/csi-config-map.yaml
generated
vendored
@ -5,4 +5,4 @@ metadata:
|
||||
name: "{{ .Name }}"
|
||||
data:
|
||||
config.json: |-
|
||||
[]
|
||||
{{ .ClusterInfo }}
|
||||
|
1
vendor/github.com/ceph/ceph-csi/api/deploy/kubernetes/rbd/csidriver.yaml
generated
vendored
1
vendor/github.com/ceph/ceph-csi/api/deploy/kubernetes/rbd/csidriver.yaml
generated
vendored
@ -6,4 +6,5 @@ metadata:
|
||||
spec:
|
||||
attachRequired: true
|
||||
podInfoOnMount: false
|
||||
seLinuxMount: true
|
||||
fsGroupPolicy: File
|
||||
|
1
vendor/modules.txt
vendored
1
vendor/modules.txt
vendored
@ -134,6 +134,7 @@ github.com/cenkalti/backoff/v3
|
||||
github.com/cenkalti/backoff/v4
|
||||
# github.com/ceph/ceph-csi/api v0.0.0-00010101000000-000000000000 => ./api
|
||||
## explicit; go 1.18
|
||||
github.com/ceph/ceph-csi/api/deploy/kubernetes
|
||||
github.com/ceph/ceph-csi/api/deploy/kubernetes/cephfs
|
||||
github.com/ceph/ceph-csi/api/deploy/kubernetes/nfs
|
||||
github.com/ceph/ceph-csi/api/deploy/kubernetes/rbd
|
||||
|
Loading…
Reference in New Issue
Block a user