<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_v1beta.html">Cloud OS Config API</a> . <a href="osconfig_v1beta.projects.html">projects</a> . <a href="osconfig_v1beta.projects.zones.html">zones</a> . <a href="osconfig_v1beta.projects.zones.instances.html">instances</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#lookupEffectiveGuestPolicy">lookupEffectiveGuestPolicy(instance, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lookup the effective guest policy that applies to a VM instance. This</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="lookupEffectiveGuestPolicy">lookupEffectiveGuestPolicy(instance, body=None, x__xgafv=None)</code>
  <pre>Lookup the effective guest policy that applies to a VM instance. This
lookup merges all policies that are assigned to the instance ancestry.

Args:
  instance: string, Required. The VM instance whose policies are being looked up. (required)
  body: object, The request body.
    The object takes the form of:

{ # A request message for getting the effective guest policy assigned to the
      # instance.
    &quot;osArchitecture&quot;: &quot;A String&quot;, # Architecture of OS running on the instance. The OS Config agent only
        # provides this field for targeting if OS Inventory is enabled for that
        # instance.
    &quot;osVersion&quot;: &quot;A String&quot;, # Version of the OS running on the instance. The OS Config agent only
        # provides this field for targeting if OS Inventory is enabled for that
        # VM instance.
    &quot;osShortName&quot;: &quot;A String&quot;, # Short name of the OS running on the instance. The OS Config agent only
        # provides this field for targeting if OS Inventory is enabled for that
        # instance.
  }

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

Returns:
  An object of the form:

    { # The effective guest policy that applies to a VM instance.
    &quot;softwareRecipes&quot;: [ # List of recipes assigned to the VM instance.
      { # A guest policy recipe including its source.
        &quot;softwareRecipe&quot;: { # A software recipe is a set of instructions for installing and configuring a # A software recipe to configure on the VM instance.
            # piece of software. It consists of a set of artifacts that are
            # downloaded, and a set of steps that install, configure, and/or update the
            # software.
            #
            # Recipes support installing and updating software from artifacts in the
            # following formats:
            # Zip archive, Tar archive, Windows MSI, Debian package, and RPM package.
            #
            # Additionally, recipes support executing a script (either defined in a file or
            # directly in this api) in bash, sh, cmd, and powershell.
            #
            # Updating a software recipe
            #
            # If a recipe is assigned to an instance and there is a recipe with the same
            # name but a lower version already installed and the assigned state
            # of the recipe is `UPDATED`, then the recipe is updated to
            # the new version.
            #
            # Script Working Directories
            #
            # Each script or execution step is run in its own temporary directory which
            # is deleted after completing the step.
          &quot;updateSteps&quot;: [ # Actions to be taken for updating this recipe. On failure it stops
              # executing steps and  does not attempt another update for this recipe. Any
              # steps taken (including partially completed steps) are not rolled back.
            { # An action that can be taken as part of installing or updating a recipe.
              &quot;fileExec&quot;: { # Executes an artifact or local file. # Executes an artifact or local file.
                &quot;allowedExitCodes&quot;: [ # Defaults to [0]. A list of possible return values that the program
                    # can return to indicate a success.
                  42,
                ],
                &quot;localPath&quot;: &quot;A String&quot;, # The absolute path of the file on the local filesystem.
                &quot;args&quot;: [ # Arguments to be passed to the provided executable.
                  &quot;A String&quot;,
                ],
                &quot;artifactId&quot;: &quot;A String&quot;, # The id of the relevant artifact in the recipe.
              },
              &quot;archiveExtraction&quot;: { # Extracts an archive of the type specified in the specified directory. # Extracts an archive into the specified directory.
                &quot;type&quot;: &quot;A String&quot;, # Required. The type of the archive to extract.
                &quot;destination&quot;: &quot;A String&quot;, # Directory to extract archive to.
                    # Defaults to `/` on Linux or `C:\` on Windows.
                &quot;artifactId&quot;: &quot;A String&quot;, # Required. The id of the relevant artifact in the recipe.
              },
              &quot;msiInstallation&quot;: { # Installs an MSI file. # Installs an MSI file.
                &quot;flags&quot;: [ # The flags to use when installing the MSI
                    # defaults to [&quot;/i&quot;] (i.e. the install flag).
                  &quot;A String&quot;,
                ],
                &quot;artifactId&quot;: &quot;A String&quot;, # Required. The id of the relevant artifact in the recipe.
                &quot;allowedExitCodes&quot;: [ # Return codes that indicate that the software installed or updated
                    # successfully. Behaviour defaults to [0]
                  42,
                ],
              },
              &quot;fileCopy&quot;: { # Copies the artifact to the specified path on the instance. # Copies a file onto the instance.
                &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;overwrite&quot;: True or False, # Whether to allow this step to overwrite existing files. If this is
                    # false and the file already exists the file is not overwritten
                    # and the step is considered a success. Defaults to false.
                &quot;destination&quot;: &quot;A String&quot;, # Required. The absolute path on the instance to put the file.
                &quot;artifactId&quot;: &quot;A String&quot;, # Required. The id of the relevant artifact in the recipe.
              },
              &quot;scriptRun&quot;: { # Runs a script through an interpreter. # Runs commands in a shell.
                &quot;interpreter&quot;: &quot;A String&quot;, # The script interpreter to use to run the script. If no interpreter is
                    # specified the script is executed directly, which likely
                    # only succeed for scripts with
                    # [shebang lines](https://en.wikipedia.org/wiki/Shebang_\(Unix\)).
                &quot;script&quot;: &quot;A String&quot;, # Required. The shell script to be executed.
                &quot;allowedExitCodes&quot;: [ # Return codes that indicate that the software installed or updated
                    # successfully. Behaviour defaults to [0]
                  42,
                ],
              },
              &quot;dpkgInstallation&quot;: { # Installs a deb via dpkg. # Installs a deb file via dpkg.
                &quot;artifactId&quot;: &quot;A String&quot;, # Required. The id of the relevant artifact in the recipe.
              },
              &quot;rpmInstallation&quot;: { # Installs an rpm file via the rpm utility. # Installs an rpm file via the rpm utility.
                &quot;artifactId&quot;: &quot;A String&quot;, # Required. The id of the relevant artifact in the recipe.
              },
            },
          ],
          &quot;artifacts&quot;: [ # Resources available to be used in the steps in the recipe.
            { # Specifies a resource to be used in the recipe.
              &quot;id&quot;: &quot;A String&quot;, # Required. Id of the artifact, which the installation and update steps of this
                  # recipe can reference. Artifacts in a recipe cannot have the same id.
              &quot;remote&quot;: { # Specifies an artifact available via some URI. # A generic remote artifact.
                &quot;checksum&quot;: &quot;A String&quot;, # Must be provided if `allow_insecure` is `false`.
                    # SHA256 checksum in hex format, to compare to the checksum of the
                    # artifact. If the checksum is not empty and it doesn&#x27;t match the
                    # artifact then the recipe installation fails before running any of the
                    # steps.
                &quot;uri&quot;: &quot;A String&quot;, # URI from which to fetch the object. It should contain both the protocol
                    # and path following the format {protocol}://{location}.
              },
              &quot;allowInsecure&quot;: True or False, # Defaults to false. When false, recipes are subject to validations
                  # based on the artifact type:
                  #
                  # Remote: A checksum must be specified, and only protocols with
                  # transport-layer security are permitted.
                  # GCS:    An object generation number must be specified.
              &quot;gcs&quot;: { # Specifies an artifact available as a Google Cloud Storage object. # A Google Cloud Storage artifact.
                &quot;object&quot;: &quot;A String&quot;, # Name of the Google Cloud Storage object.
                    # As specified [here]
                    # (https://cloud.google.com/storage/docs/naming#objectnames)
                    # Given an example URL:
                    # `https://storage.googleapis.com/my-bucket/foo/bar#1234567`
                    # this value would be `foo/bar`.
                &quot;generation&quot;: &quot;A String&quot;, # Must be provided if allow_insecure is false.
                    # Generation number of the Google Cloud Storage object.
                    # `https://storage.googleapis.com/my-bucket/foo/bar#1234567`
                    # this value would be `1234567`.
                &quot;bucket&quot;: &quot;A String&quot;, # Bucket of the Google Cloud Storage object.
                    # Given an example URL:
                    # `https://storage.googleapis.com/my-bucket/foo/bar#1234567`
                    # this value would be `my-bucket`.
              },
            },
          ],
          &quot;desiredState&quot;: &quot;A String&quot;, # Default is INSTALLED. The desired state the agent should maintain for this
              # recipe.
              #
              # INSTALLED: The software recipe is installed on the instance but
              #            won&#x27;t be updated to new versions.
              # UPDATED: The software recipe is installed on the instance. The recipe is
              #          updated to a higher version, if a higher version of the recipe is
              #          assigned to this instance.
              # REMOVE: Remove is unsupported for software recipes and attempts to
              #         create or update a recipe to the REMOVE state is rejected.
          &quot;name&quot;: &quot;A String&quot;, # Required. Unique identifier for the recipe. Only one recipe with a given name is
              # installed on an instance.
              #
              # Names are also used to identify resources which helps to determine whether
              # guest policies have conflicts. This means that requests to create multiple
              # recipes with the same name and version are rejected since they
              # could potentially have conflicting assignments.
          &quot;version&quot;: &quot;A String&quot;, # The version of this software recipe. Version can be up to 4 period
              # separated numbers (e.g. 12.34.56.78).
          &quot;installSteps&quot;: [ # Actions to be taken for installing this recipe. On failure it stops
              # executing steps and does not attempt another installation. Any steps taken
              # (including partially completed steps) are not rolled back.
            { # An action that can be taken as part of installing or updating a recipe.
              &quot;fileExec&quot;: { # Executes an artifact or local file. # Executes an artifact or local file.
                &quot;allowedExitCodes&quot;: [ # Defaults to [0]. A list of possible return values that the program
                    # can return to indicate a success.
                  42,
                ],
                &quot;localPath&quot;: &quot;A String&quot;, # The absolute path of the file on the local filesystem.
                &quot;args&quot;: [ # Arguments to be passed to the provided executable.
                  &quot;A String&quot;,
                ],
                &quot;artifactId&quot;: &quot;A String&quot;, # The id of the relevant artifact in the recipe.
              },
              &quot;archiveExtraction&quot;: { # Extracts an archive of the type specified in the specified directory. # Extracts an archive into the specified directory.
                &quot;type&quot;: &quot;A String&quot;, # Required. The type of the archive to extract.
                &quot;destination&quot;: &quot;A String&quot;, # Directory to extract archive to.
                    # Defaults to `/` on Linux or `C:\` on Windows.
                &quot;artifactId&quot;: &quot;A String&quot;, # Required. The id of the relevant artifact in the recipe.
              },
              &quot;msiInstallation&quot;: { # Installs an MSI file. # Installs an MSI file.
                &quot;flags&quot;: [ # The flags to use when installing the MSI
                    # defaults to [&quot;/i&quot;] (i.e. the install flag).
                  &quot;A String&quot;,
                ],
                &quot;artifactId&quot;: &quot;A String&quot;, # Required. The id of the relevant artifact in the recipe.
                &quot;allowedExitCodes&quot;: [ # Return codes that indicate that the software installed or updated
                    # successfully. Behaviour defaults to [0]
                  42,
                ],
              },
              &quot;fileCopy&quot;: { # Copies the artifact to the specified path on the instance. # Copies a file onto the instance.
                &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;overwrite&quot;: True or False, # Whether to allow this step to overwrite existing files. If this is
                    # false and the file already exists the file is not overwritten
                    # and the step is considered a success. Defaults to false.
                &quot;destination&quot;: &quot;A String&quot;, # Required. The absolute path on the instance to put the file.
                &quot;artifactId&quot;: &quot;A String&quot;, # Required. The id of the relevant artifact in the recipe.
              },
              &quot;scriptRun&quot;: { # Runs a script through an interpreter. # Runs commands in a shell.
                &quot;interpreter&quot;: &quot;A String&quot;, # The script interpreter to use to run the script. If no interpreter is
                    # specified the script is executed directly, which likely
                    # only succeed for scripts with
                    # [shebang lines](https://en.wikipedia.org/wiki/Shebang_\(Unix\)).
                &quot;script&quot;: &quot;A String&quot;, # Required. The shell script to be executed.
                &quot;allowedExitCodes&quot;: [ # Return codes that indicate that the software installed or updated
                    # successfully. Behaviour defaults to [0]
                  42,
                ],
              },
              &quot;dpkgInstallation&quot;: { # Installs a deb via dpkg. # Installs a deb file via dpkg.
                &quot;artifactId&quot;: &quot;A String&quot;, # Required. The id of the relevant artifact in the recipe.
              },
              &quot;rpmInstallation&quot;: { # Installs an rpm file via the rpm utility. # Installs an rpm file via the rpm utility.
                &quot;artifactId&quot;: &quot;A String&quot;, # Required. The id of the relevant artifact in the recipe.
              },
            },
          ],
        },
        &quot;source&quot;: &quot;A String&quot;, # Name of the guest policy providing this config.
      },
    ],
    &quot;packageRepositories&quot;: [ # List of package repository configurations assigned to the VM instance.
      { # A guest policy package repository including its source.
        &quot;packageRepository&quot;: { # A package repository. # A software package repository to configure on the VM instance.
          &quot;goo&quot;: { # Represents a Goo package repository. These is added to a repo file # A Goo Repository.
              # that is stored at C:/ProgramData/GooGet/repos/google_osconfig.repo.
            &quot;url&quot;: &quot;A String&quot;, # Required. The url of the repository.
            &quot;name&quot;: &quot;A String&quot;, # Required. The name of the repository.
          },
          &quot;apt&quot;: { # Represents a single Apt package repository. This repository is added to # An Apt Repository.
              # a repo file that is stored at
              # `/etc/apt/sources.list.d/google_osconfig.list`.
            &quot;archiveType&quot;: &quot;A String&quot;, # Type of archive files in this repository. The default behavior is DEB.
            &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` containing
                # all the keys in any applied guest policy.
            &quot;uri&quot;: &quot;A String&quot;, # Required. URI for 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;zypper&quot;: { # Represents a single Zypper package repository. This repository is added to a # A Zypper Repository.
              # repo file that is stored at `/etc/zypp/repos.d/google_osconfig.repo`.
            &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 guest policy conflicts.
            &quot;displayName&quot;: &quot;A String&quot;, # The display name of the repository.
            &quot;baseUrl&quot;: &quot;A String&quot;, # Required. The location of the repository directory.
          },
          &quot;yum&quot;: { # Represents a single Yum package repository. This repository is added to a # A Yum Repository.
              # repo file that is stored at `/etc/yum.repos.d/google_osconfig.repo`.
            &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 guest policy conflicts.
            &quot;displayName&quot;: &quot;A String&quot;, # The display name of the repository.
            &quot;baseUrl&quot;: &quot;A String&quot;, # Required. The location of the repository directory.
            &quot;gpgKeys&quot;: [ # URIs of GPG keys.
              &quot;A String&quot;,
            ],
          },
        },
        &quot;source&quot;: &quot;A String&quot;, # Name of the guest policy providing this config.
      },
    ],
    &quot;packages&quot;: [ # List of package configurations assigned to the VM instance.
      { # A guest policy package including its source.
        &quot;package&quot;: { # Package is a reference to the software package to be installed or removed. # A software package to configure on the VM instance.
            # The agent on the VM instance uses the system package manager to apply the
            # config.
            #
            #
            # These are the commands that the agent uses to install or remove
            # packages.
            #
            # Apt
            # install: `apt-get update &amp;&amp; apt-get -y install package1 package2 package3`
            # remove: `apt-get -y remove package1 package2 package3`
            #
            # Yum
            # install: `yum -y install package1 package2 package3`
            # remove: `yum -y remove package1 package2 package3`
            #
            # Zypper
            # install: `zypper install package1 package2 package3`
            # remove: `zypper rm package1 package2`
            #
            # Googet
            # install: `googet -noconfirm install package1 package2 package3`
            # remove: `googet -noconfirm remove package1 package2 package3`
          &quot;desiredState&quot;: &quot;A String&quot;, # The desired_state the agent should maintain for this package. The
              # default is to ensure the package is installed.
          &quot;name&quot;: &quot;A String&quot;, # Required. The name of the package. A package is uniquely identified for conflict
              # validation by checking the package name and the manager(s) that the
              # package targets.
          &quot;manager&quot;: &quot;A String&quot;, # Type of package manager that can be used to install this package.
              # If a system does not have the package manager, the package is not
              # installed or removed no error message is returned. By default,
              # or if you specify `ANY`,
              # the agent attempts to install and remove this package using the default
              # package manager. This is useful when creating a policy that applies to
              # different types of systems.
              #
              # The default behavior is ANY.
        },
        &quot;source&quot;: &quot;A String&quot;, # Name of the guest policy providing this config.
      },
    ],
  }</pre>
</div>

</body></html>