github.com/oam-dev/kubevela@v1.9.11/docs/examples/custom-trait/volume-trait.cue (about)

     1  storageclass: {
     2  	type: "trait"
     3  	annotations: {}
     4  	labels: {}
     5  	description: "Add storageclass on K8s pod for your workload which follows the pod spec in path 'spec.template'."
     6  	attributes: {
     7  		appliesToWorkloads: ["*"]
     8  	}
     9  }
    10  template: {
    11  
    12  	volumeClaimTemplatesList: *[
    13  					for v in parameter.volumeClaimTemplates {
    14  			{
    15  				metadata: name: v.name
    16  				spec: {
    17  					accessModes: ["ReadWriteOnce"]
    18  					resources: requests: storage: v.requests
    19  					storageClassName: v.storageClassName
    20  				}
    21  			}
    22  		},
    23  	] | []
    24  
    25  	volumeClaimTemplateVolumeMountsList: *[
    26  						for v in parameter.volumeClaimTemplates {
    27  			{
    28  				name:      v.name
    29  				mountPath: v.mountPath
    30  			}
    31  		},
    32  	] | []
    33  
    34  	patch: {
    35  		// +patchKey=name
    36  		spec: {
    37  			template: spec: {
    38  				containers: [...{
    39  					// +patchKey=name
    40  					volumeMounts: volumeClaimTemplateVolumeMountsList
    41  				}]
    42  			}
    43  			// +patchKey=name
    44  			volumeClaimTemplates: volumeClaimTemplatesList
    45  		}
    46  	}
    47  
    48  	parameter: {
    49  		volumeClaimTemplates?: [...{
    50  			name:             string
    51  			requests:         string
    52  			storageClassName: string
    53  			mountPath:        string
    54  		}]
    55  	}
    56  }