google-apis-osconfig_v1 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: 5fe5108b0af16c3c9e4ebd09956f61a1df45c45792021035cb5825874512e04b
4
+ data.tar.gz: 77fa440a58d32b7e5ff56ab97bc3788b749e95012e0564186b72d8d310441b21
5
+ SHA512:
6
+ metadata.gz: c8dd755ad3e81019ea1e8a47bc2fc46c1e9898a3169e84c496fb3cf11e5d93c981bba046ecac39b1307d36917db72754f5dbcc7a72d75e81ba5169b46cc1a7d5
7
+ data.tar.gz: 281733b770946689d3c69683ce2ec28e2f8e40f0df09870cca82f5491cf992d2465c5f966cc346b39153dba1efc14d5e13aa0896036724e1f2d0b1b0ef6a3ec1
@@ -0,0 +1,13 @@
1
+ --hide-void-return
2
+ --no-private
3
+ --verbose
4
+ --title=google-apis-osconfig_v1
5
+ --markup-provider=redcarpet
6
+ --markup=markdown
7
+ --main OVERVIEW.md
8
+ lib/google/apis/osconfig_v1/*.rb
9
+ lib/google/apis/osconfig_v1.rb
10
+ -
11
+ OVERVIEW.md
12
+ CHANGELOG.md
13
+ LICENSE.md
@@ -0,0 +1,7 @@
1
+ # Release history for google-apis-osconfig_v1
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 V1 of the OS Config API
2
+
3
+ This is a simple client library for version V1 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_v1', '~> 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_v1
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_v1"
49
+
50
+ # Create a client object
51
+ client = Google::Apis::OsconfigV1::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::OsconfigV1::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_v1`, 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_v1"
@@ -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_v1/service.rb'
16
+ require 'google/apis/osconfig_v1/classes.rb'
17
+ require 'google/apis/osconfig_v1/representations.rb'
18
+ require 'google/apis/osconfig_v1/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 OsconfigV1
29
+ # Version of the OS Config API this client connects to.
30
+ # This is NOT the gem version.
31
+ VERSION = 'V1'
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,1692 @@
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 OsconfigV1
24
+
25
+ # Apt patching is completed by executing `apt-get update && apt-get upgrade`.
26
+ # Additional options can be set to control how this is executed.
27
+ class AptSettings
28
+ include Google::Apis::Core::Hashable
29
+
30
+ # List of packages to exclude from update. These packages will be excluded
31
+ # Corresponds to the JSON property `excludes`
32
+ # @return [Array<String>]
33
+ attr_accessor :excludes
34
+
35
+ # An exclusive list of packages to be updated. These are the only packages that
36
+ # will be updated. If these packages are not installed, they will be ignored.
37
+ # This field cannot be specified with any other patch configuration fields.
38
+ # Corresponds to the JSON property `exclusivePackages`
39
+ # @return [Array<String>]
40
+ attr_accessor :exclusive_packages
41
+
42
+ # By changing the type to DIST, the patching is performed using `apt-get dist-
43
+ # upgrade` instead.
44
+ # Corresponds to the JSON property `type`
45
+ # @return [String]
46
+ attr_accessor :type
47
+
48
+ def initialize(**args)
49
+ update!(**args)
50
+ end
51
+
52
+ # Update properties of this object
53
+ def update!(**args)
54
+ @excludes = args[:excludes] if args.key?(:excludes)
55
+ @exclusive_packages = args[:exclusive_packages] if args.key?(:exclusive_packages)
56
+ @type = args[:type] if args.key?(:type)
57
+ end
58
+ end
59
+
60
+ # Message for canceling a patch job.
61
+ class CancelPatchJobRequest
62
+ include Google::Apis::Core::Hashable
63
+
64
+ def initialize(**args)
65
+ update!(**args)
66
+ end
67
+
68
+ # Update properties of this object
69
+ def update!(**args)
70
+ end
71
+ end
72
+
73
+ # A generic empty message that you can re-use to avoid defining duplicated empty
74
+ # messages in your APIs. A typical example is to use it as the request or the
75
+ # response type of an API method. For instance: service Foo ` rpc Bar(google.
76
+ # protobuf.Empty) returns (google.protobuf.Empty); ` The JSON representation for
77
+ # `Empty` is empty JSON object ````.
78
+ class Empty
79
+ include Google::Apis::Core::Hashable
80
+
81
+ def initialize(**args)
82
+ update!(**args)
83
+ end
84
+
85
+ # Update properties of this object
86
+ def update!(**args)
87
+ end
88
+ end
89
+
90
+ # A step that runs an executable for a PatchJob.
91
+ class ExecStep
92
+ include Google::Apis::Core::Hashable
93
+
94
+ # Common configurations for an ExecStep.
95
+ # Corresponds to the JSON property `linuxExecStepConfig`
96
+ # @return [Google::Apis::OsconfigV1::ExecStepConfig]
97
+ attr_accessor :linux_exec_step_config
98
+
99
+ # Common configurations for an ExecStep.
100
+ # Corresponds to the JSON property `windowsExecStepConfig`
101
+ # @return [Google::Apis::OsconfigV1::ExecStepConfig]
102
+ attr_accessor :windows_exec_step_config
103
+
104
+ def initialize(**args)
105
+ update!(**args)
106
+ end
107
+
108
+ # Update properties of this object
109
+ def update!(**args)
110
+ @linux_exec_step_config = args[:linux_exec_step_config] if args.key?(:linux_exec_step_config)
111
+ @windows_exec_step_config = args[:windows_exec_step_config] if args.key?(:windows_exec_step_config)
112
+ end
113
+ end
114
+
115
+ # Common configurations for an ExecStep.
116
+ class ExecStepConfig
117
+ include Google::Apis::Core::Hashable
118
+
119
+ # Defaults to [0]. A list of possible return values that the execution can
120
+ # return to indicate a success.
121
+ # Corresponds to the JSON property `allowedSuccessCodes`
122
+ # @return [Array<Fixnum>]
123
+ attr_accessor :allowed_success_codes
124
+
125
+ # Cloud Storage object representation.
126
+ # Corresponds to the JSON property `gcsObject`
127
+ # @return [Google::Apis::OsconfigV1::GcsObject]
128
+ attr_accessor :gcs_object
129
+
130
+ # The script interpreter to use to run the script. If no interpreter is
131
+ # specified the script will be executed directly, which will likely only succeed
132
+ # for scripts with [shebang lines] (https://en.wikipedia.org/wiki/Shebang_\(Unix\
133
+ # )).
134
+ # Corresponds to the JSON property `interpreter`
135
+ # @return [String]
136
+ attr_accessor :interpreter
137
+
138
+ # An absolute path to the executable on the VM.
139
+ # Corresponds to the JSON property `localPath`
140
+ # @return [String]
141
+ attr_accessor :local_path
142
+
143
+ def initialize(**args)
144
+ update!(**args)
145
+ end
146
+
147
+ # Update properties of this object
148
+ def update!(**args)
149
+ @allowed_success_codes = args[:allowed_success_codes] if args.key?(:allowed_success_codes)
150
+ @gcs_object = args[:gcs_object] if args.key?(:gcs_object)
151
+ @interpreter = args[:interpreter] if args.key?(:interpreter)
152
+ @local_path = args[:local_path] if args.key?(:local_path)
153
+ end
154
+ end
155
+
156
+ # A request message to initiate patching across Compute Engine instances.
157
+ class ExecutePatchJobRequest
158
+ include Google::Apis::Core::Hashable
159
+
160
+ # Description of the patch job. Length of the description is limited to 1024
161
+ # characters.
162
+ # Corresponds to the JSON property `description`
163
+ # @return [String]
164
+ attr_accessor :description
165
+
166
+ # Display name for this patch job. This does not have to be unique.
167
+ # Corresponds to the JSON property `displayName`
168
+ # @return [String]
169
+ attr_accessor :display_name
170
+
171
+ # If this patch is a dry-run only, instances are contacted but will do nothing.
172
+ # Corresponds to the JSON property `dryRun`
173
+ # @return [Boolean]
174
+ attr_accessor :dry_run
175
+ alias_method :dry_run?, :dry_run
176
+
177
+ # Duration of the patch job. After the duration ends, the patch job times out.
178
+ # Corresponds to the JSON property `duration`
179
+ # @return [String]
180
+ attr_accessor :duration
181
+
182
+ # A filter to target VM instances for patching. The targeted VMs must meet all
183
+ # criteria specified. So if both labels and zones are specified, the patch job
184
+ # targets only VMs with those labels and in those zones.
185
+ # Corresponds to the JSON property `instanceFilter`
186
+ # @return [Google::Apis::OsconfigV1::PatchInstanceFilter]
187
+ attr_accessor :instance_filter
188
+
189
+ # Patch configuration specifications. Contains details on how to apply the patch(
190
+ # es) to a VM instance.
191
+ # Corresponds to the JSON property `patchConfig`
192
+ # @return [Google::Apis::OsconfigV1::PatchConfig]
193
+ attr_accessor :patch_config
194
+
195
+ # Patch rollout configuration specifications. Contains details on the
196
+ # concurrency control when applying patch(es) to all targeted VMs.
197
+ # Corresponds to the JSON property `rollout`
198
+ # @return [Google::Apis::OsconfigV1::PatchRollout]
199
+ attr_accessor :rollout
200
+
201
+ def initialize(**args)
202
+ update!(**args)
203
+ end
204
+
205
+ # Update properties of this object
206
+ def update!(**args)
207
+ @description = args[:description] if args.key?(:description)
208
+ @display_name = args[:display_name] if args.key?(:display_name)
209
+ @dry_run = args[:dry_run] if args.key?(:dry_run)
210
+ @duration = args[:duration] if args.key?(:duration)
211
+ @instance_filter = args[:instance_filter] if args.key?(:instance_filter)
212
+ @patch_config = args[:patch_config] if args.key?(:patch_config)
213
+ @rollout = args[:rollout] if args.key?(:rollout)
214
+ end
215
+ end
216
+
217
+ # Message encapsulating a value that can be either absolute ("fixed") or
218
+ # relative ("percent") to a value.
219
+ class FixedOrPercent
220
+ include Google::Apis::Core::Hashable
221
+
222
+ # Specifies a fixed value.
223
+ # Corresponds to the JSON property `fixed`
224
+ # @return [Fixnum]
225
+ attr_accessor :fixed
226
+
227
+ # Specifies the relative value defined as a percentage, which will be multiplied
228
+ # by a reference value.
229
+ # Corresponds to the JSON property `percent`
230
+ # @return [Fixnum]
231
+ attr_accessor :percent
232
+
233
+ def initialize(**args)
234
+ update!(**args)
235
+ end
236
+
237
+ # Update properties of this object
238
+ def update!(**args)
239
+ @fixed = args[:fixed] if args.key?(:fixed)
240
+ @percent = args[:percent] if args.key?(:percent)
241
+ end
242
+ end
243
+
244
+ # Cloud Storage object representation.
245
+ class GcsObject
246
+ include Google::Apis::Core::Hashable
247
+
248
+ # Required. Bucket of the Cloud Storage object.
249
+ # Corresponds to the JSON property `bucket`
250
+ # @return [String]
251
+ attr_accessor :bucket
252
+
253
+ # Required. Generation number of the Cloud Storage object. This is used to
254
+ # ensure that the ExecStep specified by this PatchJob does not change.
255
+ # Corresponds to the JSON property `generationNumber`
256
+ # @return [Fixnum]
257
+ attr_accessor :generation_number
258
+
259
+ # Required. Name of the Cloud Storage object.
260
+ # Corresponds to the JSON property `object`
261
+ # @return [String]
262
+ attr_accessor :object
263
+
264
+ def initialize(**args)
265
+ update!(**args)
266
+ end
267
+
268
+ # Update properties of this object
269
+ def update!(**args)
270
+ @bucket = args[:bucket] if args.key?(:bucket)
271
+ @generation_number = args[:generation_number] if args.key?(:generation_number)
272
+ @object = args[:object] if args.key?(:object)
273
+ end
274
+ end
275
+
276
+ # Googet patching is performed by running `googet update`.
277
+ class GooSettings
278
+ include Google::Apis::Core::Hashable
279
+
280
+ def initialize(**args)
281
+ update!(**args)
282
+ end
283
+
284
+ # Update properties of this object
285
+ def update!(**args)
286
+ end
287
+ end
288
+
289
+ # The inventory details of a VM.
290
+ class Inventory
291
+ include Google::Apis::Core::Hashable
292
+
293
+ # Inventory items related to the VM keyed by an opaque unique identifier for
294
+ # each inventory item. The identifier is unique to each distinct and addressable
295
+ # inventory item and will change, when there is a new package version.
296
+ # Corresponds to the JSON property `items`
297
+ # @return [Hash<String,Google::Apis::OsconfigV1::InventoryItem>]
298
+ attr_accessor :items
299
+
300
+ # Operating system information for the VM.
301
+ # Corresponds to the JSON property `osInfo`
302
+ # @return [Google::Apis::OsconfigV1::InventoryOsInfo]
303
+ attr_accessor :os_info
304
+
305
+ def initialize(**args)
306
+ update!(**args)
307
+ end
308
+
309
+ # Update properties of this object
310
+ def update!(**args)
311
+ @items = args[:items] if args.key?(:items)
312
+ @os_info = args[:os_info] if args.key?(:os_info)
313
+ end
314
+ end
315
+
316
+ # A single piece of inventory on a VM.
317
+ class InventoryItem
318
+ include Google::Apis::Core::Hashable
319
+
320
+ # Software package information of the operating system.
321
+ # Corresponds to the JSON property `availablePackage`
322
+ # @return [Google::Apis::OsconfigV1::InventorySoftwarePackage]
323
+ attr_accessor :available_package
324
+
325
+ # When this inventory item was first detected.
326
+ # Corresponds to the JSON property `createTime`
327
+ # @return [String]
328
+ attr_accessor :create_time
329
+
330
+ # Identifier for this item, unique across items for this VM.
331
+ # Corresponds to the JSON property `id`
332
+ # @return [String]
333
+ attr_accessor :id
334
+
335
+ # Software package information of the operating system.
336
+ # Corresponds to the JSON property `installedPackage`
337
+ # @return [Google::Apis::OsconfigV1::InventorySoftwarePackage]
338
+ attr_accessor :installed_package
339
+
340
+ # The origin of this inventory item.
341
+ # Corresponds to the JSON property `originType`
342
+ # @return [String]
343
+ attr_accessor :origin_type
344
+
345
+ # The specific type of inventory, correlating to its specific details.
346
+ # Corresponds to the JSON property `type`
347
+ # @return [String]
348
+ attr_accessor :type
349
+
350
+ # When this inventory item was last modified.
351
+ # Corresponds to the JSON property `updateTime`
352
+ # @return [String]
353
+ attr_accessor :update_time
354
+
355
+ def initialize(**args)
356
+ update!(**args)
357
+ end
358
+
359
+ # Update properties of this object
360
+ def update!(**args)
361
+ @available_package = args[:available_package] if args.key?(:available_package)
362
+ @create_time = args[:create_time] if args.key?(:create_time)
363
+ @id = args[:id] if args.key?(:id)
364
+ @installed_package = args[:installed_package] if args.key?(:installed_package)
365
+ @origin_type = args[:origin_type] if args.key?(:origin_type)
366
+ @type = args[:type] if args.key?(:type)
367
+ @update_time = args[:update_time] if args.key?(:update_time)
368
+ end
369
+ end
370
+
371
+ # Operating system information for the VM.
372
+ class InventoryOsInfo
373
+ include Google::Apis::Core::Hashable
374
+
375
+ # The system architecture of the operating system.
376
+ # Corresponds to the JSON property `architecture`
377
+ # @return [String]
378
+ attr_accessor :architecture
379
+
380
+ # The VM hostname.
381
+ # Corresponds to the JSON property `hostname`
382
+ # @return [String]
383
+ attr_accessor :hostname
384
+
385
+ # The kernel release of the operating system.
386
+ # Corresponds to the JSON property `kernelRelease`
387
+ # @return [String]
388
+ attr_accessor :kernel_release
389
+
390
+ # The kernel version of the operating system.
391
+ # Corresponds to the JSON property `kernelVersion`
392
+ # @return [String]
393
+ attr_accessor :kernel_version
394
+
395
+ # The operating system long name. For example 'Debian GNU/Linux 9' or 'Microsoft
396
+ # Window Server 2019 Datacenter'.
397
+ # Corresponds to the JSON property `longName`
398
+ # @return [String]
399
+ attr_accessor :long_name
400
+
401
+ # The current version of the OS Config agent running on the VM.
402
+ # Corresponds to the JSON property `osconfigAgentVersion`
403
+ # @return [String]
404
+ attr_accessor :osconfig_agent_version
405
+
406
+ # The operating system short name. For example, 'windows' or 'debian'.
407
+ # Corresponds to the JSON property `shortName`
408
+ # @return [String]
409
+ attr_accessor :short_name
410
+
411
+ # The version of the operating system.
412
+ # Corresponds to the JSON property `version`
413
+ # @return [String]
414
+ attr_accessor :version
415
+
416
+ def initialize(**args)
417
+ update!(**args)
418
+ end
419
+
420
+ # Update properties of this object
421
+ def update!(**args)
422
+ @architecture = args[:architecture] if args.key?(:architecture)
423
+ @hostname = args[:hostname] if args.key?(:hostname)
424
+ @kernel_release = args[:kernel_release] if args.key?(:kernel_release)
425
+ @kernel_version = args[:kernel_version] if args.key?(:kernel_version)
426
+ @long_name = args[:long_name] if args.key?(:long_name)
427
+ @osconfig_agent_version = args[:osconfig_agent_version] if args.key?(:osconfig_agent_version)
428
+ @short_name = args[:short_name] if args.key?(:short_name)
429
+ @version = args[:version] if args.key?(:version)
430
+ end
431
+ end
432
+
433
+ # Software package information of the operating system.
434
+ class InventorySoftwarePackage
435
+ include Google::Apis::Core::Hashable
436
+
437
+ # Information related to the a standard versioned package. This includes package
438
+ # info for APT, Yum, Zypper, and Googet package managers.
439
+ # Corresponds to the JSON property `aptPackage`
440
+ # @return [Google::Apis::OsconfigV1::InventoryVersionedPackage]
441
+ attr_accessor :apt_package
442
+
443
+ # Information related to the a standard versioned package. This includes package
444
+ # info for APT, Yum, Zypper, and Googet package managers.
445
+ # Corresponds to the JSON property `cosPackage`
446
+ # @return [Google::Apis::OsconfigV1::InventoryVersionedPackage]
447
+ attr_accessor :cos_package
448
+
449
+ # Information related to the a standard versioned package. This includes package
450
+ # info for APT, Yum, Zypper, and Googet package managers.
451
+ # Corresponds to the JSON property `googetPackage`
452
+ # @return [Google::Apis::OsconfigV1::InventoryVersionedPackage]
453
+ attr_accessor :googet_package
454
+
455
+ # Information related to a Quick Fix Engineering package. Fields are taken from
456
+ # Windows QuickFixEngineering Interface and match the source names: https://docs.
457
+ # microsoft.com/en-us/windows/win32/cimwin32prov/win32-quickfixengineering
458
+ # Corresponds to the JSON property `qfePackage`
459
+ # @return [Google::Apis::OsconfigV1::InventoryWindowsQuickFixEngineeringPackage]
460
+ attr_accessor :qfe_package
461
+
462
+ # Details related to a Windows Update package. Field data and names are taken
463
+ # from Windows Update API IUpdate Interface: https://docs.microsoft.com/en-us/
464
+ # windows/win32/api/_wua/ Descriptive fields like title, and description are
465
+ # localized based on the locale of the VM being updated.
466
+ # Corresponds to the JSON property `wuaPackage`
467
+ # @return [Google::Apis::OsconfigV1::InventoryWindowsUpdatePackage]
468
+ attr_accessor :wua_package
469
+
470
+ # Information related to the a standard versioned package. This includes package
471
+ # info for APT, Yum, Zypper, and Googet package managers.
472
+ # Corresponds to the JSON property `yumPackage`
473
+ # @return [Google::Apis::OsconfigV1::InventoryVersionedPackage]
474
+ attr_accessor :yum_package
475
+
476
+ # Information related to the a standard versioned package. This includes package
477
+ # info for APT, Yum, Zypper, and Googet package managers.
478
+ # Corresponds to the JSON property `zypperPackage`
479
+ # @return [Google::Apis::OsconfigV1::InventoryVersionedPackage]
480
+ attr_accessor :zypper_package
481
+
482
+ # Details related to a Zypper Patch.
483
+ # Corresponds to the JSON property `zypperPatch`
484
+ # @return [Google::Apis::OsconfigV1::InventoryZypperPatch]
485
+ attr_accessor :zypper_patch
486
+
487
+ def initialize(**args)
488
+ update!(**args)
489
+ end
490
+
491
+ # Update properties of this object
492
+ def update!(**args)
493
+ @apt_package = args[:apt_package] if args.key?(:apt_package)
494
+ @cos_package = args[:cos_package] if args.key?(:cos_package)
495
+ @googet_package = args[:googet_package] if args.key?(:googet_package)
496
+ @qfe_package = args[:qfe_package] if args.key?(:qfe_package)
497
+ @wua_package = args[:wua_package] if args.key?(:wua_package)
498
+ @yum_package = args[:yum_package] if args.key?(:yum_package)
499
+ @zypper_package = args[:zypper_package] if args.key?(:zypper_package)
500
+ @zypper_patch = args[:zypper_patch] if args.key?(:zypper_patch)
501
+ end
502
+ end
503
+
504
+ # Information related to the a standard versioned package. This includes package
505
+ # info for APT, Yum, Zypper, and Googet package managers.
506
+ class InventoryVersionedPackage
507
+ include Google::Apis::Core::Hashable
508
+
509
+ # The system architecture this package is intended for.
510
+ # Corresponds to the JSON property `architecture`
511
+ # @return [String]
512
+ attr_accessor :architecture
513
+
514
+ # The name of the package.
515
+ # Corresponds to the JSON property `packageName`
516
+ # @return [String]
517
+ attr_accessor :package_name
518
+
519
+ # The version of the package.
520
+ # Corresponds to the JSON property `version`
521
+ # @return [String]
522
+ attr_accessor :version
523
+
524
+ def initialize(**args)
525
+ update!(**args)
526
+ end
527
+
528
+ # Update properties of this object
529
+ def update!(**args)
530
+ @architecture = args[:architecture] if args.key?(:architecture)
531
+ @package_name = args[:package_name] if args.key?(:package_name)
532
+ @version = args[:version] if args.key?(:version)
533
+ end
534
+ end
535
+
536
+ # Information related to a Quick Fix Engineering package. Fields are taken from
537
+ # Windows QuickFixEngineering Interface and match the source names: https://docs.
538
+ # microsoft.com/en-us/windows/win32/cimwin32prov/win32-quickfixengineering
539
+ class InventoryWindowsQuickFixEngineeringPackage
540
+ include Google::Apis::Core::Hashable
541
+
542
+ # A short textual description of the QFE update.
543
+ # Corresponds to the JSON property `caption`
544
+ # @return [String]
545
+ attr_accessor :caption
546
+
547
+ # A textual description of the QFE update.
548
+ # Corresponds to the JSON property `description`
549
+ # @return [String]
550
+ attr_accessor :description
551
+
552
+ # Unique identifier associated with a particular QFE update.
553
+ # Corresponds to the JSON property `hotFixId`
554
+ # @return [String]
555
+ attr_accessor :hot_fix_id
556
+
557
+ # Date that the QFE update was installed. Mapped from installed_on field.
558
+ # Corresponds to the JSON property `installTime`
559
+ # @return [String]
560
+ attr_accessor :install_time
561
+
562
+ def initialize(**args)
563
+ update!(**args)
564
+ end
565
+
566
+ # Update properties of this object
567
+ def update!(**args)
568
+ @caption = args[:caption] if args.key?(:caption)
569
+ @description = args[:description] if args.key?(:description)
570
+ @hot_fix_id = args[:hot_fix_id] if args.key?(:hot_fix_id)
571
+ @install_time = args[:install_time] if args.key?(:install_time)
572
+ end
573
+ end
574
+
575
+ # Details related to a Windows Update package. Field data and names are taken
576
+ # from Windows Update API IUpdate Interface: https://docs.microsoft.com/en-us/
577
+ # windows/win32/api/_wua/ Descriptive fields like title, and description are
578
+ # localized based on the locale of the VM being updated.
579
+ class InventoryWindowsUpdatePackage
580
+ include Google::Apis::Core::Hashable
581
+
582
+ # The categories that are associated with this update package.
583
+ # Corresponds to the JSON property `categories`
584
+ # @return [Array<Google::Apis::OsconfigV1::InventoryWindowsUpdatePackageWindowsUpdateCategory>]
585
+ attr_accessor :categories
586
+
587
+ # The localized description of the update package.
588
+ # Corresponds to the JSON property `description`
589
+ # @return [String]
590
+ attr_accessor :description
591
+
592
+ # A collection of Microsoft Knowledge Base article IDs that are associated with
593
+ # the update package.
594
+ # Corresponds to the JSON property `kbArticleIds`
595
+ # @return [Array<String>]
596
+ attr_accessor :kb_article_ids
597
+
598
+ # The last published date of the update, in (UTC) date and time.
599
+ # Corresponds to the JSON property `lastDeploymentChangeTime`
600
+ # @return [String]
601
+ attr_accessor :last_deployment_change_time
602
+
603
+ # A collection of URLs that provide more information about the update package.
604
+ # Corresponds to the JSON property `moreInfoUrls`
605
+ # @return [Array<String>]
606
+ attr_accessor :more_info_urls
607
+
608
+ # The revision number of this update package.
609
+ # Corresponds to the JSON property `revisionNumber`
610
+ # @return [Fixnum]
611
+ attr_accessor :revision_number
612
+
613
+ # A hyperlink to the language-specific support information for the update.
614
+ # Corresponds to the JSON property `supportUrl`
615
+ # @return [String]
616
+ attr_accessor :support_url
617
+
618
+ # The localized title of the update package.
619
+ # Corresponds to the JSON property `title`
620
+ # @return [String]
621
+ attr_accessor :title
622
+
623
+ # Gets the identifier of an update package. Stays the same across revisions.
624
+ # Corresponds to the JSON property `updateId`
625
+ # @return [String]
626
+ attr_accessor :update_id
627
+
628
+ def initialize(**args)
629
+ update!(**args)
630
+ end
631
+
632
+ # Update properties of this object
633
+ def update!(**args)
634
+ @categories = args[:categories] if args.key?(:categories)
635
+ @description = args[:description] if args.key?(:description)
636
+ @kb_article_ids = args[:kb_article_ids] if args.key?(:kb_article_ids)
637
+ @last_deployment_change_time = args[:last_deployment_change_time] if args.key?(:last_deployment_change_time)
638
+ @more_info_urls = args[:more_info_urls] if args.key?(:more_info_urls)
639
+ @revision_number = args[:revision_number] if args.key?(:revision_number)
640
+ @support_url = args[:support_url] if args.key?(:support_url)
641
+ @title = args[:title] if args.key?(:title)
642
+ @update_id = args[:update_id] if args.key?(:update_id)
643
+ end
644
+ end
645
+
646
+ # Categories specified by the Windows Update.
647
+ class InventoryWindowsUpdatePackageWindowsUpdateCategory
648
+ include Google::Apis::Core::Hashable
649
+
650
+ # The identifier of the windows update category.
651
+ # Corresponds to the JSON property `id`
652
+ # @return [String]
653
+ attr_accessor :id
654
+
655
+ # The name of the windows update category.
656
+ # Corresponds to the JSON property `name`
657
+ # @return [String]
658
+ attr_accessor :name
659
+
660
+ def initialize(**args)
661
+ update!(**args)
662
+ end
663
+
664
+ # Update properties of this object
665
+ def update!(**args)
666
+ @id = args[:id] if args.key?(:id)
667
+ @name = args[:name] if args.key?(:name)
668
+ end
669
+ end
670
+
671
+ # Details related to a Zypper Patch.
672
+ class InventoryZypperPatch
673
+ include Google::Apis::Core::Hashable
674
+
675
+ # The category of the patch.
676
+ # Corresponds to the JSON property `category`
677
+ # @return [String]
678
+ attr_accessor :category
679
+
680
+ # The name of the patch.
681
+ # Corresponds to the JSON property `patchName`
682
+ # @return [String]
683
+ attr_accessor :patch_name
684
+
685
+ # The severity specified for this patch
686
+ # Corresponds to the JSON property `severity`
687
+ # @return [String]
688
+ attr_accessor :severity
689
+
690
+ # Any summary information provided about this patch.
691
+ # Corresponds to the JSON property `summary`
692
+ # @return [String]
693
+ attr_accessor :summary
694
+
695
+ def initialize(**args)
696
+ update!(**args)
697
+ end
698
+
699
+ # Update properties of this object
700
+ def update!(**args)
701
+ @category = args[:category] if args.key?(:category)
702
+ @patch_name = args[:patch_name] if args.key?(:patch_name)
703
+ @severity = args[:severity] if args.key?(:severity)
704
+ @summary = args[:summary] if args.key?(:summary)
705
+ end
706
+ end
707
+
708
+ # A response message for listing patch deployments.
709
+ class ListPatchDeploymentsResponse
710
+ include Google::Apis::Core::Hashable
711
+
712
+ # A pagination token that can be used to get the next page of patch deployments.
713
+ # Corresponds to the JSON property `nextPageToken`
714
+ # @return [String]
715
+ attr_accessor :next_page_token
716
+
717
+ # The list of patch deployments.
718
+ # Corresponds to the JSON property `patchDeployments`
719
+ # @return [Array<Google::Apis::OsconfigV1::PatchDeployment>]
720
+ attr_accessor :patch_deployments
721
+
722
+ def initialize(**args)
723
+ update!(**args)
724
+ end
725
+
726
+ # Update properties of this object
727
+ def update!(**args)
728
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
729
+ @patch_deployments = args[:patch_deployments] if args.key?(:patch_deployments)
730
+ end
731
+ end
732
+
733
+ # A response message for listing the instances details for a patch job.
734
+ class ListPatchJobInstanceDetailsResponse
735
+ include Google::Apis::Core::Hashable
736
+
737
+ # A pagination token that can be used to get the next page of results.
738
+ # Corresponds to the JSON property `nextPageToken`
739
+ # @return [String]
740
+ attr_accessor :next_page_token
741
+
742
+ # A list of instance status.
743
+ # Corresponds to the JSON property `patchJobInstanceDetails`
744
+ # @return [Array<Google::Apis::OsconfigV1::PatchJobInstanceDetails>]
745
+ attr_accessor :patch_job_instance_details
746
+
747
+ def initialize(**args)
748
+ update!(**args)
749
+ end
750
+
751
+ # Update properties of this object
752
+ def update!(**args)
753
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
754
+ @patch_job_instance_details = args[:patch_job_instance_details] if args.key?(:patch_job_instance_details)
755
+ end
756
+ end
757
+
758
+ # A response message for listing patch jobs.
759
+ class ListPatchJobsResponse
760
+ include Google::Apis::Core::Hashable
761
+
762
+ # A pagination token that can be used to get the next page of results.
763
+ # Corresponds to the JSON property `nextPageToken`
764
+ # @return [String]
765
+ attr_accessor :next_page_token
766
+
767
+ # The list of patch jobs.
768
+ # Corresponds to the JSON property `patchJobs`
769
+ # @return [Array<Google::Apis::OsconfigV1::PatchJob>]
770
+ attr_accessor :patch_jobs
771
+
772
+ def initialize(**args)
773
+ update!(**args)
774
+ end
775
+
776
+ # Update properties of this object
777
+ def update!(**args)
778
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
779
+ @patch_jobs = args[:patch_jobs] if args.key?(:patch_jobs)
780
+ end
781
+ end
782
+
783
+ # Represents a monthly schedule. An example of a valid monthly schedule is "on
784
+ # the third Tuesday of the month" or "on the 15th of the month".
785
+ class MonthlySchedule
786
+ include Google::Apis::Core::Hashable
787
+
788
+ # Required. One day of the month. 1-31 indicates the 1st to the 31st day. -1
789
+ # indicates the last day of the month. Months without the target day will be
790
+ # skipped. For example, a schedule to run "every month on the 31st" will not run
791
+ # in February, April, June, etc.
792
+ # Corresponds to the JSON property `monthDay`
793
+ # @return [Fixnum]
794
+ attr_accessor :month_day
795
+
796
+ # Represents one week day in a month. An example is "the 4th Sunday".
797
+ # Corresponds to the JSON property `weekDayOfMonth`
798
+ # @return [Google::Apis::OsconfigV1::WeekDayOfMonth]
799
+ attr_accessor :week_day_of_month
800
+
801
+ def initialize(**args)
802
+ update!(**args)
803
+ end
804
+
805
+ # Update properties of this object
806
+ def update!(**args)
807
+ @month_day = args[:month_day] if args.key?(:month_day)
808
+ @week_day_of_month = args[:week_day_of_month] if args.key?(:week_day_of_month)
809
+ end
810
+ end
811
+
812
+ # Sets the time for a one time patch deployment. Timestamp is in [RFC3339](https:
813
+ # //www.ietf.org/rfc/rfc3339.txt) text format.
814
+ class OneTimeSchedule
815
+ include Google::Apis::Core::Hashable
816
+
817
+ # Required. The desired patch job execution time.
818
+ # Corresponds to the JSON property `executeTime`
819
+ # @return [String]
820
+ attr_accessor :execute_time
821
+
822
+ def initialize(**args)
823
+ update!(**args)
824
+ end
825
+
826
+ # Update properties of this object
827
+ def update!(**args)
828
+ @execute_time = args[:execute_time] if args.key?(:execute_time)
829
+ end
830
+ end
831
+
832
+ # Patch configuration specifications. Contains details on how to apply the patch(
833
+ # es) to a VM instance.
834
+ class PatchConfig
835
+ include Google::Apis::Core::Hashable
836
+
837
+ # Apt patching is completed by executing `apt-get update && apt-get upgrade`.
838
+ # Additional options can be set to control how this is executed.
839
+ # Corresponds to the JSON property `apt`
840
+ # @return [Google::Apis::OsconfigV1::AptSettings]
841
+ attr_accessor :apt
842
+
843
+ # Googet patching is performed by running `googet update`.
844
+ # Corresponds to the JSON property `goo`
845
+ # @return [Google::Apis::OsconfigV1::GooSettings]
846
+ attr_accessor :goo
847
+
848
+ # A step that runs an executable for a PatchJob.
849
+ # Corresponds to the JSON property `postStep`
850
+ # @return [Google::Apis::OsconfigV1::ExecStep]
851
+ attr_accessor :post_step
852
+
853
+ # A step that runs an executable for a PatchJob.
854
+ # Corresponds to the JSON property `preStep`
855
+ # @return [Google::Apis::OsconfigV1::ExecStep]
856
+ attr_accessor :pre_step
857
+
858
+ # Post-patch reboot settings.
859
+ # Corresponds to the JSON property `rebootConfig`
860
+ # @return [String]
861
+ attr_accessor :reboot_config
862
+
863
+ # Windows patching is performed using the Windows Update Agent.
864
+ # Corresponds to the JSON property `windowsUpdate`
865
+ # @return [Google::Apis::OsconfigV1::WindowsUpdateSettings]
866
+ attr_accessor :windows_update
867
+
868
+ # Yum patching is performed by executing `yum update`. Additional options can be
869
+ # set to control how this is executed. Note that not all settings are supported
870
+ # on all platforms.
871
+ # Corresponds to the JSON property `yum`
872
+ # @return [Google::Apis::OsconfigV1::YumSettings]
873
+ attr_accessor :yum
874
+
875
+ # Zypper patching is performed by running `zypper patch`. See also https://en.
876
+ # opensuse.org/SDB:Zypper_manual.
877
+ # Corresponds to the JSON property `zypper`
878
+ # @return [Google::Apis::OsconfigV1::ZypperSettings]
879
+ attr_accessor :zypper
880
+
881
+ def initialize(**args)
882
+ update!(**args)
883
+ end
884
+
885
+ # Update properties of this object
886
+ def update!(**args)
887
+ @apt = args[:apt] if args.key?(:apt)
888
+ @goo = args[:goo] if args.key?(:goo)
889
+ @post_step = args[:post_step] if args.key?(:post_step)
890
+ @pre_step = args[:pre_step] if args.key?(:pre_step)
891
+ @reboot_config = args[:reboot_config] if args.key?(:reboot_config)
892
+ @windows_update = args[:windows_update] if args.key?(:windows_update)
893
+ @yum = args[:yum] if args.key?(:yum)
894
+ @zypper = args[:zypper] if args.key?(:zypper)
895
+ end
896
+ end
897
+
898
+ # Patch deployments are configurations that individual patch jobs use to
899
+ # complete a patch. These configurations include instance filter, package
900
+ # repository settings, and a schedule. For more information about creating and
901
+ # managing patch deployments, see [Scheduling patch jobs](https://cloud.google.
902
+ # com/compute/docs/os-patch-management/schedule-patch-jobs).
903
+ class PatchDeployment
904
+ include Google::Apis::Core::Hashable
905
+
906
+ # Output only. Time the patch deployment was created. Timestamp is in [RFC3339](
907
+ # https://www.ietf.org/rfc/rfc3339.txt) text format.
908
+ # Corresponds to the JSON property `createTime`
909
+ # @return [String]
910
+ attr_accessor :create_time
911
+
912
+ # Optional. Description of the patch deployment. Length of the description is
913
+ # limited to 1024 characters.
914
+ # Corresponds to the JSON property `description`
915
+ # @return [String]
916
+ attr_accessor :description
917
+
918
+ # Optional. Duration of the patch. After the duration ends, the patch times out.
919
+ # Corresponds to the JSON property `duration`
920
+ # @return [String]
921
+ attr_accessor :duration
922
+
923
+ # A filter to target VM instances for patching. The targeted VMs must meet all
924
+ # criteria specified. So if both labels and zones are specified, the patch job
925
+ # targets only VMs with those labels and in those zones.
926
+ # Corresponds to the JSON property `instanceFilter`
927
+ # @return [Google::Apis::OsconfigV1::PatchInstanceFilter]
928
+ attr_accessor :instance_filter
929
+
930
+ # Output only. The last time a patch job was started by this deployment.
931
+ # Timestamp is in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
932
+ # Corresponds to the JSON property `lastExecuteTime`
933
+ # @return [String]
934
+ attr_accessor :last_execute_time
935
+
936
+ # Unique name for the patch deployment resource in a project. The patch
937
+ # deployment name is in the form: `projects/`project_id`/patchDeployments/`
938
+ # patch_deployment_id``. This field is ignored when you create a new patch
939
+ # deployment.
940
+ # Corresponds to the JSON property `name`
941
+ # @return [String]
942
+ attr_accessor :name
943
+
944
+ # Sets the time for a one time patch deployment. Timestamp is in [RFC3339](https:
945
+ # //www.ietf.org/rfc/rfc3339.txt) text format.
946
+ # Corresponds to the JSON property `oneTimeSchedule`
947
+ # @return [Google::Apis::OsconfigV1::OneTimeSchedule]
948
+ attr_accessor :one_time_schedule
949
+
950
+ # Patch configuration specifications. Contains details on how to apply the patch(
951
+ # es) to a VM instance.
952
+ # Corresponds to the JSON property `patchConfig`
953
+ # @return [Google::Apis::OsconfigV1::PatchConfig]
954
+ attr_accessor :patch_config
955
+
956
+ # Sets the time for recurring patch deployments.
957
+ # Corresponds to the JSON property `recurringSchedule`
958
+ # @return [Google::Apis::OsconfigV1::RecurringSchedule]
959
+ attr_accessor :recurring_schedule
960
+
961
+ # Patch rollout configuration specifications. Contains details on the
962
+ # concurrency control when applying patch(es) to all targeted VMs.
963
+ # Corresponds to the JSON property `rollout`
964
+ # @return [Google::Apis::OsconfigV1::PatchRollout]
965
+ attr_accessor :rollout
966
+
967
+ # Output only. Time the patch deployment was last updated. Timestamp is in [
968
+ # RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
969
+ # Corresponds to the JSON property `updateTime`
970
+ # @return [String]
971
+ attr_accessor :update_time
972
+
973
+ def initialize(**args)
974
+ update!(**args)
975
+ end
976
+
977
+ # Update properties of this object
978
+ def update!(**args)
979
+ @create_time = args[:create_time] if args.key?(:create_time)
980
+ @description = args[:description] if args.key?(:description)
981
+ @duration = args[:duration] if args.key?(:duration)
982
+ @instance_filter = args[:instance_filter] if args.key?(:instance_filter)
983
+ @last_execute_time = args[:last_execute_time] if args.key?(:last_execute_time)
984
+ @name = args[:name] if args.key?(:name)
985
+ @one_time_schedule = args[:one_time_schedule] if args.key?(:one_time_schedule)
986
+ @patch_config = args[:patch_config] if args.key?(:patch_config)
987
+ @recurring_schedule = args[:recurring_schedule] if args.key?(:recurring_schedule)
988
+ @rollout = args[:rollout] if args.key?(:rollout)
989
+ @update_time = args[:update_time] if args.key?(:update_time)
990
+ end
991
+ end
992
+
993
+ # A filter to target VM instances for patching. The targeted VMs must meet all
994
+ # criteria specified. So if both labels and zones are specified, the patch job
995
+ # targets only VMs with those labels and in those zones.
996
+ class PatchInstanceFilter
997
+ include Google::Apis::Core::Hashable
998
+
999
+ # Target all VM instances in the project. If true, no other criteria is
1000
+ # permitted.
1001
+ # Corresponds to the JSON property `all`
1002
+ # @return [Boolean]
1003
+ attr_accessor :all
1004
+ alias_method :all?, :all
1005
+
1006
+ # Targets VM instances matching ANY of these GroupLabels. This allows targeting
1007
+ # of disparate groups of VM instances.
1008
+ # Corresponds to the JSON property `groupLabels`
1009
+ # @return [Array<Google::Apis::OsconfigV1::PatchInstanceFilterGroupLabel>]
1010
+ attr_accessor :group_labels
1011
+
1012
+ # Targets VMs whose name starts with one of these prefixes. Similar to labels,
1013
+ # this is another way to group VMs when targeting configs, for example prefix="
1014
+ # prod-".
1015
+ # Corresponds to the JSON property `instanceNamePrefixes`
1016
+ # @return [Array<String>]
1017
+ attr_accessor :instance_name_prefixes
1018
+
1019
+ # Targets any of the VM instances specified. Instances are specified by their
1020
+ # URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`, `projects/[
1021
+ # PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]`, or `https://www.
1022
+ # googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[
1023
+ # INSTANCE_NAME]`
1024
+ # Corresponds to the JSON property `instances`
1025
+ # @return [Array<String>]
1026
+ attr_accessor :instances
1027
+
1028
+ # Targets VM instances in ANY of these zones. Leave empty to target VM instances
1029
+ # in any zone.
1030
+ # Corresponds to the JSON property `zones`
1031
+ # @return [Array<String>]
1032
+ attr_accessor :zones
1033
+
1034
+ def initialize(**args)
1035
+ update!(**args)
1036
+ end
1037
+
1038
+ # Update properties of this object
1039
+ def update!(**args)
1040
+ @all = args[:all] if args.key?(:all)
1041
+ @group_labels = args[:group_labels] if args.key?(:group_labels)
1042
+ @instance_name_prefixes = args[:instance_name_prefixes] if args.key?(:instance_name_prefixes)
1043
+ @instances = args[:instances] if args.key?(:instances)
1044
+ @zones = args[:zones] if args.key?(:zones)
1045
+ end
1046
+ end
1047
+
1048
+ # Targets a group of VM instances by using their [assigned labels](https://cloud.
1049
+ # google.com/compute/docs/labeling-resources). Labels are key-value pairs. A `
1050
+ # GroupLabel` is a combination of labels that is used to target VMs for a patch
1051
+ # job. For example, a patch job can target VMs that have the following `
1052
+ # GroupLabel`: ``"env":"test", "app":"web"``. This means that the patch job is
1053
+ # applied to VMs that have both the labels `env=test` and `app=web`.
1054
+ class PatchInstanceFilterGroupLabel
1055
+ include Google::Apis::Core::Hashable
1056
+
1057
+ # Compute Engine instance labels that must be present for a VM instance to be
1058
+ # targeted by this filter.
1059
+ # Corresponds to the JSON property `labels`
1060
+ # @return [Hash<String,String>]
1061
+ attr_accessor :labels
1062
+
1063
+ def initialize(**args)
1064
+ update!(**args)
1065
+ end
1066
+
1067
+ # Update properties of this object
1068
+ def update!(**args)
1069
+ @labels = args[:labels] if args.key?(:labels)
1070
+ end
1071
+ end
1072
+
1073
+ # A high level representation of a patch job that is either in progress or has
1074
+ # completed. Instance details are not included in the job. To paginate through
1075
+ # instance details, use ListPatchJobInstanceDetails. For more information about
1076
+ # patch jobs, see [Creating patch jobs](https://cloud.google.com/compute/docs/os-
1077
+ # patch-management/create-patch-job).
1078
+ class PatchJob
1079
+ include Google::Apis::Core::Hashable
1080
+
1081
+ # Time this patch job was created.
1082
+ # Corresponds to the JSON property `createTime`
1083
+ # @return [String]
1084
+ attr_accessor :create_time
1085
+
1086
+ # Description of the patch job. Length of the description is limited to 1024
1087
+ # characters.
1088
+ # Corresponds to the JSON property `description`
1089
+ # @return [String]
1090
+ attr_accessor :description
1091
+
1092
+ # Display name for this patch job. This is not a unique identifier.
1093
+ # Corresponds to the JSON property `displayName`
1094
+ # @return [String]
1095
+ attr_accessor :display_name
1096
+
1097
+ # If this patch job is a dry run, the agent reports that it has finished without
1098
+ # running any updates on the VM instance.
1099
+ # Corresponds to the JSON property `dryRun`
1100
+ # @return [Boolean]
1101
+ attr_accessor :dry_run
1102
+ alias_method :dry_run?, :dry_run
1103
+
1104
+ # Duration of the patch job. After the duration ends, the patch job times out.
1105
+ # Corresponds to the JSON property `duration`
1106
+ # @return [String]
1107
+ attr_accessor :duration
1108
+
1109
+ # If this patch job failed, this message provides information about the failure.
1110
+ # Corresponds to the JSON property `errorMessage`
1111
+ # @return [String]
1112
+ attr_accessor :error_message
1113
+
1114
+ # A summary of the current patch state across all instances that this patch job
1115
+ # affects. Contains counts of instances in different states. These states map to
1116
+ # `InstancePatchState`. List patch job instance details to see the specific
1117
+ # states of each instance.
1118
+ # Corresponds to the JSON property `instanceDetailsSummary`
1119
+ # @return [Google::Apis::OsconfigV1::PatchJobInstanceDetailsSummary]
1120
+ attr_accessor :instance_details_summary
1121
+
1122
+ # A filter to target VM instances for patching. The targeted VMs must meet all
1123
+ # criteria specified. So if both labels and zones are specified, the patch job
1124
+ # targets only VMs with those labels and in those zones.
1125
+ # Corresponds to the JSON property `instanceFilter`
1126
+ # @return [Google::Apis::OsconfigV1::PatchInstanceFilter]
1127
+ attr_accessor :instance_filter
1128
+
1129
+ # Unique identifier for this patch job in the form `projects/*/patchJobs/*`
1130
+ # Corresponds to the JSON property `name`
1131
+ # @return [String]
1132
+ attr_accessor :name
1133
+
1134
+ # Patch configuration specifications. Contains details on how to apply the patch(
1135
+ # es) to a VM instance.
1136
+ # Corresponds to the JSON property `patchConfig`
1137
+ # @return [Google::Apis::OsconfigV1::PatchConfig]
1138
+ attr_accessor :patch_config
1139
+
1140
+ # Output only. Name of the patch deployment that created this patch job.
1141
+ # Corresponds to the JSON property `patchDeployment`
1142
+ # @return [String]
1143
+ attr_accessor :patch_deployment
1144
+
1145
+ # Reflects the overall progress of the patch job in the range of 0.0 being no
1146
+ # progress to 100.0 being complete.
1147
+ # Corresponds to the JSON property `percentComplete`
1148
+ # @return [Float]
1149
+ attr_accessor :percent_complete
1150
+
1151
+ # Patch rollout configuration specifications. Contains details on the
1152
+ # concurrency control when applying patch(es) to all targeted VMs.
1153
+ # Corresponds to the JSON property `rollout`
1154
+ # @return [Google::Apis::OsconfigV1::PatchRollout]
1155
+ attr_accessor :rollout
1156
+
1157
+ # The current state of the PatchJob.
1158
+ # Corresponds to the JSON property `state`
1159
+ # @return [String]
1160
+ attr_accessor :state
1161
+
1162
+ # Last time this patch job was updated.
1163
+ # Corresponds to the JSON property `updateTime`
1164
+ # @return [String]
1165
+ attr_accessor :update_time
1166
+
1167
+ def initialize(**args)
1168
+ update!(**args)
1169
+ end
1170
+
1171
+ # Update properties of this object
1172
+ def update!(**args)
1173
+ @create_time = args[:create_time] if args.key?(:create_time)
1174
+ @description = args[:description] if args.key?(:description)
1175
+ @display_name = args[:display_name] if args.key?(:display_name)
1176
+ @dry_run = args[:dry_run] if args.key?(:dry_run)
1177
+ @duration = args[:duration] if args.key?(:duration)
1178
+ @error_message = args[:error_message] if args.key?(:error_message)
1179
+ @instance_details_summary = args[:instance_details_summary] if args.key?(:instance_details_summary)
1180
+ @instance_filter = args[:instance_filter] if args.key?(:instance_filter)
1181
+ @name = args[:name] if args.key?(:name)
1182
+ @patch_config = args[:patch_config] if args.key?(:patch_config)
1183
+ @patch_deployment = args[:patch_deployment] if args.key?(:patch_deployment)
1184
+ @percent_complete = args[:percent_complete] if args.key?(:percent_complete)
1185
+ @rollout = args[:rollout] if args.key?(:rollout)
1186
+ @state = args[:state] if args.key?(:state)
1187
+ @update_time = args[:update_time] if args.key?(:update_time)
1188
+ end
1189
+ end
1190
+
1191
+ # Patch details for a VM instance. For more information about reviewing VM
1192
+ # instance details, see [Listing all VM instance details for a specific patch
1193
+ # job](https://cloud.google.com/compute/docs/os-patch-management/manage-patch-
1194
+ # jobs#list-instance-details).
1195
+ class PatchJobInstanceDetails
1196
+ include Google::Apis::Core::Hashable
1197
+
1198
+ # The number of times the agent that the agent attempts to apply the patch.
1199
+ # Corresponds to the JSON property `attemptCount`
1200
+ # @return [Fixnum]
1201
+ attr_accessor :attempt_count
1202
+
1203
+ # If the patch fails, this field provides the reason.
1204
+ # Corresponds to the JSON property `failureReason`
1205
+ # @return [String]
1206
+ attr_accessor :failure_reason
1207
+
1208
+ # The unique identifier for the instance. This identifier is defined by the
1209
+ # server.
1210
+ # Corresponds to the JSON property `instanceSystemId`
1211
+ # @return [String]
1212
+ attr_accessor :instance_system_id
1213
+
1214
+ # The instance name in the form `projects/*/zones/*/instances/*`
1215
+ # Corresponds to the JSON property `name`
1216
+ # @return [String]
1217
+ attr_accessor :name
1218
+
1219
+ # Current state of instance patch.
1220
+ # Corresponds to the JSON property `state`
1221
+ # @return [String]
1222
+ attr_accessor :state
1223
+
1224
+ def initialize(**args)
1225
+ update!(**args)
1226
+ end
1227
+
1228
+ # Update properties of this object
1229
+ def update!(**args)
1230
+ @attempt_count = args[:attempt_count] if args.key?(:attempt_count)
1231
+ @failure_reason = args[:failure_reason] if args.key?(:failure_reason)
1232
+ @instance_system_id = args[:instance_system_id] if args.key?(:instance_system_id)
1233
+ @name = args[:name] if args.key?(:name)
1234
+ @state = args[:state] if args.key?(:state)
1235
+ end
1236
+ end
1237
+
1238
+ # A summary of the current patch state across all instances that this patch job
1239
+ # affects. Contains counts of instances in different states. These states map to
1240
+ # `InstancePatchState`. List patch job instance details to see the specific
1241
+ # states of each instance.
1242
+ class PatchJobInstanceDetailsSummary
1243
+ include Google::Apis::Core::Hashable
1244
+
1245
+ # Number of instances that have acked and will start shortly.
1246
+ # Corresponds to the JSON property `ackedInstanceCount`
1247
+ # @return [Fixnum]
1248
+ attr_accessor :acked_instance_count
1249
+
1250
+ # Number of instances that are applying patches.
1251
+ # Corresponds to the JSON property `applyingPatchesInstanceCount`
1252
+ # @return [Fixnum]
1253
+ attr_accessor :applying_patches_instance_count
1254
+
1255
+ # Number of instances that are downloading patches.
1256
+ # Corresponds to the JSON property `downloadingPatchesInstanceCount`
1257
+ # @return [Fixnum]
1258
+ attr_accessor :downloading_patches_instance_count
1259
+
1260
+ # Number of instances that failed.
1261
+ # Corresponds to the JSON property `failedInstanceCount`
1262
+ # @return [Fixnum]
1263
+ attr_accessor :failed_instance_count
1264
+
1265
+ # Number of instances that are inactive.
1266
+ # Corresponds to the JSON property `inactiveInstanceCount`
1267
+ # @return [Fixnum]
1268
+ attr_accessor :inactive_instance_count
1269
+
1270
+ # Number of instances that do not appear to be running the agent. Check to
1271
+ # ensure that the agent is installed, running, and able to communicate with the
1272
+ # service.
1273
+ # Corresponds to the JSON property `noAgentDetectedInstanceCount`
1274
+ # @return [Fixnum]
1275
+ attr_accessor :no_agent_detected_instance_count
1276
+
1277
+ # Number of instances notified about patch job.
1278
+ # Corresponds to the JSON property `notifiedInstanceCount`
1279
+ # @return [Fixnum]
1280
+ attr_accessor :notified_instance_count
1281
+
1282
+ # Number of instances pending patch job.
1283
+ # Corresponds to the JSON property `pendingInstanceCount`
1284
+ # @return [Fixnum]
1285
+ attr_accessor :pending_instance_count
1286
+
1287
+ # Number of instances that are running the post-patch step.
1288
+ # Corresponds to the JSON property `postPatchStepInstanceCount`
1289
+ # @return [Fixnum]
1290
+ attr_accessor :post_patch_step_instance_count
1291
+
1292
+ # Number of instances that are running the pre-patch step.
1293
+ # Corresponds to the JSON property `prePatchStepInstanceCount`
1294
+ # @return [Fixnum]
1295
+ attr_accessor :pre_patch_step_instance_count
1296
+
1297
+ # Number of instances rebooting.
1298
+ # Corresponds to the JSON property `rebootingInstanceCount`
1299
+ # @return [Fixnum]
1300
+ attr_accessor :rebooting_instance_count
1301
+
1302
+ # Number of instances that have started.
1303
+ # Corresponds to the JSON property `startedInstanceCount`
1304
+ # @return [Fixnum]
1305
+ attr_accessor :started_instance_count
1306
+
1307
+ # Number of instances that have completed successfully.
1308
+ # Corresponds to the JSON property `succeededInstanceCount`
1309
+ # @return [Fixnum]
1310
+ attr_accessor :succeeded_instance_count
1311
+
1312
+ # Number of instances that require reboot.
1313
+ # Corresponds to the JSON property `succeededRebootRequiredInstanceCount`
1314
+ # @return [Fixnum]
1315
+ attr_accessor :succeeded_reboot_required_instance_count
1316
+
1317
+ # Number of instances that exceeded the time out while applying the patch.
1318
+ # Corresponds to the JSON property `timedOutInstanceCount`
1319
+ # @return [Fixnum]
1320
+ attr_accessor :timed_out_instance_count
1321
+
1322
+ def initialize(**args)
1323
+ update!(**args)
1324
+ end
1325
+
1326
+ # Update properties of this object
1327
+ def update!(**args)
1328
+ @acked_instance_count = args[:acked_instance_count] if args.key?(:acked_instance_count)
1329
+ @applying_patches_instance_count = args[:applying_patches_instance_count] if args.key?(:applying_patches_instance_count)
1330
+ @downloading_patches_instance_count = args[:downloading_patches_instance_count] if args.key?(:downloading_patches_instance_count)
1331
+ @failed_instance_count = args[:failed_instance_count] if args.key?(:failed_instance_count)
1332
+ @inactive_instance_count = args[:inactive_instance_count] if args.key?(:inactive_instance_count)
1333
+ @no_agent_detected_instance_count = args[:no_agent_detected_instance_count] if args.key?(:no_agent_detected_instance_count)
1334
+ @notified_instance_count = args[:notified_instance_count] if args.key?(:notified_instance_count)
1335
+ @pending_instance_count = args[:pending_instance_count] if args.key?(:pending_instance_count)
1336
+ @post_patch_step_instance_count = args[:post_patch_step_instance_count] if args.key?(:post_patch_step_instance_count)
1337
+ @pre_patch_step_instance_count = args[:pre_patch_step_instance_count] if args.key?(:pre_patch_step_instance_count)
1338
+ @rebooting_instance_count = args[:rebooting_instance_count] if args.key?(:rebooting_instance_count)
1339
+ @started_instance_count = args[:started_instance_count] if args.key?(:started_instance_count)
1340
+ @succeeded_instance_count = args[:succeeded_instance_count] if args.key?(:succeeded_instance_count)
1341
+ @succeeded_reboot_required_instance_count = args[:succeeded_reboot_required_instance_count] if args.key?(:succeeded_reboot_required_instance_count)
1342
+ @timed_out_instance_count = args[:timed_out_instance_count] if args.key?(:timed_out_instance_count)
1343
+ end
1344
+ end
1345
+
1346
+ # Patch rollout configuration specifications. Contains details on the
1347
+ # concurrency control when applying patch(es) to all targeted VMs.
1348
+ class PatchRollout
1349
+ include Google::Apis::Core::Hashable
1350
+
1351
+ # Message encapsulating a value that can be either absolute ("fixed") or
1352
+ # relative ("percent") to a value.
1353
+ # Corresponds to the JSON property `disruptionBudget`
1354
+ # @return [Google::Apis::OsconfigV1::FixedOrPercent]
1355
+ attr_accessor :disruption_budget
1356
+
1357
+ # Mode of the patch rollout.
1358
+ # Corresponds to the JSON property `mode`
1359
+ # @return [String]
1360
+ attr_accessor :mode
1361
+
1362
+ def initialize(**args)
1363
+ update!(**args)
1364
+ end
1365
+
1366
+ # Update properties of this object
1367
+ def update!(**args)
1368
+ @disruption_budget = args[:disruption_budget] if args.key?(:disruption_budget)
1369
+ @mode = args[:mode] if args.key?(:mode)
1370
+ end
1371
+ end
1372
+
1373
+ # Sets the time for recurring patch deployments.
1374
+ class RecurringSchedule
1375
+ include Google::Apis::Core::Hashable
1376
+
1377
+ # Optional. The end time at which a recurring patch deployment schedule is no
1378
+ # longer active.
1379
+ # Corresponds to the JSON property `endTime`
1380
+ # @return [String]
1381
+ attr_accessor :end_time
1382
+
1383
+ # Required. The frequency unit of this recurring schedule.
1384
+ # Corresponds to the JSON property `frequency`
1385
+ # @return [String]
1386
+ attr_accessor :frequency
1387
+
1388
+ # Output only. The time the last patch job ran successfully.
1389
+ # Corresponds to the JSON property `lastExecuteTime`
1390
+ # @return [String]
1391
+ attr_accessor :last_execute_time
1392
+
1393
+ # Represents a monthly schedule. An example of a valid monthly schedule is "on
1394
+ # the third Tuesday of the month" or "on the 15th of the month".
1395
+ # Corresponds to the JSON property `monthly`
1396
+ # @return [Google::Apis::OsconfigV1::MonthlySchedule]
1397
+ attr_accessor :monthly
1398
+
1399
+ # Output only. The time the next patch job is scheduled to run.
1400
+ # Corresponds to the JSON property `nextExecuteTime`
1401
+ # @return [String]
1402
+ attr_accessor :next_execute_time
1403
+
1404
+ # Optional. The time that the recurring schedule becomes effective. Defaults to `
1405
+ # create_time` of the patch deployment.
1406
+ # Corresponds to the JSON property `startTime`
1407
+ # @return [String]
1408
+ attr_accessor :start_time
1409
+
1410
+ # Represents a time of day. The date and time zone are either not significant or
1411
+ # are specified elsewhere. An API may choose to allow leap seconds. Related
1412
+ # types are google.type.Date and `google.protobuf.Timestamp`.
1413
+ # Corresponds to the JSON property `timeOfDay`
1414
+ # @return [Google::Apis::OsconfigV1::TimeOfDay]
1415
+ attr_accessor :time_of_day
1416
+
1417
+ # Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/
1418
+ # time-zones).
1419
+ # Corresponds to the JSON property `timeZone`
1420
+ # @return [Google::Apis::OsconfigV1::TimeZone]
1421
+ attr_accessor :time_zone
1422
+
1423
+ # Represents a weekly schedule.
1424
+ # Corresponds to the JSON property `weekly`
1425
+ # @return [Google::Apis::OsconfigV1::WeeklySchedule]
1426
+ attr_accessor :weekly
1427
+
1428
+ def initialize(**args)
1429
+ update!(**args)
1430
+ end
1431
+
1432
+ # Update properties of this object
1433
+ def update!(**args)
1434
+ @end_time = args[:end_time] if args.key?(:end_time)
1435
+ @frequency = args[:frequency] if args.key?(:frequency)
1436
+ @last_execute_time = args[:last_execute_time] if args.key?(:last_execute_time)
1437
+ @monthly = args[:monthly] if args.key?(:monthly)
1438
+ @next_execute_time = args[:next_execute_time] if args.key?(:next_execute_time)
1439
+ @start_time = args[:start_time] if args.key?(:start_time)
1440
+ @time_of_day = args[:time_of_day] if args.key?(:time_of_day)
1441
+ @time_zone = args[:time_zone] if args.key?(:time_zone)
1442
+ @weekly = args[:weekly] if args.key?(:weekly)
1443
+ end
1444
+ end
1445
+
1446
+ # Represents a time of day. The date and time zone are either not significant or
1447
+ # are specified elsewhere. An API may choose to allow leap seconds. Related
1448
+ # types are google.type.Date and `google.protobuf.Timestamp`.
1449
+ class TimeOfDay
1450
+ include Google::Apis::Core::Hashable
1451
+
1452
+ # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to
1453
+ # allow the value "24:00:00" for scenarios like business closing time.
1454
+ # Corresponds to the JSON property `hours`
1455
+ # @return [Fixnum]
1456
+ attr_accessor :hours
1457
+
1458
+ # Minutes of hour of day. Must be from 0 to 59.
1459
+ # Corresponds to the JSON property `minutes`
1460
+ # @return [Fixnum]
1461
+ attr_accessor :minutes
1462
+
1463
+ # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
1464
+ # Corresponds to the JSON property `nanos`
1465
+ # @return [Fixnum]
1466
+ attr_accessor :nanos
1467
+
1468
+ # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
1469
+ # allow the value 60 if it allows leap-seconds.
1470
+ # Corresponds to the JSON property `seconds`
1471
+ # @return [Fixnum]
1472
+ attr_accessor :seconds
1473
+
1474
+ def initialize(**args)
1475
+ update!(**args)
1476
+ end
1477
+
1478
+ # Update properties of this object
1479
+ def update!(**args)
1480
+ @hours = args[:hours] if args.key?(:hours)
1481
+ @minutes = args[:minutes] if args.key?(:minutes)
1482
+ @nanos = args[:nanos] if args.key?(:nanos)
1483
+ @seconds = args[:seconds] if args.key?(:seconds)
1484
+ end
1485
+ end
1486
+
1487
+ # Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/
1488
+ # time-zones).
1489
+ class TimeZone
1490
+ include Google::Apis::Core::Hashable
1491
+
1492
+ # IANA Time Zone Database time zone, e.g. "America/New_York".
1493
+ # Corresponds to the JSON property `id`
1494
+ # @return [String]
1495
+ attr_accessor :id
1496
+
1497
+ # Optional. IANA Time Zone Database version number, e.g. "2019a".
1498
+ # Corresponds to the JSON property `version`
1499
+ # @return [String]
1500
+ attr_accessor :version
1501
+
1502
+ def initialize(**args)
1503
+ update!(**args)
1504
+ end
1505
+
1506
+ # Update properties of this object
1507
+ def update!(**args)
1508
+ @id = args[:id] if args.key?(:id)
1509
+ @version = args[:version] if args.key?(:version)
1510
+ end
1511
+ end
1512
+
1513
+ # Represents one week day in a month. An example is "the 4th Sunday".
1514
+ class WeekDayOfMonth
1515
+ include Google::Apis::Core::Hashable
1516
+
1517
+ # Required. A day of the week.
1518
+ # Corresponds to the JSON property `dayOfWeek`
1519
+ # @return [String]
1520
+ attr_accessor :day_of_week
1521
+
1522
+ # Required. Week number in a month. 1-4 indicates the 1st to 4th week of the
1523
+ # month. -1 indicates the last week of the month.
1524
+ # Corresponds to the JSON property `weekOrdinal`
1525
+ # @return [Fixnum]
1526
+ attr_accessor :week_ordinal
1527
+
1528
+ def initialize(**args)
1529
+ update!(**args)
1530
+ end
1531
+
1532
+ # Update properties of this object
1533
+ def update!(**args)
1534
+ @day_of_week = args[:day_of_week] if args.key?(:day_of_week)
1535
+ @week_ordinal = args[:week_ordinal] if args.key?(:week_ordinal)
1536
+ end
1537
+ end
1538
+
1539
+ # Represents a weekly schedule.
1540
+ class WeeklySchedule
1541
+ include Google::Apis::Core::Hashable
1542
+
1543
+ # Required. Day of the week.
1544
+ # Corresponds to the JSON property `dayOfWeek`
1545
+ # @return [String]
1546
+ attr_accessor :day_of_week
1547
+
1548
+ def initialize(**args)
1549
+ update!(**args)
1550
+ end
1551
+
1552
+ # Update properties of this object
1553
+ def update!(**args)
1554
+ @day_of_week = args[:day_of_week] if args.key?(:day_of_week)
1555
+ end
1556
+ end
1557
+
1558
+ # Windows patching is performed using the Windows Update Agent.
1559
+ class WindowsUpdateSettings
1560
+ include Google::Apis::Core::Hashable
1561
+
1562
+ # Only apply updates of these windows update classifications. If empty, all
1563
+ # updates are applied.
1564
+ # Corresponds to the JSON property `classifications`
1565
+ # @return [Array<String>]
1566
+ attr_accessor :classifications
1567
+
1568
+ # List of KBs to exclude from update.
1569
+ # Corresponds to the JSON property `excludes`
1570
+ # @return [Array<String>]
1571
+ attr_accessor :excludes
1572
+
1573
+ # An exclusive list of kbs to be updated. These are the only patches that will
1574
+ # be updated. This field must not be used with other patch configurations.
1575
+ # Corresponds to the JSON property `exclusivePatches`
1576
+ # @return [Array<String>]
1577
+ attr_accessor :exclusive_patches
1578
+
1579
+ def initialize(**args)
1580
+ update!(**args)
1581
+ end
1582
+
1583
+ # Update properties of this object
1584
+ def update!(**args)
1585
+ @classifications = args[:classifications] if args.key?(:classifications)
1586
+ @excludes = args[:excludes] if args.key?(:excludes)
1587
+ @exclusive_patches = args[:exclusive_patches] if args.key?(:exclusive_patches)
1588
+ end
1589
+ end
1590
+
1591
+ # Yum patching is performed by executing `yum update`. Additional options can be
1592
+ # set to control how this is executed. Note that not all settings are supported
1593
+ # on all platforms.
1594
+ class YumSettings
1595
+ include Google::Apis::Core::Hashable
1596
+
1597
+ # List of packages to exclude from update. These packages are excluded by using
1598
+ # the yum `--exclude` flag.
1599
+ # Corresponds to the JSON property `excludes`
1600
+ # @return [Array<String>]
1601
+ attr_accessor :excludes
1602
+
1603
+ # An exclusive list of packages to be updated. These are the only packages that
1604
+ # will be updated. If these packages are not installed, they will be ignored.
1605
+ # This field must not be specified with any other patch configuration fields.
1606
+ # Corresponds to the JSON property `exclusivePackages`
1607
+ # @return [Array<String>]
1608
+ attr_accessor :exclusive_packages
1609
+
1610
+ # Will cause patch to run `yum update-minimal` instead.
1611
+ # Corresponds to the JSON property `minimal`
1612
+ # @return [Boolean]
1613
+ attr_accessor :minimal
1614
+ alias_method :minimal?, :minimal
1615
+
1616
+ # Adds the `--security` flag to `yum update`. Not supported on all platforms.
1617
+ # Corresponds to the JSON property `security`
1618
+ # @return [Boolean]
1619
+ attr_accessor :security
1620
+ alias_method :security?, :security
1621
+
1622
+ def initialize(**args)
1623
+ update!(**args)
1624
+ end
1625
+
1626
+ # Update properties of this object
1627
+ def update!(**args)
1628
+ @excludes = args[:excludes] if args.key?(:excludes)
1629
+ @exclusive_packages = args[:exclusive_packages] if args.key?(:exclusive_packages)
1630
+ @minimal = args[:minimal] if args.key?(:minimal)
1631
+ @security = args[:security] if args.key?(:security)
1632
+ end
1633
+ end
1634
+
1635
+ # Zypper patching is performed by running `zypper patch`. See also https://en.
1636
+ # opensuse.org/SDB:Zypper_manual.
1637
+ class ZypperSettings
1638
+ include Google::Apis::Core::Hashable
1639
+
1640
+ # Install only patches with these categories. Common categories include security,
1641
+ # recommended, and feature.
1642
+ # Corresponds to the JSON property `categories`
1643
+ # @return [Array<String>]
1644
+ attr_accessor :categories
1645
+
1646
+ # List of patches to exclude from update.
1647
+ # Corresponds to the JSON property `excludes`
1648
+ # @return [Array<String>]
1649
+ attr_accessor :excludes
1650
+
1651
+ # An exclusive list of patches to be updated. These are the only patches that
1652
+ # will be installed using 'zypper patch patch:' command. This field must not be
1653
+ # used with any other patch configuration fields.
1654
+ # Corresponds to the JSON property `exclusivePatches`
1655
+ # @return [Array<String>]
1656
+ attr_accessor :exclusive_patches
1657
+
1658
+ # Install only patches with these severities. Common severities include critical,
1659
+ # important, moderate, and low.
1660
+ # Corresponds to the JSON property `severities`
1661
+ # @return [Array<String>]
1662
+ attr_accessor :severities
1663
+
1664
+ # Adds the `--with-optional` flag to `zypper patch`.
1665
+ # Corresponds to the JSON property `withOptional`
1666
+ # @return [Boolean]
1667
+ attr_accessor :with_optional
1668
+ alias_method :with_optional?, :with_optional
1669
+
1670
+ # Adds the `--with-update` flag, to `zypper patch`.
1671
+ # Corresponds to the JSON property `withUpdate`
1672
+ # @return [Boolean]
1673
+ attr_accessor :with_update
1674
+ alias_method :with_update?, :with_update
1675
+
1676
+ def initialize(**args)
1677
+ update!(**args)
1678
+ end
1679
+
1680
+ # Update properties of this object
1681
+ def update!(**args)
1682
+ @categories = args[:categories] if args.key?(:categories)
1683
+ @excludes = args[:excludes] if args.key?(:excludes)
1684
+ @exclusive_patches = args[:exclusive_patches] if args.key?(:exclusive_patches)
1685
+ @severities = args[:severities] if args.key?(:severities)
1686
+ @with_optional = args[:with_optional] if args.key?(:with_optional)
1687
+ @with_update = args[:with_update] if args.key?(:with_update)
1688
+ end
1689
+ end
1690
+ end
1691
+ end
1692
+ end