<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="osconfig_v1.html">OS Config API</a> . <a href="osconfig_v1.projects.html">projects</a> . <a href="osconfig_v1.projects.patchJobs.html">patchJobs</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="osconfig_v1.projects.patchJobs.instanceDetails.html">instanceDetails()</a></code>
</p>
<p class="firstline">Returns the instanceDetails Resource.</p>

<p class="toc_element">
  <code><a href="#cancel">cancel(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Cancel a patch job. The patch job must be active. Canceled patch jobs cannot be restarted.</p>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#execute">execute(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Patch VM instances by creating and running a patch job.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Get the patch job. This can be used to track the progress of an ongoing patch job or review the details of completed jobs.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Get a list of patch jobs.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="cancel">cancel(name, body=None, x__xgafv=None)</code>
  <pre>Cancel a patch job. The patch job must be active. Canceled patch jobs cannot be restarted.

Args:
  name: string, Required. Name of the patch in the form `projects/*/patchJobs/*` (required)
  body: object, The request body.
    The object takes the form of:

{ # Message for canceling a patch job.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A high level representation of a patch job that is either in progress or has completed. Instance details are not included in the job. To paginate through instance details, use ListPatchJobInstanceDetails. For more information about patch jobs, see [Creating patch jobs](https://cloud.google.com/compute/docs/os-patch-management/create-patch-job).
  &quot;createTime&quot;: &quot;A String&quot;, # Time this patch job was created.
  &quot;description&quot;: &quot;A String&quot;, # Description of the patch job. Length of the description is limited to 1024 characters.
  &quot;displayName&quot;: &quot;A String&quot;, # Display name for this patch job. This is not a unique identifier.
  &quot;dryRun&quot;: True or False, # If this patch job is a dry run, the agent reports that it has finished without running any updates on the VM instance.
  &quot;duration&quot;: &quot;A String&quot;, # Duration of the patch job. After the duration ends, the patch job times out.
  &quot;errorMessage&quot;: &quot;A String&quot;, # If this patch job failed, this message provides information about the failure.
  &quot;instanceDetailsSummary&quot;: { # A summary of the current patch state across all instances that this patch job affects. Contains counts of instances in different states. These states map to `InstancePatchState`. List patch job instance details to see the specific states of each instance. # Summary of instance details.
    &quot;ackedInstanceCount&quot;: &quot;A String&quot;, # Number of instances that have acked and will start shortly.
    &quot;applyingPatchesInstanceCount&quot;: &quot;A String&quot;, # Number of instances that are applying patches.
    &quot;downloadingPatchesInstanceCount&quot;: &quot;A String&quot;, # Number of instances that are downloading patches.
    &quot;failedInstanceCount&quot;: &quot;A String&quot;, # Number of instances that failed.
    &quot;inactiveInstanceCount&quot;: &quot;A String&quot;, # Number of instances that are inactive.
    &quot;noAgentDetectedInstanceCount&quot;: &quot;A String&quot;, # Number of instances that do not appear to be running the agent. Check to ensure that the agent is installed, running, and able to communicate with the service.
    &quot;notifiedInstanceCount&quot;: &quot;A String&quot;, # Number of instances notified about patch job.
    &quot;pendingInstanceCount&quot;: &quot;A String&quot;, # Number of instances pending patch job.
    &quot;postPatchStepInstanceCount&quot;: &quot;A String&quot;, # Number of instances that are running the post-patch step.
    &quot;prePatchStepInstanceCount&quot;: &quot;A String&quot;, # Number of instances that are running the pre-patch step.
    &quot;rebootingInstanceCount&quot;: &quot;A String&quot;, # Number of instances rebooting.
    &quot;startedInstanceCount&quot;: &quot;A String&quot;, # Number of instances that have started.
    &quot;succeededInstanceCount&quot;: &quot;A String&quot;, # Number of instances that have completed successfully.
    &quot;succeededRebootRequiredInstanceCount&quot;: &quot;A String&quot;, # Number of instances that require reboot.
    &quot;timedOutInstanceCount&quot;: &quot;A String&quot;, # Number of instances that exceeded the time out while applying the patch.
  },
  &quot;instanceFilter&quot;: { # A filter to target VM instances for patching. The targeted VMs must meet all criteria specified. So if both labels and zones are specified, the patch job targets only VMs with those labels and in those zones. # Instances to patch.
    &quot;all&quot;: True or False, # Target all VM instances in the project. If true, no other criteria is permitted.
    &quot;groupLabels&quot;: [ # Targets VM instances matching ANY of these GroupLabels. This allows targeting of disparate groups of VM instances.
      { # Targets a group of VM instances by using their [assigned labels](https://cloud.google.com/compute/docs/labeling-resources). Labels are key-value pairs. A `GroupLabel` is a combination of labels that is used to target VMs for a patch job. For example, a patch job can target VMs that have the following `GroupLabel`: `{&quot;env&quot;:&quot;test&quot;, &quot;app&quot;:&quot;web&quot;}`. This means that the patch job is applied to VMs that have both the labels `env=test` and `app=web`.
        &quot;labels&quot;: { # Compute Engine instance labels that must be present for a VM instance to be targeted by this filter.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
    ],
    &quot;instanceNamePrefixes&quot;: [ # Targets VMs whose name starts with one of these prefixes. Similar to labels, this is another way to group VMs when targeting configs, for example prefix=&quot;prod-&quot;.
      &quot;A String&quot;,
    ],
    &quot;instances&quot;: [ # Targets any of the VM instances specified. Instances are specified by their URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`, `projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]`, or `https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]`
      &quot;A String&quot;,
    ],
    &quot;zones&quot;: [ # Targets VM instances in ANY of these zones. Leave empty to target VM instances in any zone.
      &quot;A String&quot;,
    ],
  },
  &quot;name&quot;: &quot;A String&quot;, # Unique identifier for this patch job in the form `projects/*/patchJobs/*`
  &quot;patchConfig&quot;: { # Patch configuration specifications. Contains details on how to apply the patch(es) to a VM instance. # Patch configuration being applied.
    &quot;apt&quot;: { # Apt patching is completed by executing `apt-get update &amp;&amp; apt-get upgrade`. Additional options can be set to control how this is executed. # Apt update settings. Use this setting to override the default `apt` patch rules.
      &quot;excludes&quot;: [ # List of packages to exclude from update. These packages will be excluded
        &quot;A String&quot;,
      ],
      &quot;exclusivePackages&quot;: [ # An exclusive list of packages to be updated. These are the only packages that will be updated. If these packages are not installed, they will be ignored. This field cannot be specified with any other patch configuration fields.
        &quot;A String&quot;,
      ],
      &quot;type&quot;: &quot;A String&quot;, # By changing the type to DIST, the patching is performed using `apt-get dist-upgrade` instead.
    },
    &quot;goo&quot;: { # Googet patching is performed by running `googet update`. # Goo update settings. Use this setting to override the default `goo` patch rules.
    },
    &quot;postStep&quot;: { # A step that runs an executable for a PatchJob. # The `ExecStep` to run after the patch update.
      &quot;linuxExecStepConfig&quot;: { # Common configurations for an ExecStep. # The ExecStepConfig for all Linux VMs targeted by the PatchJob.
        &quot;allowedSuccessCodes&quot;: [ # Defaults to [0]. A list of possible return values that the execution can return to indicate a success.
          42,
        ],
        &quot;gcsObject&quot;: { # Cloud Storage object representation. # A Cloud Storage object containing the executable.
          &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
          &quot;generationNumber&quot;: &quot;A String&quot;, # Required. Generation number of the Cloud Storage object. This is used to ensure that the ExecStep specified by this PatchJob does not change.
          &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
        },
        &quot;interpreter&quot;: &quot;A String&quot;, # The script interpreter to use to run the script. If no interpreter is specified the script will be executed directly, which will likely only succeed for scripts with [shebang lines] (https://en.wikipedia.org/wiki/Shebang_\(Unix\)).
        &quot;localPath&quot;: &quot;A String&quot;, # An absolute path to the executable on the VM.
      },
      &quot;windowsExecStepConfig&quot;: { # Common configurations for an ExecStep. # The ExecStepConfig for all Windows VMs targeted by the PatchJob.
        &quot;allowedSuccessCodes&quot;: [ # Defaults to [0]. A list of possible return values that the execution can return to indicate a success.
          42,
        ],
        &quot;gcsObject&quot;: { # Cloud Storage object representation. # A Cloud Storage object containing the executable.
          &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
          &quot;generationNumber&quot;: &quot;A String&quot;, # Required. Generation number of the Cloud Storage object. This is used to ensure that the ExecStep specified by this PatchJob does not change.
          &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
        },
        &quot;interpreter&quot;: &quot;A String&quot;, # The script interpreter to use to run the script. If no interpreter is specified the script will be executed directly, which will likely only succeed for scripts with [shebang lines] (https://en.wikipedia.org/wiki/Shebang_\(Unix\)).
        &quot;localPath&quot;: &quot;A String&quot;, # An absolute path to the executable on the VM.
      },
    },
    &quot;preStep&quot;: { # A step that runs an executable for a PatchJob. # The `ExecStep` to run before the patch update.
      &quot;linuxExecStepConfig&quot;: { # Common configurations for an ExecStep. # The ExecStepConfig for all Linux VMs targeted by the PatchJob.
        &quot;allowedSuccessCodes&quot;: [ # Defaults to [0]. A list of possible return values that the execution can return to indicate a success.
          42,
        ],
        &quot;gcsObject&quot;: { # Cloud Storage object representation. # A Cloud Storage object containing the executable.
          &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
          &quot;generationNumber&quot;: &quot;A String&quot;, # Required. Generation number of the Cloud Storage object. This is used to ensure that the ExecStep specified by this PatchJob does not change.
          &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
        },
        &quot;interpreter&quot;: &quot;A String&quot;, # The script interpreter to use to run the script. If no interpreter is specified the script will be executed directly, which will likely only succeed for scripts with [shebang lines] (https://en.wikipedia.org/wiki/Shebang_\(Unix\)).
        &quot;localPath&quot;: &quot;A String&quot;, # An absolute path to the executable on the VM.
      },
      &quot;windowsExecStepConfig&quot;: { # Common configurations for an ExecStep. # The ExecStepConfig for all Windows VMs targeted by the PatchJob.
        &quot;allowedSuccessCodes&quot;: [ # Defaults to [0]. A list of possible return values that the execution can return to indicate a success.
          42,
        ],
        &quot;gcsObject&quot;: { # Cloud Storage object representation. # A Cloud Storage object containing the executable.
          &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
          &quot;generationNumber&quot;: &quot;A String&quot;, # Required. Generation number of the Cloud Storage object. This is used to ensure that the ExecStep specified by this PatchJob does not change.
          &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
        },
        &quot;interpreter&quot;: &quot;A String&quot;, # The script interpreter to use to run the script. If no interpreter is specified the script will be executed directly, which will likely only succeed for scripts with [shebang lines] (https://en.wikipedia.org/wiki/Shebang_\(Unix\)).
        &quot;localPath&quot;: &quot;A String&quot;, # An absolute path to the executable on the VM.
      },
    },
    &quot;rebootConfig&quot;: &quot;A String&quot;, # Post-patch reboot settings.
    &quot;windowsUpdate&quot;: { # Windows patching is performed using the Windows Update Agent. # Windows update settings. Use this override the default windows patch rules.
      &quot;classifications&quot;: [ # Only apply updates of these windows update classifications. If empty, all updates are applied.
        &quot;A String&quot;,
      ],
      &quot;excludes&quot;: [ # List of KBs to exclude from update.
        &quot;A String&quot;,
      ],
      &quot;exclusivePatches&quot;: [ # An exclusive list of kbs to be updated. These are the only patches that will be updated. This field must not be used with other patch configurations.
        &quot;A String&quot;,
      ],
    },
    &quot;yum&quot;: { # Yum patching is performed by executing `yum update`. Additional options can be set to control how this is executed. Note that not all settings are supported on all platforms. # Yum update settings. Use this setting to override the default `yum` patch rules.
      &quot;excludes&quot;: [ # List of packages to exclude from update. These packages are excluded by using the yum `--exclude` flag.
        &quot;A String&quot;,
      ],
      &quot;exclusivePackages&quot;: [ # An exclusive list of packages to be updated. These are the only packages that will be updated. If these packages are not installed, they will be ignored. This field must not be specified with any other patch configuration fields.
        &quot;A String&quot;,
      ],
      &quot;minimal&quot;: True or False, # Will cause patch to run `yum update-minimal` instead.
      &quot;security&quot;: True or False, # Adds the `--security` flag to `yum update`. Not supported on all platforms.
    },
    &quot;zypper&quot;: { # Zypper patching is performed by running `zypper patch`. See also https://en.opensuse.org/SDB:Zypper_manual. # Zypper update settings. Use this setting to override the default `zypper` patch rules.
      &quot;categories&quot;: [ # Install only patches with these categories. Common categories include security, recommended, and feature.
        &quot;A String&quot;,
      ],
      &quot;excludes&quot;: [ # List of patches to exclude from update.
        &quot;A String&quot;,
      ],
      &quot;exclusivePatches&quot;: [ # An exclusive list of patches to be updated. These are the only patches that will be installed using &#x27;zypper patch patch:&#x27; command. This field must not be used with any other patch configuration fields.
        &quot;A String&quot;,
      ],
      &quot;severities&quot;: [ # Install only patches with these severities. Common severities include critical, important, moderate, and low.
        &quot;A String&quot;,
      ],
      &quot;withOptional&quot;: True or False, # Adds the `--with-optional` flag to `zypper patch`.
      &quot;withUpdate&quot;: True or False, # Adds the `--with-update` flag, to `zypper patch`.
    },
  },
  &quot;patchDeployment&quot;: &quot;A String&quot;, # Output only. Name of the patch deployment that created this patch job.
  &quot;percentComplete&quot;: 3.14, # Reflects the overall progress of the patch job in the range of 0.0 being no progress to 100.0 being complete.
  &quot;rollout&quot;: { # Patch rollout configuration specifications. Contains details on the concurrency control when applying patch(es) to all targeted VMs. # Rollout strategy being applied.
    &quot;disruptionBudget&quot;: { # Message encapsulating a value that can be either absolute (&quot;fixed&quot;) or relative (&quot;percent&quot;) to a value. # 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.
      &quot;fixed&quot;: 42, # Specifies a fixed value.
      &quot;percent&quot;: 42, # Specifies the relative value defined as a percentage, which will be multiplied by a reference value.
    },
    &quot;mode&quot;: &quot;A String&quot;, # Mode of the patch rollout.
  },
  &quot;state&quot;: &quot;A String&quot;, # The current state of the PatchJob.
  &quot;updateTime&quot;: &quot;A String&quot;, # Last time this patch job was updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="execute">execute(parent, body=None, x__xgafv=None)</code>
  <pre>Patch VM instances by creating and running a patch job.

Args:
  parent: string, Required. The project in which to run this patch in the form `projects/*` (required)
  body: object, The request body.
    The object takes the form of:

{ # A request message to initiate patching across Compute Engine instances.
  &quot;description&quot;: &quot;A String&quot;, # Description of the patch job. Length of the description is limited to 1024 characters.
  &quot;displayName&quot;: &quot;A String&quot;, # Display name for this patch job. This does not have to be unique.
  &quot;dryRun&quot;: True or False, # If this patch is a dry-run only, instances are contacted but will do nothing.
  &quot;duration&quot;: &quot;A String&quot;, # Duration of the patch job. After the duration ends, the patch job times out.
  &quot;instanceFilter&quot;: { # A filter to target VM instances for patching. The targeted VMs must meet all criteria specified. So if both labels and zones are specified, the patch job targets only VMs with those labels and in those zones. # Required. Instances to patch, either explicitly or filtered by some criteria such as zone or labels.
    &quot;all&quot;: True or False, # Target all VM instances in the project. If true, no other criteria is permitted.
    &quot;groupLabels&quot;: [ # Targets VM instances matching ANY of these GroupLabels. This allows targeting of disparate groups of VM instances.
      { # Targets a group of VM instances by using their [assigned labels](https://cloud.google.com/compute/docs/labeling-resources). Labels are key-value pairs. A `GroupLabel` is a combination of labels that is used to target VMs for a patch job. For example, a patch job can target VMs that have the following `GroupLabel`: `{&quot;env&quot;:&quot;test&quot;, &quot;app&quot;:&quot;web&quot;}`. This means that the patch job is applied to VMs that have both the labels `env=test` and `app=web`.
        &quot;labels&quot;: { # Compute Engine instance labels that must be present for a VM instance to be targeted by this filter.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
    ],
    &quot;instanceNamePrefixes&quot;: [ # Targets VMs whose name starts with one of these prefixes. Similar to labels, this is another way to group VMs when targeting configs, for example prefix=&quot;prod-&quot;.
      &quot;A String&quot;,
    ],
    &quot;instances&quot;: [ # Targets any of the VM instances specified. Instances are specified by their URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`, `projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]`, or `https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]`
      &quot;A String&quot;,
    ],
    &quot;zones&quot;: [ # Targets VM instances in ANY of these zones. Leave empty to target VM instances in any zone.
      &quot;A String&quot;,
    ],
  },
  &quot;patchConfig&quot;: { # Patch configuration specifications. Contains details on how to apply the patch(es) to a VM instance. # Patch configuration being applied. If omitted, instances are patched using the default configurations.
    &quot;apt&quot;: { # Apt patching is completed by executing `apt-get update &amp;&amp; apt-get upgrade`. Additional options can be set to control how this is executed. # Apt update settings. Use this setting to override the default `apt` patch rules.
      &quot;excludes&quot;: [ # List of packages to exclude from update. These packages will be excluded
        &quot;A String&quot;,
      ],
      &quot;exclusivePackages&quot;: [ # An exclusive list of packages to be updated. These are the only packages that will be updated. If these packages are not installed, they will be ignored. This field cannot be specified with any other patch configuration fields.
        &quot;A String&quot;,
      ],
      &quot;type&quot;: &quot;A String&quot;, # By changing the type to DIST, the patching is performed using `apt-get dist-upgrade` instead.
    },
    &quot;goo&quot;: { # Googet patching is performed by running `googet update`. # Goo update settings. Use this setting to override the default `goo` patch rules.
    },
    &quot;postStep&quot;: { # A step that runs an executable for a PatchJob. # The `ExecStep` to run after the patch update.
      &quot;linuxExecStepConfig&quot;: { # Common configurations for an ExecStep. # The ExecStepConfig for all Linux VMs targeted by the PatchJob.
        &quot;allowedSuccessCodes&quot;: [ # Defaults to [0]. A list of possible return values that the execution can return to indicate a success.
          42,
        ],
        &quot;gcsObject&quot;: { # Cloud Storage object representation. # A Cloud Storage object containing the executable.
          &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
          &quot;generationNumber&quot;: &quot;A String&quot;, # Required. Generation number of the Cloud Storage object. This is used to ensure that the ExecStep specified by this PatchJob does not change.
          &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
        },
        &quot;interpreter&quot;: &quot;A String&quot;, # The script interpreter to use to run the script. If no interpreter is specified the script will be executed directly, which will likely only succeed for scripts with [shebang lines] (https://en.wikipedia.org/wiki/Shebang_\(Unix\)).
        &quot;localPath&quot;: &quot;A String&quot;, # An absolute path to the executable on the VM.
      },
      &quot;windowsExecStepConfig&quot;: { # Common configurations for an ExecStep. # The ExecStepConfig for all Windows VMs targeted by the PatchJob.
        &quot;allowedSuccessCodes&quot;: [ # Defaults to [0]. A list of possible return values that the execution can return to indicate a success.
          42,
        ],
        &quot;gcsObject&quot;: { # Cloud Storage object representation. # A Cloud Storage object containing the executable.
          &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
          &quot;generationNumber&quot;: &quot;A String&quot;, # Required. Generation number of the Cloud Storage object. This is used to ensure that the ExecStep specified by this PatchJob does not change.
          &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
        },
        &quot;interpreter&quot;: &quot;A String&quot;, # The script interpreter to use to run the script. If no interpreter is specified the script will be executed directly, which will likely only succeed for scripts with [shebang lines] (https://en.wikipedia.org/wiki/Shebang_\(Unix\)).
        &quot;localPath&quot;: &quot;A String&quot;, # An absolute path to the executable on the VM.
      },
    },
    &quot;preStep&quot;: { # A step that runs an executable for a PatchJob. # The `ExecStep` to run before the patch update.
      &quot;linuxExecStepConfig&quot;: { # Common configurations for an ExecStep. # The ExecStepConfig for all Linux VMs targeted by the PatchJob.
        &quot;allowedSuccessCodes&quot;: [ # Defaults to [0]. A list of possible return values that the execution can return to indicate a success.
          42,
        ],
        &quot;gcsObject&quot;: { # Cloud Storage object representation. # A Cloud Storage object containing the executable.
          &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
          &quot;generationNumber&quot;: &quot;A String&quot;, # Required. Generation number of the Cloud Storage object. This is used to ensure that the ExecStep specified by this PatchJob does not change.
          &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
        },
        &quot;interpreter&quot;: &quot;A String&quot;, # The script interpreter to use to run the script. If no interpreter is specified the script will be executed directly, which will likely only succeed for scripts with [shebang lines] (https://en.wikipedia.org/wiki/Shebang_\(Unix\)).
        &quot;localPath&quot;: &quot;A String&quot;, # An absolute path to the executable on the VM.
      },
      &quot;windowsExecStepConfig&quot;: { # Common configurations for an ExecStep. # The ExecStepConfig for all Windows VMs targeted by the PatchJob.
        &quot;allowedSuccessCodes&quot;: [ # Defaults to [0]. A list of possible return values that the execution can return to indicate a success.
          42,
        ],
        &quot;gcsObject&quot;: { # Cloud Storage object representation. # A Cloud Storage object containing the executable.
          &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
          &quot;generationNumber&quot;: &quot;A String&quot;, # Required. Generation number of the Cloud Storage object. This is used to ensure that the ExecStep specified by this PatchJob does not change.
          &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
        },
        &quot;interpreter&quot;: &quot;A String&quot;, # The script interpreter to use to run the script. If no interpreter is specified the script will be executed directly, which will likely only succeed for scripts with [shebang lines] (https://en.wikipedia.org/wiki/Shebang_\(Unix\)).
        &quot;localPath&quot;: &quot;A String&quot;, # An absolute path to the executable on the VM.
      },
    },
    &quot;rebootConfig&quot;: &quot;A String&quot;, # Post-patch reboot settings.
    &quot;windowsUpdate&quot;: { # Windows patching is performed using the Windows Update Agent. # Windows update settings. Use this override the default windows patch rules.
      &quot;classifications&quot;: [ # Only apply updates of these windows update classifications. If empty, all updates are applied.
        &quot;A String&quot;,
      ],
      &quot;excludes&quot;: [ # List of KBs to exclude from update.
        &quot;A String&quot;,
      ],
      &quot;exclusivePatches&quot;: [ # An exclusive list of kbs to be updated. These are the only patches that will be updated. This field must not be used with other patch configurations.
        &quot;A String&quot;,
      ],
    },
    &quot;yum&quot;: { # Yum patching is performed by executing `yum update`. Additional options can be set to control how this is executed. Note that not all settings are supported on all platforms. # Yum update settings. Use this setting to override the default `yum` patch rules.
      &quot;excludes&quot;: [ # List of packages to exclude from update. These packages are excluded by using the yum `--exclude` flag.
        &quot;A String&quot;,
      ],
      &quot;exclusivePackages&quot;: [ # An exclusive list of packages to be updated. These are the only packages that will be updated. If these packages are not installed, they will be ignored. This field must not be specified with any other patch configuration fields.
        &quot;A String&quot;,
      ],
      &quot;minimal&quot;: True or False, # Will cause patch to run `yum update-minimal` instead.
      &quot;security&quot;: True or False, # Adds the `--security` flag to `yum update`. Not supported on all platforms.
    },
    &quot;zypper&quot;: { # Zypper patching is performed by running `zypper patch`. See also https://en.opensuse.org/SDB:Zypper_manual. # Zypper update settings. Use this setting to override the default `zypper` patch rules.
      &quot;categories&quot;: [ # Install only patches with these categories. Common categories include security, recommended, and feature.
        &quot;A String&quot;,
      ],
      &quot;excludes&quot;: [ # List of patches to exclude from update.
        &quot;A String&quot;,
      ],
      &quot;exclusivePatches&quot;: [ # An exclusive list of patches to be updated. These are the only patches that will be installed using &#x27;zypper patch patch:&#x27; command. This field must not be used with any other patch configuration fields.
        &quot;A String&quot;,
      ],
      &quot;severities&quot;: [ # Install only patches with these severities. Common severities include critical, important, moderate, and low.
        &quot;A String&quot;,
      ],
      &quot;withOptional&quot;: True or False, # Adds the `--with-optional` flag to `zypper patch`.
      &quot;withUpdate&quot;: True or False, # Adds the `--with-update` flag, to `zypper patch`.
    },
  },
  &quot;rollout&quot;: { # Patch rollout configuration specifications. Contains details on the concurrency control when applying patch(es) to all targeted VMs. # Rollout strategy of the patch job.
    &quot;disruptionBudget&quot;: { # Message encapsulating a value that can be either absolute (&quot;fixed&quot;) or relative (&quot;percent&quot;) to a value. # 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.
      &quot;fixed&quot;: 42, # Specifies a fixed value.
      &quot;percent&quot;: 42, # Specifies the relative value defined as a percentage, which will be multiplied by a reference value.
    },
    &quot;mode&quot;: &quot;A String&quot;, # Mode of the patch rollout.
  },
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A high level representation of a patch job that is either in progress or has completed. Instance details are not included in the job. To paginate through instance details, use ListPatchJobInstanceDetails. For more information about patch jobs, see [Creating patch jobs](https://cloud.google.com/compute/docs/os-patch-management/create-patch-job).
  &quot;createTime&quot;: &quot;A String&quot;, # Time this patch job was created.
  &quot;description&quot;: &quot;A String&quot;, # Description of the patch job. Length of the description is limited to 1024 characters.
  &quot;displayName&quot;: &quot;A String&quot;, # Display name for this patch job. This is not a unique identifier.
  &quot;dryRun&quot;: True or False, # If this patch job is a dry run, the agent reports that it has finished without running any updates on the VM instance.
  &quot;duration&quot;: &quot;A String&quot;, # Duration of the patch job. After the duration ends, the patch job times out.
  &quot;errorMessage&quot;: &quot;A String&quot;, # If this patch job failed, this message provides information about the failure.
  &quot;instanceDetailsSummary&quot;: { # A summary of the current patch state across all instances that this patch job affects. Contains counts of instances in different states. These states map to `InstancePatchState`. List patch job instance details to see the specific states of each instance. # Summary of instance details.
    &quot;ackedInstanceCount&quot;: &quot;A String&quot;, # Number of instances that have acked and will start shortly.
    &quot;applyingPatchesInstanceCount&quot;: &quot;A String&quot;, # Number of instances that are applying patches.
    &quot;downloadingPatchesInstanceCount&quot;: &quot;A String&quot;, # Number of instances that are downloading patches.
    &quot;failedInstanceCount&quot;: &quot;A String&quot;, # Number of instances that failed.
    &quot;inactiveInstanceCount&quot;: &quot;A String&quot;, # Number of instances that are inactive.
    &quot;noAgentDetectedInstanceCount&quot;: &quot;A String&quot;, # Number of instances that do not appear to be running the agent. Check to ensure that the agent is installed, running, and able to communicate with the service.
    &quot;notifiedInstanceCount&quot;: &quot;A String&quot;, # Number of instances notified about patch job.
    &quot;pendingInstanceCount&quot;: &quot;A String&quot;, # Number of instances pending patch job.
    &quot;postPatchStepInstanceCount&quot;: &quot;A String&quot;, # Number of instances that are running the post-patch step.
    &quot;prePatchStepInstanceCount&quot;: &quot;A String&quot;, # Number of instances that are running the pre-patch step.
    &quot;rebootingInstanceCount&quot;: &quot;A String&quot;, # Number of instances rebooting.
    &quot;startedInstanceCount&quot;: &quot;A String&quot;, # Number of instances that have started.
    &quot;succeededInstanceCount&quot;: &quot;A String&quot;, # Number of instances that have completed successfully.
    &quot;succeededRebootRequiredInstanceCount&quot;: &quot;A String&quot;, # Number of instances that require reboot.
    &quot;timedOutInstanceCount&quot;: &quot;A String&quot;, # Number of instances that exceeded the time out while applying the patch.
  },
  &quot;instanceFilter&quot;: { # A filter to target VM instances for patching. The targeted VMs must meet all criteria specified. So if both labels and zones are specified, the patch job targets only VMs with those labels and in those zones. # Instances to patch.
    &quot;all&quot;: True or False, # Target all VM instances in the project. If true, no other criteria is permitted.
    &quot;groupLabels&quot;: [ # Targets VM instances matching ANY of these GroupLabels. This allows targeting of disparate groups of VM instances.
      { # Targets a group of VM instances by using their [assigned labels](https://cloud.google.com/compute/docs/labeling-resources). Labels are key-value pairs. A `GroupLabel` is a combination of labels that is used to target VMs for a patch job. For example, a patch job can target VMs that have the following `GroupLabel`: `{&quot;env&quot;:&quot;test&quot;, &quot;app&quot;:&quot;web&quot;}`. This means that the patch job is applied to VMs that have both the labels `env=test` and `app=web`.
        &quot;labels&quot;: { # Compute Engine instance labels that must be present for a VM instance to be targeted by this filter.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
    ],
    &quot;instanceNamePrefixes&quot;: [ # Targets VMs whose name starts with one of these prefixes. Similar to labels, this is another way to group VMs when targeting configs, for example prefix=&quot;prod-&quot;.
      &quot;A String&quot;,
    ],
    &quot;instances&quot;: [ # Targets any of the VM instances specified. Instances are specified by their URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`, `projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]`, or `https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]`
      &quot;A String&quot;,
    ],
    &quot;zones&quot;: [ # Targets VM instances in ANY of these zones. Leave empty to target VM instances in any zone.
      &quot;A String&quot;,
    ],
  },
  &quot;name&quot;: &quot;A String&quot;, # Unique identifier for this patch job in the form `projects/*/patchJobs/*`
  &quot;patchConfig&quot;: { # Patch configuration specifications. Contains details on how to apply the patch(es) to a VM instance. # Patch configuration being applied.
    &quot;apt&quot;: { # Apt patching is completed by executing `apt-get update &amp;&amp; apt-get upgrade`. Additional options can be set to control how this is executed. # Apt update settings. Use this setting to override the default `apt` patch rules.
      &quot;excludes&quot;: [ # List of packages to exclude from update. These packages will be excluded
        &quot;A String&quot;,
      ],
      &quot;exclusivePackages&quot;: [ # An exclusive list of packages to be updated. These are the only packages that will be updated. If these packages are not installed, they will be ignored. This field cannot be specified with any other patch configuration fields.
        &quot;A String&quot;,
      ],
      &quot;type&quot;: &quot;A String&quot;, # By changing the type to DIST, the patching is performed using `apt-get dist-upgrade` instead.
    },
    &quot;goo&quot;: { # Googet patching is performed by running `googet update`. # Goo update settings. Use this setting to override the default `goo` patch rules.
    },
    &quot;postStep&quot;: { # A step that runs an executable for a PatchJob. # The `ExecStep` to run after the patch update.
      &quot;linuxExecStepConfig&quot;: { # Common configurations for an ExecStep. # The ExecStepConfig for all Linux VMs targeted by the PatchJob.
        &quot;allowedSuccessCodes&quot;: [ # Defaults to [0]. A list of possible return values that the execution can return to indicate a success.
          42,
        ],
        &quot;gcsObject&quot;: { # Cloud Storage object representation. # A Cloud Storage object containing the executable.
          &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
          &quot;generationNumber&quot;: &quot;A String&quot;, # Required. Generation number of the Cloud Storage object. This is used to ensure that the ExecStep specified by this PatchJob does not change.
          &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
        },
        &quot;interpreter&quot;: &quot;A String&quot;, # The script interpreter to use to run the script. If no interpreter is specified the script will be executed directly, which will likely only succeed for scripts with [shebang lines] (https://en.wikipedia.org/wiki/Shebang_\(Unix\)).
        &quot;localPath&quot;: &quot;A String&quot;, # An absolute path to the executable on the VM.
      },
      &quot;windowsExecStepConfig&quot;: { # Common configurations for an ExecStep. # The ExecStepConfig for all Windows VMs targeted by the PatchJob.
        &quot;allowedSuccessCodes&quot;: [ # Defaults to [0]. A list of possible return values that the execution can return to indicate a success.
          42,
        ],
        &quot;gcsObject&quot;: { # Cloud Storage object representation. # A Cloud Storage object containing the executable.
          &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
          &quot;generationNumber&quot;: &quot;A String&quot;, # Required. Generation number of the Cloud Storage object. This is used to ensure that the ExecStep specified by this PatchJob does not change.
          &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
        },
        &quot;interpreter&quot;: &quot;A String&quot;, # The script interpreter to use to run the script. If no interpreter is specified the script will be executed directly, which will likely only succeed for scripts with [shebang lines] (https://en.wikipedia.org/wiki/Shebang_\(Unix\)).
        &quot;localPath&quot;: &quot;A String&quot;, # An absolute path to the executable on the VM.
      },
    },
    &quot;preStep&quot;: { # A step that runs an executable for a PatchJob. # The `ExecStep` to run before the patch update.
      &quot;linuxExecStepConfig&quot;: { # Common configurations for an ExecStep. # The ExecStepConfig for all Linux VMs targeted by the PatchJob.
        &quot;allowedSuccessCodes&quot;: [ # Defaults to [0]. A list of possible return values that the execution can return to indicate a success.
          42,
        ],
        &quot;gcsObject&quot;: { # Cloud Storage object representation. # A Cloud Storage object containing the executable.
          &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
          &quot;generationNumber&quot;: &quot;A String&quot;, # Required. Generation number of the Cloud Storage object. This is used to ensure that the ExecStep specified by this PatchJob does not change.
          &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
        },
        &quot;interpreter&quot;: &quot;A String&quot;, # The script interpreter to use to run the script. If no interpreter is specified the script will be executed directly, which will likely only succeed for scripts with [shebang lines] (https://en.wikipedia.org/wiki/Shebang_\(Unix\)).
        &quot;localPath&quot;: &quot;A String&quot;, # An absolute path to the executable on the VM.
      },
      &quot;windowsExecStepConfig&quot;: { # Common configurations for an ExecStep. # The ExecStepConfig for all Windows VMs targeted by the PatchJob.
        &quot;allowedSuccessCodes&quot;: [ # Defaults to [0]. A list of possible return values that the execution can return to indicate a success.
          42,
        ],
        &quot;gcsObject&quot;: { # Cloud Storage object representation. # A Cloud Storage object containing the executable.
          &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
          &quot;generationNumber&quot;: &quot;A String&quot;, # Required. Generation number of the Cloud Storage object. This is used to ensure that the ExecStep specified by this PatchJob does not change.
          &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
        },
        &quot;interpreter&quot;: &quot;A String&quot;, # The script interpreter to use to run the script. If no interpreter is specified the script will be executed directly, which will likely only succeed for scripts with [shebang lines] (https://en.wikipedia.org/wiki/Shebang_\(Unix\)).
        &quot;localPath&quot;: &quot;A String&quot;, # An absolute path to the executable on the VM.
      },
    },
    &quot;rebootConfig&quot;: &quot;A String&quot;, # Post-patch reboot settings.
    &quot;windowsUpdate&quot;: { # Windows patching is performed using the Windows Update Agent. # Windows update settings. Use this override the default windows patch rules.
      &quot;classifications&quot;: [ # Only apply updates of these windows update classifications. If empty, all updates are applied.
        &quot;A String&quot;,
      ],
      &quot;excludes&quot;: [ # List of KBs to exclude from update.
        &quot;A String&quot;,
      ],
      &quot;exclusivePatches&quot;: [ # An exclusive list of kbs to be updated. These are the only patches that will be updated. This field must not be used with other patch configurations.
        &quot;A String&quot;,
      ],
    },
    &quot;yum&quot;: { # Yum patching is performed by executing `yum update`. Additional options can be set to control how this is executed. Note that not all settings are supported on all platforms. # Yum update settings. Use this setting to override the default `yum` patch rules.
      &quot;excludes&quot;: [ # List of packages to exclude from update. These packages are excluded by using the yum `--exclude` flag.
        &quot;A String&quot;,
      ],
      &quot;exclusivePackages&quot;: [ # An exclusive list of packages to be updated. These are the only packages that will be updated. If these packages are not installed, they will be ignored. This field must not be specified with any other patch configuration fields.
        &quot;A String&quot;,
      ],
      &quot;minimal&quot;: True or False, # Will cause patch to run `yum update-minimal` instead.
      &quot;security&quot;: True or False, # Adds the `--security` flag to `yum update`. Not supported on all platforms.
    },
    &quot;zypper&quot;: { # Zypper patching is performed by running `zypper patch`. See also https://en.opensuse.org/SDB:Zypper_manual. # Zypper update settings. Use this setting to override the default `zypper` patch rules.
      &quot;categories&quot;: [ # Install only patches with these categories. Common categories include security, recommended, and feature.
        &quot;A String&quot;,
      ],
      &quot;excludes&quot;: [ # List of patches to exclude from update.
        &quot;A String&quot;,
      ],
      &quot;exclusivePatches&quot;: [ # An exclusive list of patches to be updated. These are the only patches that will be installed using &#x27;zypper patch patch:&#x27; command. This field must not be used with any other patch configuration fields.
        &quot;A String&quot;,
      ],
      &quot;severities&quot;: [ # Install only patches with these severities. Common severities include critical, important, moderate, and low.
        &quot;A String&quot;,
      ],
      &quot;withOptional&quot;: True or False, # Adds the `--with-optional` flag to `zypper patch`.
      &quot;withUpdate&quot;: True or False, # Adds the `--with-update` flag, to `zypper patch`.
    },
  },
  &quot;patchDeployment&quot;: &quot;A String&quot;, # Output only. Name of the patch deployment that created this patch job.
  &quot;percentComplete&quot;: 3.14, # Reflects the overall progress of the patch job in the range of 0.0 being no progress to 100.0 being complete.
  &quot;rollout&quot;: { # Patch rollout configuration specifications. Contains details on the concurrency control when applying patch(es) to all targeted VMs. # Rollout strategy being applied.
    &quot;disruptionBudget&quot;: { # Message encapsulating a value that can be either absolute (&quot;fixed&quot;) or relative (&quot;percent&quot;) to a value. # 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.
      &quot;fixed&quot;: 42, # Specifies a fixed value.
      &quot;percent&quot;: 42, # Specifies the relative value defined as a percentage, which will be multiplied by a reference value.
    },
    &quot;mode&quot;: &quot;A String&quot;, # Mode of the patch rollout.
  },
  &quot;state&quot;: &quot;A String&quot;, # The current state of the PatchJob.
  &quot;updateTime&quot;: &quot;A String&quot;, # Last time this patch job was updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Get the patch job. This can be used to track the progress of an ongoing patch job or review the details of completed jobs.

Args:
  name: string, Required. Name of the patch in the form `projects/*/patchJobs/*` (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A high level representation of a patch job that is either in progress or has completed. Instance details are not included in the job. To paginate through instance details, use ListPatchJobInstanceDetails. For more information about patch jobs, see [Creating patch jobs](https://cloud.google.com/compute/docs/os-patch-management/create-patch-job).
  &quot;createTime&quot;: &quot;A String&quot;, # Time this patch job was created.
  &quot;description&quot;: &quot;A String&quot;, # Description of the patch job. Length of the description is limited to 1024 characters.
  &quot;displayName&quot;: &quot;A String&quot;, # Display name for this patch job. This is not a unique identifier.
  &quot;dryRun&quot;: True or False, # If this patch job is a dry run, the agent reports that it has finished without running any updates on the VM instance.
  &quot;duration&quot;: &quot;A String&quot;, # Duration of the patch job. After the duration ends, the patch job times out.
  &quot;errorMessage&quot;: &quot;A String&quot;, # If this patch job failed, this message provides information about the failure.
  &quot;instanceDetailsSummary&quot;: { # A summary of the current patch state across all instances that this patch job affects. Contains counts of instances in different states. These states map to `InstancePatchState`. List patch job instance details to see the specific states of each instance. # Summary of instance details.
    &quot;ackedInstanceCount&quot;: &quot;A String&quot;, # Number of instances that have acked and will start shortly.
    &quot;applyingPatchesInstanceCount&quot;: &quot;A String&quot;, # Number of instances that are applying patches.
    &quot;downloadingPatchesInstanceCount&quot;: &quot;A String&quot;, # Number of instances that are downloading patches.
    &quot;failedInstanceCount&quot;: &quot;A String&quot;, # Number of instances that failed.
    &quot;inactiveInstanceCount&quot;: &quot;A String&quot;, # Number of instances that are inactive.
    &quot;noAgentDetectedInstanceCount&quot;: &quot;A String&quot;, # Number of instances that do not appear to be running the agent. Check to ensure that the agent is installed, running, and able to communicate with the service.
    &quot;notifiedInstanceCount&quot;: &quot;A String&quot;, # Number of instances notified about patch job.
    &quot;pendingInstanceCount&quot;: &quot;A String&quot;, # Number of instances pending patch job.
    &quot;postPatchStepInstanceCount&quot;: &quot;A String&quot;, # Number of instances that are running the post-patch step.
    &quot;prePatchStepInstanceCount&quot;: &quot;A String&quot;, # Number of instances that are running the pre-patch step.
    &quot;rebootingInstanceCount&quot;: &quot;A String&quot;, # Number of instances rebooting.
    &quot;startedInstanceCount&quot;: &quot;A String&quot;, # Number of instances that have started.
    &quot;succeededInstanceCount&quot;: &quot;A String&quot;, # Number of instances that have completed successfully.
    &quot;succeededRebootRequiredInstanceCount&quot;: &quot;A String&quot;, # Number of instances that require reboot.
    &quot;timedOutInstanceCount&quot;: &quot;A String&quot;, # Number of instances that exceeded the time out while applying the patch.
  },
  &quot;instanceFilter&quot;: { # A filter to target VM instances for patching. The targeted VMs must meet all criteria specified. So if both labels and zones are specified, the patch job targets only VMs with those labels and in those zones. # Instances to patch.
    &quot;all&quot;: True or False, # Target all VM instances in the project. If true, no other criteria is permitted.
    &quot;groupLabels&quot;: [ # Targets VM instances matching ANY of these GroupLabels. This allows targeting of disparate groups of VM instances.
      { # Targets a group of VM instances by using their [assigned labels](https://cloud.google.com/compute/docs/labeling-resources). Labels are key-value pairs. A `GroupLabel` is a combination of labels that is used to target VMs for a patch job. For example, a patch job can target VMs that have the following `GroupLabel`: `{&quot;env&quot;:&quot;test&quot;, &quot;app&quot;:&quot;web&quot;}`. This means that the patch job is applied to VMs that have both the labels `env=test` and `app=web`.
        &quot;labels&quot;: { # Compute Engine instance labels that must be present for a VM instance to be targeted by this filter.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
    ],
    &quot;instanceNamePrefixes&quot;: [ # Targets VMs whose name starts with one of these prefixes. Similar to labels, this is another way to group VMs when targeting configs, for example prefix=&quot;prod-&quot;.
      &quot;A String&quot;,
    ],
    &quot;instances&quot;: [ # Targets any of the VM instances specified. Instances are specified by their URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`, `projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]`, or `https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]`
      &quot;A String&quot;,
    ],
    &quot;zones&quot;: [ # Targets VM instances in ANY of these zones. Leave empty to target VM instances in any zone.
      &quot;A String&quot;,
    ],
  },
  &quot;name&quot;: &quot;A String&quot;, # Unique identifier for this patch job in the form `projects/*/patchJobs/*`
  &quot;patchConfig&quot;: { # Patch configuration specifications. Contains details on how to apply the patch(es) to a VM instance. # Patch configuration being applied.
    &quot;apt&quot;: { # Apt patching is completed by executing `apt-get update &amp;&amp; apt-get upgrade`. Additional options can be set to control how this is executed. # Apt update settings. Use this setting to override the default `apt` patch rules.
      &quot;excludes&quot;: [ # List of packages to exclude from update. These packages will be excluded
        &quot;A String&quot;,
      ],
      &quot;exclusivePackages&quot;: [ # An exclusive list of packages to be updated. These are the only packages that will be updated. If these packages are not installed, they will be ignored. This field cannot be specified with any other patch configuration fields.
        &quot;A String&quot;,
      ],
      &quot;type&quot;: &quot;A String&quot;, # By changing the type to DIST, the patching is performed using `apt-get dist-upgrade` instead.
    },
    &quot;goo&quot;: { # Googet patching is performed by running `googet update`. # Goo update settings. Use this setting to override the default `goo` patch rules.
    },
    &quot;postStep&quot;: { # A step that runs an executable for a PatchJob. # The `ExecStep` to run after the patch update.
      &quot;linuxExecStepConfig&quot;: { # Common configurations for an ExecStep. # The ExecStepConfig for all Linux VMs targeted by the PatchJob.
        &quot;allowedSuccessCodes&quot;: [ # Defaults to [0]. A list of possible return values that the execution can return to indicate a success.
          42,
        ],
        &quot;gcsObject&quot;: { # Cloud Storage object representation. # A Cloud Storage object containing the executable.
          &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
          &quot;generationNumber&quot;: &quot;A String&quot;, # Required. Generation number of the Cloud Storage object. This is used to ensure that the ExecStep specified by this PatchJob does not change.
          &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
        },
        &quot;interpreter&quot;: &quot;A String&quot;, # The script interpreter to use to run the script. If no interpreter is specified the script will be executed directly, which will likely only succeed for scripts with [shebang lines] (https://en.wikipedia.org/wiki/Shebang_\(Unix\)).
        &quot;localPath&quot;: &quot;A String&quot;, # An absolute path to the executable on the VM.
      },
      &quot;windowsExecStepConfig&quot;: { # Common configurations for an ExecStep. # The ExecStepConfig for all Windows VMs targeted by the PatchJob.
        &quot;allowedSuccessCodes&quot;: [ # Defaults to [0]. A list of possible return values that the execution can return to indicate a success.
          42,
        ],
        &quot;gcsObject&quot;: { # Cloud Storage object representation. # A Cloud Storage object containing the executable.
          &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
          &quot;generationNumber&quot;: &quot;A String&quot;, # Required. Generation number of the Cloud Storage object. This is used to ensure that the ExecStep specified by this PatchJob does not change.
          &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
        },
        &quot;interpreter&quot;: &quot;A String&quot;, # The script interpreter to use to run the script. If no interpreter is specified the script will be executed directly, which will likely only succeed for scripts with [shebang lines] (https://en.wikipedia.org/wiki/Shebang_\(Unix\)).
        &quot;localPath&quot;: &quot;A String&quot;, # An absolute path to the executable on the VM.
      },
    },
    &quot;preStep&quot;: { # A step that runs an executable for a PatchJob. # The `ExecStep` to run before the patch update.
      &quot;linuxExecStepConfig&quot;: { # Common configurations for an ExecStep. # The ExecStepConfig for all Linux VMs targeted by the PatchJob.
        &quot;allowedSuccessCodes&quot;: [ # Defaults to [0]. A list of possible return values that the execution can return to indicate a success.
          42,
        ],
        &quot;gcsObject&quot;: { # Cloud Storage object representation. # A Cloud Storage object containing the executable.
          &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
          &quot;generationNumber&quot;: &quot;A String&quot;, # Required. Generation number of the Cloud Storage object. This is used to ensure that the ExecStep specified by this PatchJob does not change.
          &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
        },
        &quot;interpreter&quot;: &quot;A String&quot;, # The script interpreter to use to run the script. If no interpreter is specified the script will be executed directly, which will likely only succeed for scripts with [shebang lines] (https://en.wikipedia.org/wiki/Shebang_\(Unix\)).
        &quot;localPath&quot;: &quot;A String&quot;, # An absolute path to the executable on the VM.
      },
      &quot;windowsExecStepConfig&quot;: { # Common configurations for an ExecStep. # The ExecStepConfig for all Windows VMs targeted by the PatchJob.
        &quot;allowedSuccessCodes&quot;: [ # Defaults to [0]. A list of possible return values that the execution can return to indicate a success.
          42,
        ],
        &quot;gcsObject&quot;: { # Cloud Storage object representation. # A Cloud Storage object containing the executable.
          &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
          &quot;generationNumber&quot;: &quot;A String&quot;, # Required. Generation number of the Cloud Storage object. This is used to ensure that the ExecStep specified by this PatchJob does not change.
          &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
        },
        &quot;interpreter&quot;: &quot;A String&quot;, # The script interpreter to use to run the script. If no interpreter is specified the script will be executed directly, which will likely only succeed for scripts with [shebang lines] (https://en.wikipedia.org/wiki/Shebang_\(Unix\)).
        &quot;localPath&quot;: &quot;A String&quot;, # An absolute path to the executable on the VM.
      },
    },
    &quot;rebootConfig&quot;: &quot;A String&quot;, # Post-patch reboot settings.
    &quot;windowsUpdate&quot;: { # Windows patching is performed using the Windows Update Agent. # Windows update settings. Use this override the default windows patch rules.
      &quot;classifications&quot;: [ # Only apply updates of these windows update classifications. If empty, all updates are applied.
        &quot;A String&quot;,
      ],
      &quot;excludes&quot;: [ # List of KBs to exclude from update.
        &quot;A String&quot;,
      ],
      &quot;exclusivePatches&quot;: [ # An exclusive list of kbs to be updated. These are the only patches that will be updated. This field must not be used with other patch configurations.
        &quot;A String&quot;,
      ],
    },
    &quot;yum&quot;: { # Yum patching is performed by executing `yum update`. Additional options can be set to control how this is executed. Note that not all settings are supported on all platforms. # Yum update settings. Use this setting to override the default `yum` patch rules.
      &quot;excludes&quot;: [ # List of packages to exclude from update. These packages are excluded by using the yum `--exclude` flag.
        &quot;A String&quot;,
      ],
      &quot;exclusivePackages&quot;: [ # An exclusive list of packages to be updated. These are the only packages that will be updated. If these packages are not installed, they will be ignored. This field must not be specified with any other patch configuration fields.
        &quot;A String&quot;,
      ],
      &quot;minimal&quot;: True or False, # Will cause patch to run `yum update-minimal` instead.
      &quot;security&quot;: True or False, # Adds the `--security` flag to `yum update`. Not supported on all platforms.
    },
    &quot;zypper&quot;: { # Zypper patching is performed by running `zypper patch`. See also https://en.opensuse.org/SDB:Zypper_manual. # Zypper update settings. Use this setting to override the default `zypper` patch rules.
      &quot;categories&quot;: [ # Install only patches with these categories. Common categories include security, recommended, and feature.
        &quot;A String&quot;,
      ],
      &quot;excludes&quot;: [ # List of patches to exclude from update.
        &quot;A String&quot;,
      ],
      &quot;exclusivePatches&quot;: [ # An exclusive list of patches to be updated. These are the only patches that will be installed using &#x27;zypper patch patch:&#x27; command. This field must not be used with any other patch configuration fields.
        &quot;A String&quot;,
      ],
      &quot;severities&quot;: [ # Install only patches with these severities. Common severities include critical, important, moderate, and low.
        &quot;A String&quot;,
      ],
      &quot;withOptional&quot;: True or False, # Adds the `--with-optional` flag to `zypper patch`.
      &quot;withUpdate&quot;: True or False, # Adds the `--with-update` flag, to `zypper patch`.
    },
  },
  &quot;patchDeployment&quot;: &quot;A String&quot;, # Output only. Name of the patch deployment that created this patch job.
  &quot;percentComplete&quot;: 3.14, # Reflects the overall progress of the patch job in the range of 0.0 being no progress to 100.0 being complete.
  &quot;rollout&quot;: { # Patch rollout configuration specifications. Contains details on the concurrency control when applying patch(es) to all targeted VMs. # Rollout strategy being applied.
    &quot;disruptionBudget&quot;: { # Message encapsulating a value that can be either absolute (&quot;fixed&quot;) or relative (&quot;percent&quot;) to a value. # 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.
      &quot;fixed&quot;: 42, # Specifies a fixed value.
      &quot;percent&quot;: 42, # Specifies the relative value defined as a percentage, which will be multiplied by a reference value.
    },
    &quot;mode&quot;: &quot;A String&quot;, # Mode of the patch rollout.
  },
  &quot;state&quot;: &quot;A String&quot;, # The current state of the PatchJob.
  &quot;updateTime&quot;: &quot;A String&quot;, # Last time this patch job was updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Get a list of patch jobs.

Args:
  parent: string, Required. In the form of `projects/*` (required)
  filter: string, If provided, this field specifies the criteria that must be met by patch jobs to be included in the response. Currently, filtering is only available on the patch_deployment field.
  pageSize: integer, The maximum number of instance status to return.
  pageToken: string, A pagination token returned from a previous call that indicates where this listing should continue from.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A response message for listing patch jobs.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A pagination token that can be used to get the next page of results.
  &quot;patchJobs&quot;: [ # The list of patch jobs.
    { # A high level representation of a patch job that is either in progress or has completed. Instance details are not included in the job. To paginate through instance details, use ListPatchJobInstanceDetails. For more information about patch jobs, see [Creating patch jobs](https://cloud.google.com/compute/docs/os-patch-management/create-patch-job).
      &quot;createTime&quot;: &quot;A String&quot;, # Time this patch job was created.
      &quot;description&quot;: &quot;A String&quot;, # Description of the patch job. Length of the description is limited to 1024 characters.
      &quot;displayName&quot;: &quot;A String&quot;, # Display name for this patch job. This is not a unique identifier.
      &quot;dryRun&quot;: True or False, # If this patch job is a dry run, the agent reports that it has finished without running any updates on the VM instance.
      &quot;duration&quot;: &quot;A String&quot;, # Duration of the patch job. After the duration ends, the patch job times out.
      &quot;errorMessage&quot;: &quot;A String&quot;, # If this patch job failed, this message provides information about the failure.
      &quot;instanceDetailsSummary&quot;: { # A summary of the current patch state across all instances that this patch job affects. Contains counts of instances in different states. These states map to `InstancePatchState`. List patch job instance details to see the specific states of each instance. # Summary of instance details.
        &quot;ackedInstanceCount&quot;: &quot;A String&quot;, # Number of instances that have acked and will start shortly.
        &quot;applyingPatchesInstanceCount&quot;: &quot;A String&quot;, # Number of instances that are applying patches.
        &quot;downloadingPatchesInstanceCount&quot;: &quot;A String&quot;, # Number of instances that are downloading patches.
        &quot;failedInstanceCount&quot;: &quot;A String&quot;, # Number of instances that failed.
        &quot;inactiveInstanceCount&quot;: &quot;A String&quot;, # Number of instances that are inactive.
        &quot;noAgentDetectedInstanceCount&quot;: &quot;A String&quot;, # Number of instances that do not appear to be running the agent. Check to ensure that the agent is installed, running, and able to communicate with the service.
        &quot;notifiedInstanceCount&quot;: &quot;A String&quot;, # Number of instances notified about patch job.
        &quot;pendingInstanceCount&quot;: &quot;A String&quot;, # Number of instances pending patch job.
        &quot;postPatchStepInstanceCount&quot;: &quot;A String&quot;, # Number of instances that are running the post-patch step.
        &quot;prePatchStepInstanceCount&quot;: &quot;A String&quot;, # Number of instances that are running the pre-patch step.
        &quot;rebootingInstanceCount&quot;: &quot;A String&quot;, # Number of instances rebooting.
        &quot;startedInstanceCount&quot;: &quot;A String&quot;, # Number of instances that have started.
        &quot;succeededInstanceCount&quot;: &quot;A String&quot;, # Number of instances that have completed successfully.
        &quot;succeededRebootRequiredInstanceCount&quot;: &quot;A String&quot;, # Number of instances that require reboot.
        &quot;timedOutInstanceCount&quot;: &quot;A String&quot;, # Number of instances that exceeded the time out while applying the patch.
      },
      &quot;instanceFilter&quot;: { # A filter to target VM instances for patching. The targeted VMs must meet all criteria specified. So if both labels and zones are specified, the patch job targets only VMs with those labels and in those zones. # Instances to patch.
        &quot;all&quot;: True or False, # Target all VM instances in the project. If true, no other criteria is permitted.
        &quot;groupLabels&quot;: [ # Targets VM instances matching ANY of these GroupLabels. This allows targeting of disparate groups of VM instances.
          { # Targets a group of VM instances by using their [assigned labels](https://cloud.google.com/compute/docs/labeling-resources). Labels are key-value pairs. A `GroupLabel` is a combination of labels that is used to target VMs for a patch job. For example, a patch job can target VMs that have the following `GroupLabel`: `{&quot;env&quot;:&quot;test&quot;, &quot;app&quot;:&quot;web&quot;}`. This means that the patch job is applied to VMs that have both the labels `env=test` and `app=web`.
            &quot;labels&quot;: { # Compute Engine instance labels that must be present for a VM instance to be targeted by this filter.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
          },
        ],
        &quot;instanceNamePrefixes&quot;: [ # Targets VMs whose name starts with one of these prefixes. Similar to labels, this is another way to group VMs when targeting configs, for example prefix=&quot;prod-&quot;.
          &quot;A String&quot;,
        ],
        &quot;instances&quot;: [ # Targets any of the VM instances specified. Instances are specified by their URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`, `projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]`, or `https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]`
          &quot;A String&quot;,
        ],
        &quot;zones&quot;: [ # Targets VM instances in ANY of these zones. Leave empty to target VM instances in any zone.
          &quot;A String&quot;,
        ],
      },
      &quot;name&quot;: &quot;A String&quot;, # Unique identifier for this patch job in the form `projects/*/patchJobs/*`
      &quot;patchConfig&quot;: { # Patch configuration specifications. Contains details on how to apply the patch(es) to a VM instance. # Patch configuration being applied.
        &quot;apt&quot;: { # Apt patching is completed by executing `apt-get update &amp;&amp; apt-get upgrade`. Additional options can be set to control how this is executed. # Apt update settings. Use this setting to override the default `apt` patch rules.
          &quot;excludes&quot;: [ # List of packages to exclude from update. These packages will be excluded
            &quot;A String&quot;,
          ],
          &quot;exclusivePackages&quot;: [ # An exclusive list of packages to be updated. These are the only packages that will be updated. If these packages are not installed, they will be ignored. This field cannot be specified with any other patch configuration fields.
            &quot;A String&quot;,
          ],
          &quot;type&quot;: &quot;A String&quot;, # By changing the type to DIST, the patching is performed using `apt-get dist-upgrade` instead.
        },
        &quot;goo&quot;: { # Googet patching is performed by running `googet update`. # Goo update settings. Use this setting to override the default `goo` patch rules.
        },
        &quot;postStep&quot;: { # A step that runs an executable for a PatchJob. # The `ExecStep` to run after the patch update.
          &quot;linuxExecStepConfig&quot;: { # Common configurations for an ExecStep. # The ExecStepConfig for all Linux VMs targeted by the PatchJob.
            &quot;allowedSuccessCodes&quot;: [ # Defaults to [0]. A list of possible return values that the execution can return to indicate a success.
              42,
            ],
            &quot;gcsObject&quot;: { # Cloud Storage object representation. # A Cloud Storage object containing the executable.
              &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
              &quot;generationNumber&quot;: &quot;A String&quot;, # Required. Generation number of the Cloud Storage object. This is used to ensure that the ExecStep specified by this PatchJob does not change.
              &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
            },
            &quot;interpreter&quot;: &quot;A String&quot;, # The script interpreter to use to run the script. If no interpreter is specified the script will be executed directly, which will likely only succeed for scripts with [shebang lines] (https://en.wikipedia.org/wiki/Shebang_\(Unix\)).
            &quot;localPath&quot;: &quot;A String&quot;, # An absolute path to the executable on the VM.
          },
          &quot;windowsExecStepConfig&quot;: { # Common configurations for an ExecStep. # The ExecStepConfig for all Windows VMs targeted by the PatchJob.
            &quot;allowedSuccessCodes&quot;: [ # Defaults to [0]. A list of possible return values that the execution can return to indicate a success.
              42,
            ],
            &quot;gcsObject&quot;: { # Cloud Storage object representation. # A Cloud Storage object containing the executable.
              &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
              &quot;generationNumber&quot;: &quot;A String&quot;, # Required. Generation number of the Cloud Storage object. This is used to ensure that the ExecStep specified by this PatchJob does not change.
              &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
            },
            &quot;interpreter&quot;: &quot;A String&quot;, # The script interpreter to use to run the script. If no interpreter is specified the script will be executed directly, which will likely only succeed for scripts with [shebang lines] (https://en.wikipedia.org/wiki/Shebang_\(Unix\)).
            &quot;localPath&quot;: &quot;A String&quot;, # An absolute path to the executable on the VM.
          },
        },
        &quot;preStep&quot;: { # A step that runs an executable for a PatchJob. # The `ExecStep` to run before the patch update.
          &quot;linuxExecStepConfig&quot;: { # Common configurations for an ExecStep. # The ExecStepConfig for all Linux VMs targeted by the PatchJob.
            &quot;allowedSuccessCodes&quot;: [ # Defaults to [0]. A list of possible return values that the execution can return to indicate a success.
              42,
            ],
            &quot;gcsObject&quot;: { # Cloud Storage object representation. # A Cloud Storage object containing the executable.
              &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
              &quot;generationNumber&quot;: &quot;A String&quot;, # Required. Generation number of the Cloud Storage object. This is used to ensure that the ExecStep specified by this PatchJob does not change.
              &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
            },
            &quot;interpreter&quot;: &quot;A String&quot;, # The script interpreter to use to run the script. If no interpreter is specified the script will be executed directly, which will likely only succeed for scripts with [shebang lines] (https://en.wikipedia.org/wiki/Shebang_\(Unix\)).
            &quot;localPath&quot;: &quot;A String&quot;, # An absolute path to the executable on the VM.
          },
          &quot;windowsExecStepConfig&quot;: { # Common configurations for an ExecStep. # The ExecStepConfig for all Windows VMs targeted by the PatchJob.
            &quot;allowedSuccessCodes&quot;: [ # Defaults to [0]. A list of possible return values that the execution can return to indicate a success.
              42,
            ],
            &quot;gcsObject&quot;: { # Cloud Storage object representation. # A Cloud Storage object containing the executable.
              &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
              &quot;generationNumber&quot;: &quot;A String&quot;, # Required. Generation number of the Cloud Storage object. This is used to ensure that the ExecStep specified by this PatchJob does not change.
              &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
            },
            &quot;interpreter&quot;: &quot;A String&quot;, # The script interpreter to use to run the script. If no interpreter is specified the script will be executed directly, which will likely only succeed for scripts with [shebang lines] (https://en.wikipedia.org/wiki/Shebang_\(Unix\)).
            &quot;localPath&quot;: &quot;A String&quot;, # An absolute path to the executable on the VM.
          },
        },
        &quot;rebootConfig&quot;: &quot;A String&quot;, # Post-patch reboot settings.
        &quot;windowsUpdate&quot;: { # Windows patching is performed using the Windows Update Agent. # Windows update settings. Use this override the default windows patch rules.
          &quot;classifications&quot;: [ # Only apply updates of these windows update classifications. If empty, all updates are applied.
            &quot;A String&quot;,
          ],
          &quot;excludes&quot;: [ # List of KBs to exclude from update.
            &quot;A String&quot;,
          ],
          &quot;exclusivePatches&quot;: [ # An exclusive list of kbs to be updated. These are the only patches that will be updated. This field must not be used with other patch configurations.
            &quot;A String&quot;,
          ],
        },
        &quot;yum&quot;: { # Yum patching is performed by executing `yum update`. Additional options can be set to control how this is executed. Note that not all settings are supported on all platforms. # Yum update settings. Use this setting to override the default `yum` patch rules.
          &quot;excludes&quot;: [ # List of packages to exclude from update. These packages are excluded by using the yum `--exclude` flag.
            &quot;A String&quot;,
          ],
          &quot;exclusivePackages&quot;: [ # An exclusive list of packages to be updated. These are the only packages that will be updated. If these packages are not installed, they will be ignored. This field must not be specified with any other patch configuration fields.
            &quot;A String&quot;,
          ],
          &quot;minimal&quot;: True or False, # Will cause patch to run `yum update-minimal` instead.
          &quot;security&quot;: True or False, # Adds the `--security` flag to `yum update`. Not supported on all platforms.
        },
        &quot;zypper&quot;: { # Zypper patching is performed by running `zypper patch`. See also https://en.opensuse.org/SDB:Zypper_manual. # Zypper update settings. Use this setting to override the default `zypper` patch rules.
          &quot;categories&quot;: [ # Install only patches with these categories. Common categories include security, recommended, and feature.
            &quot;A String&quot;,
          ],
          &quot;excludes&quot;: [ # List of patches to exclude from update.
            &quot;A String&quot;,
          ],
          &quot;exclusivePatches&quot;: [ # An exclusive list of patches to be updated. These are the only patches that will be installed using &#x27;zypper patch patch:&#x27; command. This field must not be used with any other patch configuration fields.
            &quot;A String&quot;,
          ],
          &quot;severities&quot;: [ # Install only patches with these severities. Common severities include critical, important, moderate, and low.
            &quot;A String&quot;,
          ],
          &quot;withOptional&quot;: True or False, # Adds the `--with-optional` flag to `zypper patch`.
          &quot;withUpdate&quot;: True or False, # Adds the `--with-update` flag, to `zypper patch`.
        },
      },
      &quot;patchDeployment&quot;: &quot;A String&quot;, # Output only. Name of the patch deployment that created this patch job.
      &quot;percentComplete&quot;: 3.14, # Reflects the overall progress of the patch job in the range of 0.0 being no progress to 100.0 being complete.
      &quot;rollout&quot;: { # Patch rollout configuration specifications. Contains details on the concurrency control when applying patch(es) to all targeted VMs. # Rollout strategy being applied.
        &quot;disruptionBudget&quot;: { # Message encapsulating a value that can be either absolute (&quot;fixed&quot;) or relative (&quot;percent&quot;) to a value. # 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.
          &quot;fixed&quot;: 42, # Specifies a fixed value.
          &quot;percent&quot;: 42, # Specifies the relative value defined as a percentage, which will be multiplied by a reference value.
        },
        &quot;mode&quot;: &quot;A String&quot;, # Mode of the patch rollout.
      },
      &quot;state&quot;: &quot;A String&quot;, # The current state of the PatchJob.
      &quot;updateTime&quot;: &quot;A String&quot;, # Last time this patch job was updated.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>