<html><body>
<style>

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

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

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

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

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

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

pre {
  margin-top: 0.5em;
}

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

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

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

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

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

</style>

<h1><a href="osconfig_v1.html">OS Config API</a> . <a href="osconfig_v1.projects.html">projects</a> . <a href="osconfig_v1.projects.locations.html">locations</a> . <a href="osconfig_v1.projects.locations.osPolicyAssignments.html">osPolicyAssignments</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="osconfig_v1.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, 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/v1/projects.locations.osPolicyAssignments.operations/cancel).</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, 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/v1/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(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=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/v1/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, 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/v1/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;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;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 1024 characters.
                },
                &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 1024 characters.
                },
              },
              &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 1024 characters.
                &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.
  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 response of the operation in case of success. 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, 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/v1/projects.locations.osPolicyAssignments.operations/cancel).

Args:
  name: string, Required. The name of the OS policy assignment to be deleted (required)
  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 response of the operation in case of success. 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;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;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 1024 characters.
                },
                &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 1024 characters.
                },
              },
              &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 1024 characters.
                &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;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;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 1024 characters.
                    },
                    &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 1024 characters.
                    },
                  },
                  &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 1024 characters.
                    &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;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;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 1024 characters.
                    },
                    &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 1024 characters.
                    },
                  },
                  &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 1024 characters.
                    &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(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

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

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

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

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

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

<div class="method">
    <code class="details" id="patch">patch(name, body=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/v1/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;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;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 1024 characters.
                },
                &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 1024 characters.
                },
              },
              &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 1024 characters.
                &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.
}

  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 response of the operation in case of success. 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>