// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. syntax = "proto3"; package google.cloud.batch.v1; option csharp_namespace = "Google.Cloud.Batch.V1"; option go_package = "cloud.google.com/go/batch/apiv1/batchpb;batchpb"; option java_multiple_files = true; option java_outer_classname = "VolumeProto"; option java_package = "com.google.cloud.batch.v1"; option objc_class_prefix = "GCB"; option php_namespace = "Google\\Cloud\\Batch\\V1"; option ruby_package = "Google::Cloud::Batch::V1"; // Volume describes a volume and parameters for it to be mounted to a VM. message Volume { // The source for the volume. oneof source { // A Network File System (NFS) volume. For example, a // Filestore file share. NFS nfs = 1; // A Google Cloud Storage (GCS) volume. GCS gcs = 3; // Device name of an attached disk volume, which should align with a // device_name specified by // job.allocation_policy.instances[0].policy.disks[i].device_name or // defined by the given instance template in // job.allocation_policy.instances[0].instance_template. string device_name = 6; } // The mount path for the volume, e.g. /mnt/disks/share. string mount_path = 4; // For Google Cloud Storage (GCS), mount options are the options supported by // the gcsfuse tool (https://github.com/GoogleCloudPlatform/gcsfuse). // For existing persistent disks, mount options provided by the // mount command (https://man7.org/linux/man-pages/man8/mount.8.html) except // writing are supported. This is due to restrictions of multi-writer mode // (https://cloud.google.com/compute/docs/disks/sharing-disks-between-vms). // For other attached disks and Network File System (NFS), mount options are // these supported by the mount command // (https://man7.org/linux/man-pages/man8/mount.8.html). repeated string mount_options = 5; } // Represents an NFS volume. message NFS { // The IP address of the NFS. string server = 1; // Remote source path exported from the NFS, e.g., "/share". string remote_path = 2; } // Represents a Google Cloud Storage volume. message GCS { // Remote path, either a bucket name or a subdirectory of a bucket, e.g.: // bucket_name, bucket_name/subdirectory/ string remote_path = 1; }