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.
Attributes
Name
Description
validate
google.cloud.osconfig_v1alpha.types.OSPolicy.Resource.ExecResource.Exec
Required. What to run to validate this
resource is in the desired state. An exit code
of 100 indicates "in desired state", and exit
code of 101 indicates "not in desired state".
Any other exit code indicates a failure running
validate.
This message has oneof_ fields (mutually exclusive fields).
For each oneof, at most one member field can be set at the same time.
Setting any member of the oneof automatically clears all other
members.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-11 UTC."],[],[],null,["# Class ExecResource (1.21.0)\n\nVersion latestkeyboard_arrow_down\n\n- [1.21.0 (latest)](/python/docs/reference/osconfig/latest/google.cloud.osconfig_v1alpha.types.OSPolicy.Resource.ExecResource)\n- [1.20.2](/python/docs/reference/osconfig/1.20.2/google.cloud.osconfig_v1alpha.types.OSPolicy.Resource.ExecResource)\n- [1.19.0](/python/docs/reference/osconfig/1.19.0/google.cloud.osconfig_v1alpha.types.OSPolicy.Resource.ExecResource)\n- [1.18.1](/python/docs/reference/osconfig/1.18.1/google.cloud.osconfig_v1alpha.types.OSPolicy.Resource.ExecResource)\n- [1.17.5](/python/docs/reference/osconfig/1.17.5/google.cloud.osconfig_v1alpha.types.OSPolicy.Resource.ExecResource)\n- [1.16.0](/python/docs/reference/osconfig/1.16.0/google.cloud.osconfig_v1alpha.types.OSPolicy.Resource.ExecResource)\n- [1.15.3](/python/docs/reference/osconfig/1.15.3/google.cloud.osconfig_v1alpha.types.OSPolicy.Resource.ExecResource)\n- [1.14.1](/python/docs/reference/osconfig/1.14.1/google.cloud.osconfig_v1alpha.types.OSPolicy.Resource.ExecResource)\n- [1.13.0](/python/docs/reference/osconfig/1.13.0/google.cloud.osconfig_v1alpha.types.OSPolicy.Resource.ExecResource)\n- [1.12.4](/python/docs/reference/osconfig/1.12.4/google.cloud.osconfig_v1alpha.types.OSPolicy.Resource.ExecResource)\n- [1.11.2](/python/docs/reference/osconfig/1.11.2/google.cloud.osconfig_v1alpha.types.OSPolicy.Resource.ExecResource)\n- [1.10.0](/python/docs/reference/osconfig/1.10.0/google.cloud.osconfig_v1alpha.types.OSPolicy.Resource.ExecResource)\n- [1.9.0](/python/docs/reference/osconfig/1.9.0/google.cloud.osconfig_v1alpha.types.OSPolicy.Resource.ExecResource)\n- [1.8.0](/python/docs/reference/osconfig/1.8.0/google.cloud.osconfig_v1alpha.types.OSPolicy.Resource.ExecResource)\n- [1.7.1](/python/docs/reference/osconfig/1.7.1/google.cloud.osconfig_v1alpha.types.OSPolicy.Resource.ExecResource)\n- [1.6.0](/python/docs/reference/osconfig/1.6.0/google.cloud.osconfig_v1alpha.types.OSPolicy.Resource.ExecResource)\n- [1.5.2](/python/docs/reference/osconfig/1.5.2/google.cloud.osconfig_v1alpha.types.OSPolicy.Resource.ExecResource)\n- [1.4.0](/python/docs/reference/osconfig/1.4.0/google.cloud.osconfig_v1alpha.types.OSPolicy.Resource.ExecResource)\n- [1.3.2](/python/docs/reference/osconfig/1.3.2/google.cloud.osconfig_v1alpha.types.OSPolicy.Resource.ExecResource)\n- [1.2.0](/python/docs/reference/osconfig/1.2.0/google.cloud.osconfig_v1alpha.types.OSPolicy.Resource.ExecResource)\n- [1.1.0](/python/docs/reference/osconfig/1.1.0/google.cloud.osconfig_v1alpha.types.OSPolicy.Resource.ExecResource)\n- [1.0.0](/python/docs/reference/osconfig/1.0.0/google.cloud.osconfig_v1alpha.types.OSPolicy.Resource.ExecResource)\n- [0.1.2](/python/docs/reference/osconfig/0.1.2/google.cloud.osconfig_v1alpha.types.OSPolicy.Resource.ExecResource) \n\n ExecResource(mapping=None, *, ignore_unknown_fields=False, **kwargs)\n\nA resource that allows executing scripts on the VM.\n\nThe `ExecResource` has 2 stages: `validate` and `enforce` and\nboth stages accept a script as an argument to execute.\n\nWhen the `ExecResource` is applied by the agent, it first executes\nthe script in the `validate` stage. The `validate` stage can\nsignal that the `ExecResource` is already in the desired state by\nreturning an exit code of `100`. If the `ExecResource` is not in\nthe desired state, it should return an exit code of `101`. Any\nother exit code returned by this stage is considered an error.\n\nIf the `ExecResource` is not in the desired state based on the\nexit code from the `validate` stage, the agent proceeds to execute\nthe script from the `enforce` stage. If the `ExecResource` is\nalready in the desired state, the `enforce` stage will not be run.\nSimilar to `validate` stage, the `enforce` stage should return\nan exit code of `100` to indicate that the resource in now in its\ndesired state. Any other exit code is considered an error.\n\nNOTE: An exit code of `100` was chosen over `0` (and `101` vs\n`1`) to have an explicit indicator of `in desired state`,\n`not in desired state` and errors. Because, for example,\nPowershell will always return an exit code of `0` unless an\n`exit` statement is provided in the script. So, for reasons of\nconsistency and being explicit, exit codes `100` and `101` were\nchosen.\n\nClasses\n-------\n\n### Exec\n\n Exec(mapping=None, *, ignore_unknown_fields=False, **kwargs)\n\nA file or script to execute.\n\nThis message has `oneof`_ fields (mutually exclusive fields).\nFor each oneof, at most one member field can be set at the same time.\nSetting any member of the oneof automatically clears all other\nmembers.\n\n.. _oneof: \u003chttps://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields\u003e"]]