169 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			Protocol Buffer
		
	
	
	
			
		
		
	
	
			169 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			Protocol Buffer
		
	
	
	
| syntax = "proto3";
 | |
| 
 | |
| package v1beta1;
 | |
| 
 | |
| service Filesystem {
 | |
|     // PathExists checks if the requested path exists in the host's filesystem
 | |
|     rpc PathExists(PathExistsRequest) returns (PathExistsResponse) {}
 | |
| 
 | |
|     // Mkdir creates a directory at the requested path in the host's filesystem
 | |
|     rpc Mkdir(MkdirRequest) returns (MkdirResponse) {}
 | |
| 
 | |
|     // Rmdir removes the directory at the requested path in the host's filesystem.
 | |
|     // This may be used for unlinking a symlink created through LinkPath
 | |
|     rpc Rmdir(RmdirRequest) returns (RmdirResponse) {}
 | |
| 
 | |
|     // LinkPath creates a local directory symbolic link between a source path 
 | |
|     // and target path in the host's filesystem
 | |
|     rpc LinkPath(LinkPathRequest) returns (LinkPathResponse) {}
 | |
| 
 | |
|     //IsMountPoint checks if a given path is mount or not
 | |
|     rpc IsMountPoint(IsMountPointRequest) returns (IsMountPointResponse) {}
 | |
| }
 | |
| 
 | |
| // Context of the paths used for path prefix validation
 | |
| enum PathContext {
 | |
|     // Indicates the kubelet-csi-plugins-path parameter of csi-proxy be used as
 | |
|     // the path context. This may be used while handling NodeStageVolume where
 | |
|     // a volume may need to be mounted at a plugin-specific path like:
 | |
|     // kubelet\plugins\kubernetes.io\csi\pv\<pv-name>\globalmount
 | |
|     PLUGIN = 0;
 | |
|     // Indicates the kubelet-pod-path parameter of csi-proxy be used as the path
 | |
|     // context. This may be used while handling NodePublishVolume where a staged
 | |
|     // volume may be need to be symlinked to a pod-specific path like:
 | |
|     // kubelet\pods\<pod-uuid>\volumes\kubernetes.io~csi\<pvc-name>\mount
 | |
|     POD = 1;
 | |
| }
 | |
| 
 | |
| message PathExistsRequest {
 | |
|     // The path whose existence we want to check in the host's filesystem
 | |
|     string path = 1;
 | |
| 
 | |
|     // Context of the path parameter.
 | |
|     // This is used to validate prefix for absolute paths passed
 | |
|     PathContext context = 2;
 | |
| }
 | |
| 
 | |
| message PathExistsResponse {
 | |
|     // Error message if any. Empty string indicates success
 | |
|     string error = 1;
 | |
| 
 | |
|     // Indicates whether the path in PathExistsRequest exists in the host's filesystem
 | |
|     bool exists = 2;
 | |
| }
 | |
| 
 | |
| message MkdirRequest {
 | |
|     // The path to create in the host's filesystem.
 | |
|     // All special characters allowed by Windows in path names will be allowed
 | |
|     // except for restrictions noted below. For details, please check:
 | |
|     // https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file
 | |
|     // Non-existent parent directories in the path will be automatically created.
 | |
|     // Directories will be created with Read and Write privileges of the Windows
 | |
|     // User account under which csi-proxy is started (typically LocalSystem).
 | |
|     //
 | |
|     // Restrictions:
 | |
|     // Only absolute path (indicated by a drive letter prefix: e.g. "C:\") is accepted.
 | |
|     // Depending on the context parameter of this function, the path prefix needs 
 | |
|     // to match the paths specified either as kubelet-csi-plugins-path
 | |
|     // or as kubelet-pod-path parameters of csi-proxy.
 | |
|     // The path parameter cannot already exist in the host's filesystem.
 | |
|     // UNC paths of the form "\\server\share\path\file" are not allowed.
 | |
|     // All directory separators need to be backslash character: "\".
 | |
|     // Characters: .. / : | ? * in the path are not allowed.
 | |
|     // Maximum path length will be capped to 260 characters.
 | |
|     string path = 1;
 | |
| 
 | |
|     // Context of the path parameter.
 | |
|     // This is used to validate prefix for absolute paths passed
 | |
|     PathContext context = 2;
 | |
| }
 | |
