syntax = "proto3"; package v1beta2; option go_package = "github.com/kubernetes-csi/csi-proxy/client/api/filesystem/v1beta2"; service Filesystem { // PathExists checks if the requested path exists in the host filesystem. rpc PathExists(PathExistsRequest) returns (PathExistsResponse) {} // Mkdir creates a directory at the requested path in the host filesystem. rpc Mkdir(MkdirRequest) returns (MkdirResponse) {} // Rmdir removes the directory at the requested path in the host filesystem. // This may be used for unlinking a symlink created through CreateSymlink. rpc Rmdir(RmdirRequest) returns (RmdirResponse) {} // CreateSymlink creates a symbolic link called target_path that points to source_path // in the host filesystem (target_path is the name of the symbolic link created, // source_path is the existing path). rpc CreateSymlink(CreateSymlinkRequest) returns (CreateSymlinkResponse) {} // IsSymlink checks if a given path is a symlink. rpc IsSymlink(IsSymlinkRequest) returns (IsSymlinkResponse) {} } message PathExistsRequest { // The path whose existence we want to check in the host's filesystem string path = 1; } message PathExistsResponse { // Indicates whether the path in PathExistsRequest exists in the host's filesystem bool exists = 1; } 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; } message MkdirResponse { // Intentionally empty. } 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; // Force remove all contents under path (if any). bool force = 2; } message RmdirResponse { // Intentionally empty. } message CreateSymlinkRequest { // The path of the existing directory to be linked. // 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 is the location of the new directory entry to be 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 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 CreateSymlinkResponse { // Intentionally empty. } message IsSymlinkRequest { // The path whose existence as a symlink we want to check in the host's filesystem. string path = 1; } message IsSymlinkResponse { // Indicates whether the path in IsSymlinkRequest is a symlink. bool is_symlink = 1; }