<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">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="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<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 lookup merges all policies that are assigned to the instance ancestry.</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="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;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;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;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;packageRepositories&quot;: [ # List of package repository configurations assigned to the VM instance.
      { # A guest policy package repository including its source.
        &quot;source&quot;: &quot;A String&quot;, # Name of the guest policy providing this config.
        &quot;packageRepository&quot;: { # A package repository. # A software package repository to configure on the VM instance.
          &quot;zypper&quot;: { # Represents a single Zypper package repository. This repository is added to a repo file that is stored at `/etc/zypp/repos.d/google_osconfig.repo`. # A Zypper Repository.
            &quot;displayName&quot;: &quot;A String&quot;, # The display name of the repository.
            &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;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;yum&quot;: { # Represents a single Yum package repository. This repository is added to a repo file that is stored at `/etc/yum.repos.d/google_osconfig.repo`. # A Yum Repository.
            &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;goo&quot;: { # Represents a Goo package repository. These is added to a repo file that is stored at C:/ProgramData/GooGet/repos/google_osconfig.repo. # A Goo Repository.
            &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 a repo file that is stored at `/etc/apt/sources.list.d/google_osconfig.list`. # An Apt Repository.
            &quot;uri&quot;: &quot;A String&quot;, # Required. URI for 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` containing all the keys in any applied guest policy.
            &quot;components&quot;: [ # Required. List of components for this repository. Must contain at least one item.
              &quot;A String&quot;,
            ],
            &quot;archiveType&quot;: &quot;A String&quot;, # Type of archive files in this repository. The default behavior is DEB.
            &quot;distribution&quot;: &quot;A String&quot;, # Required. Distribution of this repository.
          },
        },
      },
    ],
    &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. 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` # A software package to configure on the VM instance.
          &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;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;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;source&quot;: &quot;A String&quot;, # Name of the guest policy providing this config.
      },
    ],
    &quot;softwareRecipes&quot;: [ # List of recipes assigned to the VM instance.
      { # A guest policy recipe including its source.
        &quot;source&quot;: &quot;A String&quot;, # Name of the guest policy providing this config.
        &quot;softwareRecipe&quot;: { # A software recipe is a set of instructions for installing and configuring a 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. # A software recipe to configure on the VM instance.
          &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;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;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;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;scriptRun&quot;: { # Runs a script through an interpreter. # Runs commands in a shell.
                &quot;allowedExitCodes&quot;: [ # Return codes that indicate that the software installed or updated successfully. Behaviour defaults to [0]
                  42,
                ],
                &quot;script&quot;: &quot;A String&quot;, # Required. The shell script to be executed.
                &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;fileExec&quot;: { # Executes an artifact or local file. # Executes an artifact or local file.
                &quot;artifactId&quot;: &quot;A String&quot;, # The id of the relevant artifact in the recipe.
                &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;allowedExitCodes&quot;: [ # Defaults to [0]. A list of possible return values that the program can return to indicate a success.
                  42,
                ],
              },
              &quot;msiInstallation&quot;: { # Installs an MSI file. # Installs an MSI file.
                &quot;allowedExitCodes&quot;: [ # Return codes that indicate that the software installed or updated successfully. Behaviour defaults to [0]
                  42,
                ],
                &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;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;artifactId&quot;: &quot;A String&quot;, # Required. The id of the relevant artifact in the recipe.
                &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;archiveExtraction&quot;: { # Extracts an archive of the type specified in the specified directory. # Extracts an archive into the specified directory.
                &quot;artifactId&quot;: &quot;A String&quot;, # Required. The id of the relevant artifact in the recipe.
                &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;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;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;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;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;scriptRun&quot;: { # Runs a script through an interpreter. # Runs commands in a shell.
                &quot;allowedExitCodes&quot;: [ # Return codes that indicate that the software installed or updated successfully. Behaviour defaults to [0]
                  42,
                ],
                &quot;script&quot;: &quot;A String&quot;, # Required. The shell script to be executed.
                &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;fileExec&quot;: { # Executes an artifact or local file. # Executes an artifact or local file.
                &quot;artifactId&quot;: &quot;A String&quot;, # The id of the relevant artifact in the recipe.
                &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;allowedExitCodes&quot;: [ # Defaults to [0]. A list of possible return values that the program can return to indicate a success.
                  42,
                ],
              },
              &quot;msiInstallation&quot;: { # Installs an MSI file. # Installs an MSI file.
                &quot;allowedExitCodes&quot;: [ # Return codes that indicate that the software installed or updated successfully. Behaviour defaults to [0]
                  42,
                ],
                &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;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;artifactId&quot;: &quot;A String&quot;, # Required. The id of the relevant artifact in the recipe.
                &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;archiveExtraction&quot;: { # Extracts an archive of the type specified in the specified directory. # Extracts an archive into the specified directory.
                &quot;artifactId&quot;: &quot;A String&quot;, # Required. The id of the relevant artifact in the recipe.
                &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;artifacts&quot;: [ # Resources available to be used in the steps in the recipe.
            { # Specifies a resource to be used in the recipe.
              &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;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;gcs&quot;: { # Specifies an artifact available as a Google Cloud Storage object. # A Google Cloud Storage artifact.
                &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;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;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;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;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).
        },
      },
    ],
  }</pre>
</div>

</body></html>