| 
 | |
| message MkdirResponse {
 | |
|     // Error message if any. Empty string indicates success
 | |
|     string error = 1;
 | |
| }
 | |
| 
 | |
| message RmdirRequest {
 | |
|     // The path to remove in the host's filesystem.
 | |
|     // All special characters allowed by Windows in path names will be allowed
 | |
|     // except for restrictions noted below. For details, please check:
 | |
|     // https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file
 | |
|     //
 | |
|     // Restrictions:
 | |
|     // Only absolute path (indicated by a drive letter prefix: e.g. "C:\") is accepted.
 | |
|     // Depending on the context parameter of this function, the path prefix needs 
 | |
|     // to match the paths specified either as kubelet-csi-plugins-path
 | |
|     // or as kubelet-pod-path parameters of csi-proxy.
 | |
|     // UNC paths of the form "\\server\share\path\file" are not allowed.
 | |
|     // All directory separators need to be backslash character: "\".
 | |
|     // Characters: .. / : | ? * in the path are not allowed.
 | |
|     // Path cannot be a file of type symlink.
 | |
|     // Maximum path length will be capped to 260 characters.
 | |
|     string path = 1;
 | |
| 
 | |
|     // Context of the path parameter.
 | |
|     // This is used to validate prefix for absolute paths passed
 | |
|     PathContext context = 2;
 | |
| 
 | |
|     // Force remove all contents under path (if any).
 | |
|     bool force = 3;
 | |
| }
 | |
| 
 | |
| message RmdirResponse {
 | |
|     // Error message if any. Empty string indicates success
 | |
|     string error = 1;
 | |
| }
 | |
| 
 | |
| message LinkPathRequest {
 | |
|     // The path where the symlink is created in the host's filesystem.
 | |
|     // All special characters allowed by Windows in path names will be allowed
 | |
|     // except for restrictions noted below. For details, please check:
 | |
|     // https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file
 | |
|     //
 | |
|     // Restrictions:
 | |
|     // Only absolute path (indicated by a drive letter prefix: e.g. "C:\") is accepted.
 | |
|     // The path prefix needs needs to match the paths specified as 
 | |
|     // kubelet-csi-plugins-path parameter of csi-proxy.
 | |
|     // UNC paths of the form "\\server\share\path\file" are not allowed.
 | |
|     // All directory separators need to be backslash character: "\".
 | |
|     // Characters: .. / : | ? * in the path are not allowed.
 | |
|     // source_path cannot already exist in the host filesystem.
 | |
|     // Maximum path length will be capped to 260 characters.
 | |
|     string source_path = 1;
 | |
| 
 | |
|     // Target path in the host's filesystem used for the symlink creation.
 | |
|     // All special characters allowed by Windows in path names will be allowed
 | |
|     // except for restrictions noted below. For details, please check:
 | |
|     // https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file
 | |
|     //
 | |
|     // Restrictions:
 | |
|     // Only absolute path (indicated by a drive letter prefix: e.g. "C:\") is accepted.
 | |
|     // The path prefix needs to match the paths specified as
 | |
|     // kubelet-pod-path parameter of csi-proxy.
 | |
|     // UNC paths of the form "\\server\share\path\file" are not allowed.
 | |
|     // All directory separators need to be backslash character: "\".
 | |
|     // Characters: .. / : | ? * in the path are not allowed.
 | |
|     // target_path needs to exist as a directory in the host that is empty.
 | |
|     // target_path cannot be a symbolic link.
 | |
|     // Maximum path length will be capped to 260 characters.
 | |
|     string target_path = 2;
 | |
| }
 | |
| 
 | |
| message LinkPathResponse {
 | |
|     // Error message if any. Empty string indicates success
 | |
|     string error = 1;
 | |
| }
 | |
|  
 | |
| message IsMountPointRequest {
 | |
|     // The path whose existence we want to check in the host's filesystem
 | |
|     string path = 1;
 | |
| }
 | |
| 
 | |
| message IsMountPointResponse {
 | |
|     // Error message if any. Empty string indicates success
 | |
|     string error = 1;
 | |
| 
 | |
|     // Indicates whether the path in PathExistsRequest exists in the host's filesystem
 | |
|     bool is_mount_point = 2;
 | |
| }
 |