github.com/oam-dev/kubevela@v1.9.11/vela-templates/definitions/deprecated/pvc.cue (about)

     1  pvc: {
     2  	type: "trait"
     3  	annotations: {}
     4  	labels: {
     5  		"deprecated": "true"
     6  	}
     7  	description: "Create a Persistent Volume Claim and mount the PVC as volume to the  first container in the pod. This definition is DEPRECATED, please specify pvc in 'storage' instead."
     8  	attributes: {
     9  		appliesToWorkloads: ["deployments.apps"]
    10  		podDisruptive: true
    11  	}
    12  }
    13  template: {
    14  	patch: spec: template: spec: {
    15  		containers: [{
    16  			if parameter.volumeMode == "Block" {
    17  				// +patchKey=name
    18  				volumeDevices: [
    19  					for v in parameter.volumesToMount {
    20  						{
    21  							name:       v.name
    22  							devicePath: v.devicePath
    23  						}
    24  					},
    25  				]
    26  			}
    27  			if parameter.volumeMode == "Filesystem" {
    28  				// +patchKey=name
    29  				volumeMounts: [
    30  					for v in parameter.volumesToMount {
    31  						{
    32  							name:      v.name
    33  							mountPath: v.mountPath
    34  						}
    35  					},
    36  				]
    37  			}
    38  		}]
    39  
    40  		// +patchKey=name
    41  		volumes: [
    42  			for v in parameter.volumesToMount {
    43  				{
    44  					name: v.name
    45  					persistentVolumeClaim: claimName: parameter.claimName
    46  				}
    47  			},
    48  		]
    49  	}
    50  	outputs: "claim": {
    51  		apiVersion: "v1"
    52  		kind:       "PersistentVolumeClaim"
    53  		metadata: {
    54  			name: parameter.claimName
    55  		}
    56  		spec: {
    57  			accessModes: parameter.accessModes
    58  			volumeMode:  parameter.volumeMode
    59  			if parameter.volumeName != _|_ {
    60  				volumeName: parameter.volumeName
    61  			}
    62  
    63  			if parameter.storageClassName != _|_ {
    64  				storageClassName: parameter.storageClassName
    65  			}
    66  			resources: requests: storage: parameter.resources.requests.storage
    67  			if parameter.resources.limits != _|_ {
    68  				resources: limits: storage: parameter.resources.limits.storage
    69  			}
    70  			if parameter.dataSourceRef != _|_ {
    71  				dataSourceRef: parameter.dataSourceRef
    72  			}
    73  			if parameter.dataSource != _|_ {
    74  				dataSource: parameter.dataSource
    75  			}
    76  			if parameter.selector != _|_ {
    77  				dataSource: parameter.selector
    78  			}
    79  		}
    80  	}
    81  	parameter: {
    82  		claimName:   string
    83  		volumeMode:  *"Filesystem" | string
    84  		volumeName?: string
    85  		accessModes: [...string]
    86  		storageClassName?: string
    87  		resources: {
    88  			requests: storage: =~"^([1-9][0-9]{0,63})(E|P|T|G|M|K|Ei|Pi|Ti|Gi|Mi|Ki)$"
    89  			limits?: storage:  =~"^([1-9][0-9]{0,63})(E|P|T|G|M|K|Ei|Pi|Ti|Gi|Mi|Ki)$"
    90  		}
    91  		dataSourceRef?: {
    92  			name:     string
    93  			kind:     string
    94  			apiGroup: string
    95  		}
    96  		dataSource?: {
    97  			name:     string
    98  			kind:     string
    99  			apiGroup: string
   100  		}
   101  		selector?: {
   102  			matchLabels?: [string]: string
   103  			matchExpressions?: {
   104  				key: string
   105  				values: [...string]
   106  				operator: string
   107  			}
   108  		}
   109  		volumesToMount: [...{
   110  			name: string
   111  			if volumeMode == "Block" {
   112  				devicePath: string
   113  			}
   114  			if volumeMode == "Filesystem" {
   115  				mountPath: string
   116  			}
   117  		}]
   118  	}
   119  }