public FixedOrPercent DisruptionBudget { get; set; }
The maximum number (or percentage) of VMs per zone to disrupt at any given
moment. The number of VMs calculated from multiplying the percentage by the
total number of VMs in a zone is rounded up.
During patching, a VM is considered disrupted from the time the agent is
notified to begin until patching has completed. This disruption time
includes the time to complete reboot and any post-patch steps.
A VM contributes to the disruption budget if its patching operation fails
either when applying the patches, running pre or post patch steps, or if it
fails to respond with a success notification before timing out. VMs that
are not running or do not have an active agent do not count toward this
disruption budget.
For zone-by-zone rollouts, if the disruption budget in a zone is exceeded,
the patch job stops, because continuing to the next zone requires
completion of the patch process in the previous zone.
For example, if the disruption budget has a fixed value of 10, and 8 VMs
fail to patch in the current zone, the patch job continues to patch 2 VMs
at a time until the zone is completed. When that zone is completed
successfully, patching begins with 10 VMs at a time in the next zone. If 10
VMs in the next zone fail to patch, the patch job stops.
[[["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-12 UTC."],[[["\u003cp\u003eThis webpage provides documentation for the \u003ccode\u003ePatchRollout\u003c/code\u003e class within the Google Cloud OS Config v1 API for .NET.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003ePatchRollout\u003c/code\u003e is used to configure patch rollout specifications, including managing the concurrency control when applying patches to targeted virtual machines (VMs).\u003c/p\u003e\n"],["\u003cp\u003eThe documentation includes details on the latest version, 2.4.0, along with several previous versions of the \u003ccode\u003ePatchRollout\u003c/code\u003e class, and a history of documentation for the class.\u003c/p\u003e\n"],["\u003cp\u003eKey properties of the \u003ccode\u003ePatchRollout\u003c/code\u003e class are \u003ccode\u003eDisruptionBudget\u003c/code\u003e, which controls the maximum number or percentage of VMs that can be disrupted during patching, and \u003ccode\u003eMode\u003c/code\u003e, which specifies the rollout method.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003ePatchRollout\u003c/code\u003e has implemented interfaces such as \u003ccode\u003eIMessage\u003c/code\u003e, \u003ccode\u003eIEquatable\u003c/code\u003e, \u003ccode\u003eIDeepCloneable\u003c/code\u003e, and \u003ccode\u003eIBufferMessage\u003c/code\u003e, meaning it can integrate with protobuf messages and has methods for message equality and cloning.\u003c/p\u003e\n"]]],[],null,["# Google Cloud OS Config v1 API - Class PatchRollout (2.5.0)\n\nVersion latestkeyboard_arrow_down\n\n- [2.5.0 (latest)](/dotnet/docs/reference/Google.Cloud.OsConfig.V1/latest/Google.Cloud.OsConfig.V1.PatchRollout)\n- [2.4.0](/dotnet/docs/reference/Google.Cloud.OsConfig.V1/2.4.0/Google.Cloud.OsConfig.V1.PatchRollout)\n- [2.3.0](/dotnet/docs/reference/Google.Cloud.OsConfig.V1/2.3.0/Google.Cloud.OsConfig.V1.PatchRollout)\n- [2.2.0](/dotnet/docs/reference/Google.Cloud.OsConfig.V1/2.2.0/Google.Cloud.OsConfig.V1.PatchRollout)\n- [2.1.0](/dotnet/docs/reference/Google.Cloud.OsConfig.V1/2.1.0/Google.Cloud.OsConfig.V1.PatchRollout)\n- [2.0.0](/dotnet/docs/reference/Google.Cloud.OsConfig.V1/2.0.0/Google.Cloud.OsConfig.V1.PatchRollout)\n- [1.8.0](/dotnet/docs/reference/Google.Cloud.OsConfig.V1/1.8.0/Google.Cloud.OsConfig.V1.PatchRollout)\n- [1.7.0](/dotnet/docs/reference/Google.Cloud.OsConfig.V1/1.7.0/Google.Cloud.OsConfig.V1.PatchRollout)\n- [1.6.0](/dotnet/docs/reference/Google.Cloud.OsConfig.V1/1.6.0/Google.Cloud.OsConfig.V1.PatchRollout)\n- [1.5.0](/dotnet/docs/reference/Google.Cloud.OsConfig.V1/1.5.0/Google.Cloud.OsConfig.V1.PatchRollout)\n- [1.4.0](/dotnet/docs/reference/Google.Cloud.OsConfig.V1/1.4.0/Google.Cloud.OsConfig.V1.PatchRollout)\n- [1.3.0](/dotnet/docs/reference/Google.Cloud.OsConfig.V1/1.3.0/Google.Cloud.OsConfig.V1.PatchRollout) \n\n public sealed class PatchRollout : IMessage\u003cPatchRollout\u003e, IEquatable\u003cPatchRollout\u003e, IDeepCloneable\u003cPatchRollout\u003e, IBufferMessage, IMessage\n\nReference documentation and code samples for the Google Cloud OS Config v1 API class PatchRollout.\n\nPatch rollout configuration specifications. Contains details on the\nconcurrency control when applying patch(es) to all targeted VMs. \n\nInheritance\n-----------\n\n[object](https://learn.microsoft.com/dotnet/api/system.object) \\\u003e PatchRollout \n\nImplements\n----------\n\n[IMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IMessage-1.html)[PatchRollout](/dotnet/docs/reference/Google.Cloud.OsConfig.V1/latest/Google.Cloud.OsConfig.V1.PatchRollout), [IEquatable](https://learn.microsoft.com/dotnet/api/system.iequatable-1)[PatchRollout](/dotnet/docs/reference/Google.Cloud.OsConfig.V1/latest/Google.Cloud.OsConfig.V1.PatchRollout), [IDeepCloneable](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IDeepCloneable-1.html)[PatchRollout](/dotnet/docs/reference/Google.Cloud.OsConfig.V1/latest/Google.Cloud.OsConfig.V1.PatchRollout), [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.OsConfig.V1](/dotnet/docs/reference/Google.Cloud.OsConfig.V1/latest/Google.Cloud.OsConfig.V1)\n\nAssembly\n--------\n\nGoogle.Cloud.OsConfig.V1.dll\n\nConstructors\n------------\n\n### PatchRollout()\n\n public PatchRollout()\n\n### PatchRollout(PatchRollout)\n\n public PatchRollout(PatchRollout other)\n\nProperties\n----------\n\n### DisruptionBudget\n\n public FixedOrPercent DisruptionBudget { get; set; }\n\nThe maximum number (or percentage) of VMs per zone to disrupt at any given\nmoment. The number of VMs calculated from multiplying the percentage by the\ntotal number of VMs in a zone is rounded up.\n\nDuring patching, a VM is considered disrupted from the time the agent is\nnotified to begin until patching has completed. This disruption time\nincludes the time to complete reboot and any post-patch steps.\n\nA VM contributes to the disruption budget if its patching operation fails\neither when applying the patches, running pre or post patch steps, or if it\nfails to respond with a success notification before timing out. VMs that\nare not running or do not have an active agent do not count toward this\ndisruption budget.\n\nFor zone-by-zone rollouts, if the disruption budget in a zone is exceeded,\nthe patch job stops, because continuing to the next zone requires\ncompletion of the patch process in the previous zone.\n\nFor example, if the disruption budget has a fixed value of `10`, and 8 VMs\nfail to patch in the current zone, the patch job continues to patch 2 VMs\nat a time until the zone is completed. When that zone is completed\nsuccessfully, patching begins with 10 VMs at a time in the next zone. If 10\nVMs in the next zone fail to patch, the patch job stops.\n\n### Mode\n\n public PatchRollout.Types.Mode Mode { get; set; }\n\nMode of the patch rollout."]]