google-apis-osconfig_v1beta 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 4f41ff2396fccf29d4cfe5cd111dd5b3792406d24bdf11617c5c2717426f08d8
4
+ data.tar.gz: be2043476a6e21997cb68eb2dee9a39b86691e38f56ee78a793d818c82bb4ab4
5
+ SHA512:
6
+ metadata.gz: ab373790d27278839b5ad73875d31f37d813653194445acffea8d27678f00dab08324d43bacca6651e510eb1cb42f506cbefa742acb9f36e8d8f23045be389be
7
+ data.tar.gz: 2e22f086e99c59ce8522587006734145380fe7e700082d2b1497d4291365b2c308c2fed7b329ae94f9e877e022e4af551d5e2de3c2b1d24341741d9d90c84ce7
@@ -0,0 +1,13 @@
1
+ --hide-void-return
2
+ --no-private
3
+ --verbose
4
+ --title=google-apis-osconfig_v1beta
5
+ --markup-provider=redcarpet
6
+ --markup=markdown
7
+ --main OVERVIEW.md
8
+ lib/google/apis/osconfig_v1beta/*.rb
9
+ lib/google/apis/osconfig_v1beta.rb
10
+ -
11
+ OVERVIEW.md
12
+ CHANGELOG.md
13
+ LICENSE.md
@@ -0,0 +1,7 @@
1
+ # Release history for google-apis-osconfig_v1beta
2
+
3
+ ### v0.1.0 (2021-01-07)
4
+
5
+ * Regenerated using generator version 0.1.1
6
+ * Regenerated from discovery document revision 20201112
7
+
@@ -0,0 +1,202 @@
1
+
2
+ Apache License
3
+ Version 2.0, January 2004
4
+ http://www.apache.org/licenses/
5
+
6
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7
+
8
+ 1. Definitions.
9
+
10
+ "License" shall mean the terms and conditions for use, reproduction,
11
+ and distribution as defined by Sections 1 through 9 of this document.
12
+
13
+ "Licensor" shall mean the copyright owner or entity authorized by
14
+ the copyright owner that is granting the License.
15
+
16
+ "Legal Entity" shall mean the union of the acting entity and all
17
+ other entities that control, are controlled by, or are under common
18
+ control with that entity. For the purposes of this definition,
19
+ "control" means (i) the power, direct or indirect, to cause the
20
+ direction or management of such entity, whether by contract or
21
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
22
+ outstanding shares, or (iii) beneficial ownership of such entity.
23
+
24
+ "You" (or "Your") shall mean an individual or Legal Entity
25
+ exercising permissions granted by this License.
26
+
27
+ "Source" form shall mean the preferred form for making modifications,
28
+ including but not limited to software source code, documentation
29
+ source, and configuration files.
30
+
31
+ "Object" form shall mean any form resulting from mechanical
32
+ transformation or translation of a Source form, including but
33
+ not limited to compiled object code, generated documentation,
34
+ and conversions to other media types.
35
+
36
+ "Work" shall mean the work of authorship, whether in Source or
37
+ Object form, made available under the License, as indicated by a
38
+ copyright notice that is included in or attached to the work
39
+ (an example is provided in the Appendix below).
40
+
41
+ "Derivative Works" shall mean any work, whether in Source or Object
42
+ form, that is based on (or derived from) the Work and for which the
43
+ editorial revisions, annotations, elaborations, or other modifications
44
+ represent, as a whole, an original work of authorship. For the purposes
45
+ of this License, Derivative Works shall not include works that remain
46
+ separable from, or merely link (or bind by name) to the interfaces of,
47
+ the Work and Derivative Works thereof.
48
+
49
+ "Contribution" shall mean any work of authorship, including
50
+ the original version of the Work and any modifications or additions
51
+ to that Work or Derivative Works thereof, that is intentionally
52
+ submitted to Licensor for inclusion in the Work by the copyright owner
53
+ or by an individual or Legal Entity authorized to submit on behalf of
54
+ the copyright owner. For the purposes of this definition, "submitted"
55
+ means any form of electronic, verbal, or written communication sent
56
+ to the Licensor or its representatives, including but not limited to
57
+ communication on electronic mailing lists, source code control systems,
58
+ and issue tracking systems that are managed by, or on behalf of, the
59
+ Licensor for the purpose of discussing and improving the Work, but
60
+ excluding communication that is conspicuously marked or otherwise
61
+ designated in writing by the copyright owner as "Not a Contribution."
62
+
63
+ "Contributor" shall mean Licensor and any individual or Legal Entity
64
+ on behalf of whom a Contribution has been received by Licensor and
65
+ subsequently incorporated within the Work.
66
+
67
+ 2. Grant of Copyright License. Subject to the terms and conditions of
68
+ this License, each Contributor hereby grants to You a perpetual,
69
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70
+ copyright license to reproduce, prepare Derivative Works of,
71
+ publicly display, publicly perform, sublicense, and distribute the
72
+ Work and such Derivative Works in Source or Object form.
73
+
74
+ 3. Grant of Patent License. Subject to the terms and conditions of
75
+ this License, each Contributor hereby grants to You a perpetual,
76
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77
+ (except as stated in this section) patent license to make, have made,
78
+ use, offer to sell, sell, import, and otherwise transfer the Work,
79
+ where such license applies only to those patent claims licensable
80
+ by such Contributor that are necessarily infringed by their
81
+ Contribution(s) alone or by combination of their Contribution(s)
82
+ with the Work to which such Contribution(s) was submitted. If You
83
+ institute patent litigation against any entity (including a
84
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
85
+ or a Contribution incorporated within the Work constitutes direct
86
+ or contributory patent infringement, then any patent licenses
87
+ granted to You under this License for that Work shall terminate
88
+ as of the date such litigation is filed.
89
+
90
+ 4. Redistribution. You may reproduce and distribute copies of the
91
+ Work or Derivative Works thereof in any medium, with or without
92
+ modifications, and in Source or Object form, provided that You
93
+ meet the following conditions:
94
+
95
+ (a) You must give any other recipients of the Work or
96
+ Derivative Works a copy of this License; and
97
+
98
+ (b) You must cause any modified files to carry prominent notices
99
+ stating that You changed the files; and
100
+
101
+ (c) You must retain, in the Source form of any Derivative Works
102
+ that You distribute, all copyright, patent, trademark, and
103
+ attribution notices from the Source form of the Work,
104
+ excluding those notices that do not pertain to any part of
105
+ the Derivative Works; and
106
+
107
+ (d) If the Work includes a "NOTICE" text file as part of its
108
+ distribution, then any Derivative Works that You distribute must
109
+ include a readable copy of the attribution notices contained
110
+ within such NOTICE file, excluding those notices that do not
111
+ pertain to any part of the Derivative Works, in at least one
112
+ of the following places: within a NOTICE text file distributed
113
+ as part of the Derivative Works; within the Source form or
114
+ documentation, if provided along with the Derivative Works; or,
115
+ within a display generated by the Derivative Works, if and
116
+ wherever such third-party notices normally appear. The contents
117
+ of the NOTICE file are for informational purposes only and
118
+ do not modify the License. You may add Your own attribution
119
+ notices within Derivative Works that You distribute, alongside
120
+ or as an addendum to the NOTICE text from the Work, provided
121
+ that such additional attribution notices cannot be construed
122
+ as modifying the License.
123
+
124
+ You may add Your own copyright statement to Your modifications and
125
+ may provide additional or different license terms and conditions
126
+ for use, reproduction, or distribution of Your modifications, or
127
+ for any such Derivative Works as a whole, provided Your use,
128
+ reproduction, and distribution of the Work otherwise complies with
129
+ the conditions stated in this License.
130
+
131
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
132
+ any Contribution intentionally submitted for inclusion in the Work
133
+ by You to the Licensor shall be under the terms and conditions of
134
+ this License, without any additional terms or conditions.
135
+ Notwithstanding the above, nothing herein shall supersede or modify
136
+ the terms of any separate license agreement you may have executed
137
+ with Licensor regarding such Contributions.
138
+
139
+ 6. Trademarks. This License does not grant permission to use the trade
140
+ names, trademarks, service marks, or product names of the Licensor,
141
+ except as required for reasonable and customary use in describing the
142
+ origin of the Work and reproducing the content of the NOTICE file.
143
+
144
+ 7. Disclaimer of Warranty. Unless required by applicable law or
145
+ agreed to in writing, Licensor provides the Work (and each
146
+ Contributor provides its Contributions) on an "AS IS" BASIS,
147
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148
+ implied, including, without limitation, any warranties or conditions
149
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150
+ PARTICULAR PURPOSE. You are solely responsible for determining the
151
+ appropriateness of using or redistributing the Work and assume any
152
+ risks associated with Your exercise of permissions under this License.
153
+
154
+ 8. Limitation of Liability. In no event and under no legal theory,
155
+ whether in tort (including negligence), contract, or otherwise,
156
+ unless required by applicable law (such as deliberate and grossly
157
+ negligent acts) or agreed to in writing, shall any Contributor be
158
+ liable to You for damages, including any direct, indirect, special,
159
+ incidental, or consequential damages of any character arising as a
160
+ result of this License or out of the use or inability to use the
161
+ Work (including but not limited to damages for loss of goodwill,
162
+ work stoppage, computer failure or malfunction, or any and all
163
+ other commercial damages or losses), even if such Contributor
164
+ has been advised of the possibility of such damages.
165
+
166
+ 9. Accepting Warranty or Additional Liability. While redistributing
167
+ the Work or Derivative Works thereof, You may choose to offer,
168
+ and charge a fee for, acceptance of support, warranty, indemnity,
169
+ or other liability obligations and/or rights consistent with this
170
+ License. However, in accepting such obligations, You may act only
171
+ on Your own behalf and on Your sole responsibility, not on behalf
172
+ of any other Contributor, and only if You agree to indemnify,
173
+ defend, and hold each Contributor harmless for any liability
174
+ incurred by, or claims asserted against, such Contributor by reason
175
+ of your accepting any such warranty or additional liability.
176
+
177
+ END OF TERMS AND CONDITIONS
178
+
179
+ APPENDIX: How to apply the Apache License to your work.
180
+
181
+ To apply the Apache License to your work, attach the following
182
+ boilerplate notice, with the fields enclosed by brackets "[]"
183
+ replaced with your own identifying information. (Don't include
184
+ the brackets!) The text should be enclosed in the appropriate
185
+ comment syntax for the file format. We also recommend that a
186
+ file or class name and description of purpose be included on the
187
+ same "printed page" as the copyright notice for easier
188
+ identification within third-party archives.
189
+
190
+ Copyright [yyyy] [name of copyright owner]
191
+
192
+ Licensed under the Apache License, Version 2.0 (the "License");
193
+ you may not use this file except in compliance with the License.
194
+ You may obtain a copy of the License at
195
+
196
+ http://www.apache.org/licenses/LICENSE-2.0
197
+
198
+ Unless required by applicable law or agreed to in writing, software
199
+ distributed under the License is distributed on an "AS IS" BASIS,
200
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201
+ See the License for the specific language governing permissions and
202
+ limitations under the License.
@@ -0,0 +1,96 @@
1
+ # Simple REST client for version V1beta of the OS Config API
2
+
3
+ This is a simple client library for version V1beta of the OS Config API. It provides:
4
+
5
+ * A client object that connects to the HTTP/JSON REST endpoint for the service.
6
+ * Ruby objects for data structures related to the service.
7
+ * Integration with the googleauth gem for authentication using OAuth, API keys, and service accounts.
8
+ * Control of retry, pagination, and timeouts.
9
+
10
+ Note that although this client library is supported and will continue to be updated to track changes to the service, it is otherwise considered complete and not under active development. Many Google services, especially Google Cloud Platform services, may provide a more modern client that is under more active development and improvement. See the section below titled *Which client should I use?* for more information.
11
+
12
+ ## Getting started
13
+
14
+ ### Before you begin
15
+
16
+ There are a few setup steps you need to complete before you can use this library:
17
+
18
+ 1. If you don't already have a Google account, [sign up](https://www.google.com/accounts).
19
+ 2. If you have never created a Google APIs Console project, read about [Managing Projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects) and create a project in the [Google API Console](https://console.cloud.google.com/).
20
+ 3. Most APIs need to be enabled for your project. [Enable it](https://console.cloud.google.com/apis/library/osconfig.googleapis.com) in the console.
21
+
22
+ ### Installation
23
+
24
+ Add this line to your application's Gemfile:
25
+
26
+ ```ruby
27
+ gem 'google-apis-osconfig_v1beta', '~> 0.1'
28
+ ```
29
+
30
+ And then execute:
31
+
32
+ ```
33
+ $ bundle
34
+ ```
35
+
36
+ Or install it yourself as:
37
+
38
+ ```
39
+ $ gem install google-apis-osconfig_v1beta
40
+ ```
41
+
42
+ ### Creating a client object
43
+
44
+ Once the gem is installed, you can load the client code and instantiate a client.
45
+
46
+ ```ruby
47
+ # Load the client
48
+ require "google/apis/osconfig_v1beta"
49
+
50
+ # Create a client object
51
+ client = Google::Apis::OsconfigV1beta::OSConfigService.new
52
+
53
+ # Authenticate calls
54
+ client.authentication = # ... use the googleauth gem to create credentials
55
+ ```
56
+
57
+ See the class reference docs for information on the methods you can call from a client.
58
+
59
+ ## Documentation
60
+
61
+ More detailed descriptions of the Google simple REST clients are available in two documents.
62
+
63
+ * The [Usage Guide](https://github.com/googleapis/google-api-ruby-client/blob/master/docs/usage-guide.md) discusses how to make API calls, how to use the provided data structures, and how to work the various features of the client library, including media upload and download, error handling, retries, pagination, and logging.
64
+ * The [Auth Guide](https://github.com/googleapis/google-api-ruby-client/blob/master/docs/auth-guide.md) discusses authentication in the client libraries, including API keys, OAuth 2.0, service accounts, and environment variables.
65
+
66
+ (Note: the above documents are written for the simple REST clients in general, and their examples may not reflect the Osconfig service in particular.)
67
+
68
+ For reference information on specific calls in the OS Config API, see the {Google::Apis::OsconfigV1beta::OSConfigService class reference docs}.
69
+
70
+ ## Which client should I use?
71
+
72
+ Google provides two types of Ruby API client libraries: **simple REST clients** and **modern clients**.
73
+
74
+ This library, `google-apis-osconfig_v1beta`, is a simple REST client. You can identify these clients by their gem names, which are always in the form `google-apis-<servicename>_<serviceversion>`. The simple REST clients connect to HTTP/JSON REST endpoints and are automatically generated from service discovery documents. They support most API functionality, but their class interfaces are sometimes awkward.
75
+
76
+ Modern clients are produced by a modern code generator, sometimes combined with hand-crafted functionality. Most modern clients connect to high-performance gRPC endpoints, although a few are backed by REST services. Modern clients are available for many Google services, especially Google Cloud Platform services, but do not yet support all the services covered by the simple clients.
77
+
78
+ Gem names for modern clients are often of the form `google-cloud-<service_name>`. (For example, [google-cloud-pubsub](https://rubygems.org/gems/google-cloud-pubsub).) Note that most modern clients also have corresponding "versioned" gems with names like `google-cloud-<service_name>-<version>`. (For example, [google-cloud-pubsub-v1](https://rubygems.org/gems/google-cloud-pubsub-v1).) The "versioned" gems can be used directly, but often provide lower-level interfaces. In most cases, the main gem is recommended.
79
+
80
+ **For most users, we recommend the modern client, if one is available.** Compared with simple clients, modern clients are generally much easier to use and more Ruby-like, support more advanced features such as streaming and long-running operations, and often provide much better performance. You may consider using a simple client instead, if a modern client is not yet available for the service you want to use, or if you are not able to use gRPC on your infrastructure.
81
+
82
+ The [product documentation](https://cloud.google.com/compute/docs/manage-os) may provide guidance regarding the preferred client library to use.
83
+
84
+ ## Supported Ruby versions
85
+
86
+ This library is supported on Ruby 2.5+.
87
+
88
+ Google provides official support for Ruby versions that are actively supported by Ruby Core -- that is, Ruby versions that are either in normal maintenance or in security maintenance, and not end of life. Currently, this means Ruby 2.5 and later. Older versions of Ruby _may_ still work, but are unsupported and not recommended. See https://www.ruby-lang.org/en/downloads/branches/ for details about the Ruby support schedule.
89
+
90
+ ## License
91
+
92
+ This library is licensed under Apache 2.0. Full license text is available in the {file:LICENSE.md LICENSE}.
93
+
94
+ ## Support
95
+
96
+ Please [report bugs at the project on Github](https://github.com/google/google-api-ruby-client/issues). Don't hesitate to [ask questions](http://stackoverflow.com/questions/tagged/google-api-ruby-client) about the client or APIs on [StackOverflow](http://stackoverflow.com).
@@ -0,0 +1,15 @@
1
+ # Copyright 2020 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require "google/apis/osconfig_v1beta"
@@ -0,0 +1,37 @@
1
+ # Copyright 2020 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'google/apis/osconfig_v1beta/service.rb'
16
+ require 'google/apis/osconfig_v1beta/classes.rb'
17
+ require 'google/apis/osconfig_v1beta/representations.rb'
18
+ require 'google/apis/osconfig_v1beta/gem_version.rb'
19
+
20
+ module Google
21
+ module Apis
22
+ # OS Config API
23
+ #
24
+ # OS management tools that can be used for patch management, patch compliance,
25
+ # and configuration management on VM instances.
26
+ #
27
+ # @see https://cloud.google.com/compute/docs/manage-os
28
+ module OsconfigV1beta
29
+ # Version of the OS Config API this client connects to.
30
+ # This is NOT the gem version.
31
+ VERSION = 'V1beta'
32
+
33
+ # View and manage your data across Google Cloud Platform services
34
+ AUTH_CLOUD_PLATFORM = 'https://www.googleapis.com/auth/cloud-platform'
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,2771 @@
1
+ # Copyright 2020 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'date'
16
+ require 'google/apis/core/base_service'
17
+ require 'google/apis/core/json_representation'
18
+ require 'google/apis/core/hashable'
19
+ require 'google/apis/errors'
20
+
21
+ module Google
22
+ module Apis
23
+ module OsconfigV1beta
24
+
25
+ # Represents a single Apt package repository. This repository is added to a repo
26
+ # file that is stored at `/etc/apt/sources.list.d/google_osconfig.list`.
27
+ class AptRepository
28
+ include Google::Apis::Core::Hashable
29
+
30
+ # Type of archive files in this repository. The default behavior is DEB.
31
+ # Corresponds to the JSON property `archiveType`
32
+ # @return [String]
33
+ attr_accessor :archive_type
34
+
35
+ # Required. List of components for this repository. Must contain at least one
36
+ # item.
37
+ # Corresponds to the JSON property `components`
38
+ # @return [Array<String>]
39
+ attr_accessor :components
40
+
41
+ # Required. Distribution of this repository.
42
+ # Corresponds to the JSON property `distribution`
43
+ # @return [String]
44
+ attr_accessor :distribution
45
+
46
+ # URI of the key file for this repository. The agent maintains a keyring at `/
47
+ # etc/apt/trusted.gpg.d/osconfig_agent_managed.gpg` containing all the keys in
48
+ # any applied guest policy.
49
+ # Corresponds to the JSON property `gpgKey`
50
+ # @return [String]
51
+ attr_accessor :gpg_key
52
+
53
+ # Required. URI for this repository.
54
+ # Corresponds to the JSON property `uri`
55
+ # @return [String]
56
+ attr_accessor :uri
57
+
58
+ def initialize(**args)
59
+ update!(**args)
60
+ end
61
+
62
+ # Update properties of this object
63
+ def update!(**args)
64
+ @archive_type = args[:archive_type] if args.key?(:archive_type)
65
+ @components = args[:components] if args.key?(:components)
66
+ @distribution = args[:distribution] if args.key?(:distribution)
67
+ @gpg_key = args[:gpg_key] if args.key?(:gpg_key)
68
+ @uri = args[:uri] if args.key?(:uri)
69
+ end
70
+ end
71
+
72
+ # Apt patching is completed by executing `apt-get update && apt-get upgrade`.
73
+ # Additional options can be set to control how this is executed.
74
+ class AptSettings
75
+ include Google::Apis::Core::Hashable
76
+
77
+ # List of packages to exclude from update. These packages will be excluded
78
+ # Corresponds to the JSON property `excludes`
79
+ # @return [Array<String>]
80
+ attr_accessor :excludes
81
+
82
+ # An exclusive list of packages to be updated. These are the only packages that
83
+ # will be updated. If these packages are not installed, they will be ignored.
84
+ # This field cannot be specified with any other patch configuration fields.
85
+ # Corresponds to the JSON property `exclusivePackages`
86
+ # @return [Array<String>]
87
+ attr_accessor :exclusive_packages
88
+
89
+ # By changing the type to DIST, the patching is performed using `apt-get dist-
90
+ # upgrade` instead.
91
+ # Corresponds to the JSON property `type`
92
+ # @return [String]
93
+ attr_accessor :type
94
+
95
+ def initialize(**args)
96
+ update!(**args)
97
+ end
98
+
99
+ # Update properties of this object
100
+ def update!(**args)
101
+ @excludes = args[:excludes] if args.key?(:excludes)
102
+ @exclusive_packages = args[:exclusive_packages] if args.key?(:exclusive_packages)
103
+ @type = args[:type] if args.key?(:type)
104
+ end
105
+ end
106
+
107
+ # An assignment represents the group or groups of VM instances that the policy
108
+ # applies to. If an assignment is empty, it applies to all VM instances.
109
+ # Otherwise, the targeted VM instances must meet all the criteria specified. So
110
+ # if both labels and zones are specified, the policy applies to VM instances
111
+ # with those labels and in those zones.
112
+ class Assignment
113
+ include Google::Apis::Core::Hashable
114
+
115
+ # Targets instances matching at least one of these label sets. This allows an
116
+ # assignment to target disparate groups, for example "env=prod or env=staging".
117
+ # Corresponds to the JSON property `groupLabels`
118
+ # @return [Array<Google::Apis::OsconfigV1beta::AssignmentGroupLabel>]
119
+ attr_accessor :group_labels
120
+
121
+ # Targets VM instances whose name starts with one of these prefixes. Like labels,
122
+ # this is another way to group VM instances when targeting configs, for example
123
+ # prefix="prod-". Only supported for project-level policies.
124
+ # Corresponds to the JSON property `instanceNamePrefixes`
125
+ # @return [Array<String>]
126
+ attr_accessor :instance_name_prefixes
127
+
128
+ # Targets any of the instances specified. Instances are specified by their URI
129
+ # in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`. Instance targeting is
130
+ # uncommon and is supported to facilitate the management of changes by the
131
+ # instance or to target specific VM instances for development and testing. Only
132
+ # supported for project-level policies and must reference instances within this
133
+ # project.
134
+ # Corresponds to the JSON property `instances`
135
+ # @return [Array<String>]
136
+ attr_accessor :instances
137
+
138
+ # Targets VM instances matching at least one of the following OS types. VM
139
+ # instances must match all supplied criteria for a given OsType to be included.
140
+ # Corresponds to the JSON property `osTypes`
141
+ # @return [Array<Google::Apis::OsconfigV1beta::AssignmentOsType>]
142
+ attr_accessor :os_types
143
+
144
+ # Targets instances in any of these zones. Leave empty to target instances in
145
+ # any zone. Zonal targeting is uncommon and is supported to facilitate the
146
+ # management of changes by zone.
147
+ # Corresponds to the JSON property `zones`
148
+ # @return [Array<String>]
149
+ attr_accessor :zones
150
+
151
+ def initialize(**args)
152
+ update!(**args)
153
+ end
154
+
155
+ # Update properties of this object
156
+ def update!(**args)
157
+ @group_labels = args[:group_labels] if args.key?(:group_labels)
158
+ @instance_name_prefixes = args[:instance_name_prefixes] if args.key?(:instance_name_prefixes)
159
+ @instances = args[:instances] if args.key?(:instances)
160
+ @os_types = args[:os_types] if args.key?(:os_types)
161
+ @zones = args[:zones] if args.key?(:zones)
162
+ end
163
+ end
164
+
165
+ # Represents a group of VM intances that can be identified as having all these
166
+ # labels, for example "env=prod and app=web".
167
+ class AssignmentGroupLabel
168
+ include Google::Apis::Core::Hashable
169
+
170
+ # Google Compute Engine instance labels that must be present for an instance to
171
+ # be included in this assignment group.
172
+ # Corresponds to the JSON property `labels`
173
+ # @return [Hash<String,String>]
174
+ attr_accessor :labels
175
+
176
+ def initialize(**args)
177
+ update!(**args)
178
+ end
179
+
180
+ # Update properties of this object
181
+ def update!(**args)
182
+ @labels = args[:labels] if args.key?(:labels)
183
+ end
184
+ end
185
+
186
+ # Defines the criteria for selecting VM Instances by OS type.
187
+ class AssignmentOsType
188
+ include Google::Apis::Core::Hashable
189
+
190
+ # Targets VM instances with OS Inventory enabled and having the following OS
191
+ # architecture.
192
+ # Corresponds to the JSON property `osArchitecture`
193
+ # @return [String]
194
+ attr_accessor :os_architecture
195
+
196
+ # Targets VM instances with OS Inventory enabled and having the following OS
197
+ # short name, for example "debian" or "windows".
198
+ # Corresponds to the JSON property `osShortName`
199
+ # @return [String]
200
+ attr_accessor :os_short_name
201
+
202
+ # Targets VM instances with OS Inventory enabled and having the following
203
+ # following OS version.
204
+ # Corresponds to the JSON property `osVersion`
205
+ # @return [String]
206
+ attr_accessor :os_version
207
+
208
+ def initialize(**args)
209
+ update!(**args)
210
+ end
211
+
212
+ # Update properties of this object
213
+ def update!(**args)
214
+ @os_architecture = args[:os_architecture] if args.key?(:os_architecture)
215
+ @os_short_name = args[:os_short_name] if args.key?(:os_short_name)
216
+ @os_version = args[:os_version] if args.key?(:os_version)
217
+ end
218
+ end
219
+
220
+ # Message for canceling a patch job.
221
+ class CancelPatchJobRequest
222
+ include Google::Apis::Core::Hashable
223
+
224
+ def initialize(**args)
225
+ update!(**args)
226
+ end
227
+
228
+ # Update properties of this object
229
+ def update!(**args)
230
+ end
231
+ end
232
+
233
+ # The effective guest policy that applies to a VM instance.
234
+ class EffectiveGuestPolicy
235
+ include Google::Apis::Core::Hashable
236
+
237
+ # List of package repository configurations assigned to the VM instance.
238
+ # Corresponds to the JSON property `packageRepositories`
239
+ # @return [Array<Google::Apis::OsconfigV1beta::EffectiveGuestPolicySourcedPackageRepository>]
240
+ attr_accessor :package_repositories
241
+
242
+ # List of package configurations assigned to the VM instance.
243
+ # Corresponds to the JSON property `packages`
244
+ # @return [Array<Google::Apis::OsconfigV1beta::EffectiveGuestPolicySourcedPackage>]
245
+ attr_accessor :packages
246
+
247
+ # List of recipes assigned to the VM instance.
248
+ # Corresponds to the JSON property `softwareRecipes`
249
+ # @return [Array<Google::Apis::OsconfigV1beta::EffectiveGuestPolicySourcedSoftwareRecipe>]
250
+ attr_accessor :software_recipes
251
+
252
+ def initialize(**args)
253
+ update!(**args)
254
+ end
255
+
256
+ # Update properties of this object
257
+ def update!(**args)
258
+ @package_repositories = args[:package_repositories] if args.key?(:package_repositories)
259
+ @packages = args[:packages] if args.key?(:packages)
260
+ @software_recipes = args[:software_recipes] if args.key?(:software_recipes)
261
+ end
262
+ end
263
+
264
+ # A guest policy package including its source.
265
+ class EffectiveGuestPolicySourcedPackage
266
+ include Google::Apis::Core::Hashable
267
+
268
+ # Package is a reference to the software package to be installed or removed. The
269
+ # agent on the VM instance uses the system package manager to apply the config.
270
+ # These are the commands that the agent uses to install or remove packages. Apt
271
+ # install: `apt-get update && apt-get -y install package1 package2 package3`
272
+ # remove: `apt-get -y remove package1 package2 package3` Yum install: `yum -y
273
+ # install package1 package2 package3` remove: `yum -y remove package1 package2
274
+ # package3` Zypper install: `zypper install package1 package2 package3` remove: `
275
+ # zypper rm package1 package2` Googet install: `googet -noconfirm install
276
+ # package1 package2 package3` remove: `googet -noconfirm remove package1
277
+ # package2 package3`
278
+ # Corresponds to the JSON property `package`
279
+ # @return [Google::Apis::OsconfigV1beta::Package]
280
+ attr_accessor :package
281
+
282
+ # Name of the guest policy providing this config.
283
+ # Corresponds to the JSON property `source`
284
+ # @return [String]
285
+ attr_accessor :source
286
+
287
+ def initialize(**args)
288
+ update!(**args)
289
+ end
290
+
291
+ # Update properties of this object
292
+ def update!(**args)
293
+ @package = args[:package] if args.key?(:package)
294
+ @source = args[:source] if args.key?(:source)
295
+ end
296
+ end
297
+
298
+ # A guest policy package repository including its source.
299
+ class EffectiveGuestPolicySourcedPackageRepository
300
+ include Google::Apis::Core::Hashable
301
+
302
+ # A package repository.
303
+ # Corresponds to the JSON property `packageRepository`
304
+ # @return [Google::Apis::OsconfigV1beta::PackageRepository]
305
+ attr_accessor :package_repository
306
+
307
+ # Name of the guest policy providing this config.
308
+ # Corresponds to the JSON property `source`
309
+ # @return [String]
310
+ attr_accessor :source
311
+
312
+ def initialize(**args)
313
+ update!(**args)
314
+ end
315
+
316
+ # Update properties of this object
317
+ def update!(**args)
318
+ @package_repository = args[:package_repository] if args.key?(:package_repository)
319
+ @source = args[:source] if args.key?(:source)
320
+ end
321
+ end
322
+
323
+ # A guest policy recipe including its source.
324
+ class EffectiveGuestPolicySourcedSoftwareRecipe
325
+ include Google::Apis::Core::Hashable
326
+
327
+ # A software recipe is a set of instructions for installing and configuring a
328
+ # piece of software. It consists of a set of artifacts that are downloaded, and
329
+ # a set of steps that install, configure, and/or update the software. Recipes
330
+ # support installing and updating software from artifacts in the following
331
+ # formats: Zip archive, Tar archive, Windows MSI, Debian package, and RPM
332
+ # package. Additionally, recipes support executing a script (either defined in a
333
+ # file or directly in this api) in bash, sh, cmd, and powershell. Updating a
334
+ # software recipe If a recipe is assigned to an instance and there is a recipe
335
+ # with the same name but a lower version already installed and the assigned
336
+ # state of the recipe is `UPDATED`, then the recipe is updated to the new
337
+ # version. Script Working Directories Each script or execution step is run in
338
+ # its own temporary directory which is deleted after completing the step.
339
+ # Corresponds to the JSON property `softwareRecipe`
340
+ # @return [Google::Apis::OsconfigV1beta::SoftwareRecipe]
341
+ attr_accessor :software_recipe
342
+
343
+ # Name of the guest policy providing this config.
344
+ # Corresponds to the JSON property `source`
345
+ # @return [String]
346
+ attr_accessor :source
347
+
348
+ def initialize(**args)
349
+ update!(**args)
350
+ end
351
+
352
+ # Update properties of this object
353
+ def update!(**args)
354
+ @software_recipe = args[:software_recipe] if args.key?(:software_recipe)
355
+ @source = args[:source] if args.key?(:source)
356
+ end
357
+ end
358
+
359
+ # A generic empty message that you can re-use to avoid defining duplicated empty
360
+ # messages in your APIs. A typical example is to use it as the request or the
361
+ # response type of an API method. For instance: service Foo ` rpc Bar(google.
362
+ # protobuf.Empty) returns (google.protobuf.Empty); ` The JSON representation for
363
+ # `Empty` is empty JSON object ````.
364
+ class Empty
365
+ include Google::Apis::Core::Hashable
366
+
367
+ def initialize(**args)
368
+ update!(**args)
369
+ end
370
+
371
+ # Update properties of this object
372
+ def update!(**args)
373
+ end
374
+ end
375
+
376
+ # A step that runs an executable for a PatchJob.
377
+ class ExecStep
378
+ include Google::Apis::Core::Hashable
379
+
380
+ # Common configurations for an ExecStep.
381
+ # Corresponds to the JSON property `linuxExecStepConfig`
382
+ # @return [Google::Apis::OsconfigV1beta::ExecStepConfig]
383
+ attr_accessor :linux_exec_step_config
384
+
385
+ # Common configurations for an ExecStep.
386
+ # Corresponds to the JSON property `windowsExecStepConfig`
387
+ # @return [Google::Apis::OsconfigV1beta::ExecStepConfig]
388
+ attr_accessor :windows_exec_step_config
389
+
390
+ def initialize(**args)
391
+ update!(**args)
392
+ end
393
+
394
+ # Update properties of this object
395
+ def update!(**args)
396
+ @linux_exec_step_config = args[:linux_exec_step_config] if args.key?(:linux_exec_step_config)
397
+ @windows_exec_step_config = args[:windows_exec_step_config] if args.key?(:windows_exec_step_config)
398
+ end
399
+ end
400
+
401
+ # Common configurations for an ExecStep.
402
+ class ExecStepConfig
403
+ include Google::Apis::Core::Hashable
404
+
405
+ # Defaults to [0]. A list of possible return values that the execution can
406
+ # return to indicate a success.
407
+ # Corresponds to the JSON property `allowedSuccessCodes`
408
+ # @return [Array<Fixnum>]
409
+ attr_accessor :allowed_success_codes
410
+
411
+ # Google Cloud Storage object representation.
412
+ # Corresponds to the JSON property `gcsObject`
413
+ # @return [Google::Apis::OsconfigV1beta::GcsObject]
414
+ attr_accessor :gcs_object
415
+
416
+ # The script interpreter to use to run the script. If no interpreter is
417
+ # specified the script will be executed directly, which will likely only succeed
418
+ # for scripts with [shebang lines] (https://en.wikipedia.org/wiki/Shebang_\(Unix\
419
+ # )).
420
+ # Corresponds to the JSON property `interpreter`
421
+ # @return [String]
422
+ attr_accessor :interpreter
423
+
424
+ # An absolute path to the executable on the VM.
425
+ # Corresponds to the JSON property `localPath`
426
+ # @return [String]
427
+ attr_accessor :local_path
428
+
429
+ def initialize(**args)
430
+ update!(**args)
431
+ end
432
+
433
+ # Update properties of this object
434
+ def update!(**args)
435
+ @allowed_success_codes = args[:allowed_success_codes] if args.key?(:allowed_success_codes)
436
+ @gcs_object = args[:gcs_object] if args.key?(:gcs_object)
437
+ @interpreter = args[:interpreter] if args.key?(:interpreter)
438
+ @local_path = args[:local_path] if args.key?(:local_path)
439
+ end
440
+ end
441
+
442
+ # A request message to initiate patching across Compute Engine instances.
443
+ class ExecutePatchJobRequest
444
+ include Google::Apis::Core::Hashable
445
+
446
+ # Description of the patch job. Length of the description is limited to 1024
447
+ # characters.
448
+ # Corresponds to the JSON property `description`
449
+ # @return [String]
450
+ attr_accessor :description
451
+
452
+ # Display name for this patch job. This does not have to be unique.
453
+ # Corresponds to the JSON property `displayName`
454
+ # @return [String]
455
+ attr_accessor :display_name
456
+
457
+ # If this patch is a dry-run only, instances are contacted but will do nothing.
458
+ # Corresponds to the JSON property `dryRun`
459
+ # @return [Boolean]
460
+ attr_accessor :dry_run
461
+ alias_method :dry_run?, :dry_run
462
+
463
+ # Duration of the patch job. After the duration ends, the patch job times out.
464
+ # Corresponds to the JSON property `duration`
465
+ # @return [String]
466
+ attr_accessor :duration
467
+
468
+ # A filter to target VM instances for patching. The targeted VMs must meet all
469
+ # criteria specified. So if both labels and zones are specified, the patch job
470
+ # targets only VMs with those labels and in those zones.
471
+ # Corresponds to the JSON property `instanceFilter`
472
+ # @return [Google::Apis::OsconfigV1beta::PatchInstanceFilter]
473
+ attr_accessor :instance_filter
474
+
475
+ # Patch configuration specifications. Contains details on how to apply the patch(
476
+ # es) to a VM instance.
477
+ # Corresponds to the JSON property `patchConfig`
478
+ # @return [Google::Apis::OsconfigV1beta::PatchConfig]
479
+ attr_accessor :patch_config
480
+
481
+ # Patch rollout configuration specifications. Contains details on the
482
+ # concurrency control when applying patch(es) to all targeted VMs.
483
+ # Corresponds to the JSON property `rollout`
484
+ # @return [Google::Apis::OsconfigV1beta::PatchRollout]
485
+ attr_accessor :rollout
486
+
487
+ def initialize(**args)
488
+ update!(**args)
489
+ end
490
+
491
+ # Update properties of this object
492
+ def update!(**args)
493
+ @description = args[:description] if args.key?(:description)
494
+ @display_name = args[:display_name] if args.key?(:display_name)
495
+ @dry_run = args[:dry_run] if args.key?(:dry_run)
496
+ @duration = args[:duration] if args.key?(:duration)
497
+ @instance_filter = args[:instance_filter] if args.key?(:instance_filter)
498
+ @patch_config = args[:patch_config] if args.key?(:patch_config)
499
+ @rollout = args[:rollout] if args.key?(:rollout)
500
+ end
501
+ end
502
+
503
+ # Message encapsulating a value that can be either absolute ("fixed") or
504
+ # relative ("percent") to a value.
505
+ class FixedOrPercent
506
+ include Google::Apis::Core::Hashable
507
+
508
+ # Specifies a fixed value.
509
+ # Corresponds to the JSON property `fixed`
510
+ # @return [Fixnum]
511
+ attr_accessor :fixed
512
+
513
+ # Specifies the relative value defined as a percentage, which will be multiplied
514
+ # by a reference value.
515
+ # Corresponds to the JSON property `percent`
516
+ # @return [Fixnum]
517
+ attr_accessor :percent
518
+
519
+ def initialize(**args)
520
+ update!(**args)
521
+ end
522
+
523
+ # Update properties of this object
524
+ def update!(**args)
525
+ @fixed = args[:fixed] if args.key?(:fixed)
526
+ @percent = args[:percent] if args.key?(:percent)
527
+ end
528
+ end
529
+
530
+ # Google Cloud Storage object representation.
531
+ class GcsObject
532
+ include Google::Apis::Core::Hashable
533
+
534
+ # Required. Bucket of the Google Cloud Storage object.
535
+ # Corresponds to the JSON property `bucket`
536
+ # @return [String]
537
+ attr_accessor :bucket
538
+
539
+ # Required. Generation number of the Google Cloud Storage object. This is used
540
+ # to ensure that the ExecStep specified by this PatchJob does not change.
541
+ # Corresponds to the JSON property `generationNumber`
542
+ # @return [Fixnum]
543
+ attr_accessor :generation_number
544
+
545
+ # Required. Name of the Google Cloud Storage object.
546
+ # Corresponds to the JSON property `object`
547
+ # @return [String]
548
+ attr_accessor :object
549
+
550
+ def initialize(**args)
551
+ update!(**args)
552
+ end
553
+
554
+ # Update properties of this object
555
+ def update!(**args)
556
+ @bucket = args[:bucket] if args.key?(:bucket)
557
+ @generation_number = args[:generation_number] if args.key?(:generation_number)
558
+ @object = args[:object] if args.key?(:object)
559
+ end
560
+ end
561
+
562
+ # Represents a Goo package repository. These is added to a repo file that is
563
+ # stored at C:/ProgramData/GooGet/repos/google_osconfig.repo.
564
+ class GooRepository
565
+ include Google::Apis::Core::Hashable
566
+
567
+ # Required. The name of the repository.
568
+ # Corresponds to the JSON property `name`
569
+ # @return [String]
570
+ attr_accessor :name
571
+
572
+ # Required. The url of the repository.
573
+ # Corresponds to the JSON property `url`
574
+ # @return [String]
575
+ attr_accessor :url
576
+
577
+ def initialize(**args)
578
+ update!(**args)
579
+ end
580
+
581
+ # Update properties of this object
582
+ def update!(**args)
583
+ @name = args[:name] if args.key?(:name)
584
+ @url = args[:url] if args.key?(:url)
585
+ end
586
+ end
587
+
588
+ # Googet patching is performed by running `googet update`.
589
+ class GooSettings
590
+ include Google::Apis::Core::Hashable
591
+
592
+ def initialize(**args)
593
+ update!(**args)
594
+ end
595
+
596
+ # Update properties of this object
597
+ def update!(**args)
598
+ end
599
+ end
600
+
601
+ # An OS Config resource representing a guest configuration policy. These
602
+ # policies represent the desired state for VM instance guest environments
603
+ # including packages to install or remove, package repository configurations,
604
+ # and software to install.
605
+ class GuestPolicy
606
+ include Google::Apis::Core::Hashable
607
+
608
+ # An assignment represents the group or groups of VM instances that the policy
609
+ # applies to. If an assignment is empty, it applies to all VM instances.
610
+ # Otherwise, the targeted VM instances must meet all the criteria specified. So
611
+ # if both labels and zones are specified, the policy applies to VM instances
612
+ # with those labels and in those zones.
613
+ # Corresponds to the JSON property `assignment`
614
+ # @return [Google::Apis::OsconfigV1beta::Assignment]
615
+ attr_accessor :assignment
616
+
617
+ # Output only. Time this guest policy was created.
618
+ # Corresponds to the JSON property `createTime`
619
+ # @return [String]
620
+ attr_accessor :create_time
621
+
622
+ # Description of the guest policy. Length of the description is limited to 1024
623
+ # characters.
624
+ # Corresponds to the JSON property `description`
625
+ # @return [String]
626
+ attr_accessor :description
627
+
628
+ # The etag for this guest policy. If this is provided on update, it must match
629
+ # the server's etag.
630
+ # Corresponds to the JSON property `etag`
631
+ # @return [String]
632
+ attr_accessor :etag
633
+
634
+ # Required. Unique name of the resource in this project using one of the
635
+ # following forms: `projects/`project_number`/guestPolicies/`guest_policy_id``.
636
+ # Corresponds to the JSON property `name`
637
+ # @return [String]
638
+ attr_accessor :name
639
+
640
+ # A list of package repositories to configure on the VM instance. This is done
641
+ # before any other configs are applied so they can use these repos. Package
642
+ # repositories are only configured if the corresponding package manager(s) are
643
+ # available.
644
+ # Corresponds to the JSON property `packageRepositories`
645
+ # @return [Array<Google::Apis::OsconfigV1beta::PackageRepository>]
646
+ attr_accessor :package_repositories
647
+
648
+ # The software packages to be managed by this policy.
649
+ # Corresponds to the JSON property `packages`
650
+ # @return [Array<Google::Apis::OsconfigV1beta::Package>]
651
+ attr_accessor :packages
652
+
653
+ # A list of Recipes to install on the VM instance.
654
+ # Corresponds to the JSON property `recipes`
655
+ # @return [Array<Google::Apis::OsconfigV1beta::SoftwareRecipe>]
656
+ attr_accessor :recipes
657
+
658
+ # Output only. Last time this guest policy was updated.
659
+ # Corresponds to the JSON property `updateTime`
660
+ # @return [String]
661
+ attr_accessor :update_time
662
+
663
+ def initialize(**args)
664
+ update!(**args)
665
+ end
666
+
667
+ # Update properties of this object
668
+ def update!(**args)
669
+ @assignment = args[:assignment] if args.key?(:assignment)
670
+ @create_time = args[:create_time] if args.key?(:create_time)
671
+ @description = args[:description] if args.key?(:description)
672
+ @etag = args[:etag] if args.key?(:etag)
673
+ @name = args[:name] if args.key?(:name)
674
+ @package_repositories = args[:package_repositories] if args.key?(:package_repositories)
675
+ @packages = args[:packages] if args.key?(:packages)
676
+ @recipes = args[:recipes] if args.key?(:recipes)
677
+ @update_time = args[:update_time] if args.key?(:update_time)
678
+ end
679
+ end
680
+
681
+ # The inventory details of a VM.
682
+ class Inventory
683
+ include Google::Apis::Core::Hashable
684
+
685
+ # Inventory items related to the VM keyed by an opaque unique identifier for
686
+ # each inventory item. The identifier is unique to each distinct and addressable
687
+ # inventory item and will change, when there is a new package version.
688
+ # Corresponds to the JSON property `items`
689
+ # @return [Hash<String,Google::Apis::OsconfigV1beta::InventoryItem>]
690
+ attr_accessor :items
691
+
692
+ # Operating system information for the VM.
693
+ # Corresponds to the JSON property `osInfo`
694
+ # @return [Google::Apis::OsconfigV1beta::InventoryOsInfo]
695
+ attr_accessor :os_info
696
+
697
+ def initialize(**args)
698
+ update!(**args)
699
+ end
700
+
701
+ # Update properties of this object
702
+ def update!(**args)
703
+ @items = args[:items] if args.key?(:items)
704
+ @os_info = args[:os_info] if args.key?(:os_info)
705
+ end
706
+ end
707
+
708
+ # A single piece of inventory on a VM.
709
+ class InventoryItem
710
+ include Google::Apis::Core::Hashable
711
+
712
+ # Software package information of the operating system.
713
+ # Corresponds to the JSON property `availablePackage`
714
+ # @return [Google::Apis::OsconfigV1beta::InventorySoftwarePackage]
715
+ attr_accessor :available_package
716
+
717
+ # When this inventory item was first detected.
718
+ # Corresponds to the JSON property `createTime`
719
+ # @return [String]
720
+ attr_accessor :create_time
721
+
722
+ # Identifier for this item, unique across items for this VM.
723
+ # Corresponds to the JSON property `id`
724
+ # @return [String]
725
+ attr_accessor :id
726
+
727
+ # Software package information of the operating system.
728
+ # Corresponds to the JSON property `installedPackage`
729
+ # @return [Google::Apis::OsconfigV1beta::InventorySoftwarePackage]
730
+ attr_accessor :installed_package
731
+
732
+ # The origin of this inventory item.
733
+ # Corresponds to the JSON property `originType`
734
+ # @return [String]
735
+ attr_accessor :origin_type
736
+
737
+ # The specific type of inventory, correlating to its specific details.
738
+ # Corresponds to the JSON property `type`
739
+ # @return [String]
740
+ attr_accessor :type
741
+
742
+ # When this inventory item was last modified.
743
+ # Corresponds to the JSON property `updateTime`
744
+ # @return [String]
745
+ attr_accessor :update_time
746
+
747
+ def initialize(**args)
748
+ update!(**args)
749
+ end
750
+
751
+ # Update properties of this object
752
+ def update!(**args)
753
+ @available_package = args[:available_package] if args.key?(:available_package)
754
+ @create_time = args[:create_time] if args.key?(:create_time)
755
+ @id = args[:id] if args.key?(:id)
756
+ @installed_package = args[:installed_package] if args.key?(:installed_package)
757
+ @origin_type = args[:origin_type] if args.key?(:origin_type)
758
+ @type = args[:type] if args.key?(:type)
759
+ @update_time = args[:update_time] if args.key?(:update_time)
760
+ end
761
+ end
762
+
763
+ # Operating system information for the VM.
764
+ class InventoryOsInfo
765
+ include Google::Apis::Core::Hashable
766
+
767
+ # The system architecture of the operating system.
768
+ # Corresponds to the JSON property `architecture`
769
+ # @return [String]
770
+ attr_accessor :architecture
771
+
772
+ # The VM hostname.
773
+ # Corresponds to the JSON property `hostname`
774
+ # @return [String]
775
+ attr_accessor :hostname
776
+
777
+ # The kernel release of the operating system.
778
+ # Corresponds to the JSON property `kernelRelease`
779
+ # @return [String]
780
+ attr_accessor :kernel_release
781
+
782
+ # The kernel version of the operating system.
783
+ # Corresponds to the JSON property `kernelVersion`
784
+ # @return [String]
785
+ attr_accessor :kernel_version
786
+
787
+ # The operating system long name. For example 'Debian GNU/Linux 9' or 'Microsoft
788
+ # Window Server 2019 Datacenter'.
789
+ # Corresponds to the JSON property `longName`
790
+ # @return [String]
791
+ attr_accessor :long_name
792
+
793
+ # The current version of the OS Config agent running on the VM.
794
+ # Corresponds to the JSON property `osconfigAgentVersion`
795
+ # @return [String]
796
+ attr_accessor :osconfig_agent_version
797
+
798
+ # The operating system short name. For example, 'windows' or 'debian'.
799
+ # Corresponds to the JSON property `shortName`
800
+ # @return [String]
801
+ attr_accessor :short_name
802
+
803
+ # The version of the operating system.
804
+ # Corresponds to the JSON property `version`
805
+ # @return [String]
806
+ attr_accessor :version
807
+
808
+ def initialize(**args)
809
+ update!(**args)
810
+ end
811
+
812
+ # Update properties of this object
813
+ def update!(**args)
814
+ @architecture = args[:architecture] if args.key?(:architecture)
815
+ @hostname = args[:hostname] if args.key?(:hostname)
816
+ @kernel_release = args[:kernel_release] if args.key?(:kernel_release)
817
+ @kernel_version = args[:kernel_version] if args.key?(:kernel_version)
818
+ @long_name = args[:long_name] if args.key?(:long_name)
819
+ @osconfig_agent_version = args[:osconfig_agent_version] if args.key?(:osconfig_agent_version)
820
+ @short_name = args[:short_name] if args.key?(:short_name)
821
+ @version = args[:version] if args.key?(:version)
822
+ end
823
+ end
824
+
825
+ # Software package information of the operating system.
826
+ class InventorySoftwarePackage
827
+ include Google::Apis::Core::Hashable
828
+
829
+ # Information related to the a standard versioned package. This includes package
830
+ # info for APT, Yum, Zypper, and Googet package managers.
831
+ # Corresponds to the JSON property `aptPackage`
832
+ # @return [Google::Apis::OsconfigV1beta::InventoryVersionedPackage]
833
+ attr_accessor :apt_package
834
+
835
+ # Information related to the a standard versioned package. This includes package
836
+ # info for APT, Yum, Zypper, and Googet package managers.
837
+ # Corresponds to the JSON property `cosPackage`
838
+ # @return [Google::Apis::OsconfigV1beta::InventoryVersionedPackage]
839
+ attr_accessor :cos_package
840
+
841
+ # Information related to the a standard versioned package. This includes package
842
+ # info for APT, Yum, Zypper, and Googet package managers.
843
+ # Corresponds to the JSON property `googetPackage`
844
+ # @return [Google::Apis::OsconfigV1beta::InventoryVersionedPackage]
845
+ attr_accessor :googet_package
846
+
847
+ # Information related to a Quick Fix Engineering package. Fields are taken from
848
+ # Windows QuickFixEngineering Interface and match the source names: https://docs.
849
+ # microsoft.com/en-us/windows/win32/cimwin32prov/win32-quickfixengineering
850
+ # Corresponds to the JSON property `qfePackage`
851
+ # @return [Google::Apis::OsconfigV1beta::InventoryWindowsQuickFixEngineeringPackage]
852
+ attr_accessor :qfe_package
853
+
854
+ # Details related to a Windows Update package. Field data and names are taken
855
+ # from Windows Update API IUpdate Interface: https://docs.microsoft.com/en-us/
856
+ # windows/win32/api/_wua/ Descriptive fields like title, and description are
857
+ # localized based on the locale of the VM being updated.
858
+ # Corresponds to the JSON property `wuaPackage`
859
+ # @return [Google::Apis::OsconfigV1beta::InventoryWindowsUpdatePackage]
860
+ attr_accessor :wua_package
861
+
862
+ # Information related to the a standard versioned package. This includes package
863
+ # info for APT, Yum, Zypper, and Googet package managers.
864
+ # Corresponds to the JSON property `yumPackage`
865
+ # @return [Google::Apis::OsconfigV1beta::InventoryVersionedPackage]
866
+ attr_accessor :yum_package
867
+
868
+ # Information related to the a standard versioned package. This includes package
869
+ # info for APT, Yum, Zypper, and Googet package managers.
870
+ # Corresponds to the JSON property `zypperPackage`
871
+ # @return [Google::Apis::OsconfigV1beta::InventoryVersionedPackage]
872
+ attr_accessor :zypper_package
873
+
874
+ # Details related to a Zypper Patch.
875
+ # Corresponds to the JSON property `zypperPatch`
876
+ # @return [Google::Apis::OsconfigV1beta::InventoryZypperPatch]
877
+ attr_accessor :zypper_patch
878
+
879
+ def initialize(**args)
880
+ update!(**args)
881
+ end
882
+
883
+ # Update properties of this object
884
+ def update!(**args)
885
+ @apt_package = args[:apt_package] if args.key?(:apt_package)
886
+ @cos_package = args[:cos_package] if args.key?(:cos_package)
887
+ @googet_package = args[:googet_package] if args.key?(:googet_package)
888
+ @qfe_package = args[:qfe_package] if args.key?(:qfe_package)
889
+ @wua_package = args[:wua_package] if args.key?(:wua_package)
890
+ @yum_package = args[:yum_package] if args.key?(:yum_package)
891
+ @zypper_package = args[:zypper_package] if args.key?(:zypper_package)
892
+ @zypper_patch = args[:zypper_patch] if args.key?(:zypper_patch)
893
+ end
894
+ end
895
+
896
+ # Information related to the a standard versioned package. This includes package
897
+ # info for APT, Yum, Zypper, and Googet package managers.
898
+ class InventoryVersionedPackage
899
+ include Google::Apis::Core::Hashable
900
+
901
+ # The system architecture this package is intended for.
902
+ # Corresponds to the JSON property `architecture`
903
+ # @return [String]
904
+ attr_accessor :architecture
905
+
906
+ # The name of the package.
907
+ # Corresponds to the JSON property `packageName`
908
+ # @return [String]
909
+ attr_accessor :package_name
910
+
911
+ # The version of the package.
912
+ # Corresponds to the JSON property `version`
913
+ # @return [String]
914
+ attr_accessor :version
915
+
916
+ def initialize(**args)
917
+ update!(**args)
918
+ end
919
+
920
+ # Update properties of this object
921
+ def update!(**args)
922
+ @architecture = args[:architecture] if args.key?(:architecture)
923
+ @package_name = args[:package_name] if args.key?(:package_name)
924
+ @version = args[:version] if args.key?(:version)
925
+ end
926
+ end
927
+
928
+ # Information related to a Quick Fix Engineering package. Fields are taken from
929
+ # Windows QuickFixEngineering Interface and match the source names: https://docs.
930
+ # microsoft.com/en-us/windows/win32/cimwin32prov/win32-quickfixengineering
931
+ class InventoryWindowsQuickFixEngineeringPackage
932
+ include Google::Apis::Core::Hashable
933
+
934
+ # A short textual description of the QFE update.
935
+ # Corresponds to the JSON property `caption`
936
+ # @return [String]
937
+ attr_accessor :caption
938
+
939
+ # A textual description of the QFE update.
940
+ # Corresponds to the JSON property `description`
941
+ # @return [String]
942
+ attr_accessor :description
943
+
944
+ # Unique identifier associated with a particular QFE update.
945
+ # Corresponds to the JSON property `hotFixId`
946
+ # @return [String]
947
+ attr_accessor :hot_fix_id
948
+
949
+ # Date that the QFE update was installed. Mapped from installed_on field.
950
+ # Corresponds to the JSON property `installTime`
951
+ # @return [String]
952
+ attr_accessor :install_time
953
+
954
+ def initialize(**args)
955
+ update!(**args)
956
+ end
957
+
958
+ # Update properties of this object
959
+ def update!(**args)
960
+ @caption = args[:caption] if args.key?(:caption)
961
+ @description = args[:description] if args.key?(:description)
962
+ @hot_fix_id = args[:hot_fix_id] if args.key?(:hot_fix_id)
963
+ @install_time = args[:install_time] if args.key?(:install_time)
964
+ end
965
+ end
966
+
967
+ # Details related to a Windows Update package. Field data and names are taken
968
+ # from Windows Update API IUpdate Interface: https://docs.microsoft.com/en-us/
969
+ # windows/win32/api/_wua/ Descriptive fields like title, and description are
970
+ # localized based on the locale of the VM being updated.
971
+ class InventoryWindowsUpdatePackage
972
+ include Google::Apis::Core::Hashable
973
+
974
+ # The categories that are associated with this update package.
975
+ # Corresponds to the JSON property `categories`
976
+ # @return [Array<Google::Apis::OsconfigV1beta::InventoryWindowsUpdatePackageWindowsUpdateCategory>]
977
+ attr_accessor :categories
978
+
979
+ # The localized description of the update package.
980
+ # Corresponds to the JSON property `description`
981
+ # @return [String]
982
+ attr_accessor :description
983
+
984
+ # A collection of Microsoft Knowledge Base article IDs that are associated with
985
+ # the update package.
986
+ # Corresponds to the JSON property `kbArticleIds`
987
+ # @return [Array<String>]
988
+ attr_accessor :kb_article_ids
989
+
990
+ # The last published date of the update, in (UTC) date and time.
991
+ # Corresponds to the JSON property `lastDeploymentChangeTime`
992
+ # @return [String]
993
+ attr_accessor :last_deployment_change_time
994
+
995
+ # A collection of URLs that provide more information about the update package.
996
+ # Corresponds to the JSON property `moreInfoUrls`
997
+ # @return [Array<String>]
998
+ attr_accessor :more_info_urls
999
+
1000
+ # The revision number of this update package.
1001
+ # Corresponds to the JSON property `revisionNumber`
1002
+ # @return [Fixnum]
1003
+ attr_accessor :revision_number
1004
+
1005
+ # A hyperlink to the language-specific support information for the update.
1006
+ # Corresponds to the JSON property `supportUrl`
1007
+ # @return [String]
1008
+ attr_accessor :support_url
1009
+
1010
+ # The localized title of the update package.
1011
+ # Corresponds to the JSON property `title`
1012
+ # @return [String]
1013
+ attr_accessor :title
1014
+
1015
+ # Gets the identifier of an update package. Stays the same across revisions.
1016
+ # Corresponds to the JSON property `updateId`
1017
+ # @return [String]
1018
+ attr_accessor :update_id
1019
+
1020
+ def initialize(**args)
1021
+ update!(**args)
1022
+ end
1023
+
1024
+ # Update properties of this object
1025
+ def update!(**args)
1026
+ @categories = args[:categories] if args.key?(:categories)
1027
+ @description = args[:description] if args.key?(:description)
1028
+ @kb_article_ids = args[:kb_article_ids] if args.key?(:kb_article_ids)
1029
+ @last_deployment_change_time = args[:last_deployment_change_time] if args.key?(:last_deployment_change_time)
1030
+ @more_info_urls = args[:more_info_urls] if args.key?(:more_info_urls)
1031
+ @revision_number = args[:revision_number] if args.key?(:revision_number)
1032
+ @support_url = args[:support_url] if args.key?(:support_url)
1033
+ @title = args[:title] if args.key?(:title)
1034
+ @update_id = args[:update_id] if args.key?(:update_id)
1035
+ end
1036
+ end
1037
+
1038
+ # Categories specified by the Windows Update.
1039
+ class InventoryWindowsUpdatePackageWindowsUpdateCategory
1040
+ include Google::Apis::Core::Hashable
1041
+
1042
+ # The identifier of the windows update category.
1043
+ # Corresponds to the JSON property `id`
1044
+ # @return [String]
1045
+ attr_accessor :id
1046
+
1047
+ # The name of the windows update category.
1048
+ # Corresponds to the JSON property `name`
1049
+ # @return [String]
1050
+ attr_accessor :name
1051
+
1052
+ def initialize(**args)
1053
+ update!(**args)
1054
+ end
1055
+
1056
+ # Update properties of this object
1057
+ def update!(**args)
1058
+ @id = args[:id] if args.key?(:id)
1059
+ @name = args[:name] if args.key?(:name)
1060
+ end
1061
+ end
1062
+
1063
+ # Details related to a Zypper Patch.
1064
+ class InventoryZypperPatch
1065
+ include Google::Apis::Core::Hashable
1066
+
1067
+ # The category of the patch.
1068
+ # Corresponds to the JSON property `category`
1069
+ # @return [String]
1070
+ attr_accessor :category
1071
+
1072
+ # The name of the patch.
1073
+ # Corresponds to the JSON property `patchName`
1074
+ # @return [String]
1075
+ attr_accessor :patch_name
1076
+
1077
+ # The severity specified for this patch
1078
+ # Corresponds to the JSON property `severity`
1079
+ # @return [String]
1080
+ attr_accessor :severity
1081
+
1082
+ # Any summary information provided about this patch.
1083
+ # Corresponds to the JSON property `summary`
1084
+ # @return [String]
1085
+ attr_accessor :summary
1086
+
1087
+ def initialize(**args)
1088
+ update!(**args)
1089
+ end
1090
+
1091
+ # Update properties of this object
1092
+ def update!(**args)
1093
+ @category = args[:category] if args.key?(:category)
1094
+ @patch_name = args[:patch_name] if args.key?(:patch_name)
1095
+ @severity = args[:severity] if args.key?(:severity)
1096
+ @summary = args[:summary] if args.key?(:summary)
1097
+ end
1098
+ end
1099
+
1100
+ # A response message for listing guest policies.
1101
+ class ListGuestPoliciesResponse
1102
+ include Google::Apis::Core::Hashable
1103
+
1104
+ # The list of GuestPolicies.
1105
+ # Corresponds to the JSON property `guestPolicies`
1106
+ # @return [Array<Google::Apis::OsconfigV1beta::GuestPolicy>]
1107
+ attr_accessor :guest_policies
1108
+
1109
+ # A pagination token that can be used to get the next page of guest policies.
1110
+ # Corresponds to the JSON property `nextPageToken`
1111
+ # @return [String]
1112
+ attr_accessor :next_page_token
1113
+
1114
+ def initialize(**args)
1115
+ update!(**args)
1116
+ end
1117
+
1118
+ # Update properties of this object
1119
+ def update!(**args)
1120
+ @guest_policies = args[:guest_policies] if args.key?(:guest_policies)
1121
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1122
+ end
1123
+ end
1124
+
1125
+ # A response message for listing patch deployments.
1126
+ class ListPatchDeploymentsResponse
1127
+ include Google::Apis::Core::Hashable
1128
+
1129
+ # A pagination token that can be used to get the next page of patch deployments.
1130
+ # Corresponds to the JSON property `nextPageToken`
1131
+ # @return [String]
1132
+ attr_accessor :next_page_token
1133
+
1134
+ # The list of patch deployments.
1135
+ # Corresponds to the JSON property `patchDeployments`
1136
+ # @return [Array<Google::Apis::OsconfigV1beta::PatchDeployment>]
1137
+ attr_accessor :patch_deployments
1138
+
1139
+ def initialize(**args)
1140
+ update!(**args)
1141
+ end
1142
+
1143
+ # Update properties of this object
1144
+ def update!(**args)
1145
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1146
+ @patch_deployments = args[:patch_deployments] if args.key?(:patch_deployments)
1147
+ end
1148
+ end
1149
+
1150
+ # A response message for listing the instances details for a patch job.
1151
+ class ListPatchJobInstanceDetailsResponse
1152
+ include Google::Apis::Core::Hashable
1153
+
1154
+ # A pagination token that can be used to get the next page of results.
1155
+ # Corresponds to the JSON property `nextPageToken`
1156
+ # @return [String]
1157
+ attr_accessor :next_page_token
1158
+
1159
+ # A list of instance status.
1160
+ # Corresponds to the JSON property `patchJobInstanceDetails`
1161
+ # @return [Array<Google::Apis::OsconfigV1beta::PatchJobInstanceDetails>]
1162
+ attr_accessor :patch_job_instance_details
1163
+
1164
+ def initialize(**args)
1165
+ update!(**args)
1166
+ end
1167
+
1168
+ # Update properties of this object
1169
+ def update!(**args)
1170
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1171
+ @patch_job_instance_details = args[:patch_job_instance_details] if args.key?(:patch_job_instance_details)
1172
+ end
1173
+ end
1174
+
1175
+ # A response message for listing patch jobs.
1176
+ class ListPatchJobsResponse
1177
+ include Google::Apis::Core::Hashable
1178
+
1179
+ # A pagination token that can be used to get the next page of results.
1180
+ # Corresponds to the JSON property `nextPageToken`
1181
+ # @return [String]
1182
+ attr_accessor :next_page_token
1183
+
1184
+ # The list of patch jobs.
1185
+ # Corresponds to the JSON property `patchJobs`
1186
+ # @return [Array<Google::Apis::OsconfigV1beta::PatchJob>]
1187
+ attr_accessor :patch_jobs
1188
+
1189
+ def initialize(**args)
1190
+ update!(**args)
1191
+ end
1192
+
1193
+ # Update properties of this object
1194
+ def update!(**args)
1195
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1196
+ @patch_jobs = args[:patch_jobs] if args.key?(:patch_jobs)
1197
+ end
1198
+ end
1199
+
1200
+ # A request message for getting the effective guest policy assigned to the
1201
+ # instance.
1202
+ class LookupEffectiveGuestPolicyRequest
1203
+ include Google::Apis::Core::Hashable
1204
+
1205
+ # Architecture of OS running on the instance. The OS Config agent only provides
1206
+ # this field for targeting if OS Inventory is enabled for that instance.
1207
+ # Corresponds to the JSON property `osArchitecture`
1208
+ # @return [String]
1209
+ attr_accessor :os_architecture
1210
+
1211
+ # Short name of the OS running on the instance. The OS Config agent only
1212
+ # provides this field for targeting if OS Inventory is enabled for that instance.
1213
+ # Corresponds to the JSON property `osShortName`
1214
+ # @return [String]
1215
+ attr_accessor :os_short_name
1216
+
1217
+ # Version of the OS running on the instance. The OS Config agent only provides
1218
+ # this field for targeting if OS Inventory is enabled for that VM instance.
1219
+ # Corresponds to the JSON property `osVersion`
1220
+ # @return [String]
1221
+ attr_accessor :os_version
1222
+
1223
+ def initialize(**args)
1224
+ update!(**args)
1225
+ end
1226
+
1227
+ # Update properties of this object
1228
+ def update!(**args)
1229
+ @os_architecture = args[:os_architecture] if args.key?(:os_architecture)
1230
+ @os_short_name = args[:os_short_name] if args.key?(:os_short_name)
1231
+ @os_version = args[:os_version] if args.key?(:os_version)
1232
+ end
1233
+ end
1234
+
1235
+ # Represents a monthly schedule. An example of a valid monthly schedule is "on
1236
+ # the third Tuesday of the month" or "on the 15th of the month".
1237
+ class MonthlySchedule
1238
+ include Google::Apis::Core::Hashable
1239
+
1240
+ # Required. One day of the month. 1-31 indicates the 1st to the 31st day. -1
1241
+ # indicates the last day of the month. Months without the target day will be
1242
+ # skipped. For example, a schedule to run "every month on the 31st" will not run
1243
+ # in February, April, June, etc.
1244
+ # Corresponds to the JSON property `monthDay`
1245
+ # @return [Fixnum]
1246
+ attr_accessor :month_day
1247
+
1248
+ # Represents one week day in a month. An example is "the 4th Sunday".
1249
+ # Corresponds to the JSON property `weekDayOfMonth`
1250
+ # @return [Google::Apis::OsconfigV1beta::WeekDayOfMonth]
1251
+ attr_accessor :week_day_of_month
1252
+
1253
+ def initialize(**args)
1254
+ update!(**args)
1255
+ end
1256
+
1257
+ # Update properties of this object
1258
+ def update!(**args)
1259
+ @month_day = args[:month_day] if args.key?(:month_day)
1260
+ @week_day_of_month = args[:week_day_of_month] if args.key?(:week_day_of_month)
1261
+ end
1262
+ end
1263
+
1264
+ # Sets the time for a one time patch deployment. Timestamp is in [RFC3339](https:
1265
+ # //www.ietf.org/rfc/rfc3339.txt) text format.
1266
+ class OneTimeSchedule
1267
+ include Google::Apis::Core::Hashable
1268
+
1269
+ # Required. The desired patch job execution time.
1270
+ # Corresponds to the JSON property `executeTime`
1271
+ # @return [String]
1272
+ attr_accessor :execute_time
1273
+
1274
+ def initialize(**args)
1275
+ update!(**args)
1276
+ end
1277
+
1278
+ # Update properties of this object
1279
+ def update!(**args)
1280
+ @execute_time = args[:execute_time] if args.key?(:execute_time)
1281
+ end
1282
+ end
1283
+
1284
+ # Package is a reference to the software package to be installed or removed. The
1285
+ # agent on the VM instance uses the system package manager to apply the config.
1286
+ # These are the commands that the agent uses to install or remove packages. Apt
1287
+ # install: `apt-get update && apt-get -y install package1 package2 package3`
1288
+ # remove: `apt-get -y remove package1 package2 package3` Yum install: `yum -y
1289
+ # install package1 package2 package3` remove: `yum -y remove package1 package2
1290
+ # package3` Zypper install: `zypper install package1 package2 package3` remove: `
1291
+ # zypper rm package1 package2` Googet install: `googet -noconfirm install
1292
+ # package1 package2 package3` remove: `googet -noconfirm remove package1
1293
+ # package2 package3`
1294
+ class Package
1295
+ include Google::Apis::Core::Hashable
1296
+
1297
+ # The desired_state the agent should maintain for this package. The default is
1298
+ # to ensure the package is installed.
1299
+ # Corresponds to the JSON property `desiredState`
1300
+ # @return [String]
1301
+ attr_accessor :desired_state
1302
+
1303
+ # Type of package manager that can be used to install this package. If a system
1304
+ # does not have the package manager, the package is not installed or removed no
1305
+ # error message is returned. By default, or if you specify `ANY`, the agent
1306
+ # attempts to install and remove this package using the default package manager.
1307
+ # This is useful when creating a policy that applies to different types of
1308
+ # systems. The default behavior is ANY.
1309
+ # Corresponds to the JSON property `manager`
1310
+ # @return [String]
1311
+ attr_accessor :manager
1312
+
1313
+ # Required. The name of the package. A package is uniquely identified for
1314
+ # conflict validation by checking the package name and the manager(s) that the
1315
+ # package targets.
1316
+ # Corresponds to the JSON property `name`
1317
+ # @return [String]
1318
+ attr_accessor :name
1319
+
1320
+ def initialize(**args)
1321
+ update!(**args)
1322
+ end
1323
+
1324
+ # Update properties of this object
1325
+ def update!(**args)
1326
+ @desired_state = args[:desired_state] if args.key?(:desired_state)
1327
+ @manager = args[:manager] if args.key?(:manager)
1328
+ @name = args[:name] if args.key?(:name)
1329
+ end
1330
+ end
1331
+
1332
+ # A package repository.
1333
+ class PackageRepository
1334
+ include Google::Apis::Core::Hashable
1335
+
1336
+ # Represents a single Apt package repository. This repository is added to a repo
1337
+ # file that is stored at `/etc/apt/sources.list.d/google_osconfig.list`.
1338
+ # Corresponds to the JSON property `apt`
1339
+ # @return [Google::Apis::OsconfigV1beta::AptRepository]
1340
+ attr_accessor :apt
1341
+
1342
+ # Represents a Goo package repository. These is added to a repo file that is
1343
+ # stored at C:/ProgramData/GooGet/repos/google_osconfig.repo.
1344
+ # Corresponds to the JSON property `goo`
1345
+ # @return [Google::Apis::OsconfigV1beta::GooRepository]
1346
+ attr_accessor :goo
1347
+
1348
+ # Represents a single Yum package repository. This repository is added to a repo
1349
+ # file that is stored at `/etc/yum.repos.d/google_osconfig.repo`.
1350
+ # Corresponds to the JSON property `yum`
1351
+ # @return [Google::Apis::OsconfigV1beta::YumRepository]
1352
+ attr_accessor :yum
1353
+
1354
+ # Represents a single Zypper package repository. This repository is added to a
1355
+ # repo file that is stored at `/etc/zypp/repos.d/google_osconfig.repo`.
1356
+ # Corresponds to the JSON property `zypper`
1357
+ # @return [Google::Apis::OsconfigV1beta::ZypperRepository]
1358
+ attr_accessor :zypper
1359
+
1360
+ def initialize(**args)
1361
+ update!(**args)
1362
+ end
1363
+
1364
+ # Update properties of this object
1365
+ def update!(**args)
1366
+ @apt = args[:apt] if args.key?(:apt)
1367
+ @goo = args[:goo] if args.key?(:goo)
1368
+ @yum = args[:yum] if args.key?(:yum)
1369
+ @zypper = args[:zypper] if args.key?(:zypper)
1370
+ end
1371
+ end
1372
+
1373
+ # Patch configuration specifications. Contains details on how to apply the patch(
1374
+ # es) to a VM instance.
1375
+ class PatchConfig
1376
+ include Google::Apis::Core::Hashable
1377
+
1378
+ # Apt patching is completed by executing `apt-get update && apt-get upgrade`.
1379
+ # Additional options can be set to control how this is executed.
1380
+ # Corresponds to the JSON property `apt`
1381
+ # @return [Google::Apis::OsconfigV1beta::AptSettings]
1382
+ attr_accessor :apt
1383
+
1384
+ # Googet patching is performed by running `googet update`.
1385
+ # Corresponds to the JSON property `goo`
1386
+ # @return [Google::Apis::OsconfigV1beta::GooSettings]
1387
+ attr_accessor :goo
1388
+
1389
+ # A step that runs an executable for a PatchJob.
1390
+ # Corresponds to the JSON property `postStep`
1391
+ # @return [Google::Apis::OsconfigV1beta::ExecStep]
1392
+ attr_accessor :post_step
1393
+
1394
+ # A step that runs an executable for a PatchJob.
1395
+ # Corresponds to the JSON property `preStep`
1396
+ # @return [Google::Apis::OsconfigV1beta::ExecStep]
1397
+ attr_accessor :pre_step
1398
+
1399
+ # Post-patch reboot settings.
1400
+ # Corresponds to the JSON property `rebootConfig`
1401
+ # @return [String]
1402
+ attr_accessor :reboot_config
1403
+
1404
+ # Windows patching is performed using the Windows Update Agent.
1405
+ # Corresponds to the JSON property `windowsUpdate`
1406
+ # @return [Google::Apis::OsconfigV1beta::WindowsUpdateSettings]
1407
+ attr_accessor :windows_update
1408
+
1409
+ # Yum patching is performed by executing `yum update`. Additional options can be
1410
+ # set to control how this is executed. Note that not all settings are supported
1411
+ # on all platforms.
1412
+ # Corresponds to the JSON property `yum`
1413
+ # @return [Google::Apis::OsconfigV1beta::YumSettings]
1414
+ attr_accessor :yum
1415
+
1416
+ # Zypper patching is performed by running `zypper patch`. See also https://en.
1417
+ # opensuse.org/SDB:Zypper_manual.
1418
+ # Corresponds to the JSON property `zypper`
1419
+ # @return [Google::Apis::OsconfigV1beta::ZypperSettings]
1420
+ attr_accessor :zypper
1421
+
1422
+ def initialize(**args)
1423
+ update!(**args)
1424
+ end
1425
+
1426
+ # Update properties of this object
1427
+ def update!(**args)
1428
+ @apt = args[:apt] if args.key?(:apt)
1429
+ @goo = args[:goo] if args.key?(:goo)
1430
+ @post_step = args[:post_step] if args.key?(:post_step)
1431
+ @pre_step = args[:pre_step] if args.key?(:pre_step)
1432
+ @reboot_config = args[:reboot_config] if args.key?(:reboot_config)
1433
+ @windows_update = args[:windows_update] if args.key?(:windows_update)
1434
+ @yum = args[:yum] if args.key?(:yum)
1435
+ @zypper = args[:zypper] if args.key?(:zypper)
1436
+ end
1437
+ end
1438
+
1439
+ # Patch deployments are configurations that individual patch jobs use to
1440
+ # complete a patch. These configurations include instance filter, package
1441
+ # repository settings, and a schedule. For more information about creating and
1442
+ # managing patch deployments, see [Scheduling patch jobs](https://cloud.google.
1443
+ # com/compute/docs/os-patch-management/schedule-patch-jobs).
1444
+ class PatchDeployment
1445
+ include Google::Apis::Core::Hashable
1446
+
1447
+ # Output only. Time the patch deployment was created. Timestamp is in [RFC3339](
1448
+ # https://www.ietf.org/rfc/rfc3339.txt) text format.
1449
+ # Corresponds to the JSON property `createTime`
1450
+ # @return [String]
1451
+ attr_accessor :create_time
1452
+
1453
+ # Optional. Description of the patch deployment. Length of the description is
1454
+ # limited to 1024 characters.
1455
+ # Corresponds to the JSON property `description`
1456
+ # @return [String]
1457
+ attr_accessor :description
1458
+
1459
+ # Optional. Duration of the patch. After the duration ends, the patch times out.
1460
+ # Corresponds to the JSON property `duration`
1461
+ # @return [String]
1462
+ attr_accessor :duration
1463
+
1464
+ # A filter to target VM instances for patching. The targeted VMs must meet all
1465
+ # criteria specified. So if both labels and zones are specified, the patch job
1466
+ # targets only VMs with those labels and in those zones.
1467
+ # Corresponds to the JSON property `instanceFilter`
1468
+ # @return [Google::Apis::OsconfigV1beta::PatchInstanceFilter]
1469
+ attr_accessor :instance_filter
1470
+
1471
+ # Output only. The last time a patch job was started by this deployment.
1472
+ # Timestamp is in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
1473
+ # Corresponds to the JSON property `lastExecuteTime`
1474
+ # @return [String]
1475
+ attr_accessor :last_execute_time
1476
+
1477
+ # Unique name for the patch deployment resource in a project. The patch
1478
+ # deployment name is in the form: `projects/`project_id`/patchDeployments/`
1479
+ # patch_deployment_id``. This field is ignored when you create a new patch
1480
+ # deployment.
1481
+ # Corresponds to the JSON property `name`
1482
+ # @return [String]
1483
+ attr_accessor :name
1484
+
1485
+ # Sets the time for a one time patch deployment. Timestamp is in [RFC3339](https:
1486
+ # //www.ietf.org/rfc/rfc3339.txt) text format.
1487
+ # Corresponds to the JSON property `oneTimeSchedule`
1488
+ # @return [Google::Apis::OsconfigV1beta::OneTimeSchedule]
1489
+ attr_accessor :one_time_schedule
1490
+
1491
+ # Patch configuration specifications. Contains details on how to apply the patch(
1492
+ # es) to a VM instance.
1493
+ # Corresponds to the JSON property `patchConfig`
1494
+ # @return [Google::Apis::OsconfigV1beta::PatchConfig]
1495
+ attr_accessor :patch_config
1496
+
1497
+ # Sets the time for recurring patch deployments.
1498
+ # Corresponds to the JSON property `recurringSchedule`
1499
+ # @return [Google::Apis::OsconfigV1beta::RecurringSchedule]
1500
+ attr_accessor :recurring_schedule
1501
+
1502
+ # Patch rollout configuration specifications. Contains details on the
1503
+ # concurrency control when applying patch(es) to all targeted VMs.
1504
+ # Corresponds to the JSON property `rollout`
1505
+ # @return [Google::Apis::OsconfigV1beta::PatchRollout]
1506
+ attr_accessor :rollout
1507
+
1508
+ # Output only. Time the patch deployment was last updated. Timestamp is in [
1509
+ # RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
1510
+ # Corresponds to the JSON property `updateTime`
1511
+ # @return [String]
1512
+ attr_accessor :update_time
1513
+
1514
+ def initialize(**args)
1515
+ update!(**args)
1516
+ end
1517
+
1518
+ # Update properties of this object
1519
+ def update!(**args)
1520
+ @create_time = args[:create_time] if args.key?(:create_time)
1521
+ @description = args[:description] if args.key?(:description)
1522
+ @duration = args[:duration] if args.key?(:duration)
1523
+ @instance_filter = args[:instance_filter] if args.key?(:instance_filter)
1524
+ @last_execute_time = args[:last_execute_time] if args.key?(:last_execute_time)
1525
+ @name = args[:name] if args.key?(:name)
1526
+ @one_time_schedule = args[:one_time_schedule] if args.key?(:one_time_schedule)
1527
+ @patch_config = args[:patch_config] if args.key?(:patch_config)
1528
+ @recurring_schedule = args[:recurring_schedule] if args.key?(:recurring_schedule)
1529
+ @rollout = args[:rollout] if args.key?(:rollout)
1530
+ @update_time = args[:update_time] if args.key?(:update_time)
1531
+ end
1532
+ end
1533
+
1534
+ # A filter to target VM instances for patching. The targeted VMs must meet all
1535
+ # criteria specified. So if both labels and zones are specified, the patch job
1536
+ # targets only VMs with those labels and in those zones.
1537
+ class PatchInstanceFilter
1538
+ include Google::Apis::Core::Hashable
1539
+
1540
+ # Target all VM instances in the project. If true, no other criteria is
1541
+ # permitted.
1542
+ # Corresponds to the JSON property `all`
1543
+ # @return [Boolean]
1544
+ attr_accessor :all
1545
+ alias_method :all?, :all
1546
+
1547
+ # Targets VM instances matching at least one of these label sets. This allows
1548
+ # targeting of disparate groups, for example "env=prod or env=staging".
1549
+ # Corresponds to the JSON property `groupLabels`
1550
+ # @return [Array<Google::Apis::OsconfigV1beta::PatchInstanceFilterGroupLabel>]
1551
+ attr_accessor :group_labels
1552
+
1553
+ # Targets VMs whose name starts with one of these prefixes. Similar to labels,
1554
+ # this is another way to group VMs when targeting configs, for example prefix="
1555
+ # prod-".
1556
+ # Corresponds to the JSON property `instanceNamePrefixes`
1557
+ # @return [Array<String>]
1558
+ attr_accessor :instance_name_prefixes
1559
+
1560
+ # Targets any of the VM instances specified. Instances are specified by their
1561
+ # URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`, `projects/[
1562
+ # PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]`, or `https://www.
1563
+ # googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[
1564
+ # INSTANCE_NAME]`
1565
+ # Corresponds to the JSON property `instances`
1566
+ # @return [Array<String>]
1567
+ attr_accessor :instances
1568
+
1569
+ # Targets VM instances in ANY of these zones. Leave empty to target VM instances
1570
+ # in any zone.
1571
+ # Corresponds to the JSON property `zones`
1572
+ # @return [Array<String>]
1573
+ attr_accessor :zones
1574
+
1575
+ def initialize(**args)
1576
+ update!(**args)
1577
+ end
1578
+
1579
+ # Update properties of this object
1580
+ def update!(**args)
1581
+ @all = args[:all] if args.key?(:all)
1582
+ @group_labels = args[:group_labels] if args.key?(:group_labels)
1583
+ @instance_name_prefixes = args[:instance_name_prefixes] if args.key?(:instance_name_prefixes)
1584
+ @instances = args[:instances] if args.key?(:instances)
1585
+ @zones = args[:zones] if args.key?(:zones)
1586
+ end
1587
+ end
1588
+
1589
+ # Represents a group of VMs that can be identified as having all these labels,
1590
+ # for example "env=prod and app=web".
1591
+ class PatchInstanceFilterGroupLabel
1592
+ include Google::Apis::Core::Hashable
1593
+
1594
+ # Compute Engine instance labels that must be present for a VM instance to be
1595
+ # targeted by this filter.
1596
+ # Corresponds to the JSON property `labels`
1597
+ # @return [Hash<String,String>]
1598
+ attr_accessor :labels
1599
+
1600
+ def initialize(**args)
1601
+ update!(**args)
1602
+ end
1603
+
1604
+ # Update properties of this object
1605
+ def update!(**args)
1606
+ @labels = args[:labels] if args.key?(:labels)
1607
+ end
1608
+ end
1609
+
1610
+ # A high level representation of a patch job that is either in progress or has
1611
+ # completed. Instance details are not included in the job. To paginate through
1612
+ # instance details, use `ListPatchJobInstanceDetails`. For more information
1613
+ # about patch jobs, see [Creating patch jobs](https://cloud.google.com/compute/
1614
+ # docs/os-patch-management/create-patch-job).
1615
+ class PatchJob
1616
+ include Google::Apis::Core::Hashable
1617
+
1618
+ # Time this patch job was created.
1619
+ # Corresponds to the JSON property `createTime`
1620
+ # @return [String]
1621
+ attr_accessor :create_time
1622
+
1623
+ # Description of the patch job. Length of the description is limited to 1024
1624
+ # characters.
1625
+ # Corresponds to the JSON property `description`
1626
+ # @return [String]
1627
+ attr_accessor :description
1628
+
1629
+ # Display name for this patch job. This is not a unique identifier.
1630
+ # Corresponds to the JSON property `displayName`
1631
+ # @return [String]
1632
+ attr_accessor :display_name
1633
+
1634
+ # If this patch job is a dry run, the agent reports that it has finished without
1635
+ # running any updates on the VM instance.
1636
+ # Corresponds to the JSON property `dryRun`
1637
+ # @return [Boolean]
1638
+ attr_accessor :dry_run
1639
+ alias_method :dry_run?, :dry_run
1640
+
1641
+ # Duration of the patch job. After the duration ends, the patch job times out.
1642
+ # Corresponds to the JSON property `duration`
1643
+ # @return [String]
1644
+ attr_accessor :duration
1645
+
1646
+ # If this patch job failed, this message provides information about the failure.
1647
+ # Corresponds to the JSON property `errorMessage`
1648
+ # @return [String]
1649
+ attr_accessor :error_message
1650
+
1651
+ # A summary of the current patch state across all instances that this patch job
1652
+ # affects. Contains counts of instances in different states. These states map to
1653
+ # `InstancePatchState`. List patch job instance details to see the specific
1654
+ # states of each instance.
1655
+ # Corresponds to the JSON property `instanceDetailsSummary`
1656
+ # @return [Google::Apis::OsconfigV1beta::PatchJobInstanceDetailsSummary]
1657
+ attr_accessor :instance_details_summary
1658
+
1659
+ # A filter to target VM instances for patching. The targeted VMs must meet all
1660
+ # criteria specified. So if both labels and zones are specified, the patch job
1661
+ # targets only VMs with those labels and in those zones.
1662
+ # Corresponds to the JSON property `instanceFilter`
1663
+ # @return [Google::Apis::OsconfigV1beta::PatchInstanceFilter]
1664
+ attr_accessor :instance_filter
1665
+
1666
+ # Unique identifier for this patch job in the form `projects/*/patchJobs/*`
1667
+ # Corresponds to the JSON property `name`
1668
+ # @return [String]
1669
+ attr_accessor :name
1670
+
1671
+ # Patch configuration specifications. Contains details on how to apply the patch(
1672
+ # es) to a VM instance.
1673
+ # Corresponds to the JSON property `patchConfig`
1674
+ # @return [Google::Apis::OsconfigV1beta::PatchConfig]
1675
+ attr_accessor :patch_config
1676
+
1677
+ # Output only. Name of the patch deployment that created this patch job.
1678
+ # Corresponds to the JSON property `patchDeployment`
1679
+ # @return [String]
1680
+ attr_accessor :patch_deployment
1681
+
1682
+ # Reflects the overall progress of the patch job in the range of 0.0 being no
1683
+ # progress to 100.0 being complete.
1684
+ # Corresponds to the JSON property `percentComplete`
1685
+ # @return [Float]
1686
+ attr_accessor :percent_complete
1687
+
1688
+ # Patch rollout configuration specifications. Contains details on the
1689
+ # concurrency control when applying patch(es) to all targeted VMs.
1690
+ # Corresponds to the JSON property `rollout`
1691
+ # @return [Google::Apis::OsconfigV1beta::PatchRollout]
1692
+ attr_accessor :rollout
1693
+
1694
+ # The current state of the PatchJob.
1695
+ # Corresponds to the JSON property `state`
1696
+ # @return [String]
1697
+ attr_accessor :state
1698
+
1699
+ # Last time this patch job was updated.
1700
+ # Corresponds to the JSON property `updateTime`
1701
+ # @return [String]
1702
+ attr_accessor :update_time
1703
+
1704
+ def initialize(**args)
1705
+ update!(**args)
1706
+ end
1707
+
1708
+ # Update properties of this object
1709
+ def update!(**args)
1710
+ @create_time = args[:create_time] if args.key?(:create_time)
1711
+ @description = args[:description] if args.key?(:description)
1712
+ @display_name = args[:display_name] if args.key?(:display_name)
1713
+ @dry_run = args[:dry_run] if args.key?(:dry_run)
1714
+ @duration = args[:duration] if args.key?(:duration)
1715
+ @error_message = args[:error_message] if args.key?(:error_message)
1716
+ @instance_details_summary = args[:instance_details_summary] if args.key?(:instance_details_summary)
1717
+ @instance_filter = args[:instance_filter] if args.key?(:instance_filter)
1718
+ @name = args[:name] if args.key?(:name)
1719
+ @patch_config = args[:patch_config] if args.key?(:patch_config)
1720
+ @patch_deployment = args[:patch_deployment] if args.key?(:patch_deployment)
1721
+ @percent_complete = args[:percent_complete] if args.key?(:percent_complete)
1722
+ @rollout = args[:rollout] if args.key?(:rollout)
1723
+ @state = args[:state] if args.key?(:state)
1724
+ @update_time = args[:update_time] if args.key?(:update_time)
1725
+ end
1726
+ end
1727
+
1728
+ # Patch details for a VM instance. For more information about reviewing VM
1729
+ # instance details, see [Listing all VM instance details for a specific patch
1730
+ # job](https://cloud.google.com/compute/docs/os-patch-management/manage-patch-
1731
+ # jobs#list-instance-details).
1732
+ class PatchJobInstanceDetails
1733
+ include Google::Apis::Core::Hashable
1734
+
1735
+ # The number of times the agent that the agent attempts to apply the patch.
1736
+ # Corresponds to the JSON property `attemptCount`
1737
+ # @return [Fixnum]
1738
+ attr_accessor :attempt_count
1739
+
1740
+ # If the patch fails, this field provides the reason.
1741
+ # Corresponds to the JSON property `failureReason`
1742
+ # @return [String]
1743
+ attr_accessor :failure_reason
1744
+
1745
+ # The unique identifier for the instance. This identifier is defined by the
1746
+ # server.
1747
+ # Corresponds to the JSON property `instanceSystemId`
1748
+ # @return [String]
1749
+ attr_accessor :instance_system_id
1750
+
1751
+ # The instance name in the form `projects/*/zones/*/instances/*`
1752
+ # Corresponds to the JSON property `name`
1753
+ # @return [String]
1754
+ attr_accessor :name
1755
+
1756
+ # Current state of instance patch.
1757
+ # Corresponds to the JSON property `state`
1758
+ # @return [String]
1759
+ attr_accessor :state
1760
+
1761
+ def initialize(**args)
1762
+ update!(**args)
1763
+ end
1764
+
1765
+ # Update properties of this object
1766
+ def update!(**args)
1767
+ @attempt_count = args[:attempt_count] if args.key?(:attempt_count)
1768
+ @failure_reason = args[:failure_reason] if args.key?(:failure_reason)
1769
+ @instance_system_id = args[:instance_system_id] if args.key?(:instance_system_id)
1770
+ @name = args[:name] if args.key?(:name)
1771
+ @state = args[:state] if args.key?(:state)
1772
+ end
1773
+ end
1774
+
1775
+ # A summary of the current patch state across all instances that this patch job
1776
+ # affects. Contains counts of instances in different states. These states map to
1777
+ # `InstancePatchState`. List patch job instance details to see the specific
1778
+ # states of each instance.
1779
+ class PatchJobInstanceDetailsSummary
1780
+ include Google::Apis::Core::Hashable
1781
+
1782
+ # Number of instances that have acked and will start shortly.
1783
+ # Corresponds to the JSON property `ackedInstanceCount`
1784
+ # @return [Fixnum]
1785
+ attr_accessor :acked_instance_count
1786
+
1787
+ # Number of instances that are applying patches.
1788
+ # Corresponds to the JSON property `applyingPatchesInstanceCount`
1789
+ # @return [Fixnum]
1790
+ attr_accessor :applying_patches_instance_count
1791
+
1792
+ # Number of instances that are downloading patches.
1793
+ # Corresponds to the JSON property `downloadingPatchesInstanceCount`
1794
+ # @return [Fixnum]
1795
+ attr_accessor :downloading_patches_instance_count
1796
+
1797
+ # Number of instances that failed.
1798
+ # Corresponds to the JSON property `failedInstanceCount`
1799
+ # @return [Fixnum]
1800
+ attr_accessor :failed_instance_count
1801
+
1802
+ # Number of instances that are inactive.
1803
+ # Corresponds to the JSON property `inactiveInstanceCount`
1804
+ # @return [Fixnum]
1805
+ attr_accessor :inactive_instance_count
1806
+
1807
+ # Number of instances that do not appear to be running the agent. Check to
1808
+ # ensure that the agent is installed, running, and able to communicate with the
1809
+ # service.
1810
+ # Corresponds to the JSON property `noAgentDetectedInstanceCount`
1811
+ # @return [Fixnum]
1812
+ attr_accessor :no_agent_detected_instance_count
1813
+
1814
+ # Number of instances notified about patch job.
1815
+ # Corresponds to the JSON property `notifiedInstanceCount`
1816
+ # @return [Fixnum]
1817
+ attr_accessor :notified_instance_count
1818
+
1819
+ # Number of instances pending patch job.
1820
+ # Corresponds to the JSON property `pendingInstanceCount`
1821
+ # @return [Fixnum]
1822
+ attr_accessor :pending_instance_count
1823
+
1824
+ # Number of instances that are running the post-patch step.
1825
+ # Corresponds to the JSON property `postPatchStepInstanceCount`
1826
+ # @return [Fixnum]
1827
+ attr_accessor :post_patch_step_instance_count
1828
+
1829
+ # Number of instances that are running the pre-patch step.
1830
+ # Corresponds to the JSON property `prePatchStepInstanceCount`
1831
+ # @return [Fixnum]
1832
+ attr_accessor :pre_patch_step_instance_count
1833
+
1834
+ # Number of instances rebooting.
1835
+ # Corresponds to the JSON property `rebootingInstanceCount`
1836
+ # @return [Fixnum]
1837
+ attr_accessor :rebooting_instance_count
1838
+
1839
+ # Number of instances that have started.
1840
+ # Corresponds to the JSON property `startedInstanceCount`
1841
+ # @return [Fixnum]
1842
+ attr_accessor :started_instance_count
1843
+
1844
+ # Number of instances that have completed successfully.
1845
+ # Corresponds to the JSON property `succeededInstanceCount`
1846
+ # @return [Fixnum]
1847
+ attr_accessor :succeeded_instance_count
1848
+
1849
+ # Number of instances that require reboot.
1850
+ # Corresponds to the JSON property `succeededRebootRequiredInstanceCount`
1851
+ # @return [Fixnum]
1852
+ attr_accessor :succeeded_reboot_required_instance_count
1853
+
1854
+ # Number of instances that exceeded the time out while applying the patch.
1855
+ # Corresponds to the JSON property `timedOutInstanceCount`
1856
+ # @return [Fixnum]
1857
+ attr_accessor :timed_out_instance_count
1858
+
1859
+ def initialize(**args)
1860
+ update!(**args)
1861
+ end
1862
+
1863
+ # Update properties of this object
1864
+ def update!(**args)
1865
+ @acked_instance_count = args[:acked_instance_count] if args.key?(:acked_instance_count)
1866
+ @applying_patches_instance_count = args[:applying_patches_instance_count] if args.key?(:applying_patches_instance_count)
1867
+ @downloading_patches_instance_count = args[:downloading_patches_instance_count] if args.key?(:downloading_patches_instance_count)
1868
+ @failed_instance_count = args[:failed_instance_count] if args.key?(:failed_instance_count)
1869
+ @inactive_instance_count = args[:inactive_instance_count] if args.key?(:inactive_instance_count)
1870
+ @no_agent_detected_instance_count = args[:no_agent_detected_instance_count] if args.key?(:no_agent_detected_instance_count)
1871
+ @notified_instance_count = args[:notified_instance_count] if args.key?(:notified_instance_count)
1872
+ @pending_instance_count = args[:pending_instance_count] if args.key?(:pending_instance_count)
1873
+ @post_patch_step_instance_count = args[:post_patch_step_instance_count] if args.key?(:post_patch_step_instance_count)
1874
+ @pre_patch_step_instance_count = args[:pre_patch_step_instance_count] if args.key?(:pre_patch_step_instance_count)
1875
+ @rebooting_instance_count = args[:rebooting_instance_count] if args.key?(:rebooting_instance_count)
1876
+ @started_instance_count = args[:started_instance_count] if args.key?(:started_instance_count)
1877
+ @succeeded_instance_count = args[:succeeded_instance_count] if args.key?(:succeeded_instance_count)
1878
+ @succeeded_reboot_required_instance_count = args[:succeeded_reboot_required_instance_count] if args.key?(:succeeded_reboot_required_instance_count)
1879
+ @timed_out_instance_count = args[:timed_out_instance_count] if args.key?(:timed_out_instance_count)
1880
+ end
1881
+ end
1882
+
1883
+ # Patch rollout configuration specifications. Contains details on the
1884
+ # concurrency control when applying patch(es) to all targeted VMs.
1885
+ class PatchRollout
1886
+ include Google::Apis::Core::Hashable
1887
+
1888
+ # Message encapsulating a value that can be either absolute ("fixed") or
1889
+ # relative ("percent") to a value.
1890
+ # Corresponds to the JSON property `disruptionBudget`
1891
+ # @return [Google::Apis::OsconfigV1beta::FixedOrPercent]
1892
+ attr_accessor :disruption_budget
1893
+
1894
+ # Mode of the patch rollout.
1895
+ # Corresponds to the JSON property `mode`
1896
+ # @return [String]
1897
+ attr_accessor :mode
1898
+
1899
+ def initialize(**args)
1900
+ update!(**args)
1901
+ end
1902
+
1903
+ # Update properties of this object
1904
+ def update!(**args)
1905
+ @disruption_budget = args[:disruption_budget] if args.key?(:disruption_budget)
1906
+ @mode = args[:mode] if args.key?(:mode)
1907
+ end
1908
+ end
1909
+
1910
+ # Sets the time for recurring patch deployments.
1911
+ class RecurringSchedule
1912
+ include Google::Apis::Core::Hashable
1913
+
1914
+ # Optional. The end time at which a recurring patch deployment schedule is no
1915
+ # longer active.
1916
+ # Corresponds to the JSON property `endTime`
1917
+ # @return [String]
1918
+ attr_accessor :end_time
1919
+
1920
+ # Required. The frequency unit of this recurring schedule.
1921
+ # Corresponds to the JSON property `frequency`
1922
+ # @return [String]
1923
+ attr_accessor :frequency
1924
+
1925
+ # Output only. The time the last patch job ran successfully.
1926
+ # Corresponds to the JSON property `lastExecuteTime`
1927
+ # @return [String]
1928
+ attr_accessor :last_execute_time
1929
+
1930
+ # Represents a monthly schedule. An example of a valid monthly schedule is "on
1931
+ # the third Tuesday of the month" or "on the 15th of the month".
1932
+ # Corresponds to the JSON property `monthly`
1933
+ # @return [Google::Apis::OsconfigV1beta::MonthlySchedule]
1934
+ attr_accessor :monthly
1935
+
1936
+ # Output only. The time the next patch job is scheduled to run.
1937
+ # Corresponds to the JSON property `nextExecuteTime`
1938
+ # @return [String]
1939
+ attr_accessor :next_execute_time
1940
+
1941
+ # Optional. The time that the recurring schedule becomes effective. Defaults to `
1942
+ # create_time` of the patch deployment.
1943
+ # Corresponds to the JSON property `startTime`
1944
+ # @return [String]
1945
+ attr_accessor :start_time
1946
+
1947
+ # Represents a time of day. The date and time zone are either not significant or
1948
+ # are specified elsewhere. An API may choose to allow leap seconds. Related
1949
+ # types are google.type.Date and `google.protobuf.Timestamp`.
1950
+ # Corresponds to the JSON property `timeOfDay`
1951
+ # @return [Google::Apis::OsconfigV1beta::TimeOfDay]
1952
+ attr_accessor :time_of_day
1953
+
1954
+ # Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/
1955
+ # time-zones).
1956
+ # Corresponds to the JSON property `timeZone`
1957
+ # @return [Google::Apis::OsconfigV1beta::TimeZone]
1958
+ attr_accessor :time_zone
1959
+
1960
+ # Represents a weekly schedule.
1961
+ # Corresponds to the JSON property `weekly`
1962
+ # @return [Google::Apis::OsconfigV1beta::WeeklySchedule]
1963
+ attr_accessor :weekly
1964
+
1965
+ def initialize(**args)
1966
+ update!(**args)
1967
+ end
1968
+
1969
+ # Update properties of this object
1970
+ def update!(**args)
1971
+ @end_time = args[:end_time] if args.key?(:end_time)
1972
+ @frequency = args[:frequency] if args.key?(:frequency)
1973
+ @last_execute_time = args[:last_execute_time] if args.key?(:last_execute_time)
1974
+ @monthly = args[:monthly] if args.key?(:monthly)
1975
+ @next_execute_time = args[:next_execute_time] if args.key?(:next_execute_time)
1976
+ @start_time = args[:start_time] if args.key?(:start_time)
1977
+ @time_of_day = args[:time_of_day] if args.key?(:time_of_day)
1978
+ @time_zone = args[:time_zone] if args.key?(:time_zone)
1979
+ @weekly = args[:weekly] if args.key?(:weekly)
1980
+ end
1981
+ end
1982
+
1983
+ # A software recipe is a set of instructions for installing and configuring a
1984
+ # piece of software. It consists of a set of artifacts that are downloaded, and
1985
+ # a set of steps that install, configure, and/or update the software. Recipes
1986
+ # support installing and updating software from artifacts in the following
1987
+ # formats: Zip archive, Tar archive, Windows MSI, Debian package, and RPM
1988
+ # package. Additionally, recipes support executing a script (either defined in a
1989
+ # file or directly in this api) in bash, sh, cmd, and powershell. Updating a
1990
+ # software recipe If a recipe is assigned to an instance and there is a recipe
1991
+ # with the same name but a lower version already installed and the assigned
1992
+ # state of the recipe is `UPDATED`, then the recipe is updated to the new
1993
+ # version. Script Working Directories Each script or execution step is run in
1994
+ # its own temporary directory which is deleted after completing the step.
1995
+ class SoftwareRecipe
1996
+ include Google::Apis::Core::Hashable
1997
+
1998
+ # Resources available to be used in the steps in the recipe.
1999
+ # Corresponds to the JSON property `artifacts`
2000
+ # @return [Array<Google::Apis::OsconfigV1beta::SoftwareRecipeArtifact>]
2001
+ attr_accessor :artifacts
2002
+
2003
+ # Default is INSTALLED. The desired state the agent should maintain for this
2004
+ # recipe. INSTALLED: The software recipe is installed on the instance but won't
2005
+ # be updated to new versions. UPDATED: The software recipe is installed on the
2006
+ # instance. The recipe is updated to a higher version, if a higher version of
2007
+ # the recipe is assigned to this instance. REMOVE: Remove is unsupported for
2008
+ # software recipes and attempts to create or update a recipe to the REMOVE state
2009
+ # is rejected.
2010
+ # Corresponds to the JSON property `desiredState`
2011
+ # @return [String]
2012
+ attr_accessor :desired_state
2013
+
2014
+ # Actions to be taken for installing this recipe. On failure it stops executing
2015
+ # steps and does not attempt another installation. Any steps taken (including
2016
+ # partially completed steps) are not rolled back.
2017
+ # Corresponds to the JSON property `installSteps`
2018
+ # @return [Array<Google::Apis::OsconfigV1beta::SoftwareRecipeStep>]
2019
+ attr_accessor :install_steps
2020
+
2021
+ # Required. Unique identifier for the recipe. Only one recipe with a given name
2022
+ # is installed on an instance. Names are also used to identify resources which
2023
+ # helps to determine whether guest policies have conflicts. This means that
2024
+ # requests to create multiple recipes with the same name and version are
2025
+ # rejected since they could potentially have conflicting assignments.
2026
+ # Corresponds to the JSON property `name`
2027
+ # @return [String]
2028
+ attr_accessor :name
2029
+
2030
+ # Actions to be taken for updating this recipe. On failure it stops executing
2031
+ # steps and does not attempt another update for this recipe. Any steps taken (
2032
+ # including partially completed steps) are not rolled back.
2033
+ # Corresponds to the JSON property `updateSteps`
2034
+ # @return [Array<Google::Apis::OsconfigV1beta::SoftwareRecipeStep>]
2035
+ attr_accessor :update_steps
2036
+
2037
+ # The version of this software recipe. Version can be up to 4 period separated
2038
+ # numbers (e.g. 12.34.56.78).
2039
+ # Corresponds to the JSON property `version`
2040
+ # @return [String]
2041
+ attr_accessor :version
2042
+
2043
+ def initialize(**args)
2044
+ update!(**args)
2045
+ end
2046
+
2047
+ # Update properties of this object
2048
+ def update!(**args)
2049
+ @artifacts = args[:artifacts] if args.key?(:artifacts)
2050
+ @desired_state = args[:desired_state] if args.key?(:desired_state)
2051
+ @install_steps = args[:install_steps] if args.key?(:install_steps)
2052
+ @name = args[:name] if args.key?(:name)
2053
+ @update_steps = args[:update_steps] if args.key?(:update_steps)
2054
+ @version = args[:version] if args.key?(:version)
2055
+ end
2056
+ end
2057
+
2058
+ # Specifies a resource to be used in the recipe.
2059
+ class SoftwareRecipeArtifact
2060
+ include Google::Apis::Core::Hashable
2061
+
2062
+ # Defaults to false. When false, recipes are subject to validations based on the
2063
+ # artifact type: Remote: A checksum must be specified, and only protocols with
2064
+ # transport-layer security are permitted. GCS: An object generation number must
2065
+ # be specified.
2066
+ # Corresponds to the JSON property `allowInsecure`
2067
+ # @return [Boolean]
2068
+ attr_accessor :allow_insecure
2069
+ alias_method :allow_insecure?, :allow_insecure
2070
+
2071
+ # Specifies an artifact available as a Google Cloud Storage object.
2072
+ # Corresponds to the JSON property `gcs`
2073
+ # @return [Google::Apis::OsconfigV1beta::SoftwareRecipeArtifactGcs]
2074
+ attr_accessor :gcs
2075
+
2076
+ # Required. Id of the artifact, which the installation and update steps of this
2077
+ # recipe can reference. Artifacts in a recipe cannot have the same id.
2078
+ # Corresponds to the JSON property `id`
2079
+ # @return [String]
2080
+ attr_accessor :id
2081
+
2082
+ # Specifies an artifact available via some URI.
2083
+ # Corresponds to the JSON property `remote`
2084
+ # @return [Google::Apis::OsconfigV1beta::SoftwareRecipeArtifactRemote]
2085
+ attr_accessor :remote
2086
+
2087
+ def initialize(**args)
2088
+ update!(**args)
2089
+ end
2090
+
2091
+ # Update properties of this object
2092
+ def update!(**args)
2093
+ @allow_insecure = args[:allow_insecure] if args.key?(:allow_insecure)
2094
+ @gcs = args[:gcs] if args.key?(:gcs)
2095
+ @id = args[:id] if args.key?(:id)
2096
+ @remote = args[:remote] if args.key?(:remote)
2097
+ end
2098
+ end
2099
+
2100
+ # Specifies an artifact available as a Google Cloud Storage object.
2101
+ class SoftwareRecipeArtifactGcs
2102
+ include Google::Apis::Core::Hashable
2103
+
2104
+ # Bucket of the Google Cloud Storage object. Given an example URL: `https://
2105
+ # storage.googleapis.com/my-bucket/foo/bar#1234567` this value would be `my-
2106
+ # bucket`.
2107
+ # Corresponds to the JSON property `bucket`
2108
+ # @return [String]
2109
+ attr_accessor :bucket
2110
+
2111
+ # Must be provided if allow_insecure is false. Generation number of the Google
2112
+ # Cloud Storage object. `https://storage.googleapis.com/my-bucket/foo/bar#
2113
+ # 1234567` this value would be `1234567`.
2114
+ # Corresponds to the JSON property `generation`
2115
+ # @return [Fixnum]
2116
+ attr_accessor :generation
2117
+
2118
+ # Name of the Google Cloud Storage object. As specified [here] (https://cloud.
2119
+ # google.com/storage/docs/naming#objectnames) Given an example URL: `https://
2120
+ # storage.googleapis.com/my-bucket/foo/bar#1234567` this value would be `foo/bar`
2121
+ # .
2122
+ # Corresponds to the JSON property `object`
2123
+ # @return [String]
2124
+ attr_accessor :object
2125
+
2126
+ def initialize(**args)
2127
+ update!(**args)
2128
+ end
2129
+
2130
+ # Update properties of this object
2131
+ def update!(**args)
2132
+ @bucket = args[:bucket] if args.key?(:bucket)
2133
+ @generation = args[:generation] if args.key?(:generation)
2134
+ @object = args[:object] if args.key?(:object)
2135
+ end
2136
+ end
2137
+
2138
+ # Specifies an artifact available via some URI.
2139
+ class SoftwareRecipeArtifactRemote
2140
+ include Google::Apis::Core::Hashable
2141
+
2142
+ # Must be provided if `allow_insecure` is `false`. SHA256 checksum in hex format,
2143
+ # to compare to the checksum of the artifact. If the checksum is not empty and
2144
+ # it doesn't match the artifact then the recipe installation fails before
2145
+ # running any of the steps.
2146
+ # Corresponds to the JSON property `checksum`
2147
+ # @return [String]
2148
+ attr_accessor :checksum
2149
+
2150
+ # URI from which to fetch the object. It should contain both the protocol and
2151
+ # path following the format `protocol`://`location`.
2152
+ # Corresponds to the JSON property `uri`
2153
+ # @return [String]
2154
+ attr_accessor :uri
2155
+
2156
+ def initialize(**args)
2157
+ update!(**args)
2158
+ end
2159
+
2160
+ # Update properties of this object
2161
+ def update!(**args)
2162
+ @checksum = args[:checksum] if args.key?(:checksum)
2163
+ @uri = args[:uri] if args.key?(:uri)
2164
+ end
2165
+ end
2166
+
2167
+ # An action that can be taken as part of installing or updating a recipe.
2168
+ class SoftwareRecipeStep
2169
+ include Google::Apis::Core::Hashable
2170
+
2171
+ # Extracts an archive of the type specified in the specified directory.
2172
+ # Corresponds to the JSON property `archiveExtraction`
2173
+ # @return [Google::Apis::OsconfigV1beta::SoftwareRecipeStepExtractArchive]
2174
+ attr_accessor :archive_extraction
2175
+
2176
+ # Installs a deb via dpkg.
2177
+ # Corresponds to the JSON property `dpkgInstallation`
2178
+ # @return [Google::Apis::OsconfigV1beta::SoftwareRecipeStepInstallDpkg]
2179
+ attr_accessor :dpkg_installation
2180
+
2181
+ # Copies the artifact to the specified path on the instance.
2182
+ # Corresponds to the JSON property `fileCopy`
2183
+ # @return [Google::Apis::OsconfigV1beta::SoftwareRecipeStepCopyFile]
2184
+ attr_accessor :file_copy
2185
+
2186
+ # Executes an artifact or local file.
2187
+ # Corresponds to the JSON property `fileExec`
2188
+ # @return [Google::Apis::OsconfigV1beta::SoftwareRecipeStepExecFile]
2189
+ attr_accessor :file_exec
2190
+
2191
+ # Installs an MSI file.
2192
+ # Corresponds to the JSON property `msiInstallation`
2193
+ # @return [Google::Apis::OsconfigV1beta::SoftwareRecipeStepInstallMsi]
2194
+ attr_accessor :msi_installation
2195
+
2196
+ # Installs an rpm file via the rpm utility.
2197
+ # Corresponds to the JSON property `rpmInstallation`
2198
+ # @return [Google::Apis::OsconfigV1beta::SoftwareRecipeStepInstallRpm]
2199
+ attr_accessor :rpm_installation
2200
+
2201
+ # Runs a script through an interpreter.
2202
+ # Corresponds to the JSON property `scriptRun`
2203
+ # @return [Google::Apis::OsconfigV1beta::SoftwareRecipeStepRunScript]
2204
+ attr_accessor :script_run
2205
+
2206
+ def initialize(**args)
2207
+ update!(**args)
2208
+ end
2209
+
2210
+ # Update properties of this object
2211
+ def update!(**args)
2212
+ @archive_extraction = args[:archive_extraction] if args.key?(:archive_extraction)
2213
+ @dpkg_installation = args[:dpkg_installation] if args.key?(:dpkg_installation)
2214
+ @file_copy = args[:file_copy] if args.key?(:file_copy)
2215
+ @file_exec = args[:file_exec] if args.key?(:file_exec)
2216
+ @msi_installation = args[:msi_installation] if args.key?(:msi_installation)
2217
+ @rpm_installation = args[:rpm_installation] if args.key?(:rpm_installation)
2218
+ @script_run = args[:script_run] if args.key?(:script_run)
2219
+ end
2220
+ end
2221
+
2222
+ # Copies the artifact to the specified path on the instance.
2223
+ class SoftwareRecipeStepCopyFile
2224
+ include Google::Apis::Core::Hashable
2225
+
2226
+ # Required. The id of the relevant artifact in the recipe.
2227
+ # Corresponds to the JSON property `artifactId`
2228
+ # @return [String]
2229
+ attr_accessor :artifact_id
2230
+
2231
+ # Required. The absolute path on the instance to put the file.
2232
+ # Corresponds to the JSON property `destination`
2233
+ # @return [String]
2234
+ attr_accessor :destination
2235
+
2236
+ # Whether to allow this step to overwrite existing files. If this is false and
2237
+ # the file already exists the file is not overwritten and the step is considered
2238
+ # a success. Defaults to false.
2239
+ # Corresponds to the JSON property `overwrite`
2240
+ # @return [Boolean]
2241
+ attr_accessor :overwrite
2242
+ alias_method :overwrite?, :overwrite
2243
+
2244
+ # Consists of three octal digits which represent, in order, the permissions of
2245
+ # the owner, group, and other users for the file (similarly to the numeric mode
2246
+ # used in the linux chmod utility). Each digit represents a three bit number
2247
+ # with the 4 bit corresponding to the read permissions, the 2 bit corresponds to
2248
+ # the write bit, and the one bit corresponds to the execute permission. Default
2249
+ # behavior is 755. Below are some examples of permissions and their associated
2250
+ # values: read, write, and execute: 7 read and execute: 5 read and write: 6 read
2251
+ # only: 4
2252
+ # Corresponds to the JSON property `permissions`
2253
+ # @return [String]
2254
+ attr_accessor :permissions
2255
+
2256
+ def initialize(**args)
2257
+ update!(**args)
2258
+ end
2259
+
2260
+ # Update properties of this object
2261
+ def update!(**args)
2262
+ @artifact_id = args[:artifact_id] if args.key?(:artifact_id)
2263
+ @destination = args[:destination] if args.key?(:destination)
2264
+ @overwrite = args[:overwrite] if args.key?(:overwrite)
2265
+ @permissions = args[:permissions] if args.key?(:permissions)
2266
+ end
2267
+ end
2268
+
2269
+ # Executes an artifact or local file.
2270
+ class SoftwareRecipeStepExecFile
2271
+ include Google::Apis::Core::Hashable
2272
+
2273
+ # Defaults to [0]. A list of possible return values that the program can return
2274
+ # to indicate a success.
2275
+ # Corresponds to the JSON property `allowedExitCodes`
2276
+ # @return [Array<Fixnum>]
2277
+ attr_accessor :allowed_exit_codes
2278
+
2279
+ # Arguments to be passed to the provided executable.
2280
+ # Corresponds to the JSON property `args`
2281
+ # @return [Array<String>]
2282
+ attr_accessor :args
2283
+
2284
+ # The id of the relevant artifact in the recipe.
2285
+ # Corresponds to the JSON property `artifactId`
2286
+ # @return [String]
2287
+ attr_accessor :artifact_id
2288
+
2289
+ # The absolute path of the file on the local filesystem.
2290
+ # Corresponds to the JSON property `localPath`
2291
+ # @return [String]
2292
+ attr_accessor :local_path
2293
+
2294
+ def initialize(**args)
2295
+ update!(**args)
2296
+ end
2297
+
2298
+ # Update properties of this object
2299
+ def update!(**args)
2300
+ @allowed_exit_codes = args[:allowed_exit_codes] if args.key?(:allowed_exit_codes)
2301
+ @args = args[:args] if args.key?(:args)
2302
+ @artifact_id = args[:artifact_id] if args.key?(:artifact_id)
2303
+ @local_path = args[:local_path] if args.key?(:local_path)
2304
+ end
2305
+ end
2306
+
2307
+ # Extracts an archive of the type specified in the specified directory.
2308
+ class SoftwareRecipeStepExtractArchive
2309
+ include Google::Apis::Core::Hashable
2310
+
2311
+ # Required. The id of the relevant artifact in the recipe.
2312
+ # Corresponds to the JSON property `artifactId`
2313
+ # @return [String]
2314
+ attr_accessor :artifact_id
2315
+
2316
+ # Directory to extract archive to. Defaults to `/` on Linux or `C:\` on Windows.
2317
+ # Corresponds to the JSON property `destination`
2318
+ # @return [String]
2319
+ attr_accessor :destination
2320
+
2321
+ # Required. The type of the archive to extract.
2322
+ # Corresponds to the JSON property `type`
2323
+ # @return [String]
2324
+ attr_accessor :type
2325
+
2326
+ def initialize(**args)
2327
+ update!(**args)
2328
+ end
2329
+
2330
+ # Update properties of this object
2331
+ def update!(**args)
2332
+ @artifact_id = args[:artifact_id] if args.key?(:artifact_id)
2333
+ @destination = args[:destination] if args.key?(:destination)
2334
+ @type = args[:type] if args.key?(:type)
2335
+ end
2336
+ end
2337
+
2338
+ # Installs a deb via dpkg.
2339
+ class SoftwareRecipeStepInstallDpkg
2340
+ include Google::Apis::Core::Hashable
2341
+
2342
+ # Required. The id of the relevant artifact in the recipe.
2343
+ # Corresponds to the JSON property `artifactId`
2344
+ # @return [String]
2345
+ attr_accessor :artifact_id
2346
+
2347
+ def initialize(**args)
2348
+ update!(**args)
2349
+ end
2350
+
2351
+ # Update properties of this object
2352
+ def update!(**args)
2353
+ @artifact_id = args[:artifact_id] if args.key?(:artifact_id)
2354
+ end
2355
+ end
2356
+
2357
+ # Installs an MSI file.
2358
+ class SoftwareRecipeStepInstallMsi
2359
+ include Google::Apis::Core::Hashable
2360
+
2361
+ # Return codes that indicate that the software installed or updated successfully.
2362
+ # Behaviour defaults to [0]
2363
+ # Corresponds to the JSON property `allowedExitCodes`
2364
+ # @return [Array<Fixnum>]
2365
+ attr_accessor :allowed_exit_codes
2366
+
2367
+ # Required. The id of the relevant artifact in the recipe.
2368
+ # Corresponds to the JSON property `artifactId`
2369
+ # @return [String]
2370
+ attr_accessor :artifact_id
2371
+
2372
+ # The flags to use when installing the MSI defaults to ["/i"] (i.e. the install
2373
+ # flag).
2374
+ # Corresponds to the JSON property `flags`
2375
+ # @return [Array<String>]
2376
+ attr_accessor :flags
2377
+
2378
+ def initialize(**args)
2379
+ update!(**args)
2380
+ end
2381
+
2382
+ # Update properties of this object
2383
+ def update!(**args)
2384
+ @allowed_exit_codes = args[:allowed_exit_codes] if args.key?(:allowed_exit_codes)
2385
+ @artifact_id = args[:artifact_id] if args.key?(:artifact_id)
2386
+ @flags = args[:flags] if args.key?(:flags)
2387
+ end
2388
+ end
2389
+
2390
+ # Installs an rpm file via the rpm utility.
2391
+ class SoftwareRecipeStepInstallRpm
2392
+ include Google::Apis::Core::Hashable
2393
+
2394
+ # Required. The id of the relevant artifact in the recipe.
2395
+ # Corresponds to the JSON property `artifactId`
2396
+ # @return [String]
2397
+ attr_accessor :artifact_id
2398
+
2399
+ def initialize(**args)
2400
+ update!(**args)
2401
+ end
2402
+
2403
+ # Update properties of this object
2404
+ def update!(**args)
2405
+ @artifact_id = args[:artifact_id] if args.key?(:artifact_id)
2406
+ end
2407
+ end
2408
+
2409
+ # Runs a script through an interpreter.
2410
+ class SoftwareRecipeStepRunScript
2411
+ include Google::Apis::Core::Hashable
2412
+
2413
+ # Return codes that indicate that the software installed or updated successfully.
2414
+ # Behaviour defaults to [0]
2415
+ # Corresponds to the JSON property `allowedExitCodes`
2416
+ # @return [Array<Fixnum>]
2417
+ attr_accessor :allowed_exit_codes
2418
+
2419
+ # The script interpreter to use to run the script. If no interpreter is
2420
+ # specified the script is executed directly, which likely only succeed for
2421
+ # scripts with [shebang lines](https://en.wikipedia.org/wiki/Shebang_\(Unix\)).
2422
+ # Corresponds to the JSON property `interpreter`
2423
+ # @return [String]
2424
+ attr_accessor :interpreter
2425
+
2426
+ # Required. The shell script to be executed.
2427
+ # Corresponds to the JSON property `script`
2428
+ # @return [String]
2429
+ attr_accessor :script
2430
+
2431
+ def initialize(**args)
2432
+ update!(**args)
2433
+ end
2434
+
2435
+ # Update properties of this object
2436
+ def update!(**args)
2437
+ @allowed_exit_codes = args[:allowed_exit_codes] if args.key?(:allowed_exit_codes)
2438
+ @interpreter = args[:interpreter] if args.key?(:interpreter)
2439
+ @script = args[:script] if args.key?(:script)
2440
+ end
2441
+ end
2442
+
2443
+ # Represents a time of day. The date and time zone are either not significant or
2444
+ # are specified elsewhere. An API may choose to allow leap seconds. Related
2445
+ # types are google.type.Date and `google.protobuf.Timestamp`.
2446
+ class TimeOfDay
2447
+ include Google::Apis::Core::Hashable
2448
+
2449
+ # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to
2450
+ # allow the value "24:00:00" for scenarios like business closing time.
2451
+ # Corresponds to the JSON property `hours`
2452
+ # @return [Fixnum]
2453
+ attr_accessor :hours
2454
+
2455
+ # Minutes of hour of day. Must be from 0 to 59.
2456
+ # Corresponds to the JSON property `minutes`
2457
+ # @return [Fixnum]
2458
+ attr_accessor :minutes
2459
+
2460
+ # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
2461
+ # Corresponds to the JSON property `nanos`
2462
+ # @return [Fixnum]
2463
+ attr_accessor :nanos
2464
+
2465
+ # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
2466
+ # allow the value 60 if it allows leap-seconds.
2467
+ # Corresponds to the JSON property `seconds`
2468
+ # @return [Fixnum]
2469
+ attr_accessor :seconds
2470
+
2471
+ def initialize(**args)
2472
+ update!(**args)
2473
+ end
2474
+
2475
+ # Update properties of this object
2476
+ def update!(**args)
2477
+ @hours = args[:hours] if args.key?(:hours)
2478
+ @minutes = args[:minutes] if args.key?(:minutes)
2479
+ @nanos = args[:nanos] if args.key?(:nanos)
2480
+ @seconds = args[:seconds] if args.key?(:seconds)
2481
+ end
2482
+ end
2483
+
2484
+ # Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/
2485
+ # time-zones).
2486
+ class TimeZone
2487
+ include Google::Apis::Core::Hashable
2488
+
2489
+ # IANA Time Zone Database time zone, e.g. "America/New_York".
2490
+ # Corresponds to the JSON property `id`
2491
+ # @return [String]
2492
+ attr_accessor :id
2493
+
2494
+ # Optional. IANA Time Zone Database version number, e.g. "2019a".
2495
+ # Corresponds to the JSON property `version`
2496
+ # @return [String]
2497
+ attr_accessor :version
2498
+
2499
+ def initialize(**args)
2500
+ update!(**args)
2501
+ end
2502
+
2503
+ # Update properties of this object
2504
+ def update!(**args)
2505
+ @id = args[:id] if args.key?(:id)
2506
+ @version = args[:version] if args.key?(:version)
2507
+ end
2508
+ end
2509
+
2510
+ # Represents one week day in a month. An example is "the 4th Sunday".
2511
+ class WeekDayOfMonth
2512
+ include Google::Apis::Core::Hashable
2513
+
2514
+ # Required. A day of the week.
2515
+ # Corresponds to the JSON property `dayOfWeek`
2516
+ # @return [String]
2517
+ attr_accessor :day_of_week
2518
+
2519
+ # Required. Week number in a month. 1-4 indicates the 1st to 4th week of the
2520
+ # month. -1 indicates the last week of the month.
2521
+ # Corresponds to the JSON property `weekOrdinal`
2522
+ # @return [Fixnum]
2523
+ attr_accessor :week_ordinal
2524
+
2525
+ def initialize(**args)
2526
+ update!(**args)
2527
+ end
2528
+
2529
+ # Update properties of this object
2530
+ def update!(**args)
2531
+ @day_of_week = args[:day_of_week] if args.key?(:day_of_week)
2532
+ @week_ordinal = args[:week_ordinal] if args.key?(:week_ordinal)
2533
+ end
2534
+ end
2535
+
2536
+ # Represents a weekly schedule.
2537
+ class WeeklySchedule
2538
+ include Google::Apis::Core::Hashable
2539
+
2540
+ # Required. Day of the week.
2541
+ # Corresponds to the JSON property `dayOfWeek`
2542
+ # @return [String]
2543
+ attr_accessor :day_of_week
2544
+
2545
+ def initialize(**args)
2546
+ update!(**args)
2547
+ end
2548
+
2549
+ # Update properties of this object
2550
+ def update!(**args)
2551
+ @day_of_week = args[:day_of_week] if args.key?(:day_of_week)
2552
+ end
2553
+ end
2554
+
2555
+ # Windows patching is performed using the Windows Update Agent.
2556
+ class WindowsUpdateSettings
2557
+ include Google::Apis::Core::Hashable
2558
+
2559
+ # Only apply updates of these windows update classifications. If empty, all
2560
+ # updates are applied.
2561
+ # Corresponds to the JSON property `classifications`
2562
+ # @return [Array<String>]
2563
+ attr_accessor :classifications
2564
+
2565
+ # List of KBs to exclude from update.
2566
+ # Corresponds to the JSON property `excludes`
2567
+ # @return [Array<String>]
2568
+ attr_accessor :excludes
2569
+
2570
+ # An exclusive list of kbs to be updated. These are the only patches that will
2571
+ # be updated. This field must not be used with other patch configurations.
2572
+ # Corresponds to the JSON property `exclusivePatches`
2573
+ # @return [Array<String>]
2574
+ attr_accessor :exclusive_patches
2575
+
2576
+ def initialize(**args)
2577
+ update!(**args)
2578
+ end
2579
+
2580
+ # Update properties of this object
2581
+ def update!(**args)
2582
+ @classifications = args[:classifications] if args.key?(:classifications)
2583
+ @excludes = args[:excludes] if args.key?(:excludes)
2584
+ @exclusive_patches = args[:exclusive_patches] if args.key?(:exclusive_patches)
2585
+ end
2586
+ end
2587
+
2588
+ # Represents a single Yum package repository. This repository is added to a repo
2589
+ # file that is stored at `/etc/yum.repos.d/google_osconfig.repo`.
2590
+ class YumRepository
2591
+ include Google::Apis::Core::Hashable
2592
+
2593
+ # Required. The location of the repository directory.
2594
+ # Corresponds to the JSON property `baseUrl`
2595
+ # @return [String]
2596
+ attr_accessor :base_url
2597
+
2598
+ # The display name of the repository.
2599
+ # Corresponds to the JSON property `displayName`
2600
+ # @return [String]
2601
+ attr_accessor :display_name
2602
+
2603
+ # URIs of GPG keys.
2604
+ # Corresponds to the JSON property `gpgKeys`
2605
+ # @return [Array<String>]
2606
+ attr_accessor :gpg_keys
2607
+
2608
+ # Required. A one word, unique name for this repository. This is the `repo id`
2609
+ # in the Yum config file and also the `display_name` if `display_name` is
2610
+ # omitted. This id is also used as the unique identifier when checking for guest
2611
+ # policy conflicts.
2612
+ # Corresponds to the JSON property `id`
2613
+ # @return [String]
2614
+ attr_accessor :id
2615
+
2616
+ def initialize(**args)
2617
+ update!(**args)
2618
+ end
2619
+
2620
+ # Update properties of this object
2621
+ def update!(**args)
2622
+ @base_url = args[:base_url] if args.key?(:base_url)
2623
+ @display_name = args[:display_name] if args.key?(:display_name)
2624
+ @gpg_keys = args[:gpg_keys] if args.key?(:gpg_keys)
2625
+ @id = args[:id] if args.key?(:id)
2626
+ end
2627
+ end
2628
+
2629
+ # Yum patching is performed by executing `yum update`. Additional options can be
2630
+ # set to control how this is executed. Note that not all settings are supported
2631
+ # on all platforms.
2632
+ class YumSettings
2633
+ include Google::Apis::Core::Hashable
2634
+
2635
+ # List of packages to exclude from update. These packages are excluded by using
2636
+ # the yum `--exclude` flag.
2637
+ # Corresponds to the JSON property `excludes`
2638
+ # @return [Array<String>]
2639
+ attr_accessor :excludes
2640
+
2641
+ # An exclusive list of packages to be updated. These are the only packages that
2642
+ # will be updated. If these packages are not installed, they will be ignored.
2643
+ # This field must not be specified with any other patch configuration fields.
2644
+ # Corresponds to the JSON property `exclusivePackages`
2645
+ # @return [Array<String>]
2646
+ attr_accessor :exclusive_packages
2647
+
2648
+ # Will cause patch to run `yum update-minimal` instead.
2649
+ # Corresponds to the JSON property `minimal`
2650
+ # @return [Boolean]
2651
+ attr_accessor :minimal
2652
+ alias_method :minimal?, :minimal
2653
+
2654
+ # Adds the `--security` flag to `yum update`. Not supported on all platforms.
2655
+ # Corresponds to the JSON property `security`
2656
+ # @return [Boolean]
2657
+ attr_accessor :security
2658
+ alias_method :security?, :security
2659
+
2660
+ def initialize(**args)
2661
+ update!(**args)
2662
+ end
2663
+
2664
+ # Update properties of this object
2665
+ def update!(**args)
2666
+ @excludes = args[:excludes] if args.key?(:excludes)
2667
+ @exclusive_packages = args[:exclusive_packages] if args.key?(:exclusive_packages)
2668
+ @minimal = args[:minimal] if args.key?(:minimal)
2669
+ @security = args[:security] if args.key?(:security)
2670
+ end
2671
+ end
2672
+
2673
+ # Represents a single Zypper package repository. This repository is added to a
2674
+ # repo file that is stored at `/etc/zypp/repos.d/google_osconfig.repo`.
2675
+ class ZypperRepository
2676
+ include Google::Apis::Core::Hashable
2677
+
2678
+ # Required. The location of the repository directory.
2679
+ # Corresponds to the JSON property `baseUrl`
2680
+ # @return [String]
2681
+ attr_accessor :base_url
2682
+
2683
+ # The display name of the repository.
2684
+ # Corresponds to the JSON property `displayName`
2685
+ # @return [String]
2686
+ attr_accessor :display_name
2687
+
2688
+ # URIs of GPG keys.
2689
+ # Corresponds to the JSON property `gpgKeys`
2690
+ # @return [Array<String>]
2691
+ attr_accessor :gpg_keys
2692
+
2693
+ # Required. A one word, unique name for this repository. This is the `repo id`
2694
+ # in the zypper config file and also the `display_name` if `display_name` is
2695
+ # omitted. This id is also used as the unique identifier when checking for guest
2696
+ # policy conflicts.
2697
+ # Corresponds to the JSON property `id`
2698
+ # @return [String]
2699
+ attr_accessor :id
2700
+
2701
+ def initialize(**args)
2702
+ update!(**args)
2703
+ end
2704
+
2705
+ # Update properties of this object
2706
+ def update!(**args)
2707
+ @base_url = args[:base_url] if args.key?(:base_url)
2708
+ @display_name = args[:display_name] if args.key?(:display_name)
2709
+ @gpg_keys = args[:gpg_keys] if args.key?(:gpg_keys)
2710
+ @id = args[:id] if args.key?(:id)
2711
+ end
2712
+ end
2713
+
2714
+ # Zypper patching is performed by running `zypper patch`. See also https://en.
2715
+ # opensuse.org/SDB:Zypper_manual.
2716
+ class ZypperSettings
2717
+ include Google::Apis::Core::Hashable
2718
+
2719
+ # Install only patches with these categories. Common categories include security,
2720
+ # recommended, and feature.
2721
+ # Corresponds to the JSON property `categories`
2722
+ # @return [Array<String>]
2723
+ attr_accessor :categories
2724
+
2725
+ # List of patches to exclude from update.
2726
+ # Corresponds to the JSON property `excludes`
2727
+ # @return [Array<String>]
2728
+ attr_accessor :excludes
2729
+
2730
+ # An exclusive list of patches to be updated. These are the only patches that
2731
+ # will be installed using 'zypper patch patch:' command. This field must not be
2732
+ # used with any other patch configuration fields.
2733
+ # Corresponds to the JSON property `exclusivePatches`
2734
+ # @return [Array<String>]
2735
+ attr_accessor :exclusive_patches
2736
+
2737
+ # Install only patches with these severities. Common severities include critical,
2738
+ # important, moderate, and low.
2739
+ # Corresponds to the JSON property `severities`
2740
+ # @return [Array<String>]
2741
+ attr_accessor :severities
2742
+
2743
+ # Adds the `--with-optional` flag to `zypper patch`.
2744
+ # Corresponds to the JSON property `withOptional`
2745
+ # @return [Boolean]
2746
+ attr_accessor :with_optional
2747
+ alias_method :with_optional?, :with_optional
2748
+
2749
+ # Adds the `--with-update` flag, to `zypper patch`.
2750
+ # Corresponds to the JSON property `withUpdate`
2751
+ # @return [Boolean]
2752
+ attr_accessor :with_update
2753
+ alias_method :with_update?, :with_update
2754
+
2755
+ def initialize(**args)
2756
+ update!(**args)
2757
+ end
2758
+
2759
+ # Update properties of this object
2760
+ def update!(**args)
2761
+ @categories = args[:categories] if args.key?(:categories)
2762
+ @excludes = args[:excludes] if args.key?(:excludes)
2763
+ @exclusive_patches = args[:exclusive_patches] if args.key?(:exclusive_patches)
2764
+ @severities = args[:severities] if args.key?(:severities)
2765
+ @with_optional = args[:with_optional] if args.key?(:with_optional)
2766
+ @with_update = args[:with_update] if args.key?(:with_update)
2767
+ end
2768
+ end
2769
+ end
2770
+ end
2771
+ end