<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_v1alpha.html">OS Config API</a> . <a href="osconfig_v1alpha.projects.html">projects</a> . <a href="osconfig_v1alpha.projects.locations.html">locations</a> . <a href="osconfig_v1alpha.projects.locations.osPolicyAssignments.html">osPolicyAssignments</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="osconfig_v1alpha.projects.locations.osPolicyAssignments.operations.html">operations()</a></code>
</p>
<p class="firstline">Returns the operations Resource.</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="#create">create(parent, body=None, osPolicyAssignmentId=None, requestId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Create an OS policy assignment. This method also creates the first revision of the OS policy assignment. This method returns a long running operation (LRO) that contains the rollout details. The rollout can be cancelled by cancelling the LRO. For more information, see [Method: projects.locations.osPolicyAssignments.operations.cancel](https://cloud.google.com/compute/docs/osconfig/rest/v1alpha/projects.locations.osPolicyAssignments.operations/cancel).</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, requestId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Delete the OS policy assignment. This method creates a new revision of the OS policy assignment. This method returns a long running operation (LRO) that contains the rollout details. The rollout can be cancelled by cancelling the LRO. If the LRO completes and is not cancelled, all revisions associated with the OS policy assignment are deleted. For more information, see [Method: projects.locations.osPolicyAssignments.operations.cancel](https://cloud.google.com/compute/docs/osconfig/rest/v1alpha/projects.locations.osPolicyAssignments.operations/cancel).</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieve an existing OS policy assignment. This method always returns the latest revision. In order to retrieve a previous revision of the assignment, also provide the revision ID in the `name` parameter.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">List the OS policy assignments under the parent resource. For each OS policy assignment, the latest revision is returned.</p>
<p class="toc_element">
  <code><a href="#listRevisions">listRevisions(name, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">List the OS policy assignment revisions for a given OS policy assignment.</p>
<p class="toc_element">
  <code><a href="#listRevisions_next">listRevisions_next()</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next()</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(name, allowMissing=None, body=None, requestId=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Update an existing OS policy assignment. This method creates a new revision of the OS policy assignment. This method returns a long running operation (LRO) that contains the rollout details. The rollout can be cancelled by cancelling the LRO. For more information, see [Method: projects.locations.osPolicyAssignments.operations.cancel](https://cloud.google.com/compute/docs/osconfig/rest/v1alpha/projects.locations.osPolicyAssignments.operations/cancel).</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(parent, body=None, osPolicyAssignmentId=None, requestId=None, x__xgafv=None)</code>
  <pre>Create an OS policy assignment. This method also creates the first revision of the OS policy assignment. This method returns a long running operation (LRO) that contains the rollout details. The rollout can be cancelled by cancelling the LRO. For more information, see [Method: projects.locations.osPolicyAssignments.operations.cancel](https://cloud.google.com/compute/docs/osconfig/rest/v1alpha/projects.locations.osPolicyAssignments.operations/cancel).

Args:
  parent: string, Required. The parent resource name in the form: projects/{project}/locations/{location} (required)
  body: object, The request body.
    The object takes the form of:

{ # OS policy assignment is an API resource that is used to apply a set of OS policies to a dynamically targeted group of Compute Engine VM instances. An OS policy is used to define the desired state configuration for a Compute Engine VM instance through a set of configuration resources that provide capabilities such as installing or removing software packages, or executing a script. For more information, see [OS policy and OS policy assignment](https://cloud.google.com/compute/docs/os-configuration-management/working-with-os-policies).
  &quot;baseline&quot;: True or False, # Output only. Indicates that this revision has been successfully rolled out in this zone and new VMs will be assigned OS policies from this revision. For a given OS policy assignment, there is only one revision with a value of `true` for this field.
  &quot;deleted&quot;: True or False, # Output only. Indicates that this revision deletes the OS policy assignment.
  &quot;description&quot;: &quot;A String&quot;, # OS policy assignment description. Length of the description is limited to 1024 characters.
  &quot;etag&quot;: &quot;A String&quot;, # The etag for this OS policy assignment. If this is provided on update, it must match the server&#x27;s etag.
  &quot;instanceFilter&quot;: { # Filters to select target VMs for an assignment. If more than one filter criteria is specified below, a VM will be selected if and only if it satisfies all of them. # Required. Filter to select VMs.
    &quot;all&quot;: True or False, # Target all VMs in the project. If true, no other criteria is permitted.
    &quot;exclusionLabels&quot;: [ # List of label sets used for VM exclusion. If the list has more than one label set, the VM is excluded if any of the label sets are applicable for the VM.
      { # Message representing label set. * A label is a key value pair set for a VM. * A LabelSet is a set of labels. * Labels within a LabelSet are ANDed. In other words, a LabelSet is applicable for a VM only if it matches all the labels in the LabelSet. * Example: A LabelSet with 2 labels: `env=prod` and `type=webserver` will only be applicable for those VMs with both labels present.
        &quot;labels&quot;: { # Labels are identified by key/value pairs in this map. A VM should contain all the key/value pairs specified in this map to be selected.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
    ],
    &quot;inclusionLabels&quot;: [ # List of label sets used for VM inclusion. If the list has more than one `LabelSet`, the VM is included if any of the label sets are applicable for the VM.
      { # Message representing label set. * A label is a key value pair set for a VM. * A LabelSet is a set of labels. * Labels within a LabelSet are ANDed. In other words, a LabelSet is applicable for a VM only if it matches all the labels in the LabelSet. * Example: A LabelSet with 2 labels: `env=prod` and `type=webserver` will only be applicable for those VMs with both labels present.
        &quot;labels&quot;: { # Labels are identified by key/value pairs in this map. A VM should contain all the key/value pairs specified in this map to be selected.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
    ],
    &quot;inventories&quot;: [ # List of inventories to select VMs. A VM is selected if its inventory data matches at least one of the following inventories.
      { # VM inventory details.
        &quot;osShortName&quot;: &quot;A String&quot;, # Required. The OS short name
        &quot;osVersion&quot;: &quot;A String&quot;, # The OS version Prefix matches are supported if asterisk(*) is provided as the last character. For example, to match all versions with a major version of `7`, specify the following value for this field `7.*` An empty string matches all OS versions.
      },
    ],
    &quot;osShortNames&quot;: [ # Deprecated. Use the `inventories` field instead. A VM is selected if it&#x27;s OS short name matches with any of the values provided in this list.
      &quot;A String&quot;,
    ],
  },
  &quot;name&quot;: &quot;A String&quot;, # Resource name. Format: `projects/{project_number}/locations/{location}/osPolicyAssignments/{os_policy_assignment_id}` This field is ignored when you create an OS policy assignment.
  &quot;osPolicies&quot;: [ # Required. List of OS policies to be applied to the VMs.
    { # An OS policy defines the desired state configuration for a VM.
      &quot;allowNoResourceGroupMatch&quot;: True or False, # This flag determines the OS policy compliance status when none of the resource groups within the policy are applicable for a VM. Set this value to `true` if the policy needs to be reported as compliant even if the policy has nothing to validate or enforce.
      &quot;description&quot;: &quot;A String&quot;, # Policy description. Length of the description is limited to 1024 characters.
      &quot;id&quot;: &quot;A String&quot;, # Required. The id of the OS policy with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the assignment.
      &quot;mode&quot;: &quot;A String&quot;, # Required. Policy mode
      &quot;resourceGroups&quot;: [ # Required. List of resource groups for the policy. For a particular VM, resource groups are evaluated in the order specified and the first resource group that is applicable is selected and the rest are ignored. If none of the resource groups are applicable for a VM, the VM is considered to be non-compliant w.r.t this policy. This behavior can be toggled by the flag `allow_no_resource_group_match`
        { # Resource groups provide a mechanism to group OS policy resources. Resource groups enable OS policy authors to create a single OS policy to be applied to VMs running different operating Systems. When the OS policy is applied to a target VM, the appropriate resource group within the OS policy is selected based on the `OSFilter` specified within the resource group.
          &quot;inventoryFilters&quot;: [ # List of inventory filters for the resource group. The resources in this resource group are applied to the target VM if it satisfies at least one of the following inventory filters. For example, to apply this resource group to VMs running either `RHEL` or `CentOS` operating systems, specify 2 items for the list with following values: inventory_filters[0].os_short_name=&#x27;rhel&#x27; and inventory_filters[1].os_short_name=&#x27;centos&#x27; If the list is empty, this resource group will be applied to the target VM unconditionally.
            { # Filtering criteria to select VMs based on inventory details.
              &quot;osShortName&quot;: &quot;A String&quot;, # Required. The OS short name
              &quot;osVersion&quot;: &quot;A String&quot;, # The OS version Prefix matches are supported if asterisk(*) is provided as the last character. For example, to match all versions with a major version of `7`, specify the following value for this field `7.*` An empty string matches all OS versions.
            },
          ],
          &quot;osFilter&quot;: { # Filtering criteria to select VMs based on OS details. # Deprecated. Use the `inventory_filters` field instead. Used to specify the OS filter for a resource group
            &quot;osShortName&quot;: &quot;A String&quot;, # This should match OS short name emitted by the OS inventory agent. An empty value matches any OS.
            &quot;osVersion&quot;: &quot;A String&quot;, # This value should match the version emitted by the OS inventory agent. Prefix matches are supported if asterisk(*) is provided as the last character. For example, to match all versions with a major version of `7`, specify the following value for this field `7.*`
          },
          &quot;resources&quot;: [ # Required. List of resources configured for this resource group. The resources are executed in the exact order specified here.
            { # An OS policy resource is used to define the desired state configuration and provides a specific functionality like installing/removing packages, executing a script etc. The system ensures that resources are always in their desired state by taking necessary actions if they have drifted from their desired state.
              &quot;exec&quot;: { # A resource that allows executing scripts on the VM. The `ExecResource` has 2 stages: `validate` and `enforce` and both stages accept a script as an argument to execute. When the `ExecResource` is applied by the agent, it first executes the script in the `validate` stage. The `validate` stage can signal that the `ExecResource` is already in the desired state by returning an exit code of `100`. If the `ExecResource` is not in the desired state, it should return an exit code of `101`. Any other exit code returned by this stage is considered an error. If the `ExecResource` is not in the desired state based on the exit code from the `validate` stage, the agent proceeds to execute the script from the `enforce` stage. If the `ExecResource` is already in the desired state, the `enforce` stage will not be run. Similar to `validate` stage, the `enforce` stage should return an exit code of `100` to indicate that the resource in now in its desired state. Any other exit code is considered an error. NOTE: An exit code of `100` was chosen over `0` (and `101` vs `1`) to have an explicit indicator of `in desired state`, `not in desired state` and errors. Because, for example, Powershell will always return an exit code of `0` unless an `exit` statement is provided in the script. So, for reasons of consistency and being explicit, exit codes `100` and `101` were chosen. # Exec resource
                &quot;enforce&quot;: { # A file or script to execute. # What to run to bring this resource into the desired state. An exit code of 100 indicates &quot;success&quot;, any other exit code indicates a failure running enforce.
                  &quot;args&quot;: [ # Optional arguments to pass to the source during execution.
                    &quot;A String&quot;,
                  ],
                  &quot;file&quot;: { # A remote or local file. # A remote or local file.
                    &quot;allowInsecure&quot;: True or False, # Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified.
                    &quot;gcs&quot;: { # Specifies a file available as a Cloud Storage Object. # A Cloud Storage object.
                      &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
                      &quot;generation&quot;: &quot;A String&quot;, # Generation number of the Cloud Storage object.
                      &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
                    },
                    &quot;localPath&quot;: &quot;A String&quot;, # A local path within the VM to use.
                    &quot;remote&quot;: { # Specifies a file available via some URI. # A generic remote file.
                      &quot;sha256Checksum&quot;: &quot;A String&quot;, # SHA256 checksum of the remote file.
                      &quot;uri&quot;: &quot;A String&quot;, # Required. URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`.
                    },
                  },
                  &quot;interpreter&quot;: &quot;A String&quot;, # Required. The script interpreter to use.
                  &quot;outputFilePath&quot;: &quot;A String&quot;, # Only recorded for enforce Exec. Path to an output file (that is created by this Exec) whose content will be recorded in OSPolicyResourceCompliance after a successful run. Absence or failure to read this file will result in this ExecResource being non-compliant. Output file size is limited to 100K bytes.
                  &quot;script&quot;: &quot;A String&quot;, # An inline script. The size of the script is limited to 32KiB.
                },
                &quot;validate&quot;: { # A file or script to execute. # Required. What to run to validate this resource is in the desired state. An exit code of 100 indicates &quot;in desired state&quot;, and exit code of 101 indicates &quot;not in desired state&quot;. Any other exit code indicates a failure running validate.
                  &quot;args&quot;: [ # Optional arguments to pass to the source during execution.
                    &quot;A String&quot;,
                  ],
                  &quot;file&quot;: { # A remote or local file. # A remote or local file.
                    &quot;allowInsecure&quot;: True or False, # Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified.
                    &quot;gcs&quot;: { # Specifies a file available as a Cloud Storage Object. # A Cloud Storage object.
                      &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
                      &quot;generation&quot;: &quot;A String&quot;, # Generation number of the Cloud Storage object.
                      &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
                    },
                    &quot;localPath&quot;: &quot;A String&quot;, # A local path within the VM to use.
                    &quot;remote&quot;: { # Specifies a file available via some URI. # A generic remote file.
                      &quot;sha256Checksum&quot;: &quot;A String&quot;, # SHA256 checksum of the remote file.
                      &quot;uri&quot;: &quot;A String&quot;, # Required. URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`.
                    },
                  },
                  &quot;interpreter&quot;: &quot;A String&quot;, # Required. The script interpreter to use.
                  &quot;outputFilePath&quot;: &quot;A String&quot;, # Only recorded for enforce Exec. Path to an output file (that is created by this Exec) whose content will be recorded in OSPolicyResourceCompliance after a successful run. Absence or failure to read this file will result in this ExecResource being non-compliant. Output file size is limited to 100K bytes.
                  &quot;script&quot;: &quot;A String&quot;, # An inline script. The size of the script is limited to 32KiB.
                },
              },
              &quot;file&quot;: { # A resource that manages the state of a file. # File resource
                &quot;content&quot;: &quot;A String&quot;, # A a file with this content. The size of the content is limited to 32KiB.
                &quot;file&quot;: { # A remote or local file. # A remote or local source.
                  &quot;allowInsecure&quot;: True or False, # Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified.
                  &quot;gcs&quot;: { # Specifies a file available as a Cloud Storage Object. # A Cloud Storage object.
                    &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
                    &quot;generation&quot;: &quot;A String&quot;, # Generation number of the Cloud Storage object.
                    &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
                  },
                  &quot;localPath&quot;: &quot;A String&quot;, # A local path within the VM to use.
                  &quot;remote&quot;: { # Specifies a file available via some URI. # A generic remote file.
                    &quot;sha256Checksum&quot;: &quot;A String&quot;, # SHA256 checksum of the remote file.
                    &quot;uri&quot;: &quot;A String&quot;, # Required. URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`.
                  },
                },
                &quot;path&quot;: &quot;A String&quot;, # Required. The absolute path of the file within the VM.
                &quot;permissions&quot;: &quot;A String&quot;, # Consists of three octal digits which represent, in order, the permissions of the owner, group, and other users for the file (similarly to the numeric mode used in the linux chmod utility). Each digit represents a three bit number with the 4 bit corresponding to the read permissions, the 2 bit corresponds to the write bit, and the one bit corresponds to the execute permission. Default behavior is 755. Below are some examples of permissions and their associated values: read, write, and execute: 7 read and execute: 5 read and write: 6 read only: 4
                &quot;state&quot;: &quot;A String&quot;, # Required. Desired state of the file.
              },
              &quot;id&quot;: &quot;A String&quot;, # Required. The id of the resource with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the OS policy.
              &quot;pkg&quot;: { # A resource that manages a system package. # Package resource
                &quot;apt&quot;: { # A package managed by APT. - install: `apt-get update &amp;&amp; apt-get -y install [name]` - remove: `apt-get -y remove [name]` # A package managed by Apt.
                  &quot;name&quot;: &quot;A String&quot;, # Required. Package name.
                },
                &quot;deb&quot;: { # A deb package file. dpkg packages only support INSTALLED state. # A deb package file.
                  &quot;pullDeps&quot;: True or False, # Whether dependencies should also be installed. - install when false: `dpkg -i package` - install when true: `apt-get update &amp;&amp; apt-get -y install package.deb`
                  &quot;source&quot;: { # A remote or local file. # Required. A deb package.
                    &quot;allowInsecure&quot;: True or False, # Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified.
                    &quot;gcs&quot;: { # Specifies a file available as a Cloud Storage Object. # A Cloud Storage object.
                      &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
                      &quot;generation&quot;: &quot;A String&quot;, # Generation number of the Cloud Storage object.
                      &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
                    },
                    &quot;localPath&quot;: &quot;A String&quot;, # A local path within the VM to use.
                    &quot;remote&quot;: { # Specifies a file available via some URI. # A generic remote file.
                      &quot;sha256Checksum&quot;: &quot;A String&quot;, # SHA256 checksum of the remote file.
                      &quot;uri&quot;: &quot;A String&quot;, # Required. URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`.
                    },
                  },
                },
                &quot;desiredState&quot;: &quot;A String&quot;, # Required. The desired state the agent should maintain for this package.
                &quot;googet&quot;: { # A package managed by GooGet. - install: `googet -noconfirm install package` - remove: `googet -noconfirm remove package` # A package managed by GooGet.
                  &quot;name&quot;: &quot;A String&quot;, # Required. Package name.
                },
                &quot;msi&quot;: { # An MSI package. MSI packages only support INSTALLED state. # An MSI package.
                  &quot;properties&quot;: [ # Additional properties to use during installation. This should be in the format of Property=Setting. Appended to the defaults of `ACTION=INSTALL REBOOT=ReallySuppress`.
                    &quot;A String&quot;,
                  ],
                  &quot;source&quot;: { # A remote or local file. # Required. The MSI package.
                    &quot;allowInsecure&quot;: True or False, # Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified.
                    &quot;gcs&quot;: { # Specifies a file available as a Cloud Storage Object. # A Cloud Storage object.
                      &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
                      &quot;generation&quot;: &quot;A String&quot;, # Generation number of the Cloud Storage object.
                      &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
                    },
                    &quot;localPath&quot;: &quot;A String&quot;, # A local path within the VM to use.
                    &quot;remote&quot;: { # Specifies a file available via some URI. # A generic remote file.
                      &quot;sha256Checksum&quot;: &quot;A String&quot;, # SHA256 checksum of the remote file.
                      &quot;uri&quot;: &quot;A String&quot;, # Required. URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`.
                    },
                  },
                },
                &quot;rpm&quot;: { # An RPM package file. RPM packages only support INSTALLED state. # An rpm package file.
                  &quot;pullDeps&quot;: True or False, # Whether dependencies should also be installed. - install when false: `rpm --upgrade --replacepkgs package.rpm` - install when true: `yum -y install package.rpm` or `zypper -y install package.rpm`
                  &quot;source&quot;: { # A remote or local file. # Required. An rpm package.
                    &quot;allowInsecure&quot;: True or False, # Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified.
                    &quot;gcs&quot;: { # Specifies a file available as a Cloud Storage Object. # A Cloud Storage object.
                      &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
                      &quot;generation&quot;: &quot;A String&quot;, # Generation number of the Cloud Storage object.
                      &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
                    },
                    &quot;localPath&quot;: &quot;A String&quot;, # A local path within the VM to use.
                    &quot;remote&quot;: { # Specifies a file available via some URI. # A generic remote file.
                      &quot;sha256Checksum&quot;: &quot;A String&quot;, # SHA256 checksum of the remote file.
                      &quot;uri&quot;: &quot;A String&quot;, # Required. URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`.
                    },
                  },
                },
                &quot;yum&quot;: { # A package managed by YUM. - install: `yum -y install package` - remove: `yum -y remove package` # A package managed by YUM.
                  &quot;name&quot;: &quot;A String&quot;, # Required. Package name.
                },
                &quot;zypper&quot;: { # A package managed by Zypper. - install: `zypper -y install package` - remove: `zypper -y rm package` # A package managed by Zypper.
                  &quot;name&quot;: &quot;A String&quot;, # Required. Package name.
                },
              },
              &quot;repository&quot;: { # A resource that manages a package repository. # Package repository resource
                &quot;apt&quot;: { # Represents a single apt package repository. These will be added to a repo file that will be managed at `/etc/apt/sources.list.d/google_osconfig.list`. # An Apt Repository.
                  &quot;archiveType&quot;: &quot;A String&quot;, # Required. Type of archive files in this repository.
                  &quot;components&quot;: [ # Required. List of components for this repository. Must contain at least one item.
                    &quot;A String&quot;,
                  ],
                  &quot;distribution&quot;: &quot;A String&quot;, # Required. Distribution of this repository.
                  &quot;gpgKey&quot;: &quot;A String&quot;, # URI of the key file for this repository. The agent maintains a keyring at `/etc/apt/trusted.gpg.d/osconfig_agent_managed.gpg`.
                  &quot;uri&quot;: &quot;A String&quot;, # Required. URI for this repository.
                },
                &quot;goo&quot;: { # Represents a Goo package repository. These are added to a repo file that is managed at `C:/ProgramData/GooGet/repos/google_osconfig.repo`. # A Goo Repository.
                  &quot;name&quot;: &quot;A String&quot;, # Required. The name of the repository.
                  &quot;url&quot;: &quot;A String&quot;, # Required. The url of the repository.
                },
                &quot;yum&quot;: { # Represents a single yum package repository. These are added to a repo file that is managed at `/etc/yum.repos.d/google_osconfig.repo`. # A Yum Repository.
                  &quot;baseUrl&quot;: &quot;A String&quot;, # Required. The location of the repository directory.
                  &quot;displayName&quot;: &quot;A String&quot;, # The display name of the repository.
                  &quot;gpgKeys&quot;: [ # URIs of GPG keys.
                    &quot;A String&quot;,
                  ],
                  &quot;id&quot;: &quot;A String&quot;, # Required. A one word, unique name for this repository. This is the `repo id` in the yum config file and also the `display_name` if `display_name` is omitted. This id is also used as the unique identifier when checking for resource conflicts.
                },
                &quot;zypper&quot;: { # Represents a single zypper package repository. These are added to a repo file that is managed at `/etc/zypp/repos.d/google_osconfig.repo`. # A Zypper Repository.
                  &quot;baseUrl&quot;: &quot;A String&quot;, # Required. The location of the repository directory.
                  &quot;displayName&quot;: &quot;A String&quot;, # The display name of the repository.
                  &quot;gpgKeys&quot;: [ # URIs of GPG keys.
                    &quot;A String&quot;,
                  ],
                  &quot;id&quot;: &quot;A String&quot;, # Required. A one word, unique name for this repository. This is the `repo id` in the zypper config file and also the `display_name` if `display_name` is omitted. This id is also used as the unique identifier when checking for GuestPolicy conflicts.
                },
              },
            },
          ],
        },
      ],
    },
  ],
  &quot;reconciling&quot;: True or False, # Output only. Indicates that reconciliation is in progress for the revision. This value is `true` when the `rollout_state` is one of: * IN_PROGRESS * CANCELLING
  &quot;revisionCreateTime&quot;: &quot;A String&quot;, # Output only. The timestamp that the revision was created.
  &quot;revisionId&quot;: &quot;A String&quot;, # Output only. The assignment revision ID A new revision is committed whenever a rollout is triggered for a OS policy assignment
  &quot;rollout&quot;: { # Message to configure the rollout at the zonal level for the OS policy assignment. # Required. Rollout to deploy the OS policy assignment. A rollout is triggered in the following situations: 1) OSPolicyAssignment is created. 2) OSPolicyAssignment is updated and the update contains changes to one of the following fields: - instance_filter - os_policies 3) OSPolicyAssignment is deleted.
    &quot;disruptionBudget&quot;: { # Message encapsulating a value that can be either absolute (&quot;fixed&quot;) or relative (&quot;percent&quot;) to a value. # Required. The maximum number (or percentage) of VMs per zone to disrupt at any given moment.
      &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;minWaitDuration&quot;: &quot;A String&quot;, # Required. This determines the minimum duration of time to wait after the configuration changes are applied through the current rollout. A VM continues to count towards the `disruption_budget` at least until this duration of time has passed after configuration changes are applied.
  },
  &quot;rolloutState&quot;: &quot;A String&quot;, # Output only. OS policy assignment rollout state
  &quot;uid&quot;: &quot;A String&quot;, # Output only. Server generated unique id for the OS policy assignment resource.
}

  osPolicyAssignmentId: string, Required. The logical name of the OS policy assignment in the project with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the project.
  requestId: string, Optional. A unique identifier for this request. Restricted to 36 ASCII characters. A random UUID is recommended. This request is only idempotent if a `request_id` is provided.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, requestId=None, x__xgafv=None)</code>
  <pre>Delete the OS policy assignment. This method creates a new revision of the OS policy assignment. This method returns a long running operation (LRO) that contains the rollout details. The rollout can be cancelled by cancelling the LRO. If the LRO completes and is not cancelled, all revisions associated with the OS policy assignment are deleted. For more information, see [Method: projects.locations.osPolicyAssignments.operations.cancel](https://cloud.google.com/compute/docs/osconfig/rest/v1alpha/projects.locations.osPolicyAssignments.operations/cancel).

Args:
  name: string, Required. The name of the OS policy assignment to be deleted (required)
  requestId: string, Optional. A unique identifier for this request. Restricted to 36 ASCII characters. A random UUID is recommended. This request is only idempotent if a `request_id` is provided.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Retrieve an existing OS policy assignment. This method always returns the latest revision. In order to retrieve a previous revision of the assignment, also provide the revision ID in the `name` parameter.

Args:
  name: string, Required. The resource name of OS policy assignment. Format: `projects/{project}/locations/{location}/osPolicyAssignments/{os_policy_assignment}@{revisionId}` (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # OS policy assignment is an API resource that is used to apply a set of OS policies to a dynamically targeted group of Compute Engine VM instances. An OS policy is used to define the desired state configuration for a Compute Engine VM instance through a set of configuration resources that provide capabilities such as installing or removing software packages, or executing a script. For more information, see [OS policy and OS policy assignment](https://cloud.google.com/compute/docs/os-configuration-management/working-with-os-policies).
  &quot;baseline&quot;: True or False, # Output only. Indicates that this revision has been successfully rolled out in this zone and new VMs will be assigned OS policies from this revision. For a given OS policy assignment, there is only one revision with a value of `true` for this field.
  &quot;deleted&quot;: True or False, # Output only. Indicates that this revision deletes the OS policy assignment.
  &quot;description&quot;: &quot;A String&quot;, # OS policy assignment description. Length of the description is limited to 1024 characters.
  &quot;etag&quot;: &quot;A String&quot;, # The etag for this OS policy assignment. If this is provided on update, it must match the server&#x27;s etag.
  &quot;instanceFilter&quot;: { # Filters to select target VMs for an assignment. If more than one filter criteria is specified below, a VM will be selected if and only if it satisfies all of them. # Required. Filter to select VMs.
    &quot;all&quot;: True or False, # Target all VMs in the project. If true, no other criteria is permitted.
    &quot;exclusionLabels&quot;: [ # List of label sets used for VM exclusion. If the list has more than one label set, the VM is excluded if any of the label sets are applicable for the VM.
      { # Message representing label set. * A label is a key value pair set for a VM. * A LabelSet is a set of labels. * Labels within a LabelSet are ANDed. In other words, a LabelSet is applicable for a VM only if it matches all the labels in the LabelSet. * Example: A LabelSet with 2 labels: `env=prod` and `type=webserver` will only be applicable for those VMs with both labels present.
        &quot;labels&quot;: { # Labels are identified by key/value pairs in this map. A VM should contain all the key/value pairs specified in this map to be selected.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
    ],
    &quot;inclusionLabels&quot;: [ # List of label sets used for VM inclusion. If the list has more than one `LabelSet`, the VM is included if any of the label sets are applicable for the VM.
      { # Message representing label set. * A label is a key value pair set for a VM. * A LabelSet is a set of labels. * Labels within a LabelSet are ANDed. In other words, a LabelSet is applicable for a VM only if it matches all the labels in the LabelSet. * Example: A LabelSet with 2 labels: `env=prod` and `type=webserver` will only be applicable for those VMs with both labels present.
        &quot;labels&quot;: { # Labels are identified by key/value pairs in this map. A VM should contain all the key/value pairs specified in this map to be selected.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
    ],
    &quot;inventories&quot;: [ # List of inventories to select VMs. A VM is selected if its inventory data matches at least one of the following inventories.
      { # VM inventory details.
        &quot;osShortName&quot;: &quot;A String&quot;, # Required. The OS short name
        &quot;osVersion&quot;: &quot;A String&quot;, # The OS version Prefix matches are supported if asterisk(*) is provided as the last character. For example, to match all versions with a major version of `7`, specify the following value for this field `7.*` An empty string matches all OS versions.
      },
    ],
    &quot;osShortNames&quot;: [ # Deprecated. Use the `inventories` field instead. A VM is selected if it&#x27;s OS short name matches with any of the values provided in this list.
      &quot;A String&quot;,
    ],
  },
  &quot;name&quot;: &quot;A String&quot;, # Resource name. Format: `projects/{project_number}/locations/{location}/osPolicyAssignments/{os_policy_assignment_id}` This field is ignored when you create an OS policy assignment.
  &quot;osPolicies&quot;: [ # Required. List of OS policies to be applied to the VMs.
    { # An OS policy defines the desired state configuration for a VM.
      &quot;allowNoResourceGroupMatch&quot;: True or False, # This flag determines the OS policy compliance status when none of the resource groups within the policy are applicable for a VM. Set this value to `true` if the policy needs to be reported as compliant even if the policy has nothing to validate or enforce.
      &quot;description&quot;: &quot;A String&quot;, # Policy description. Length of the description is limited to 1024 characters.
      &quot;id&quot;: &quot;A String&quot;, # Required. The id of the OS policy with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the assignment.
      &quot;mode&quot;: &quot;A String&quot;, # Required. Policy mode
      &quot;resourceGroups&quot;: [ # Required. List of resource groups for the policy. For a particular VM, resource groups are evaluated in the order specified and the first resource group that is applicable is selected and the rest are ignored. If none of the resource groups are applicable for a VM, the VM is considered to be non-compliant w.r.t this policy. This behavior can be toggled by the flag `allow_no_resource_group_match`
        { # Resource groups provide a mechanism to group OS policy resources. Resource groups enable OS policy authors to create a single OS policy to be applied to VMs running different operating Systems. When the OS policy is applied to a target VM, the appropriate resource group within the OS policy is selected based on the `OSFilter` specified within the resource group.
          &quot;inventoryFilters&quot;: [ # List of inventory filters for the resource group. The resources in this resource group are applied to the target VM if it satisfies at least one of the following inventory filters. For example, to apply this resource group to VMs running either `RHEL` or `CentOS` operating systems, specify 2 items for the list with following values: inventory_filters[0].os_short_name=&#x27;rhel&#x27; and inventory_filters[1].os_short_name=&#x27;centos&#x27; If the list is empty, this resource group will be applied to the target VM unconditionally.
            { # Filtering criteria to select VMs based on inventory details.
              &quot;osShortName&quot;: &quot;A String&quot;, # Required. The OS short name
              &quot;osVersion&quot;: &quot;A String&quot;, # The OS version Prefix matches are supported if asterisk(*) is provided as the last character. For example, to match all versions with a major version of `7`, specify the following value for this field `7.*` An empty string matches all OS versions.
            },
          ],
          &quot;osFilter&quot;: { # Filtering criteria to select VMs based on OS details. # Deprecated. Use the `inventory_filters` field instead. Used to specify the OS filter for a resource group
            &quot;osShortName&quot;: &quot;A String&quot;, # This should match OS short name emitted by the OS inventory agent. An empty value matches any OS.
            &quot;osVersion&quot;: &quot;A String&quot;, # This value should match the version emitted by the OS inventory agent. Prefix matches are supported if asterisk(*) is provided as the last character. For example, to match all versions with a major version of `7`, specify the following value for this field `7.*`
          },
          &quot;resources&quot;: [ # Required. List of resources configured for this resource group. The resources are executed in the exact order specified here.
            { # An OS policy resource is used to define the desired state configuration and provides a specific functionality like installing/removing packages, executing a script etc. The system ensures that resources are always in their desired state by taking necessary actions if they have drifted from their desired state.
              &quot;exec&quot;: { # A resource that allows executing scripts on the VM. The `ExecResource` has 2 stages: `validate` and `enforce` and both stages accept a script as an argument to execute. When the `ExecResource` is applied by the agent, it first executes the script in the `validate` stage. The `validate` stage can signal that the `ExecResource` is already in the desired state by returning an exit code of `100`. If the `ExecResource` is not in the desired state, it should return an exit code of `101`. Any other exit code returned by this stage is considered an error. If the `ExecResource` is not in the desired state based on the exit code from the `validate` stage, the agent proceeds to execute the script from the `enforce` stage. If the `ExecResource` is already in the desired state, the `enforce` stage will not be run. Similar to `validate` stage, the `enforce` stage should return an exit code of `100` to indicate that the resource in now in its desired state. Any other exit code is considered an error. NOTE: An exit code of `100` was chosen over `0` (and `101` vs `1`) to have an explicit indicator of `in desired state`, `not in desired state` and errors. Because, for example, Powershell will always return an exit code of `0` unless an `exit` statement is provided in the script. So, for reasons of consistency and being explicit, exit codes `100` and `101` were chosen. # Exec resource
                &quot;enforce&quot;: { # A file or script to execute. # What to run to bring this resource into the desired state. An exit code of 100 indicates &quot;success&quot;, any other exit code indicates a failure running enforce.
                  &quot;args&quot;: [ # Optional arguments to pass to the source during execution.
                    &quot;A String&quot;,
                  ],
                  &quot;file&quot;: { # A remote or local file. # A remote or local file.
                    &quot;allowInsecure&quot;: True or False, # Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified.
                    &quot;gcs&quot;: { # Specifies a file available as a Cloud Storage Object. # A Cloud Storage object.
                      &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
                      &quot;generation&quot;: &quot;A String&quot;, # Generation number of the Cloud Storage object.
                      &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
                    },
                    &quot;localPath&quot;: &quot;A String&quot;, # A local path within the VM to use.
                    &quot;remote&quot;: { # Specifies a file available via some URI. # A generic remote file.
                      &quot;sha256Checksum&quot;: &quot;A String&quot;, # SHA256 checksum of the remote file.
                      &quot;uri&quot;: &quot;A String&quot;, # Required. URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`.
                    },
                  },
                  &quot;interpreter&quot;: &quot;A String&quot;, # Required. The script interpreter to use.
                  &quot;outputFilePath&quot;: &quot;A String&quot;, # Only recorded for enforce Exec. Path to an output file (that is created by this Exec) whose content will be recorded in OSPolicyResourceCompliance after a successful run. Absence or failure to read this file will result in this ExecResource being non-compliant. Output file size is limited to 100K bytes.
                  &quot;script&quot;: &quot;A String&quot;, # An inline script. The size of the script is limited to 32KiB.
                },
                &quot;validate&quot;: { # A file or script to execute. # Required. What to run to validate this resource is in the desired state. An exit code of 100 indicates &quot;in desired state&quot;, and exit code of 101 indicates &quot;not in desired state&quot;. Any other exit code indicates a failure running validate.
                  &quot;args&quot;: [ # Optional arguments to pass to the source during execution.
                    &quot;A String&quot;,
                  ],
                  &quot;file&quot;: { # A remote or local file. # A remote or local file.
                    &quot;allowInsecure&quot;: True or False, # Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified.
                    &quot;gcs&quot;: { # Specifies a file available as a Cloud Storage Object. # A Cloud Storage object.
                      &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
                      &quot;generation&quot;: &quot;A String&quot;, # Generation number of the Cloud Storage object.
                      &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
                    },
                    &quot;localPath&quot;: &quot;A String&quot;, # A local path within the VM to use.
                    &quot;remote&quot;: { # Specifies a file available via some URI. # A generic remote file.
                      &quot;sha256Checksum&quot;: &quot;A String&quot;, # SHA256 checksum of the remote file.
                      &quot;uri&quot;: &quot;A String&quot;, # Required. URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`.
                    },
                  },
                  &quot;interpreter&quot;: &quot;A String&quot;, # Required. The script interpreter to use.
                  &quot;outputFilePath&quot;: &quot;A String&quot;, # Only recorded for enforce Exec. Path to an output file (that is created by this Exec) whose content will be recorded in OSPolicyResourceCompliance after a successful run. Absence or failure to read this file will result in this ExecResource being non-compliant. Output file size is limited to 100K bytes.
                  &quot;script&quot;: &quot;A String&quot;, # An inline script. The size of the script is limited to 32KiB.
                },
              },
              &quot;file&quot;: { # A resource that manages the state of a file. # File resource
                &quot;content&quot;: &quot;A String&quot;, # A a file with this content. The size of the content is limited to 32KiB.
                &quot;file&quot;: { # A remote or local file. # A remote or local source.
                  &quot;allowInsecure&quot;: True or False, # Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified.
                  &quot;gcs&quot;: { # Specifies a file available as a Cloud Storage Object. # A Cloud Storage object.
                    &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
                    &quot;generation&quot;: &quot;A String&quot;, # Generation number of the Cloud Storage object.
                    &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
                  },
                  &quot;localPath&quot;: &quot;A String&quot;, # A local path within the VM to use.
                  &quot;remote&quot;: { # Specifies a file available via some URI. # A generic remote file.
                    &quot;sha256Checksum&quot;: &quot;A String&quot;, # SHA256 checksum of the remote file.
                    &quot;uri&quot;: &quot;A String&quot;, # Required. URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`.
                  },
                },
                &quot;path&quot;: &quot;A String&quot;, # Required. The absolute path of the file within the VM.
                &quot;permissions&quot;: &quot;A String&quot;, # Consists of three octal digits which represent, in order, the permissions of the owner, group, and other users for the file (similarly to the numeric mode used in the linux chmod utility). Each digit represents a three bit number with the 4 bit corresponding to the read permissions, the 2 bit corresponds to the write bit, and the one bit corresponds to the execute permission. Default behavior is 755. Below are some examples of permissions and their associated values: read, write, and execute: 7 read and execute: 5 read and write: 6 read only: 4
                &quot;state&quot;: &quot;A String&quot;, # Required. Desired state of the file.
              },
              &quot;id&quot;: &quot;A String&quot;, # Required. The id of the resource with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the OS policy.
              &quot;pkg&quot;: { # A resource that manages a system package. # Package resource
                &quot;apt&quot;: { # A package managed by APT. - install: `apt-get update &amp;&amp; apt-get -y install [name]` - remove: `apt-get -y remove [name]` # A package managed by Apt.
                  &quot;name&quot;: &quot;A String&quot;, # Required. Package name.
                },
                &quot;deb&quot;: { # A deb package file. dpkg packages only support INSTALLED state. # A deb package file.
                  &quot;pullDeps&quot;: True or False, # Whether dependencies should also be installed. - install when false: `dpkg -i package` - install when true: `apt-get update &amp;&amp; apt-get -y install package.deb`
                  &quot;source&quot;: { # A remote or local file. # Required. A deb package.
                    &quot;allowInsecure&quot;: True or False, # Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified.
                    &quot;gcs&quot;: { # Specifies a file available as a Cloud Storage Object. # A Cloud Storage object.
                      &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
                      &quot;generation&quot;: &quot;A String&quot;, # Generation number of the Cloud Storage object.
                      &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
                    },
                    &quot;localPath&quot;: &quot;A String&quot;, # A local path within the VM to use.
                    &quot;remote&quot;: { # Specifies a file available via some URI. # A generic remote file.
                      &quot;sha256Checksum&quot;: &quot;A String&quot;, # SHA256 checksum of the remote file.
                      &quot;uri&quot;: &quot;A String&quot;, # Required. URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`.
                    },
                  },
                },
                &quot;desiredState&quot;: &quot;A String&quot;, # Required. The desired state the agent should maintain for this package.
                &quot;googet&quot;: { # A package managed by GooGet. - install: `googet -noconfirm install package` - remove: `googet -noconfirm remove package` # A package managed by GooGet.
                  &quot;name&quot;: &quot;A String&quot;, # Required. Package name.
                },
                &quot;msi&quot;: { # An MSI package. MSI packages only support INSTALLED state. # An MSI package.
                  &quot;properties&quot;: [ # Additional properties to use during installation. This should be in the format of Property=Setting. Appended to the defaults of `ACTION=INSTALL REBOOT=ReallySuppress`.
                    &quot;A String&quot;,
                  ],
                  &quot;source&quot;: { # A remote or local file. # Required. The MSI package.
                    &quot;allowInsecure&quot;: True or False, # Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified.
                    &quot;gcs&quot;: { # Specifies a file available as a Cloud Storage Object. # A Cloud Storage object.
                      &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
                      &quot;generation&quot;: &quot;A String&quot;, # Generation number of the Cloud Storage object.
                      &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
                    },
                    &quot;localPath&quot;: &quot;A String&quot;, # A local path within the VM to use.
                    &quot;remote&quot;: { # Specifies a file available via some URI. # A generic remote file.
                      &quot;sha256Checksum&quot;: &quot;A String&quot;, # SHA256 checksum of the remote file.
                      &quot;uri&quot;: &quot;A String&quot;, # Required. URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`.
                    },
                  },
                },
                &quot;rpm&quot;: { # An RPM package file. RPM packages only support INSTALLED state. # An rpm package file.
                  &quot;pullDeps&quot;: True or False, # Whether dependencies should also be installed. - install when false: `rpm --upgrade --replacepkgs package.rpm` - install when true: `yum -y install package.rpm` or `zypper -y install package.rpm`
                  &quot;source&quot;: { # A remote or local file. # Required. An rpm package.
                    &quot;allowInsecure&quot;: True or False, # Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified.
                    &quot;gcs&quot;: { # Specifies a file available as a Cloud Storage Object. # A Cloud Storage object.
                      &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
                      &quot;generation&quot;: &quot;A String&quot;, # Generation number of the Cloud Storage object.
                      &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
                    },
                    &quot;localPath&quot;: &quot;A String&quot;, # A local path within the VM to use.
                    &quot;remote&quot;: { # Specifies a file available via some URI. # A generic remote file.
                      &quot;sha256Checksum&quot;: &quot;A String&quot;, # SHA256 checksum of the remote file.
                      &quot;uri&quot;: &quot;A String&quot;, # Required. URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`.
                    },
                  },
                },
                &quot;yum&quot;: { # A package managed by YUM. - install: `yum -y install package` - remove: `yum -y remove package` # A package managed by YUM.
                  &quot;name&quot;: &quot;A String&quot;, # Required. Package name.
                },
                &quot;zypper&quot;: { # A package managed by Zypper. - install: `zypper -y install package` - remove: `zypper -y rm package` # A package managed by Zypper.
                  &quot;name&quot;: &quot;A String&quot;, # Required. Package name.
                },
              },
              &quot;repository&quot;: { # A resource that manages a package repository. # Package repository resource
                &quot;apt&quot;: { # Represents a single apt package repository. These will be added to a repo file that will be managed at `/etc/apt/sources.list.d/google_osconfig.list`. # An Apt Repository.
                  &quot;archiveType&quot;: &quot;A String&quot;, # Required. Type of archive files in this repository.
                  &quot;components&quot;: [ # Required. List of components for this repository. Must contain at least one item.
                    &quot;A String&quot;,
                  ],
                  &quot;distribution&quot;: &quot;A String&quot;, # Required. Distribution of this repository.
                  &quot;gpgKey&quot;: &quot;A String&quot;, # URI of the key file for this repository. The agent maintains a keyring at `/etc/apt/trusted.gpg.d/osconfig_agent_managed.gpg`.
                  &quot;uri&quot;: &quot;A String&quot;, # Required. URI for this repository.
                },
                &quot;goo&quot;: { # Represents a Goo package repository. These are added to a repo file that is managed at `C:/ProgramData/GooGet/repos/google_osconfig.repo`. # A Goo Repository.
                  &quot;name&quot;: &quot;A String&quot;, # Required. The name of the repository.
                  &quot;url&quot;: &quot;A String&quot;, # Required. The url of the repository.
                },
                &quot;yum&quot;: { # Represents a single yum package repository. These are added to a repo file that is managed at `/etc/yum.repos.d/google_osconfig.repo`. # A Yum Repository.
                  &quot;baseUrl&quot;: &quot;A String&quot;, # Required. The location of the repository directory.
                  &quot;displayName&quot;: &quot;A String&quot;, # The display name of the repository.
                  &quot;gpgKeys&quot;: [ # URIs of GPG keys.
                    &quot;A String&quot;,
                  ],
                  &quot;id&quot;: &quot;A String&quot;, # Required. A one word, unique name for this repository. This is the `repo id` in the yum config file and also the `display_name` if `display_name` is omitted. This id is also used as the unique identifier when checking for resource conflicts.
                },
                &quot;zypper&quot;: { # Represents a single zypper package repository. These are added to a repo file that is managed at `/etc/zypp/repos.d/google_osconfig.repo`. # A Zypper Repository.
                  &quot;baseUrl&quot;: &quot;A String&quot;, # Required. The location of the repository directory.
                  &quot;displayName&quot;: &quot;A String&quot;, # The display name of the repository.
                  &quot;gpgKeys&quot;: [ # URIs of GPG keys.
                    &quot;A String&quot;,
                  ],
                  &quot;id&quot;: &quot;A String&quot;, # Required. A one word, unique name for this repository. This is the `repo id` in the zypper config file and also the `display_name` if `display_name` is omitted. This id is also used as the unique identifier when checking for GuestPolicy conflicts.
                },
              },
            },
          ],
        },
      ],
    },
  ],
  &quot;reconciling&quot;: True or False, # Output only. Indicates that reconciliation is in progress for the revision. This value is `true` when the `rollout_state` is one of: * IN_PROGRESS * CANCELLING
  &quot;revisionCreateTime&quot;: &quot;A String&quot;, # Output only. The timestamp that the revision was created.
  &quot;revisionId&quot;: &quot;A String&quot;, # Output only. The assignment revision ID A new revision is committed whenever a rollout is triggered for a OS policy assignment
  &quot;rollout&quot;: { # Message to configure the rollout at the zonal level for the OS policy assignment. # Required. Rollout to deploy the OS policy assignment. A rollout is triggered in the following situations: 1) OSPolicyAssignment is created. 2) OSPolicyAssignment is updated and the update contains changes to one of the following fields: - instance_filter - os_policies 3) OSPolicyAssignment is deleted.
    &quot;disruptionBudget&quot;: { # Message encapsulating a value that can be either absolute (&quot;fixed&quot;) or relative (&quot;percent&quot;) to a value. # Required. The maximum number (or percentage) of VMs per zone to disrupt at any given moment.
      &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;minWaitDuration&quot;: &quot;A String&quot;, # Required. This determines the minimum duration of time to wait after the configuration changes are applied through the current rollout. A VM continues to count towards the `disruption_budget` at least until this duration of time has passed after configuration changes are applied.
  },
  &quot;rolloutState&quot;: &quot;A String&quot;, # Output only. OS policy assignment rollout state
  &quot;uid&quot;: &quot;A String&quot;, # Output only. Server generated unique id for the OS policy assignment resource.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>List the OS policy assignments under the parent resource. For each OS policy assignment, the latest revision is returned.

Args:
  parent: string, Required. The parent resource name. (required)
  pageSize: integer, The maximum number of assignments to return.
  pageToken: string, A pagination token returned from a previous call to `ListOSPolicyAssignments` 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 all assignments under given parent.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The pagination token to retrieve the next page of OS policy assignments.
  &quot;osPolicyAssignments&quot;: [ # The list of assignments
    { # OS policy assignment is an API resource that is used to apply a set of OS policies to a dynamically targeted group of Compute Engine VM instances. An OS policy is used to define the desired state configuration for a Compute Engine VM instance through a set of configuration resources that provide capabilities such as installing or removing software packages, or executing a script. For more information, see [OS policy and OS policy assignment](https://cloud.google.com/compute/docs/os-configuration-management/working-with-os-policies).
      &quot;baseline&quot;: True or False, # Output only. Indicates that this revision has been successfully rolled out in this zone and new VMs will be assigned OS policies from this revision. For a given OS policy assignment, there is only one revision with a value of `true` for this field.
      &quot;deleted&quot;: True or False, # Output only. Indicates that this revision deletes the OS policy assignment.
      &quot;description&quot;: &quot;A String&quot;, # OS policy assignment description. Length of the description is limited to 1024 characters.
      &quot;etag&quot;: &quot;A String&quot;, # The etag for this OS policy assignment. If this is provided on update, it must match the server&#x27;s etag.
      &quot;instanceFilter&quot;: { # Filters to select target VMs for an assignment. If more than one filter criteria is specified below, a VM will be selected if and only if it satisfies all of them. # Required. Filter to select VMs.
        &quot;all&quot;: True or False, # Target all VMs in the project. If true, no other criteria is permitted.
        &quot;exclusionLabels&quot;: [ # List of label sets used for VM exclusion. If the list has more than one label set, the VM is excluded if any of the label sets are applicable for the VM.
          { # Message representing label set. * A label is a key value pair set for a VM. * A LabelSet is a set of labels. * Labels within a LabelSet are ANDed. In other words, a LabelSet is applicable for a VM only if it matches all the labels in the LabelSet. * Example: A LabelSet with 2 labels: `env=prod` and `type=webserver` will only be applicable for those VMs with both labels present.
            &quot;labels&quot;: { # Labels are identified by key/value pairs in this map. A VM should contain all the key/value pairs specified in this map to be selected.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
          },
        ],
        &quot;inclusionLabels&quot;: [ # List of label sets used for VM inclusion. If the list has more than one `LabelSet`, the VM is included if any of the label sets are applicable for the VM.
          { # Message representing label set. * A label is a key value pair set for a VM. * A LabelSet is a set of labels. * Labels within a LabelSet are ANDed. In other words, a LabelSet is applicable for a VM only if it matches all the labels in the LabelSet. * Example: A LabelSet with 2 labels: `env=prod` and `type=webserver` will only be applicable for those VMs with both labels present.
            &quot;labels&quot;: { # Labels are identified by key/value pairs in this map. A VM should contain all the key/value pairs specified in this map to be selected.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
          },
        ],
        &quot;inventories&quot;: [ # List of inventories to select VMs. A VM is selected if its inventory data matches at least one of the following inventories.
          { # VM inventory details.
            &quot;osShortName&quot;: &quot;A String&quot;, # Required. The OS short name
            &quot;osVersion&quot;: &quot;A String&quot;, # The OS version Prefix matches are supported if asterisk(*) is provided as the last character. For example, to match all versions with a major version of `7`, specify the following value for this field `7.*` An empty string matches all OS versions.
          },
        ],
        &quot;osShortNames&quot;: [ # Deprecated. Use the `inventories` field instead. A VM is selected if it&#x27;s OS short name matches with any of the values provided in this list.
          &quot;A String&quot;,
        ],
      },
      &quot;name&quot;: &quot;A String&quot;, # Resource name. Format: `projects/{project_number}/locations/{location}/osPolicyAssignments/{os_policy_assignment_id}` This field is ignored when you create an OS policy assignment.
      &quot;osPolicies&quot;: [ # Required. List of OS policies to be applied to the VMs.
        { # An OS policy defines the desired state configuration for a VM.
          &quot;allowNoResourceGroupMatch&quot;: True or False, # This flag determines the OS policy compliance status when none of the resource groups within the policy are applicable for a VM. Set this value to `true` if the policy needs to be reported as compliant even if the policy has nothing to validate or enforce.
          &quot;description&quot;: &quot;A String&quot;, # Policy description. Length of the description is limited to 1024 characters.
          &quot;id&quot;: &quot;A String&quot;, # Required. The id of the OS policy with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the assignment.
          &quot;mode&quot;: &quot;A String&quot;, # Required. Policy mode
          &quot;resourceGroups&quot;: [ # Required. List of resource groups for the policy. For a particular VM, resource groups are evaluated in the order specified and the first resource group that is applicable is selected and the rest are ignored. If none of the resource groups are applicable for a VM, the VM is considered to be non-compliant w.r.t this policy. This behavior can be toggled by the flag `allow_no_resource_group_match`
            { # Resource groups provide a mechanism to group OS policy resources. Resource groups enable OS policy authors to create a single OS policy to be applied to VMs running different operating Systems. When the OS policy is applied to a target VM, the appropriate resource group within the OS policy is selected based on the `OSFilter` specified within the resource group.
              &quot;inventoryFilters&quot;: [ # List of inventory filters for the resource group. The resources in this resource group are applied to the target VM if it satisfies at least one of the following inventory filters. For example, to apply this resource group to VMs running either `RHEL` or `CentOS` operating systems, specify 2 items for the list with following values: inventory_filters[0].os_short_name=&#x27;rhel&#x27; and inventory_filters[1].os_short_name=&#x27;centos&#x27; If the list is empty, this resource group will be applied to the target VM unconditionally.
                { # Filtering criteria to select VMs based on inventory details.
                  &quot;osShortName&quot;: &quot;A String&quot;, # Required. The OS short name
                  &quot;osVersion&quot;: &quot;A String&quot;, # The OS version Prefix matches are supported if asterisk(*) is provided as the last character. For example, to match all versions with a major version of `7`, specify the following value for this field `7.*` An empty string matches all OS versions.
                },
              ],
              &quot;osFilter&quot;: { # Filtering criteria to select VMs based on OS details. # Deprecated. Use the `inventory_filters` field instead. Used to specify the OS filter for a resource group
                &quot;osShortName&quot;: &quot;A String&quot;, # This should match OS short name emitted by the OS inventory agent. An empty value matches any OS.
                &quot;osVersion&quot;: &quot;A String&quot;, # This value should match the version emitted by the OS inventory agent. Prefix matches are supported if asterisk(*) is provided as the last character. For example, to match all versions with a major version of `7`, specify the following value for this field `7.*`
              },
              &quot;resources&quot;: [ # Required. List of resources configured for this resource group. The resources are executed in the exact order specified here.
                { # An OS policy resource is used to define the desired state configuration and provides a specific functionality like installing/removing packages, executing a script etc. The system ensures that resources are always in their desired state by taking necessary actions if they have drifted from their desired state.
                  &quot;exec&quot;: { # A resource that allows executing scripts on the VM. The `ExecResource` has 2 stages: `validate` and `enforce` and both stages accept a script as an argument to execute. When the `ExecResource` is applied by the agent, it first executes the script in the `validate` stage. The `validate` stage can signal that the `ExecResource` is already in the desired state by returning an exit code of `100`. If the `ExecResource` is not in the desired state, it should return an exit code of `101`. Any other exit code returned by this stage is considered an error. If the `ExecResource` is not in the desired state based on the exit code from the `validate` stage, the agent proceeds to execute the script from the `enforce` stage. If the `ExecResource` is already in the desired state, the `enforce` stage will not be run. Similar to `validate` stage, the `enforce` stage should return an exit code of `100` to indicate that the resource in now in its desired state. Any other exit code is considered an error. NOTE: An exit code of `100` was chosen over `0` (and `101` vs `1`) to have an explicit indicator of `in desired state`, `not in desired state` and errors. Because, for example, Powershell will always return an exit code of `0` unless an `exit` statement is provided in the script. So, for reasons of consistency and being explicit, exit codes `100` and `101` were chosen. # Exec resource
                    &quot;enforce&quot;: { # A file or script to execute. # What to run to bring this resource into the desired state. An exit code of 100 indicates &quot;success&quot;, any other exit code indicates a failure running enforce.
                      &quot;args&quot;: [ # Optional arguments to pass to the source during execution.
                        &quot;A String&quot;,
                      ],
                      &quot;file&quot;: { # A remote or local file. # A remote or local file.
                        &quot;allowInsecure&quot;: True or False, # Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified.
                        &quot;gcs&quot;: { # Specifies a file available as a Cloud Storage Object. # A Cloud Storage object.
                          &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
                          &quot;generation&quot;: &quot;A String&quot;, # Generation number of the Cloud Storage object.
                          &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
                        },
                        &quot;localPath&quot;: &quot;A String&quot;, # A local path within the VM to use.
                        &quot;remote&quot;: { # Specifies a file available via some URI. # A generic remote file.
                          &quot;sha256Checksum&quot;: &quot;A String&quot;, # SHA256 checksum of the remote file.
                          &quot;uri&quot;: &quot;A String&quot;, # Required. URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`.
                        },
                      },
                      &quot;interpreter&quot;: &quot;A String&quot;, # Required. The script interpreter to use.
                      &quot;outputFilePath&quot;: &quot;A String&quot;, # Only recorded for enforce Exec. Path to an output file (that is created by this Exec) whose content will be recorded in OSPolicyResourceCompliance after a successful run. Absence or failure to read this file will result in this ExecResource being non-compliant. Output file size is limited to 100K bytes.
                      &quot;script&quot;: &quot;A String&quot;, # An inline script. The size of the script is limited to 32KiB.
                    },
                    &quot;validate&quot;: { # A file or script to execute. # Required. What to run to validate this resource is in the desired state. An exit code of 100 indicates &quot;in desired state&quot;, and exit code of 101 indicates &quot;not in desired state&quot;. Any other exit code indicates a failure running validate.
                      &quot;args&quot;: [ # Optional arguments to pass to the source during execution.
                        &quot;A String&quot;,
                      ],
                      &quot;file&quot;: { # A remote or local file. # A remote or local file.
                        &quot;allowInsecure&quot;: True or False, # Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified.
                        &quot;gcs&quot;: { # Specifies a file available as a Cloud Storage Object. # A Cloud Storage object.
                          &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
                          &quot;generation&quot;: &quot;A String&quot;, # Generation number of the Cloud Storage object.
                          &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
                        },
                        &quot;localPath&quot;: &quot;A String&quot;, # A local path within the VM to use.
                        &quot;remote&quot;: { # Specifies a file available via some URI. # A generic remote file.
                          &quot;sha256Checksum&quot;: &quot;A String&quot;, # SHA256 checksum of the remote file.
                          &quot;uri&quot;: &quot;A String&quot;, # Required. URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`.
                        },
                      },
                      &quot;interpreter&quot;: &quot;A String&quot;, # Required. The script interpreter to use.
                      &quot;outputFilePath&quot;: &quot;A String&quot;, # Only recorded for enforce Exec. Path to an output file (that is created by this Exec) whose content will be recorded in OSPolicyResourceCompliance after a successful run. Absence or failure to read this file will result in this ExecResource being non-compliant. Output file size is limited to 100K bytes.
                      &quot;script&quot;: &quot;A String&quot;, # An inline script. The size of the script is limited to 32KiB.
                    },
                  },
                  &quot;file&quot;: { # A resource that manages the state of a file. # File resource
                    &quot;content&quot;: &quot;A String&quot;, # A a file with this content. The size of the content is limited to 32KiB.
                    &quot;file&quot;: { # A remote or local file. # A remote or local source.
                      &quot;allowInsecure&quot;: True or False, # Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified.
                      &quot;gcs&quot;: { # Specifies a file available as a Cloud Storage Object. # A Cloud Storage object.
                        &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
                        &quot;generation&quot;: &quot;A String&quot;, # Generation number of the Cloud Storage object.
                        &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
                      },
                      &quot;localPath&quot;: &quot;A String&quot;, # A local path within the VM to use.
                      &quot;remote&quot;: { # Specifies a file available via some URI. # A generic remote file.
                        &quot;sha256Checksum&quot;: &quot;A String&quot;, # SHA256 checksum of the remote file.
                        &quot;uri&quot;: &quot;A String&quot;, # Required. URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`.
                      },
                    },
                    &quot;path&quot;: &quot;A String&quot;, # Required. The absolute path of the file within the VM.
                    &quot;permissions&quot;: &quot;A String&quot;, # Consists of three octal digits which represent, in order, the permissions of the owner, group, and other users for the file (similarly to the numeric mode used in the linux chmod utility). Each digit represents a three bit number with the 4 bit corresponding to the read permissions, the 2 bit corresponds to the write bit, and the one bit corresponds to the execute permission. Default behavior is 755. Below are some examples of permissions and their associated values: read, write, and execute: 7 read and execute: 5 read and write: 6 read only: 4
                    &quot;state&quot;: &quot;A String&quot;, # Required. Desired state of the file.
                  },
                  &quot;id&quot;: &quot;A String&quot;, # Required. The id of the resource with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the OS policy.
                  &quot;pkg&quot;: { # A resource that manages a system package. # Package resource
                    &quot;apt&quot;: { # A package managed by APT. - install: `apt-get update &amp;&amp; apt-get -y install [name]` - remove: `apt-get -y remove [name]` # A package managed by Apt.
                      &quot;name&quot;: &quot;A String&quot;, # Required. Package name.
                    },
                    &quot;deb&quot;: { # A deb package file. dpkg packages only support INSTALLED state. # A deb package file.
                      &quot;pullDeps&quot;: True or False, # Whether dependencies should also be installed. - install when false: `dpkg -i package` - install when true: `apt-get update &amp;&amp; apt-get -y install package.deb`
                      &quot;source&quot;: { # A remote or local file. # Required. A deb package.
                        &quot;allowInsecure&quot;: True or False, # Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified.
                        &quot;gcs&quot;: { # Specifies a file available as a Cloud Storage Object. # A Cloud Storage object.
                          &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
                          &quot;generation&quot;: &quot;A String&quot;, # Generation number of the Cloud Storage object.
                          &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
                        },
                        &quot;localPath&quot;: &quot;A String&quot;, # A local path within the VM to use.
                        &quot;remote&quot;: { # Specifies a file available via some URI. # A generic remote file.
                          &quot;sha256Checksum&quot;: &quot;A String&quot;, # SHA256 checksum of the remote file.
                          &quot;uri&quot;: &quot;A String&quot;, # Required. URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`.
                        },
                      },
                    },
                    &quot;desiredState&quot;: &quot;A String&quot;, # Required. The desired state the agent should maintain for this package.
                    &quot;googet&quot;: { # A package managed by GooGet. - install: `googet -noconfirm install package` - remove: `googet -noconfirm remove package` # A package managed by GooGet.
                      &quot;name&quot;: &quot;A String&quot;, # Required. Package name.
                    },
                    &quot;msi&quot;: { # An MSI package. MSI packages only support INSTALLED state. # An MSI package.
                      &quot;properties&quot;: [ # Additional properties to use during installation. This should be in the format of Property=Setting. Appended to the defaults of `ACTION=INSTALL REBOOT=ReallySuppress`.
                        &quot;A String&quot;,
                      ],
                      &quot;source&quot;: { # A remote or local file. # Required. The MSI package.
                        &quot;allowInsecure&quot;: True or False, # Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified.
                        &quot;gcs&quot;: { # Specifies a file available as a Cloud Storage Object. # A Cloud Storage object.
                          &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
                          &quot;generation&quot;: &quot;A String&quot;, # Generation number of the Cloud Storage object.
                          &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
                        },
                        &quot;localPath&quot;: &quot;A String&quot;, # A local path within the VM to use.
                        &quot;remote&quot;: { # Specifies a file available via some URI. # A generic remote file.
                          &quot;sha256Checksum&quot;: &quot;A String&quot;, # SHA256 checksum of the remote file.
                          &quot;uri&quot;: &quot;A String&quot;, # Required. URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`.
                        },
                      },
                    },
                    &quot;rpm&quot;: { # An RPM package file. RPM packages only support INSTALLED state. # An rpm package file.
                      &quot;pullDeps&quot;: True or False, # Whether dependencies should also be installed. - install when false: `rpm --upgrade --replacepkgs package.rpm` - install when true: `yum -y install package.rpm` or `zypper -y install package.rpm`
                      &quot;source&quot;: { # A remote or local file. # Required. An rpm package.
                        &quot;allowInsecure&quot;: True or False, # Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified.
                        &quot;gcs&quot;: { # Specifies a file available as a Cloud Storage Object. # A Cloud Storage object.
                          &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
                          &quot;generation&quot;: &quot;A String&quot;, # Generation number of the Cloud Storage object.
                          &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
                        },
                        &quot;localPath&quot;: &quot;A String&quot;, # A local path within the VM to use.
                        &quot;remote&quot;: { # Specifies a file available via some URI. # A generic remote file.
                          &quot;sha256Checksum&quot;: &quot;A String&quot;, # SHA256 checksum of the remote file.
                          &quot;uri&quot;: &quot;A String&quot;, # Required. URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`.
                        },
                      },
                    },
                    &quot;yum&quot;: { # A package managed by YUM. - install: `yum -y install package` - remove: `yum -y remove package` # A package managed by YUM.
                      &quot;name&quot;: &quot;A String&quot;, # Required. Package name.
                    },
                    &quot;zypper&quot;: { # A package managed by Zypper. - install: `zypper -y install package` - remove: `zypper -y rm package` # A package managed by Zypper.
                      &quot;name&quot;: &quot;A String&quot;, # Required. Package name.
                    },
                  },
                  &quot;repository&quot;: { # A resource that manages a package repository. # Package repository resource
                    &quot;apt&quot;: { # Represents a single apt package repository. These will be added to a repo file that will be managed at `/etc/apt/sources.list.d/google_osconfig.list`. # An Apt Repository.
                      &quot;archiveType&quot;: &quot;A String&quot;, # Required. Type of archive files in this repository.
                      &quot;components&quot;: [ # Required. List of components for this repository. Must contain at least one item.
                        &quot;A String&quot;,
                      ],
                      &quot;distribution&quot;: &quot;A String&quot;, # Required. Distribution of this repository.
                      &quot;gpgKey&quot;: &quot;A String&quot;, # URI of the key file for this repository. The agent maintains a keyring at `/etc/apt/trusted.gpg.d/osconfig_agent_managed.gpg`.
                      &quot;uri&quot;: &quot;A String&quot;, # Required. URI for this repository.
                    },
                    &quot;goo&quot;: { # Represents a Goo package repository. These are added to a repo file that is managed at `C:/ProgramData/GooGet/repos/google_osconfig.repo`. # A Goo Repository.
                      &quot;name&quot;: &quot;A String&quot;, # Required. The name of the repository.
                      &quot;url&quot;: &quot;A String&quot;, # Required. The url of the repository.
                    },
                    &quot;yum&quot;: { # Represents a single yum package repository. These are added to a repo file that is managed at `/etc/yum.repos.d/google_osconfig.repo`. # A Yum Repository.
                      &quot;baseUrl&quot;: &quot;A String&quot;, # Required. The location of the repository directory.
                      &quot;displayName&quot;: &quot;A String&quot;, # The display name of the repository.
                      &quot;gpgKeys&quot;: [ # URIs of GPG keys.
                        &quot;A String&quot;,
                      ],
                      &quot;id&quot;: &quot;A String&quot;, # Required. A one word, unique name for this repository. This is the `repo id` in the yum config file and also the `display_name` if `display_name` is omitted. This id is also used as the unique identifier when checking for resource conflicts.
                    },
                    &quot;zypper&quot;: { # Represents a single zypper package repository. These are added to a repo file that is managed at `/etc/zypp/repos.d/google_osconfig.repo`. # A Zypper Repository.
                      &quot;baseUrl&quot;: &quot;A String&quot;, # Required. The location of the repository directory.
                      &quot;displayName&quot;: &quot;A String&quot;, # The display name of the repository.
                      &quot;gpgKeys&quot;: [ # URIs of GPG keys.
                        &quot;A String&quot;,
                      ],
                      &quot;id&quot;: &quot;A String&quot;, # Required. A one word, unique name for this repository. This is the `repo id` in the zypper config file and also the `display_name` if `display_name` is omitted. This id is also used as the unique identifier when checking for GuestPolicy conflicts.
                    },
                  },
                },
              ],
            },
          ],
        },
      ],
      &quot;reconciling&quot;: True or False, # Output only. Indicates that reconciliation is in progress for the revision. This value is `true` when the `rollout_state` is one of: * IN_PROGRESS * CANCELLING
      &quot;revisionCreateTime&quot;: &quot;A String&quot;, # Output only. The timestamp that the revision was created.
      &quot;revisionId&quot;: &quot;A String&quot;, # Output only. The assignment revision ID A new revision is committed whenever a rollout is triggered for a OS policy assignment
      &quot;rollout&quot;: { # Message to configure the rollout at the zonal level for the OS policy assignment. # Required. Rollout to deploy the OS policy assignment. A rollout is triggered in the following situations: 1) OSPolicyAssignment is created. 2) OSPolicyAssignment is updated and the update contains changes to one of the following fields: - instance_filter - os_policies 3) OSPolicyAssignment is deleted.
        &quot;disruptionBudget&quot;: { # Message encapsulating a value that can be either absolute (&quot;fixed&quot;) or relative (&quot;percent&quot;) to a value. # Required. The maximum number (or percentage) of VMs per zone to disrupt at any given moment.
          &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;minWaitDuration&quot;: &quot;A String&quot;, # Required. This determines the minimum duration of time to wait after the configuration changes are applied through the current rollout. A VM continues to count towards the `disruption_budget` at least until this duration of time has passed after configuration changes are applied.
      },
      &quot;rolloutState&quot;: &quot;A String&quot;, # Output only. OS policy assignment rollout state
      &quot;uid&quot;: &quot;A String&quot;, # Output only. Server generated unique id for the OS policy assignment resource.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="listRevisions">listRevisions(name, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>List the OS policy assignment revisions for a given OS policy assignment.

Args:
  name: string, Required. The name of the OS policy assignment to list revisions for. (required)
  pageSize: integer, The maximum number of revisions to return.
  pageToken: string, A pagination token returned from a previous call to `ListOSPolicyAssignmentRevisions` 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 all revisions for a OS policy assignment.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The pagination token to retrieve the next page of OS policy assignment revisions.
  &quot;osPolicyAssignments&quot;: [ # The OS policy assignment revisions
    { # OS policy assignment is an API resource that is used to apply a set of OS policies to a dynamically targeted group of Compute Engine VM instances. An OS policy is used to define the desired state configuration for a Compute Engine VM instance through a set of configuration resources that provide capabilities such as installing or removing software packages, or executing a script. For more information, see [OS policy and OS policy assignment](https://cloud.google.com/compute/docs/os-configuration-management/working-with-os-policies).
      &quot;baseline&quot;: True or False, # Output only. Indicates that this revision has been successfully rolled out in this zone and new VMs will be assigned OS policies from this revision. For a given OS policy assignment, there is only one revision with a value of `true` for this field.
      &quot;deleted&quot;: True or False, # Output only. Indicates that this revision deletes the OS policy assignment.
      &quot;description&quot;: &quot;A String&quot;, # OS policy assignment description. Length of the description is limited to 1024 characters.
      &quot;etag&quot;: &quot;A String&quot;, # The etag for this OS policy assignment. If this is provided on update, it must match the server&#x27;s etag.
      &quot;instanceFilter&quot;: { # Filters to select target VMs for an assignment. If more than one filter criteria is specified below, a VM will be selected if and only if it satisfies all of them. # Required. Filter to select VMs.
        &quot;all&quot;: True or False, # Target all VMs in the project. If true, no other criteria is permitted.
        &quot;exclusionLabels&quot;: [ # List of label sets used for VM exclusion. If the list has more than one label set, the VM is excluded if any of the label sets are applicable for the VM.
          { # Message representing label set. * A label is a key value pair set for a VM. * A LabelSet is a set of labels. * Labels within a LabelSet are ANDed. In other words, a LabelSet is applicable for a VM only if it matches all the labels in the LabelSet. * Example: A LabelSet with 2 labels: `env=prod` and `type=webserver` will only be applicable for those VMs with both labels present.
            &quot;labels&quot;: { # Labels are identified by key/value pairs in this map. A VM should contain all the key/value pairs specified in this map to be selected.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
          },
        ],
        &quot;inclusionLabels&quot;: [ # List of label sets used for VM inclusion. If the list has more than one `LabelSet`, the VM is included if any of the label sets are applicable for the VM.
          { # Message representing label set. * A label is a key value pair set for a VM. * A LabelSet is a set of labels. * Labels within a LabelSet are ANDed. In other words, a LabelSet is applicable for a VM only if it matches all the labels in the LabelSet. * Example: A LabelSet with 2 labels: `env=prod` and `type=webserver` will only be applicable for those VMs with both labels present.
            &quot;labels&quot;: { # Labels are identified by key/value pairs in this map. A VM should contain all the key/value pairs specified in this map to be selected.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
          },
        ],
        &quot;inventories&quot;: [ # List of inventories to select VMs. A VM is selected if its inventory data matches at least one of the following inventories.
          { # VM inventory details.
            &quot;osShortName&quot;: &quot;A String&quot;, # Required. The OS short name
            &quot;osVersion&quot;: &quot;A String&quot;, # The OS version Prefix matches are supported if asterisk(*) is provided as the last character. For example, to match all versions with a major version of `7`, specify the following value for this field `7.*` An empty string matches all OS versions.
          },
        ],
        &quot;osShortNames&quot;: [ # Deprecated. Use the `inventories` field instead. A VM is selected if it&#x27;s OS short name matches with any of the values provided in this list.
          &quot;A String&quot;,
        ],
      },
      &quot;name&quot;: &quot;A String&quot;, # Resource name. Format: `projects/{project_number}/locations/{location}/osPolicyAssignments/{os_policy_assignment_id}` This field is ignored when you create an OS policy assignment.
      &quot;osPolicies&quot;: [ # Required. List of OS policies to be applied to the VMs.
        { # An OS policy defines the desired state configuration for a VM.
          &quot;allowNoResourceGroupMatch&quot;: True or False, # This flag determines the OS policy compliance status when none of the resource groups within the policy are applicable for a VM. Set this value to `true` if the policy needs to be reported as compliant even if the policy has nothing to validate or enforce.
          &quot;description&quot;: &quot;A String&quot;, # Policy description. Length of the description is limited to 1024 characters.
          &quot;id&quot;: &quot;A String&quot;, # Required. The id of the OS policy with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the assignment.
          &quot;mode&quot;: &quot;A String&quot;, # Required. Policy mode
          &quot;resourceGroups&quot;: [ # Required. List of resource groups for the policy. For a particular VM, resource groups are evaluated in the order specified and the first resource group that is applicable is selected and the rest are ignored. If none of the resource groups are applicable for a VM, the VM is considered to be non-compliant w.r.t this policy. This behavior can be toggled by the flag `allow_no_resource_group_match`
            { # Resource groups provide a mechanism to group OS policy resources. Resource groups enable OS policy authors to create a single OS policy to be applied to VMs running different operating Systems. When the OS policy is applied to a target VM, the appropriate resource group within the OS policy is selected based on the `OSFilter` specified within the resource group.
              &quot;inventoryFilters&quot;: [ # List of inventory filters for the resource group. The resources in this resource group are applied to the target VM if it satisfies at least one of the following inventory filters. For example, to apply this resource group to VMs running either `RHEL` or `CentOS` operating systems, specify 2 items for the list with following values: inventory_filters[0].os_short_name=&#x27;rhel&#x27; and inventory_filters[1].os_short_name=&#x27;centos&#x27; If the list is empty, this resource group will be applied to the target VM unconditionally.
                { # Filtering criteria to select VMs based on inventory details.
                  &quot;osShortName&quot;: &quot;A String&quot;, # Required. The OS short name
                  &quot;osVersion&quot;: &quot;A String&quot;, # The OS version Prefix matches are supported if asterisk(*) is provided as the last character. For example, to match all versions with a major version of `7`, specify the following value for this field `7.*` An empty string matches all OS versions.
                },
              ],
              &quot;osFilter&quot;: { # Filtering criteria to select VMs based on OS details. # Deprecated. Use the `inventory_filters` field instead. Used to specify the OS filter for a resource group
                &quot;osShortName&quot;: &quot;A String&quot;, # This should match OS short name emitted by the OS inventory agent. An empty value matches any OS.
                &quot;osVersion&quot;: &quot;A String&quot;, # This value should match the version emitted by the OS inventory agent. Prefix matches are supported if asterisk(*) is provided as the last character. For example, to match all versions with a major version of `7`, specify the following value for this field `7.*`
              },
              &quot;resources&quot;: [ # Required. List of resources configured for this resource group. The resources are executed in the exact order specified here.
                { # An OS policy resource is used to define the desired state configuration and provides a specific functionality like installing/removing packages, executing a script etc. The system ensures that resources are always in their desired state by taking necessary actions if they have drifted from their desired state.
                  &quot;exec&quot;: { # A resource that allows executing scripts on the VM. The `ExecResource` has 2 stages: `validate` and `enforce` and both stages accept a script as an argument to execute. When the `ExecResource` is applied by the agent, it first executes the script in the `validate` stage. The `validate` stage can signal that the `ExecResource` is already in the desired state by returning an exit code of `100`. If the `ExecResource` is not in the desired state, it should return an exit code of `101`. Any other exit code returned by this stage is considered an error. If the `ExecResource` is not in the desired state based on the exit code from the `validate` stage, the agent proceeds to execute the script from the `enforce` stage. If the `ExecResource` is already in the desired state, the `enforce` stage will not be run. Similar to `validate` stage, the `enforce` stage should return an exit code of `100` to indicate that the resource in now in its desired state. Any other exit code is considered an error. NOTE: An exit code of `100` was chosen over `0` (and `101` vs `1`) to have an explicit indicator of `in desired state`, `not in desired state` and errors. Because, for example, Powershell will always return an exit code of `0` unless an `exit` statement is provided in the script. So, for reasons of consistency and being explicit, exit codes `100` and `101` were chosen. # Exec resource
                    &quot;enforce&quot;: { # A file or script to execute. # What to run to bring this resource into the desired state. An exit code of 100 indicates &quot;success&quot;, any other exit code indicates a failure running enforce.
                      &quot;args&quot;: [ # Optional arguments to pass to the source during execution.
                        &quot;A String&quot;,
                      ],
                      &quot;file&quot;: { # A remote or local file. # A remote or local file.
                        &quot;allowInsecure&quot;: True or False, # Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified.
                        &quot;gcs&quot;: { # Specifies a file available as a Cloud Storage Object. # A Cloud Storage object.
                          &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
                          &quot;generation&quot;: &quot;A String&quot;, # Generation number of the Cloud Storage object.
                          &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
                        },
                        &quot;localPath&quot;: &quot;A String&quot;, # A local path within the VM to use.
                        &quot;remote&quot;: { # Specifies a file available via some URI. # A generic remote file.
                          &quot;sha256Checksum&quot;: &quot;A String&quot;, # SHA256 checksum of the remote file.
                          &quot;uri&quot;: &quot;A String&quot;, # Required. URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`.
                        },
                      },
                      &quot;interpreter&quot;: &quot;A String&quot;, # Required. The script interpreter to use.
                      &quot;outputFilePath&quot;: &quot;A String&quot;, # Only recorded for enforce Exec. Path to an output file (that is created by this Exec) whose content will be recorded in OSPolicyResourceCompliance after a successful run. Absence or failure to read this file will result in this ExecResource being non-compliant. Output file size is limited to 100K bytes.
                      &quot;script&quot;: &quot;A String&quot;, # An inline script. The size of the script is limited to 32KiB.
                    },
                    &quot;validate&quot;: { # A file or script to execute. # Required. What to run to validate this resource is in the desired state. An exit code of 100 indicates &quot;in desired state&quot;, and exit code of 101 indicates &quot;not in desired state&quot;. Any other exit code indicates a failure running validate.
                      &quot;args&quot;: [ # Optional arguments to pass to the source during execution.
                        &quot;A String&quot;,
                      ],
                      &quot;file&quot;: { # A remote or local file. # A remote or local file.
                        &quot;allowInsecure&quot;: True or False, # Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified.
                        &quot;gcs&quot;: { # Specifies a file available as a Cloud Storage Object. # A Cloud Storage object.
                          &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
                          &quot;generation&quot;: &quot;A String&quot;, # Generation number of the Cloud Storage object.
                          &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
                        },
                        &quot;localPath&quot;: &quot;A String&quot;, # A local path within the VM to use.
                        &quot;remote&quot;: { # Specifies a file available via some URI. # A generic remote file.
                          &quot;sha256Checksum&quot;: &quot;A String&quot;, # SHA256 checksum of the remote file.
                          &quot;uri&quot;: &quot;A String&quot;, # Required. URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`.
                        },
                      },
                      &quot;interpreter&quot;: &quot;A String&quot;, # Required. The script interpreter to use.
                      &quot;outputFilePath&quot;: &quot;A String&quot;, # Only recorded for enforce Exec. Path to an output file (that is created by this Exec) whose content will be recorded in OSPolicyResourceCompliance after a successful run. Absence or failure to read this file will result in this ExecResource being non-compliant. Output file size is limited to 100K bytes.
                      &quot;script&quot;: &quot;A String&quot;, # An inline script. The size of the script is limited to 32KiB.
                    },
                  },
                  &quot;file&quot;: { # A resource that manages the state of a file. # File resource
                    &quot;content&quot;: &quot;A String&quot;, # A a file with this content. The size of the content is limited to 32KiB.
                    &quot;file&quot;: { # A remote or local file. # A remote or local source.
                      &quot;allowInsecure&quot;: True or False, # Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified.
                      &quot;gcs&quot;: { # Specifies a file available as a Cloud Storage Object. # A Cloud Storage object.
                        &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
                        &quot;generation&quot;: &quot;A String&quot;, # Generation number of the Cloud Storage object.
                        &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
                      },
                      &quot;localPath&quot;: &quot;A String&quot;, # A local path within the VM to use.
                      &quot;remote&quot;: { # Specifies a file available via some URI. # A generic remote file.
                        &quot;sha256Checksum&quot;: &quot;A String&quot;, # SHA256 checksum of the remote file.
                        &quot;uri&quot;: &quot;A String&quot;, # Required. URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`.
                      },
                    },
                    &quot;path&quot;: &quot;A String&quot;, # Required. The absolute path of the file within the VM.
                    &quot;permissions&quot;: &quot;A String&quot;, # Consists of three octal digits which represent, in order, the permissions of the owner, group, and other users for the file (similarly to the numeric mode used in the linux chmod utility). Each digit represents a three bit number with the 4 bit corresponding to the read permissions, the 2 bit corresponds to the write bit, and the one bit corresponds to the execute permission. Default behavior is 755. Below are some examples of permissions and their associated values: read, write, and execute: 7 read and execute: 5 read and write: 6 read only: 4
                    &quot;state&quot;: &quot;A String&quot;, # Required. Desired state of the file.
                  },
                  &quot;id&quot;: &quot;A String&quot;, # Required. The id of the resource with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the OS policy.
                  &quot;pkg&quot;: { # A resource that manages a system package. # Package resource
                    &quot;apt&quot;: { # A package managed by APT. - install: `apt-get update &amp;&amp; apt-get -y install [name]` - remove: `apt-get -y remove [name]` # A package managed by Apt.
                      &quot;name&quot;: &quot;A String&quot;, # Required. Package name.
                    },
                    &quot;deb&quot;: { # A deb package file. dpkg packages only support INSTALLED state. # A deb package file.
                      &quot;pullDeps&quot;: True or False, # Whether dependencies should also be installed. - install when false: `dpkg -i package` - install when true: `apt-get update &amp;&amp; apt-get -y install package.deb`
                      &quot;source&quot;: { # A remote or local file. # Required. A deb package.
                        &quot;allowInsecure&quot;: True or False, # Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified.
                        &quot;gcs&quot;: { # Specifies a file available as a Cloud Storage Object. # A Cloud Storage object.
                          &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
                          &quot;generation&quot;: &quot;A String&quot;, # Generation number of the Cloud Storage object.
                          &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
                        },
                        &quot;localPath&quot;: &quot;A String&quot;, # A local path within the VM to use.
                        &quot;remote&quot;: { # Specifies a file available via some URI. # A generic remote file.
                          &quot;sha256Checksum&quot;: &quot;A String&quot;, # SHA256 checksum of the remote file.
                          &quot;uri&quot;: &quot;A String&quot;, # Required. URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`.
                        },
                      },
                    },
                    &quot;desiredState&quot;: &quot;A String&quot;, # Required. The desired state the agent should maintain for this package.
                    &quot;googet&quot;: { # A package managed by GooGet. - install: `googet -noconfirm install package` - remove: `googet -noconfirm remove package` # A package managed by GooGet.
                      &quot;name&quot;: &quot;A String&quot;, # Required. Package name.
                    },
                    &quot;msi&quot;: { # An MSI package. MSI packages only support INSTALLED state. # An MSI package.
                      &quot;properties&quot;: [ # Additional properties to use during installation. This should be in the format of Property=Setting. Appended to the defaults of `ACTION=INSTALL REBOOT=ReallySuppress`.
                        &quot;A String&quot;,
                      ],
                      &quot;source&quot;: { # A remote or local file. # Required. The MSI package.
                        &quot;allowInsecure&quot;: True or False, # Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified.
                        &quot;gcs&quot;: { # Specifies a file available as a Cloud Storage Object. # A Cloud Storage object.
                          &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
                          &quot;generation&quot;: &quot;A String&quot;, # Generation number of the Cloud Storage object.
                          &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
                        },
                        &quot;localPath&quot;: &quot;A String&quot;, # A local path within the VM to use.
                        &quot;remote&quot;: { # Specifies a file available via some URI. # A generic remote file.
                          &quot;sha256Checksum&quot;: &quot;A String&quot;, # SHA256 checksum of the remote file.
                          &quot;uri&quot;: &quot;A String&quot;, # Required. URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`.
                        },
                      },
                    },
                    &quot;rpm&quot;: { # An RPM package file. RPM packages only support INSTALLED state. # An rpm package file.
                      &quot;pullDeps&quot;: True or False, # Whether dependencies should also be installed. - install when false: `rpm --upgrade --replacepkgs package.rpm` - install when true: `yum -y install package.rpm` or `zypper -y install package.rpm`
                      &quot;source&quot;: { # A remote or local file. # Required. An rpm package.
                        &quot;allowInsecure&quot;: True or False, # Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified.
                        &quot;gcs&quot;: { # Specifies a file available as a Cloud Storage Object. # A Cloud Storage object.
                          &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
                          &quot;generation&quot;: &quot;A String&quot;, # Generation number of the Cloud Storage object.
                          &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
                        },
                        &quot;localPath&quot;: &quot;A String&quot;, # A local path within the VM to use.
                        &quot;remote&quot;: { # Specifies a file available via some URI. # A generic remote file.
                          &quot;sha256Checksum&quot;: &quot;A String&quot;, # SHA256 checksum of the remote file.
                          &quot;uri&quot;: &quot;A String&quot;, # Required. URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`.
                        },
                      },
                    },
                    &quot;yum&quot;: { # A package managed by YUM. - install: `yum -y install package` - remove: `yum -y remove package` # A package managed by YUM.
                      &quot;name&quot;: &quot;A String&quot;, # Required. Package name.
                    },
                    &quot;zypper&quot;: { # A package managed by Zypper. - install: `zypper -y install package` - remove: `zypper -y rm package` # A package managed by Zypper.
                      &quot;name&quot;: &quot;A String&quot;, # Required. Package name.
                    },
                  },
                  &quot;repository&quot;: { # A resource that manages a package repository. # Package repository resource
                    &quot;apt&quot;: { # Represents a single apt package repository. These will be added to a repo file that will be managed at `/etc/apt/sources.list.d/google_osconfig.list`. # An Apt Repository.
                      &quot;archiveType&quot;: &quot;A String&quot;, # Required. Type of archive files in this repository.
                      &quot;components&quot;: [ # Required. List of components for this repository. Must contain at least one item.
                        &quot;A String&quot;,
                      ],
                      &quot;distribution&quot;: &quot;A String&quot;, # Required. Distribution of this repository.
                      &quot;gpgKey&quot;: &quot;A String&quot;, # URI of the key file for this repository. The agent maintains a keyring at `/etc/apt/trusted.gpg.d/osconfig_agent_managed.gpg`.
                      &quot;uri&quot;: &quot;A String&quot;, # Required. URI for this repository.
                    },
                    &quot;goo&quot;: { # Represents a Goo package repository. These are added to a repo file that is managed at `C:/ProgramData/GooGet/repos/google_osconfig.repo`. # A Goo Repository.
                      &quot;name&quot;: &quot;A String&quot;, # Required. The name of the repository.
                      &quot;url&quot;: &quot;A String&quot;, # Required. The url of the repository.
                    },
                    &quot;yum&quot;: { # Represents a single yum package repository. These are added to a repo file that is managed at `/etc/yum.repos.d/google_osconfig.repo`. # A Yum Repository.
                      &quot;baseUrl&quot;: &quot;A String&quot;, # Required. The location of the repository directory.
                      &quot;displayName&quot;: &quot;A String&quot;, # The display name of the repository.
                      &quot;gpgKeys&quot;: [ # URIs of GPG keys.
                        &quot;A String&quot;,
                      ],
                      &quot;id&quot;: &quot;A String&quot;, # Required. A one word, unique name for this repository. This is the `repo id` in the yum config file and also the `display_name` if `display_name` is omitted. This id is also used as the unique identifier when checking for resource conflicts.
                    },
                    &quot;zypper&quot;: { # Represents a single zypper package repository. These are added to a repo file that is managed at `/etc/zypp/repos.d/google_osconfig.repo`. # A Zypper Repository.
                      &quot;baseUrl&quot;: &quot;A String&quot;, # Required. The location of the repository directory.
                      &quot;displayName&quot;: &quot;A String&quot;, # The display name of the repository.
                      &quot;gpgKeys&quot;: [ # URIs of GPG keys.
                        &quot;A String&quot;,
                      ],
                      &quot;id&quot;: &quot;A String&quot;, # Required. A one word, unique name for this repository. This is the `repo id` in the zypper config file and also the `display_name` if `display_name` is omitted. This id is also used as the unique identifier when checking for GuestPolicy conflicts.
                    },
                  },
                },
              ],
            },
          ],
        },
      ],
      &quot;reconciling&quot;: True or False, # Output only. Indicates that reconciliation is in progress for the revision. This value is `true` when the `rollout_state` is one of: * IN_PROGRESS * CANCELLING
      &quot;revisionCreateTime&quot;: &quot;A String&quot;, # Output only. The timestamp that the revision was created.
      &quot;revisionId&quot;: &quot;A String&quot;, # Output only. The assignment revision ID A new revision is committed whenever a rollout is triggered for a OS policy assignment
      &quot;rollout&quot;: { # Message to configure the rollout at the zonal level for the OS policy assignment. # Required. Rollout to deploy the OS policy assignment. A rollout is triggered in the following situations: 1) OSPolicyAssignment is created. 2) OSPolicyAssignment is updated and the update contains changes to one of the following fields: - instance_filter - os_policies 3) OSPolicyAssignment is deleted.
        &quot;disruptionBudget&quot;: { # Message encapsulating a value that can be either absolute (&quot;fixed&quot;) or relative (&quot;percent&quot;) to a value. # Required. The maximum number (or percentage) of VMs per zone to disrupt at any given moment.
          &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;minWaitDuration&quot;: &quot;A String&quot;, # Required. This determines the minimum duration of time to wait after the configuration changes are applied through the current rollout. A VM continues to count towards the `disruption_budget` at least until this duration of time has passed after configuration changes are applied.
      },
      &quot;rolloutState&quot;: &quot;A String&quot;, # Output only. OS policy assignment rollout state
      &quot;uid&quot;: &quot;A String&quot;, # Output only. Server generated unique id for the OS policy assignment resource.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="listRevisions_next">listRevisions_next()</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>

<div class="method">
    <code class="details" id="list_next">list_next()</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>

<div class="method">
    <code class="details" id="patch">patch(name, allowMissing=None, body=None, requestId=None, updateMask=None, x__xgafv=None)</code>
  <pre>Update an existing OS policy assignment. This method creates a new revision of the OS policy assignment. This method returns a long running operation (LRO) that contains the rollout details. The rollout can be cancelled by cancelling the LRO. For more information, see [Method: projects.locations.osPolicyAssignments.operations.cancel](https://cloud.google.com/compute/docs/osconfig/rest/v1alpha/projects.locations.osPolicyAssignments.operations/cancel).

Args:
  name: string, Resource name. Format: `projects/{project_number}/locations/{location}/osPolicyAssignments/{os_policy_assignment_id}` This field is ignored when you create an OS policy assignment. (required)
  body: object, The request body.
    The object takes the form of:

{ # OS policy assignment is an API resource that is used to apply a set of OS policies to a dynamically targeted group of Compute Engine VM instances. An OS policy is used to define the desired state configuration for a Compute Engine VM instance through a set of configuration resources that provide capabilities such as installing or removing software packages, or executing a script. For more information, see [OS policy and OS policy assignment](https://cloud.google.com/compute/docs/os-configuration-management/working-with-os-policies).
  &quot;baseline&quot;: True or False, # Output only. Indicates that this revision has been successfully rolled out in this zone and new VMs will be assigned OS policies from this revision. For a given OS policy assignment, there is only one revision with a value of `true` for this field.
  &quot;deleted&quot;: True or False, # Output only. Indicates that this revision deletes the OS policy assignment.
  &quot;description&quot;: &quot;A String&quot;, # OS policy assignment description. Length of the description is limited to 1024 characters.
  &quot;etag&quot;: &quot;A String&quot;, # The etag for this OS policy assignment. If this is provided on update, it must match the server&#x27;s etag.
  &quot;instanceFilter&quot;: { # Filters to select target VMs for an assignment. If more than one filter criteria is specified below, a VM will be selected if and only if it satisfies all of them. # Required. Filter to select VMs.
    &quot;all&quot;: True or False, # Target all VMs in the project. If true, no other criteria is permitted.
    &quot;exclusionLabels&quot;: [ # List of label sets used for VM exclusion. If the list has more than one label set, the VM is excluded if any of the label sets are applicable for the VM.
      { # Message representing label set. * A label is a key value pair set for a VM. * A LabelSet is a set of labels. * Labels within a LabelSet are ANDed. In other words, a LabelSet is applicable for a VM only if it matches all the labels in the LabelSet. * Example: A LabelSet with 2 labels: `env=prod` and `type=webserver` will only be applicable for those VMs with both labels present.
        &quot;labels&quot;: { # Labels are identified by key/value pairs in this map. A VM should contain all the key/value pairs specified in this map to be selected.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
    ],
    &quot;inclusionLabels&quot;: [ # List of label sets used for VM inclusion. If the list has more than one `LabelSet`, the VM is included if any of the label sets are applicable for the VM.
      { # Message representing label set. * A label is a key value pair set for a VM. * A LabelSet is a set of labels. * Labels within a LabelSet are ANDed. In other words, a LabelSet is applicable for a VM only if it matches all the labels in the LabelSet. * Example: A LabelSet with 2 labels: `env=prod` and `type=webserver` will only be applicable for those VMs with both labels present.
        &quot;labels&quot;: { # Labels are identified by key/value pairs in this map. A VM should contain all the key/value pairs specified in this map to be selected.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
    ],
    &quot;inventories&quot;: [ # List of inventories to select VMs. A VM is selected if its inventory data matches at least one of the following inventories.
      { # VM inventory details.
        &quot;osShortName&quot;: &quot;A String&quot;, # Required. The OS short name
        &quot;osVersion&quot;: &quot;A String&quot;, # The OS version Prefix matches are supported if asterisk(*) is provided as the last character. For example, to match all versions with a major version of `7`, specify the following value for this field `7.*` An empty string matches all OS versions.
      },
    ],
    &quot;osShortNames&quot;: [ # Deprecated. Use the `inventories` field instead. A VM is selected if it&#x27;s OS short name matches with any of the values provided in this list.
      &quot;A String&quot;,
    ],
  },
  &quot;name&quot;: &quot;A String&quot;, # Resource name. Format: `projects/{project_number}/locations/{location}/osPolicyAssignments/{os_policy_assignment_id}` This field is ignored when you create an OS policy assignment.
  &quot;osPolicies&quot;: [ # Required. List of OS policies to be applied to the VMs.
    { # An OS policy defines the desired state configuration for a VM.
      &quot;allowNoResourceGroupMatch&quot;: True or False, # This flag determines the OS policy compliance status when none of the resource groups within the policy are applicable for a VM. Set this value to `true` if the policy needs to be reported as compliant even if the policy has nothing to validate or enforce.
      &quot;description&quot;: &quot;A String&quot;, # Policy description. Length of the description is limited to 1024 characters.
      &quot;id&quot;: &quot;A String&quot;, # Required. The id of the OS policy with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the assignment.
      &quot;mode&quot;: &quot;A String&quot;, # Required. Policy mode
      &quot;resourceGroups&quot;: [ # Required. List of resource groups for the policy. For a particular VM, resource groups are evaluated in the order specified and the first resource group that is applicable is selected and the rest are ignored. If none of the resource groups are applicable for a VM, the VM is considered to be non-compliant w.r.t this policy. This behavior can be toggled by the flag `allow_no_resource_group_match`
        { # Resource groups provide a mechanism to group OS policy resources. Resource groups enable OS policy authors to create a single OS policy to be applied to VMs running different operating Systems. When the OS policy is applied to a target VM, the appropriate resource group within the OS policy is selected based on the `OSFilter` specified within the resource group.
          &quot;inventoryFilters&quot;: [ # List of inventory filters for the resource group. The resources in this resource group are applied to the target VM if it satisfies at least one of the following inventory filters. For example, to apply this resource group to VMs running either `RHEL` or `CentOS` operating systems, specify 2 items for the list with following values: inventory_filters[0].os_short_name=&#x27;rhel&#x27; and inventory_filters[1].os_short_name=&#x27;centos&#x27; If the list is empty, this resource group will be applied to the target VM unconditionally.
            { # Filtering criteria to select VMs based on inventory details.
              &quot;osShortName&quot;: &quot;A String&quot;, # Required. The OS short name
              &quot;osVersion&quot;: &quot;A String&quot;, # The OS version Prefix matches are supported if asterisk(*) is provided as the last character. For example, to match all versions with a major version of `7`, specify the following value for this field `7.*` An empty string matches all OS versions.
            },
          ],
          &quot;osFilter&quot;: { # Filtering criteria to select VMs based on OS details. # Deprecated. Use the `inventory_filters` field instead. Used to specify the OS filter for a resource group
            &quot;osShortName&quot;: &quot;A String&quot;, # This should match OS short name emitted by the OS inventory agent. An empty value matches any OS.
            &quot;osVersion&quot;: &quot;A String&quot;, # This value should match the version emitted by the OS inventory agent. Prefix matches are supported if asterisk(*) is provided as the last character. For example, to match all versions with a major version of `7`, specify the following value for this field `7.*`
          },
          &quot;resources&quot;: [ # Required. List of resources configured for this resource group. The resources are executed in the exact order specified here.
            { # An OS policy resource is used to define the desired state configuration and provides a specific functionality like installing/removing packages, executing a script etc. The system ensures that resources are always in their desired state by taking necessary actions if they have drifted from their desired state.
              &quot;exec&quot;: { # A resource that allows executing scripts on the VM. The `ExecResource` has 2 stages: `validate` and `enforce` and both stages accept a script as an argument to execute. When the `ExecResource` is applied by the agent, it first executes the script in the `validate` stage. The `validate` stage can signal that the `ExecResource` is already in the desired state by returning an exit code of `100`. If the `ExecResource` is not in the desired state, it should return an exit code of `101`. Any other exit code returned by this stage is considered an error. If the `ExecResource` is not in the desired state based on the exit code from the `validate` stage, the agent proceeds to execute the script from the `enforce` stage. If the `ExecResource` is already in the desired state, the `enforce` stage will not be run. Similar to `validate` stage, the `enforce` stage should return an exit code of `100` to indicate that the resource in now in its desired state. Any other exit code is considered an error. NOTE: An exit code of `100` was chosen over `0` (and `101` vs `1`) to have an explicit indicator of `in desired state`, `not in desired state` and errors. Because, for example, Powershell will always return an exit code of `0` unless an `exit` statement is provided in the script. So, for reasons of consistency and being explicit, exit codes `100` and `101` were chosen. # Exec resource
                &quot;enforce&quot;: { # A file or script to execute. # What to run to bring this resource into the desired state. An exit code of 100 indicates &quot;success&quot;, any other exit code indicates a failure running enforce.
                  &quot;args&quot;: [ # Optional arguments to pass to the source during execution.
                    &quot;A String&quot;,
                  ],
                  &quot;file&quot;: { # A remote or local file. # A remote or local file.
                    &quot;allowInsecure&quot;: True or False, # Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified.
                    &quot;gcs&quot;: { # Specifies a file available as a Cloud Storage Object. # A Cloud Storage object.
                      &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
                      &quot;generation&quot;: &quot;A String&quot;, # Generation number of the Cloud Storage object.
                      &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
                    },
                    &quot;localPath&quot;: &quot;A String&quot;, # A local path within the VM to use.
                    &quot;remote&quot;: { # Specifies a file available via some URI. # A generic remote file.
                      &quot;sha256Checksum&quot;: &quot;A String&quot;, # SHA256 checksum of the remote file.
                      &quot;uri&quot;: &quot;A String&quot;, # Required. URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`.
                    },
                  },
                  &quot;interpreter&quot;: &quot;A String&quot;, # Required. The script interpreter to use.
                  &quot;outputFilePath&quot;: &quot;A String&quot;, # Only recorded for enforce Exec. Path to an output file (that is created by this Exec) whose content will be recorded in OSPolicyResourceCompliance after a successful run. Absence or failure to read this file will result in this ExecResource being non-compliant. Output file size is limited to 100K bytes.
                  &quot;script&quot;: &quot;A String&quot;, # An inline script. The size of the script is limited to 32KiB.
                },
                &quot;validate&quot;: { # A file or script to execute. # Required. What to run to validate this resource is in the desired state. An exit code of 100 indicates &quot;in desired state&quot;, and exit code of 101 indicates &quot;not in desired state&quot;. Any other exit code indicates a failure running validate.
                  &quot;args&quot;: [ # Optional arguments to pass to the source during execution.
                    &quot;A String&quot;,
                  ],
                  &quot;file&quot;: { # A remote or local file. # A remote or local file.
                    &quot;allowInsecure&quot;: True or False, # Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified.
                    &quot;gcs&quot;: { # Specifies a file available as a Cloud Storage Object. # A Cloud Storage object.
                      &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
                      &quot;generation&quot;: &quot;A String&quot;, # Generation number of the Cloud Storage object.
                      &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
                    },
                    &quot;localPath&quot;: &quot;A String&quot;, # A local path within the VM to use.
                    &quot;remote&quot;: { # Specifies a file available via some URI. # A generic remote file.
                      &quot;sha256Checksum&quot;: &quot;A String&quot;, # SHA256 checksum of the remote file.
                      &quot;uri&quot;: &quot;A String&quot;, # Required. URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`.
                    },
                  },
                  &quot;interpreter&quot;: &quot;A String&quot;, # Required. The script interpreter to use.
                  &quot;outputFilePath&quot;: &quot;A String&quot;, # Only recorded for enforce Exec. Path to an output file (that is created by this Exec) whose content will be recorded in OSPolicyResourceCompliance after a successful run. Absence or failure to read this file will result in this ExecResource being non-compliant. Output file size is limited to 100K bytes.
                  &quot;script&quot;: &quot;A String&quot;, # An inline script. The size of the script is limited to 32KiB.
                },
              },
              &quot;file&quot;: { # A resource that manages the state of a file. # File resource
                &quot;content&quot;: &quot;A String&quot;, # A a file with this content. The size of the content is limited to 32KiB.
                &quot;file&quot;: { # A remote or local file. # A remote or local source.
                  &quot;allowInsecure&quot;: True or False, # Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified.
                  &quot;gcs&quot;: { # Specifies a file available as a Cloud Storage Object. # A Cloud Storage object.
                    &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
                    &quot;generation&quot;: &quot;A String&quot;, # Generation number of the Cloud Storage object.
                    &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
                  },
                  &quot;localPath&quot;: &quot;A String&quot;, # A local path within the VM to use.
                  &quot;remote&quot;: { # Specifies a file available via some URI. # A generic remote file.
                    &quot;sha256Checksum&quot;: &quot;A String&quot;, # SHA256 checksum of the remote file.
                    &quot;uri&quot;: &quot;A String&quot;, # Required. URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`.
                  },
                },
                &quot;path&quot;: &quot;A String&quot;, # Required. The absolute path of the file within the VM.
                &quot;permissions&quot;: &quot;A String&quot;, # Consists of three octal digits which represent, in order, the permissions of the owner, group, and other users for the file (similarly to the numeric mode used in the linux chmod utility). Each digit represents a three bit number with the 4 bit corresponding to the read permissions, the 2 bit corresponds to the write bit, and the one bit corresponds to the execute permission. Default behavior is 755. Below are some examples of permissions and their associated values: read, write, and execute: 7 read and execute: 5 read and write: 6 read only: 4
                &quot;state&quot;: &quot;A String&quot;, # Required. Desired state of the file.
              },
              &quot;id&quot;: &quot;A String&quot;, # Required. The id of the resource with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the OS policy.
              &quot;pkg&quot;: { # A resource that manages a system package. # Package resource
                &quot;apt&quot;: { # A package managed by APT. - install: `apt-get update &amp;&amp; apt-get -y install [name]` - remove: `apt-get -y remove [name]` # A package managed by Apt.
                  &quot;name&quot;: &quot;A String&quot;, # Required. Package name.
                },
                &quot;deb&quot;: { # A deb package file. dpkg packages only support INSTALLED state. # A deb package file.
                  &quot;pullDeps&quot;: True or False, # Whether dependencies should also be installed. - install when false: `dpkg -i package` - install when true: `apt-get update &amp;&amp; apt-get -y install package.deb`
                  &quot;source&quot;: { # A remote or local file. # Required. A deb package.
                    &quot;allowInsecure&quot;: True or False, # Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified.
                    &quot;gcs&quot;: { # Specifies a file available as a Cloud Storage Object. # A Cloud Storage object.
                      &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
                      &quot;generation&quot;: &quot;A String&quot;, # Generation number of the Cloud Storage object.
                      &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
                    },
                    &quot;localPath&quot;: &quot;A String&quot;, # A local path within the VM to use.
                    &quot;remote&quot;: { # Specifies a file available via some URI. # A generic remote file.
                      &quot;sha256Checksum&quot;: &quot;A String&quot;, # SHA256 checksum of the remote file.
                      &quot;uri&quot;: &quot;A String&quot;, # Required. URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`.
                    },
                  },
                },
                &quot;desiredState&quot;: &quot;A String&quot;, # Required. The desired state the agent should maintain for this package.
                &quot;googet&quot;: { # A package managed by GooGet. - install: `googet -noconfirm install package` - remove: `googet -noconfirm remove package` # A package managed by GooGet.
                  &quot;name&quot;: &quot;A String&quot;, # Required. Package name.
                },
                &quot;msi&quot;: { # An MSI package. MSI packages only support INSTALLED state. # An MSI package.
                  &quot;properties&quot;: [ # Additional properties to use during installation. This should be in the format of Property=Setting. Appended to the defaults of `ACTION=INSTALL REBOOT=ReallySuppress`.
                    &quot;A String&quot;,
                  ],
                  &quot;source&quot;: { # A remote or local file. # Required. The MSI package.
                    &quot;allowInsecure&quot;: True or False, # Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified.
                    &quot;gcs&quot;: { # Specifies a file available as a Cloud Storage Object. # A Cloud Storage object.
                      &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
                      &quot;generation&quot;: &quot;A String&quot;, # Generation number of the Cloud Storage object.
                      &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
                    },
                    &quot;localPath&quot;: &quot;A String&quot;, # A local path within the VM to use.
                    &quot;remote&quot;: { # Specifies a file available via some URI. # A generic remote file.
                      &quot;sha256Checksum&quot;: &quot;A String&quot;, # SHA256 checksum of the remote file.
                      &quot;uri&quot;: &quot;A String&quot;, # Required. URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`.
                    },
                  },
                },
                &quot;rpm&quot;: { # An RPM package file. RPM packages only support INSTALLED state. # An rpm package file.
                  &quot;pullDeps&quot;: True or False, # Whether dependencies should also be installed. - install when false: `rpm --upgrade --replacepkgs package.rpm` - install when true: `yum -y install package.rpm` or `zypper -y install package.rpm`
                  &quot;source&quot;: { # A remote or local file. # Required. An rpm package.
                    &quot;allowInsecure&quot;: True or False, # Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified.
                    &quot;gcs&quot;: { # Specifies a file available as a Cloud Storage Object. # A Cloud Storage object.
                      &quot;bucket&quot;: &quot;A String&quot;, # Required. Bucket of the Cloud Storage object.
                      &quot;generation&quot;: &quot;A String&quot;, # Generation number of the Cloud Storage object.
                      &quot;object&quot;: &quot;A String&quot;, # Required. Name of the Cloud Storage object.
                    },
                    &quot;localPath&quot;: &quot;A String&quot;, # A local path within the VM to use.
                    &quot;remote&quot;: { # Specifies a file available via some URI. # A generic remote file.
                      &quot;sha256Checksum&quot;: &quot;A String&quot;, # SHA256 checksum of the remote file.
                      &quot;uri&quot;: &quot;A String&quot;, # Required. URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`.
                    },
                  },
                },
                &quot;yum&quot;: { # A package managed by YUM. - install: `yum -y install package` - remove: `yum -y remove package` # A package managed by YUM.
                  &quot;name&quot;: &quot;A String&quot;, # Required. Package name.
                },
                &quot;zypper&quot;: { # A package managed by Zypper. - install: `zypper -y install package` - remove: `zypper -y rm package` # A package managed by Zypper.
                  &quot;name&quot;: &quot;A String&quot;, # Required. Package name.
                },
              },
              &quot;repository&quot;: { # A resource that manages a package repository. # Package repository resource
                &quot;apt&quot;: { # Represents a single apt package repository. These will be added to a repo file that will be managed at `/etc/apt/sources.list.d/google_osconfig.list`. # An Apt Repository.
                  &quot;archiveType&quot;: &quot;A String&quot;, # Required. Type of archive files in this repository.
                  &quot;components&quot;: [ # Required. List of components for this repository. Must contain at least one item.
                    &quot;A String&quot;,
                  ],
                  &quot;distribution&quot;: &quot;A String&quot;, # Required. Distribution of this repository.
                  &quot;gpgKey&quot;: &quot;A String&quot;, # URI of the key file for this repository. The agent maintains a keyring at `/etc/apt/trusted.gpg.d/osconfig_agent_managed.gpg`.
                  &quot;uri&quot;: &quot;A String&quot;, # Required. URI for this repository.
                },
                &quot;goo&quot;: { # Represents a Goo package repository. These are added to a repo file that is managed at `C:/ProgramData/GooGet/repos/google_osconfig.repo`. # A Goo Repository.
                  &quot;name&quot;: &quot;A String&quot;, # Required. The name of the repository.
                  &quot;url&quot;: &quot;A String&quot;, # Required. The url of the repository.
                },
                &quot;yum&quot;: { # Represents a single yum package repository. These are added to a repo file that is managed at `/etc/yum.repos.d/google_osconfig.repo`. # A Yum Repository.
                  &quot;baseUrl&quot;: &quot;A String&quot;, # Required. The location of the repository directory.
                  &quot;displayName&quot;: &quot;A String&quot;, # The display name of the repository.
                  &quot;gpgKeys&quot;: [ # URIs of GPG keys.
                    &quot;A String&quot;,
                  ],
                  &quot;id&quot;: &quot;A String&quot;, # Required. A one word, unique name for this repository. This is the `repo id` in the yum config file and also the `display_name` if `display_name` is omitted. This id is also used as the unique identifier when checking for resource conflicts.
                },
                &quot;zypper&quot;: { # Represents a single zypper package repository. These are added to a repo file that is managed at `/etc/zypp/repos.d/google_osconfig.repo`. # A Zypper Repository.
                  &quot;baseUrl&quot;: &quot;A String&quot;, # Required. The location of the repository directory.
                  &quot;displayName&quot;: &quot;A String&quot;, # The display name of the repository.
                  &quot;gpgKeys&quot;: [ # URIs of GPG keys.
                    &quot;A String&quot;,
                  ],
                  &quot;id&quot;: &quot;A String&quot;, # Required. A one word, unique name for this repository. This is the `repo id` in the zypper config file and also the `display_name` if `display_name` is omitted. This id is also used as the unique identifier when checking for GuestPolicy conflicts.
                },
              },
            },
          ],
        },
      ],
    },
  ],
  &quot;reconciling&quot;: True or False, # Output only. Indicates that reconciliation is in progress for the revision. This value is `true` when the `rollout_state` is one of: * IN_PROGRESS * CANCELLING
  &quot;revisionCreateTime&quot;: &quot;A String&quot;, # Output only. The timestamp that the revision was created.
  &quot;revisionId&quot;: &quot;A String&quot;, # Output only. The assignment revision ID A new revision is committed whenever a rollout is triggered for a OS policy assignment
  &quot;rollout&quot;: { # Message to configure the rollout at the zonal level for the OS policy assignment. # Required. Rollout to deploy the OS policy assignment. A rollout is triggered in the following situations: 1) OSPolicyAssignment is created. 2) OSPolicyAssignment is updated and the update contains changes to one of the following fields: - instance_filter - os_policies 3) OSPolicyAssignment is deleted.
    &quot;disruptionBudget&quot;: { # Message encapsulating a value that can be either absolute (&quot;fixed&quot;) or relative (&quot;percent&quot;) to a value. # Required. The maximum number (or percentage) of VMs per zone to disrupt at any given moment.
      &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;minWaitDuration&quot;: &quot;A String&quot;, # Required. This determines the minimum duration of time to wait after the configuration changes are applied through the current rollout. A VM continues to count towards the `disruption_budget` at least until this duration of time has passed after configuration changes are applied.
  },
  &quot;rolloutState&quot;: &quot;A String&quot;, # Output only. OS policy assignment rollout state
  &quot;uid&quot;: &quot;A String&quot;, # Output only. Server generated unique id for the OS policy assignment resource.
}

  allowMissing: boolean, Optional. If set to true, and the OS policy assignment is not found, a new OS policy assignment will be created. In this situation, `update_mask` is ignored.
  requestId: string, Optional. A unique identifier for this request. Restricted to 36 ASCII characters. A random UUID is recommended. This request is only idempotent if a `request_id` is provided.
  updateMask: string, Optional. Field mask that controls which fields of the assignment should be updated.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

</body></html>