Output only. The fully qualified name of the BackupChannel to be used to
create a backup. This field is set only if the cluster being backed up is
in a different project.
projects/*/locations/*/backupChannels/*
Optional. This flag indicates whether this BackupPlan has been deactivated.
Setting this field to True locks the BackupPlan such that no further
updates will be allowed (except deletes), including the deactivated field
itself. It also prevents any new Backups from being created via this
BackupPlan (including scheduled Backups).
Output only. etag is used for optimistic concurrency control as a way to
help prevent simultaneous updates of a backup plan from overwriting each
other. It is strongly suggested that systems make use of the 'etag' in the
read-modify-write cycle to perform BackupPlan updates in order to avoid
race conditions: An etag is returned in the response to GetBackupPlan,
and systems are expected to put that etag in the request to
UpdateBackupPlan or DeleteBackupPlan to ensure that their change
will be applied to the same version of the resource.
public Timestamp LastSuccessfulBackupTime { get; set; }
Output only. Completion time of the last successful Backup. This is sourced
from a successful Backup's complete_time field. This field is added to
maintain consistency with BackupPlanBinding to display last successful
backup time.
Output only. State of the BackupPlan. This State field reflects the
various stages a BackupPlan can be in
during the Create operation. It will be set to "DEACTIVATED"
if the BackupPlan is deactivated on an Update
Output only. Human-readable description of why BackupPlan is in the current
state. This field is only meant for human readability and should not be
used programmatically as this field is not guaranteed to be consistent.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-07 UTC."],[[["\u003cp\u003eThe \u003ccode\u003eBackupPlan\u003c/code\u003e class in the Google.Cloud.GkeBackup.V1 API defines the configuration and scheduling for creating backups in Google Kubernetes Engine (GKE).\u003c/p\u003e\n"],["\u003cp\u003eThis class allows for specifying backup configurations, scheduling, retention policies, and the source cluster for backups.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eBackupPlan\u003c/code\u003e can be deactivated, preventing updates and new backups, while its state reflects the various stages it can be in during creation.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eBackupPlan\u003c/code\u003e class contains detailed information on its current state, risk level from an RPO perspective, and the number of protected pods.\u003c/p\u003e\n"],["\u003cp\u003eThe latest version of this class available is 2.6.0, while multiple previous versions are available, dating as far back as 1.0.0-beta01.\u003c/p\u003e\n"]]],[],null,["# Backup for GKE v1 API - Class BackupPlan (2.8.0)\n\nVersion latestkeyboard_arrow_down\n\n- [2.8.0 (latest)](/dotnet/docs/reference/Google.Cloud.GkeBackup.V1/latest/Google.Cloud.GkeBackup.V1.BackupPlan)\n- [2.7.0](/dotnet/docs/reference/Google.Cloud.GkeBackup.V1/2.7.0/Google.Cloud.GkeBackup.V1.BackupPlan)\n- [2.6.0](/dotnet/docs/reference/Google.Cloud.GkeBackup.V1/2.6.0/Google.Cloud.GkeBackup.V1.BackupPlan)\n- [2.5.0](/dotnet/docs/reference/Google.Cloud.GkeBackup.V1/2.5.0/Google.Cloud.GkeBackup.V1.BackupPlan)\n- [2.4.0](/dotnet/docs/reference/Google.Cloud.GkeBackup.V1/2.4.0/Google.Cloud.GkeBackup.V1.BackupPlan)\n- [2.3.0](/dotnet/docs/reference/Google.Cloud.GkeBackup.V1/2.3.0/Google.Cloud.GkeBackup.V1.BackupPlan)\n- [2.2.0](/dotnet/docs/reference/Google.Cloud.GkeBackup.V1/2.2.0/Google.Cloud.GkeBackup.V1.BackupPlan)\n- [2.1.0](/dotnet/docs/reference/Google.Cloud.GkeBackup.V1/2.1.0/Google.Cloud.GkeBackup.V1.BackupPlan)\n- [2.0.0](/dotnet/docs/reference/Google.Cloud.GkeBackup.V1/2.0.0/Google.Cloud.GkeBackup.V1.BackupPlan)\n- [1.0.0-beta01](/dotnet/docs/reference/Google.Cloud.GkeBackup.V1/1.0.0-beta01/Google.Cloud.GkeBackup.V1.BackupPlan) \n\n public sealed class BackupPlan : IMessage\u003cBackupPlan\u003e, IEquatable\u003cBackupPlan\u003e, IDeepCloneable\u003cBackupPlan\u003e, IBufferMessage, IMessage\n\nReference documentation and code samples for the Backup for GKE v1 API class BackupPlan.\n\nDefines the configuration and scheduling for a \"line\" of Backups. \n\nInheritance\n-----------\n\n[object](https://learn.microsoft.com/dotnet/api/system.object) \\\u003e BackupPlan \n\nImplements\n----------\n\n[IMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IMessage-1.html)[BackupPlan](/dotnet/docs/reference/Google.Cloud.GkeBackup.V1/latest/Google.Cloud.GkeBackup.V1.BackupPlan), [IEquatable](https://learn.microsoft.com/dotnet/api/system.iequatable-1)[BackupPlan](/dotnet/docs/reference/Google.Cloud.GkeBackup.V1/latest/Google.Cloud.GkeBackup.V1.BackupPlan), [IDeepCloneable](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IDeepCloneable-1.html)[BackupPlan](/dotnet/docs/reference/Google.Cloud.GkeBackup.V1/latest/Google.Cloud.GkeBackup.V1.BackupPlan), [IBufferMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IBufferMessage.html), [IMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IMessage.html) \n\nInherited Members\n-----------------\n\n[object.GetHashCode()](https://learn.microsoft.com/dotnet/api/system.object.gethashcode) \n[object.GetType()](https://learn.microsoft.com/dotnet/api/system.object.gettype) \n[object.ToString()](https://learn.microsoft.com/dotnet/api/system.object.tostring)\n\nNamespace\n---------\n\n[Google.Cloud.GkeBackup.V1](/dotnet/docs/reference/Google.Cloud.GkeBackup.V1/latest/Google.Cloud.GkeBackup.V1)\n\nAssembly\n--------\n\nGoogle.Cloud.GkeBackup.V1.dll\n\nConstructors\n------------\n\n### BackupPlan()\n\n public BackupPlan()\n\n### BackupPlan(BackupPlan)\n\n public BackupPlan(BackupPlan other)\n\nProperties\n----------\n\n### BackupChannel\n\n public string BackupChannel { get; set; }\n\nOutput only. The fully qualified name of the BackupChannel to be used to\ncreate a backup. This field is set only if the cluster being backed up is\nin a different project.\n`projects/*/locations/*/backupChannels/*`\n\n### BackupChannelAsBackupChannelName\n\n public BackupChannelName BackupChannelAsBackupChannelName { get; set; }\n\n[BackupChannelName](/dotnet/docs/reference/Google.Cloud.GkeBackup.V1/latest/Google.Cloud.GkeBackup.V1.BackupChannelName)-typed view over the [BackupChannel](/dotnet/docs/reference/Google.Cloud.GkeBackup.V1/latest/Google.Cloud.GkeBackup.V1.BackupPlan#Google_Cloud_GkeBackup_V1_BackupPlan_BackupChannel) resource name property.\n\n### BackupConfig\n\n public BackupPlan.Types.BackupConfig BackupConfig { get; set; }\n\nOptional. Defines the configuration of Backups created via this BackupPlan.\n\n### BackupPlanName\n\n public BackupPlanName BackupPlanName { get; set; }\n\n[BackupPlanName](/dotnet/docs/reference/Google.Cloud.GkeBackup.V1/latest/Google.Cloud.GkeBackup.V1.BackupPlanName)-typed view over the [Name](/dotnet/docs/reference/Google.Cloud.GkeBackup.V1/latest/Google.Cloud.GkeBackup.V1.BackupPlan#Google_Cloud_GkeBackup_V1_BackupPlan_Name) resource name property.\n\n### BackupSchedule\n\n public BackupPlan.Types.Schedule BackupSchedule { get; set; }\n\nOptional. Defines a schedule for automatic Backup creation via this\nBackupPlan.\n\n### Cluster\n\n public string Cluster { get; set; }\n\nRequired. Immutable. The source cluster from which Backups will be created\nvia this BackupPlan. Valid formats:\n\n- `projects/*/locations/*/clusters/*`\n- `projects/*/zones/*/clusters/*`\n\n### ClusterAsClusterName\n\n public ClusterName ClusterAsClusterName { get; set; }\n\n[ClusterName](/dotnet/docs/reference/Google.Cloud.GkeBackup.V1/latest/Google.Cloud.GkeBackup.V1.ClusterName)-typed view over the [Cluster](/dotnet/docs/reference/Google.Cloud.GkeBackup.V1/latest/Google.Cloud.GkeBackup.V1.BackupPlan#Google_Cloud_GkeBackup_V1_BackupPlan_Cluster) resource name property.\n\n### CreateTime\n\n public Timestamp CreateTime { get; set; }\n\nOutput only. The timestamp when this BackupPlan resource was created.\n\n### Deactivated\n\n public bool Deactivated { get; set; }\n\nOptional. This flag indicates whether this BackupPlan has been deactivated.\nSetting this field to True locks the BackupPlan such that no further\nupdates will be allowed (except deletes), including the deactivated field\nitself. It also prevents any new Backups from being created via this\nBackupPlan (including scheduled Backups).\n\nDefault: False\n\n### Description\n\n public string Description { get; set; }\n\nOptional. User specified descriptive string for this BackupPlan.\n\n### Etag\n\n public string Etag { get; set; }\n\nOutput only. `etag` is used for optimistic concurrency control as a way to\nhelp prevent simultaneous updates of a backup plan from overwriting each\nother. It is strongly suggested that systems make use of the 'etag' in the\nread-modify-write cycle to perform BackupPlan updates in order to avoid\nrace conditions: An `etag` is returned in the response to `GetBackupPlan`,\nand systems are expected to put that etag in the request to\n`UpdateBackupPlan` or `DeleteBackupPlan` to ensure that their change\nwill be applied to the same version of the resource.\n\n### Labels\n\n public MapField\u003cstring, string\u003e Labels { get; }\n\nOptional. A set of custom labels supplied by user.\n\n### LastSuccessfulBackupTime\n\n public Timestamp LastSuccessfulBackupTime { get; set; }\n\nOutput only. Completion time of the last successful Backup. This is sourced\nfrom a successful Backup's complete_time field. This field is added to\nmaintain consistency with BackupPlanBinding to display last successful\nbackup time.\n\n### Name\n\n public string Name { get; set; }\n\nOutput only. The full name of the BackupPlan resource.\nFormat: `projects/*/locations/*/backupPlans/*`\n\n### ProtectedPodCount\n\n public int ProtectedPodCount { get; set; }\n\nOutput only. The number of Kubernetes Pods backed up in the\nlast successful Backup created via this BackupPlan.\n\n### RetentionPolicy\n\n public BackupPlan.Types.RetentionPolicy RetentionPolicy { get; set; }\n\nOptional. RetentionPolicy governs lifecycle of Backups created under this\nplan.\n\n### RpoRiskLevel\n\n public int RpoRiskLevel { get; set; }\n\nOutput only. A number that represents the current risk level of this\nBackupPlan from RPO perspective with 1 being no risk and 5 being highest\nrisk.\n\n### RpoRiskReason\n\n public string RpoRiskReason { get; set; }\n\nOutput only. Human-readable description of why the BackupPlan is in the\ncurrent rpo_risk_level and action items if any.\n\n### State\n\n public BackupPlan.Types.State State { get; set; }\n\nOutput only. State of the BackupPlan. This State field reflects the\nvarious stages a BackupPlan can be in\nduring the Create operation. It will be set to \"DEACTIVATED\"\nif the BackupPlan is deactivated on an Update\n\n### StateReason\n\n public string StateReason { get; set; }\n\nOutput only. Human-readable description of why BackupPlan is in the current\n`state`. This field is only meant for human readability and should not be\nused programmatically as this field is not guaranteed to be consistent.\n\n### Uid\n\n public string Uid { get; set; }\n\nOutput only. Server generated global unique identifier of\n[UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier) format.\n\n### UpdateTime\n\n public Timestamp UpdateTime { get; set; }\n\nOutput only. The timestamp when this BackupPlan resource was last\nupdated."]]