@@ -17,7 +17,10 @@ limitations under the License.
17
17
package v1alpha1
18
18
19
19
import (
20
+ "fmt"
21
+
20
22
corev1 "k8s.io/api/core/v1"
23
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
21
24
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
22
25
"k8s.io/apimachinery/pkg/runtime/schema"
23
26
@@ -77,16 +80,28 @@ func (c *storagedComponent) GetResources() *corev1.ResourceRequirements {
77
80
return getResources (c .nc .Spec .Storaged .Resources )
78
81
}
79
82
80
- func (c * storagedComponent ) GetStorageClass () * string {
81
- scName := c .nc .Spec .Storaged .StorageClaim .StorageClassName
83
+ func (c * storagedComponent ) GetLogStorageClass () * string {
84
+ scName := c .nc .Spec .Storaged .LogVolumeClaim .StorageClassName
85
+ if scName == nil || * scName == "" {
86
+ return nil
87
+ }
88
+ return scName
89
+ }
90
+
91
+ func (c * storagedComponent ) GetDataStorageClass () * string {
92
+ scName := c .nc .Spec .Storaged .LogVolumeClaim .StorageClassName
82
93
if scName == nil || * scName == "" {
83
94
return nil
84
95
}
85
96
return scName
86
97
}
87
98
88
- func (c * storagedComponent ) GetStorageResources () * corev1.ResourceRequirements {
89
- return c .nc .Spec .Storaged .StorageClaim .Resources .DeepCopy ()
99
+ func (c * storagedComponent ) GetLogStorageResources () * corev1.ResourceRequirements {
100
+ return c .nc .Spec .Storaged .LogVolumeClaim .Resources .DeepCopy ()
101
+ }
102
+
103
+ func (c * storagedComponent ) GetDataStorageResources () * corev1.ResourceRequirements {
104
+ return c .nc .Spec .Storaged .LogVolumeClaim .Resources .DeepCopy ()
90
105
}
91
106
92
107
func (c * storagedComponent ) GetPodEnvVars () []corev1.EnvVar {
@@ -188,11 +203,11 @@ func (c *storagedComponent) GenerateVolumeMounts() []corev1.VolumeMount {
188
203
componentType := c .Type ().String ()
189
204
return []corev1.VolumeMount {
190
205
{
191
- Name : componentType ,
206
+ Name : logVolume ( componentType ) ,
192
207
MountPath : "/usr/local/nebula/logs" ,
193
208
SubPath : "logs" ,
194
209
}, {
195
- Name : componentType ,
210
+ Name : dataVolume ( componentType ) ,
196
211
MountPath : "/usr/local/nebula/data" ,
197
212
SubPath : "data" ,
198
213
},
@@ -203,16 +218,63 @@ func (c *storagedComponent) GenerateVolumes() []corev1.Volume {
203
218
componentType := c .Type ().String ()
204
219
return []corev1.Volume {
205
220
{
206
- Name : componentType ,
221
+ Name : logVolume (componentType ),
222
+ VolumeSource : corev1.VolumeSource {
223
+ PersistentVolumeClaim : & corev1.PersistentVolumeClaimVolumeSource {
224
+ ClaimName : logVolume (componentType ),
225
+ },
226
+ },
227
+ },
228
+ {
229
+ Name : dataVolume (componentType ),
207
230
VolumeSource : corev1.VolumeSource {
208
231
PersistentVolumeClaim : & corev1.PersistentVolumeClaimVolumeSource {
209
- ClaimName : componentType ,
232
+ ClaimName : dataVolume ( componentType ) ,
210
233
},
211
234
},
212
235
},
213
236
}
214
237
}
215
238
239
+ func (c * storagedComponent ) GenerateVolumeClaim () ([]corev1.PersistentVolumeClaim , error ) {
240
+ componentType := c .Type ().String ()
241
+ logSC , logRes := c .GetLogStorageClass (), c .GetLogStorageResources ()
242
+ logReq , err := parseStorageRequest (logRes .Requests )
243
+ if err != nil {
244
+ return nil , fmt .Errorf ("cannot parse storage request for %s log volume, error: %v" , componentType , err )
245
+ }
246
+
247
+ datSC , dataRes := c .GetDataStorageClass (), c .GetDataStorageResources ()
248
+ dataReq , err := parseStorageRequest (dataRes .Requests )
249
+ if err != nil {
250
+ return nil , fmt .Errorf ("cannot parse storage request for %s data volume, error: %v" , componentType , err )
251
+ }
252
+
253
+ claims := []corev1.PersistentVolumeClaim {
254
+ {
255
+ ObjectMeta : metav1.ObjectMeta {
256
+ Name : logVolume (componentType ),
257
+ },
258
+ Spec : corev1.PersistentVolumeClaimSpec {
259
+ AccessModes : []corev1.PersistentVolumeAccessMode {corev1 .ReadWriteOnce },
260
+ Resources : logReq ,
261
+ StorageClassName : logSC ,
262
+ },
263
+ },
264
+ {
265
+ ObjectMeta : metav1.ObjectMeta {
266
+ Name : dataVolume (componentType ),
267
+ },
268
+ Spec : corev1.PersistentVolumeClaimSpec {
269
+ AccessModes : []corev1.PersistentVolumeAccessMode {corev1 .ReadWriteOnce },
270
+ Resources : dataReq ,
271
+ StorageClassName : datSC ,
272
+ },
273
+ },
274
+ }
275
+ return claims , nil
276
+ }
277
+
216
278
func (c * storagedComponent ) GenerateWorkload (
217
279
gvk schema.GroupVersionKind ,
218
280
cm * corev1.ConfigMap ,
0 commit comments