google-api-client 0.39.0 → 0.39.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +22 -0
  3. data/generated/google/apis/bigquery_v2.rb +1 -1
  4. data/generated/google/apis/bigquery_v2/classes.rb +566 -0
  5. data/generated/google/apis/bigquery_v2/representations.rb +147 -0
  6. data/generated/google/apis/bigquery_v2/service.rb +120 -0
  7. data/generated/google/apis/bigqueryconnection_v1beta1.rb +1 -1
  8. data/generated/google/apis/bigqueryconnection_v1beta1/classes.rb +26 -10
  9. data/generated/google/apis/books_v1.rb +3 -3
  10. data/generated/google/apis/books_v1/classes.rb +435 -289
  11. data/generated/google/apis/books_v1/representations.rb +124 -91
  12. data/generated/google/apis/books_v1/service.rb +354 -484
  13. data/generated/google/apis/chat_v1.rb +1 -1
  14. data/generated/google/apis/chat_v1/classes.rb +15 -0
  15. data/generated/google/apis/chat_v1/representations.rb +2 -0
  16. data/generated/google/apis/clouddebugger_v2.rb +1 -1
  17. data/generated/google/apis/cloudfunctions_v1.rb +1 -1
  18. data/generated/google/apis/cloudfunctions_v1/classes.rb +24 -12
  19. data/generated/google/apis/cloudfunctions_v1/service.rb +3 -0
  20. data/generated/google/apis/cloudtasks_v2.rb +1 -1
  21. data/generated/google/apis/cloudtasks_v2/classes.rb +26 -10
  22. data/generated/google/apis/cloudtasks_v2beta2.rb +1 -1
  23. data/generated/google/apis/cloudtasks_v2beta2/classes.rb +26 -10
  24. data/generated/google/apis/cloudtasks_v2beta3.rb +1 -1
  25. data/generated/google/apis/cloudtasks_v2beta3/classes.rb +26 -10
  26. data/generated/google/apis/logging_v2.rb +1 -1
  27. data/generated/google/apis/logging_v2/classes.rb +45 -32
  28. data/generated/google/apis/logging_v2/service.rb +9 -5
  29. data/generated/google/apis/monitoring_v3.rb +1 -1
  30. data/generated/google/apis/monitoring_v3/classes.rb +7 -5
  31. data/generated/google/apis/networkmanagement_v1beta1.rb +1 -1
  32. data/generated/google/apis/networkmanagement_v1beta1/classes.rb +26 -14
  33. data/generated/google/apis/networkmanagement_v1beta1/service.rb +9 -6
  34. data/generated/google/apis/osconfig_v1beta.rb +35 -0
  35. data/generated/google/apis/osconfig_v1beta/classes.rb +2365 -0
  36. data/generated/google/apis/osconfig_v1beta/representations.rb +966 -0
  37. data/generated/google/apis/osconfig_v1beta/service.rb +605 -0
  38. data/generated/google/apis/pubsub_v1.rb +1 -1
  39. data/generated/google/apis/pubsub_v1/classes.rb +36 -11
  40. data/generated/google/apis/pubsub_v1/representations.rb +1 -0
  41. data/generated/google/apis/pubsub_v1/service.rb +15 -6
  42. data/generated/google/apis/pubsub_v1beta2.rb +1 -1
  43. data/generated/google/apis/pubsub_v1beta2/classes.rb +23 -10
  44. data/generated/google/apis/pubsub_v1beta2/service.rb +10 -4
  45. data/generated/google/apis/servicedirectory_v1beta1.rb +1 -1
  46. data/generated/google/apis/servicedirectory_v1beta1/classes.rb +26 -10
  47. data/generated/google/apis/servicemanagement_v1.rb +1 -1
  48. data/generated/google/apis/servicemanagement_v1/classes.rb +61 -26
  49. data/generated/google/apis/servicemanagement_v1/service.rb +4 -4
  50. data/generated/google/apis/toolresults_v1beta3.rb +1 -1
  51. data/generated/google/apis/toolresults_v1beta3/service.rb +1 -1
  52. data/generated/google/apis/vault_v1.rb +1 -1
  53. data/generated/google/apis/vault_v1/classes.rb +4 -1
  54. data/lib/google/apis/version.rb +1 -1
  55. metadata +7 -3
@@ -768,7 +768,7 @@ module Google
768
768
 
769
769
  # Lists log entries. Use this method to retrieve log entries that originated
770
770
  # from a project/folder/organization/billing account. For ways to export log
771
- # entries, see Exporting Logs.
771
+ # entries, see Exporting Logs (https://cloud.google.com/logging/docs/export).
772
772
  # @param [Google::Apis::LoggingV2::ListLogEntriesRequest] list_log_entries_request_object
773
773
  # @param [String] fields
774
774
  # Selector specifying which fields to include in a partial response.
@@ -2012,7 +2012,8 @@ module Google
2012
2012
  # Gets the Logs Router CMEK settings for the given resource.Note: CMEK for the
2013
2013
  # Logs Router can currently only be configured for GCP organizations. Once
2014
2014
  # configured, it applies to all projects and folders in the GCP organization.See
2015
- # Enabling CMEK for Logs Router for more information.
2015
+ # Enabling CMEK for Logs Router (https://cloud.google.com/logging/docs/routing/
2016
+ # managed-encryption) for more information.
2016
2017
  # @param [String] name
2017
2018
  # Required. The resource for which to retrieve CMEK settings.
2018
2019
  # "projects/[PROJECT_ID]/cmekSettings"
@@ -2055,7 +2056,8 @@ module Google
2055
2056
  # UpdateCmekSettings will fail if 1) kms_key_name is invalid, or 2) the
2056
2057
  # associated service account does not have the required roles/cloudkms.
2057
2058
  # cryptoKeyEncrypterDecrypter role assigned for the key, or 3) access to the key
2058
- # is disabled.See Enabling CMEK for Logs Router for more information.
2059
+ # is disabled.See Enabling CMEK for Logs Router (https://cloud.google.com/
2060
+ # logging/docs/routing/managed-encryption) for more information.
2059
2061
  # @param [String] name
2060
2062
  # Required. The resource name for the CMEK settings to update.
2061
2063
  # "projects/[PROJECT_ID]/cmekSettings"
@@ -3943,7 +3945,8 @@ module Google
3943
3945
  # Gets the Logs Router CMEK settings for the given resource.Note: CMEK for the
3944
3946
  # Logs Router can currently only be configured for GCP organizations. Once
3945
3947
  # configured, it applies to all projects and folders in the GCP organization.See
3946
- # Enabling CMEK for Logs Router for more information.
3948
+ # Enabling CMEK for Logs Router (https://cloud.google.com/logging/docs/routing/
3949
+ # managed-encryption) for more information.
3947
3950
  # @param [String] name
3948
3951
  # Required. The resource for which to retrieve CMEK settings.
3949
3952
  # "projects/[PROJECT_ID]/cmekSettings"
@@ -3986,7 +3989,8 @@ module Google
3986
3989
  # UpdateCmekSettings will fail if 1) kms_key_name is invalid, or 2) the
3987
3990
  # associated service account does not have the required roles/cloudkms.
3988
3991
  # cryptoKeyEncrypterDecrypter role assigned for the key, or 3) access to the key
3989
- # is disabled.See Enabling CMEK for Logs Router for more information.
3992
+ # is disabled.See Enabling CMEK for Logs Router (https://cloud.google.com/
3993
+ # logging/docs/routing/managed-encryption) for more information.
3990
3994
  # @param [String] name
3991
3995
  # Required. The resource name for the CMEK settings to update.
3992
3996
  # "projects/[PROJECT_ID]/cmekSettings"
@@ -29,7 +29,7 @@ module Google
29
29
  # @see https://cloud.google.com/monitoring/api/
30
30
  module MonitoringV3
31
31
  VERSION = 'V3'
32
- REVISION = '20200420'
32
+ REVISION = '20200502'
33
33
 
34
34
  # View and manage your data across Google Cloud Platform services
35
35
  AUTH_CLOUD_PLATFORM = 'https://www.googleapis.com/auth/cloud-platform'
@@ -1435,11 +1435,13 @@ module Google
1435
1435
  # @return [Google::Apis::MonitoringV3::BasicAuthentication]
1436
1436
  attr_accessor :auth_info
1437
1437
 
1438
- # The request body associated with the HTTP request. If content_type is
1438
+ # The request body associated with the HTTP POST request. If content_type is
1439
1439
  # URL_ENCODED, the body passed in must be URL-encoded. Users can provide a
1440
- # Content-Length header via the headers field or the API will do so. The maximum
1441
- # byte size is 1 megabyte. Note: As with all bytes fields JSON representations
1442
- # are base64 encoded.
1440
+ # Content-Length header via the headers field or the API will do so. If the
1441
+ # request_method is GET and body is not empty, the API will return an error. The
1442
+ # maximum byte size is 1 megabyte. Note: As with all bytes fields JSON
1443
+ # representations are base64 encoded. e.g.: "foo=bar" in URL-encoded form is "
1444
+ # foo%3Dbar" and in base64 encoding is "Zm9vJTI1M0RiYXI=".
1443
1445
  # Corresponds to the JSON property `body`
1444
1446
  # NOTE: Values are automatically base64 encoded/decoded in the client library.
1445
1447
  # @return [String]
@@ -1461,7 +1463,7 @@ module Google
1461
1463
  # @return [Hash<String,String>]
1462
1464
  attr_accessor :headers
1463
1465
 
1464
- # Boolean specifiying whether to encrypt the header information. Encryption
1466
+ # Boolean specifying whether to encrypt the header information. Encryption
1465
1467
  # should be specified for any headers related to authentication that you do not
1466
1468
  # wish to be seen when retrieving the configuration. The server will be
1467
1469
  # responsible for encrypting the headers. On Get/List calls, if mask_headers is
@@ -26,7 +26,7 @@ module Google
26
26
  # @see https://cloud.google.com/
27
27
  module NetworkmanagementV1beta1
28
28
  VERSION = 'V1beta1'
29
- REVISION = '20200303'
29
+ REVISION = '20200505'
30
30
 
31
31
  # View and manage your data across Google Cloud Platform services
32
32
  AUTH_CLOUD_PLATFORM = 'https://www.googleapis.com/auth/cloud-platform'
@@ -290,7 +290,7 @@ module Google
290
290
  attr_accessor :labels
291
291
 
292
292
  # Required. Unique name of the resource using the form:
293
- # `projects/`project_id`/tests/`test_id``
293
+ # `projects/`project_id`/locations/global/connectivityTests/`test``
294
294
  # Corresponds to the JSON property `name`
295
295
  # @return [String]
296
296
  attr_accessor :name
@@ -1135,7 +1135,7 @@ module Google
1135
1135
  attr_accessor :status_detail
1136
1136
 
1137
1137
  # Target of the operation - for example
1138
- # projects/project-1/connectivityTests/test-1
1138
+ # projects/project-1/locations/global/connectivityTests/test-1
1139
1139
  # Corresponds to the JSON property `target`
1140
1140
  # @return [String]
1141
1141
  attr_accessor :target
@@ -1168,10 +1168,13 @@ module Google
1168
1168
  # Google groups, and domains (such as G Suite). A `role` is a named list of
1169
1169
  # permissions; each `role` can be an IAM predefined role or a user-created
1170
1170
  # custom role.
1171
- # Optionally, a `binding` can specify a `condition`, which is a logical
1172
- # expression that allows access to a resource only if the expression evaluates
1173
- # to `true`. A condition can add constraints based on attributes of the
1174
- # request, the resource, or both.
1171
+ # For some types of Google Cloud resources, a `binding` can also specify a
1172
+ # `condition`, which is a logical expression that allows access to a resource
1173
+ # only if the expression evaluates to `true`. A condition can add constraints
1174
+ # based on attributes of the request, the resource, or both. To learn which
1175
+ # resources support conditions in their IAM policies, see the
1176
+ # [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-
1177
+ # policies).
1175
1178
  # **JSON example:**
1176
1179
  # `
1177
1180
  # "bindings": [
@@ -1186,7 +1189,9 @@ module Google
1186
1189
  # `,
1187
1190
  # `
1188
1191
  # "role": "roles/resourcemanager.organizationViewer",
1189
- # "members": ["user:eve@example.com"],
1192
+ # "members": [
1193
+ # "user:eve@example.com"
1194
+ # ],
1190
1195
  # "condition": `
1191
1196
  # "title": "expirable access",
1192
1197
  # "description": "Does not grant access after Sep 2020",
@@ -1264,6 +1269,9 @@ module Google
1264
1269
  # the conditions in the version `3` policy are lost.
1265
1270
  # If a policy does not include any conditions, operations on that policy may
1266
1271
  # specify any valid version or leave the field unset.
1272
+ # To learn which resources support conditions in their IAM policies, see the
1273
+ # [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-
1274
+ # policies).
1267
1275
  # Corresponds to the JSON property `version`
1268
1276
  # @return [Fixnum]
1269
1277
  attr_accessor :version
@@ -1419,10 +1427,13 @@ module Google
1419
1427
  # Google groups, and domains (such as G Suite). A `role` is a named list of
1420
1428
  # permissions; each `role` can be an IAM predefined role or a user-created
1421
1429
  # custom role.
1422
- # Optionally, a `binding` can specify a `condition`, which is a logical
1423
- # expression that allows access to a resource only if the expression evaluates
1424
- # to `true`. A condition can add constraints based on attributes of the
1425
- # request, the resource, or both.
1430
+ # For some types of Google Cloud resources, a `binding` can also specify a
1431
+ # `condition`, which is a logical expression that allows access to a resource
1432
+ # only if the expression evaluates to `true`. A condition can add constraints
1433
+ # based on attributes of the request, the resource, or both. To learn which
1434
+ # resources support conditions in their IAM policies, see the
1435
+ # [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-
1436
+ # policies).
1426
1437
  # **JSON example:**
1427
1438
  # `
1428
1439
  # "bindings": [
@@ -1437,7 +1448,9 @@ module Google
1437
1448
  # `,
1438
1449
  # `
1439
1450
  # "role": "roles/resourcemanager.organizationViewer",
1440
- # "members": ["user:eve@example.com"],
1451
+ # "members": [
1452
+ # "user:eve@example.com"
1453
+ # ],
1441
1454
  # "condition": `
1442
1455
  # "title": "expirable access",
1443
1456
  # "description": "Does not grant access after Sep 2020",
@@ -1475,8 +1488,7 @@ module Google
1475
1488
  # OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only
1476
1489
  # the fields in the mask will be modified. If no mask is provided, the
1477
1490
  # following default mask is used:
1478
- # paths: "bindings, etag"
1479
- # This field is only used by Cloud IAM.
1491
+ # `paths: "bindings, etag"`
1480
1492
  # Corresponds to the JSON property `updateMask`
1481
1493
  # @return [String]
1482
1494
  attr_accessor :update_mask
@@ -173,7 +173,7 @@ module Google
173
173
  # Deletes a specific `ConnectivityTest`.
174
174
  # @param [String] name
175
175
  # Required. Connectivity Test resource name using the form:
176
- # `projects/`project_id`/connectivityTests/`test_id``
176
+ # `projects/`project_id`/locations/global/connectivityTests/`test_id``
177
177
  # @param [String] fields
178
178
  # Selector specifying which fields to include in a partial response.
179
179
  # @param [String] quota_user
@@ -245,6 +245,9 @@ module Google
245
245
  # Requests for policies with any conditional bindings must specify version 3.
246
246
  # Policies without any conditional bindings may specify any valid value or
247
247
  # leave the field unset.
248
+ # To learn which resources support conditions in their IAM policies, see the
249
+ # [IAM
250
+ # documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
248
251
  # @param [String] fields
249
252
  # Selector specifying which fields to include in a partial response.
250
253
  # @param [String] quota_user
@@ -288,7 +291,7 @@ module Google
288
291
  # field, or a synthetic field. Field names can be camelCase or snake_case.
289
292
  # Examples:
290
293
  # - Filter by name:
291
- # name = "projects/proj-1/connectivityTests/test-1
294
+ # name = "projects/proj-1/locations/global/connectivityTests/test-1
292
295
  # - Filter by labels:
293
296
  # - Resources that have a key called `foo`
294
297
  # labels.foo:*
@@ -345,7 +348,7 @@ module Google
345
348
  # in `ConnectivityTest` for for more details.
346
349
  # @param [String] name
347
350
  # Required. Unique name of the resource using the form:
348
- # `projects/`project_id`/tests/`test_id``
351
+ # `projects/`project_id`/locations/global/connectivityTests/`test``
349
352
  # @param [Google::Apis::NetworkmanagementV1beta1::ConnectivityTest] connectivity_test_object
350
353
  # @param [String] update_mask
351
354
  # Required. Mask of fields to update. At least one path must be supplied in
@@ -392,7 +395,7 @@ module Google
392
395
  # the reachability result returns a value of `UNKNOWN`.
393
396
  # @param [String] name
394
397
  # Required. Connectivity Test resource name using the form:
395
- # `projects/`project_id`/connectivityTests/`test_id``
398
+ # `projects/`project_id`/locations/global/connectivityTests/`test_id``
396
399
  # @param [Google::Apis::NetworkmanagementV1beta1::RerunConnectivityTestRequest] rerun_connectivity_test_request_object
397
400
  # @param [String] fields
398
401
  # Selector specifying which fields to include in a partial response.
@@ -425,7 +428,7 @@ module Google
425
428
 
426
429
  # Sets the access control policy on the specified resource. Replaces any
427
430
  # existing policy.
428
- # Can return Public Errors: NOT_FOUND, INVALID_ARGUMENT and PERMISSION_DENIED
431
+ # Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.
429
432
  # @param [String] resource
430
433
  # REQUIRED: The resource for which the policy is being specified.
431
434
  # See the operation documentation for the appropriate value for this field.
@@ -461,7 +464,7 @@ module Google
461
464
 
462
465
  # Returns permissions that a caller has on the specified resource.
463
466
  # If the resource does not exist, this will return an empty set of
464
- # permissions, not a NOT_FOUND error.
467
+ # permissions, not a `NOT_FOUND` error.
465
468
  # Note: This operation is designed to be used for building permission-aware
466
469
  # UIs and command-line tools, not for authorization checking. This operation
467
470
  # may "fail open" without warning.
@@ -0,0 +1,35 @@
1
+ # Copyright 2015 Google Inc.
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
+
19
+ module Google
20
+ module Apis
21
+ # Cloud OS Config API
22
+ #
23
+ # OS management tools that can be used for patch management, patch compliance,
24
+ # and configuration management on VM instances.
25
+ #
26
+ # @see https://cloud.google.com/
27
+ module OsconfigV1beta
28
+ VERSION = 'V1beta'
29
+ REVISION = '20200403'
30
+
31
+ # View and manage your data across Google Cloud Platform services
32
+ AUTH_CLOUD_PLATFORM = 'https://www.googleapis.com/auth/cloud-platform'
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,2365 @@
1
+ # Copyright 2015 Google Inc.
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
26
+ # a repo file that is stored at
27
+ # `/etc/apt/sources.list.d/google_osconfig.list`.
28
+ class AptRepository
29
+ include Google::Apis::Core::Hashable
30
+
31
+ # Type of archive files in this repository. The default behavior is DEB.
32
+ # Corresponds to the JSON property `archiveType`
33
+ # @return [String]
34
+ attr_accessor :archive_type
35
+
36
+ # Required. List of components for this repository. Must contain at least one
37
+ # item.
38
+ # Corresponds to the JSON property `components`
39
+ # @return [Array<String>]
40
+ attr_accessor :components
41
+
42
+ # Required. Distribution of this repository.
43
+ # Corresponds to the JSON property `distribution`
44
+ # @return [String]
45
+ attr_accessor :distribution
46
+
47
+ # URI of the key file for this repository. The agent maintains
48
+ # a keyring at `/etc/apt/trusted.gpg.d/osconfig_agent_managed.gpg` containing
49
+ # all the keys in any applied guest policy.
50
+ # Corresponds to the JSON property `gpgKey`
51
+ # @return [String]
52
+ attr_accessor :gpg_key
53
+
54
+ # Required. URI for this repository.
55
+ # Corresponds to the JSON property `uri`
56
+ # @return [String]
57
+ attr_accessor :uri
58
+
59
+ def initialize(**args)
60
+ update!(**args)
61
+ end
62
+
63
+ # Update properties of this object
64
+ def update!(**args)
65
+ @archive_type = args[:archive_type] if args.key?(:archive_type)
66
+ @components = args[:components] if args.key?(:components)
67
+ @distribution = args[:distribution] if args.key?(:distribution)
68
+ @gpg_key = args[:gpg_key] if args.key?(:gpg_key)
69
+ @uri = args[:uri] if args.key?(:uri)
70
+ end
71
+ end
72
+
73
+ # Apt patching is completed by executing `apt-get update && apt-get
74
+ # upgrade`. Additional options can be set to control how this is executed.
75
+ class AptSettings
76
+ include Google::Apis::Core::Hashable
77
+
78
+ # List of packages to exclude from update. These packages will be excluded
79
+ # Corresponds to the JSON property `excludes`
80
+ # @return [Array<String>]
81
+ attr_accessor :excludes
82
+
83
+ # An exclusive list of packages to be updated. These are the only packages
84
+ # that will be updated. If these packages are not installed, they will be
85
+ # ignored. This field cannot be specified with any other patch configuration
86
+ # fields.
87
+ # Corresponds to the JSON property `exclusivePackages`
88
+ # @return [Array<String>]
89
+ attr_accessor :exclusive_packages
90
+
91
+ # By changing the type to DIST, the patching is performed
92
+ # using `apt-get dist-upgrade` instead.
93
+ # Corresponds to the JSON property `type`
94
+ # @return [String]
95
+ attr_accessor :type
96
+
97
+ def initialize(**args)
98
+ update!(**args)
99
+ end
100
+
101
+ # Update properties of this object
102
+ def update!(**args)
103
+ @excludes = args[:excludes] if args.key?(:excludes)
104
+ @exclusive_packages = args[:exclusive_packages] if args.key?(:exclusive_packages)
105
+ @type = args[:type] if args.key?(:type)
106
+ end
107
+ end
108
+
109
+ # An assignment represents the group or groups of VM instances that the policy
110
+ # applies to.
111
+ # If an assignment is empty, it applies to all VM instances. Otherwise, the
112
+ # targeted VM instances must meet all the criteria specified. So if both
113
+ # labels and zones are specified, the policy applies to VM instances with those
114
+ # labels and in those zones.
115
+ class Assignment
116
+ include Google::Apis::Core::Hashable
117
+
118
+ # Targets instances matching at least one of these label sets. This allows
119
+ # an assignment to target disparate groups, for example "env=prod or
120
+ # env=staging".
121
+ # Corresponds to the JSON property `groupLabels`
122
+ # @return [Array<Google::Apis::OsconfigV1beta::AssignmentGroupLabel>]
123
+ attr_accessor :group_labels
124
+
125
+ # Targets VM instances whose name starts with one of these prefixes.
126
+ # Like labels, this is another way to group VM instances when targeting
127
+ # configs, for example prefix="prod-".
128
+ # Only supported for project-level policies.
129
+ # Corresponds to the JSON property `instanceNamePrefixes`
130
+ # @return [Array<String>]
131
+ attr_accessor :instance_name_prefixes
132
+
133
+ # Targets any of the instances specified. Instances are specified by their
134
+ # URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`.
135
+ # Instance targeting is uncommon and is supported to facilitate the
136
+ # management of changes by the instance or to target specific VM instances
137
+ # for development and testing.
138
+ # Only supported for project-level policies and must reference instances
139
+ # within this project.
140
+ # Corresponds to the JSON property `instances`
141
+ # @return [Array<String>]
142
+ attr_accessor :instances
143
+
144
+ # Targets VM instances matching at least one of the following OS types.
145
+ # VM instances must match all supplied criteria for a given OsType to be
146
+ # included.
147
+ # Corresponds to the JSON property `osTypes`
148
+ # @return [Array<Google::Apis::OsconfigV1beta::AssignmentOsType>]
149
+ attr_accessor :os_types
150
+
151
+ # Targets instances in any of these zones. Leave empty to target instances
152
+ # in any zone.
153
+ # Zonal targeting is uncommon and is supported to facilitate the management
154
+ # of changes by zone.
155
+ # Corresponds to the JSON property `zones`
156
+ # @return [Array<String>]
157
+ attr_accessor :zones
158
+
159
+ def initialize(**args)
160
+ update!(**args)
161
+ end
162
+
163
+ # Update properties of this object
164
+ def update!(**args)
165
+ @group_labels = args[:group_labels] if args.key?(:group_labels)
166
+ @instance_name_prefixes = args[:instance_name_prefixes] if args.key?(:instance_name_prefixes)
167
+ @instances = args[:instances] if args.key?(:instances)
168
+ @os_types = args[:os_types] if args.key?(:os_types)
169
+ @zones = args[:zones] if args.key?(:zones)
170
+ end
171
+ end
172
+
173
+ # Represents a group of VM intances that can be identified as having all
174
+ # these labels, for example "env=prod and app=web".
175
+ class AssignmentGroupLabel
176
+ include Google::Apis::Core::Hashable
177
+
178
+ # Google Compute Engine instance labels that must be present for an
179
+ # instance to be included in this assignment group.
180
+ # Corresponds to the JSON property `labels`
181
+ # @return [Hash<String,String>]
182
+ attr_accessor :labels
183
+
184
+ def initialize(**args)
185
+ update!(**args)
186
+ end
187
+
188
+ # Update properties of this object
189
+ def update!(**args)
190
+ @labels = args[:labels] if args.key?(:labels)
191
+ end
192
+ end
193
+
194
+ # Defines the criteria for selecting VM Instances by OS type.
195
+ class AssignmentOsType
196
+ include Google::Apis::Core::Hashable
197
+
198
+ # Targets VM instances with OS Inventory enabled and having the following
199
+ # OS architecture.
200
+ # Corresponds to the JSON property `osArchitecture`
201
+ # @return [String]
202
+ attr_accessor :os_architecture
203
+
204
+ # Targets VM instances with OS Inventory enabled and having the following
205
+ # OS short name, for example "debian" or "windows".
206
+ # Corresponds to the JSON property `osShortName`
207
+ # @return [String]
208
+ attr_accessor :os_short_name
209
+
210
+ # Targets VM instances with OS Inventory enabled and having the following
211
+ # following OS version.
212
+ # Corresponds to the JSON property `osVersion`
213
+ # @return [String]
214
+ attr_accessor :os_version
215
+
216
+ def initialize(**args)
217
+ update!(**args)
218
+ end
219
+
220
+ # Update properties of this object
221
+ def update!(**args)
222
+ @os_architecture = args[:os_architecture] if args.key?(:os_architecture)
223
+ @os_short_name = args[:os_short_name] if args.key?(:os_short_name)
224
+ @os_version = args[:os_version] if args.key?(:os_version)
225
+ end
226
+ end
227
+
228
+ # Message for canceling a patch job.
229
+ class CancelPatchJobRequest
230
+ include Google::Apis::Core::Hashable
231
+
232
+ def initialize(**args)
233
+ update!(**args)
234
+ end
235
+
236
+ # Update properties of this object
237
+ def update!(**args)
238
+ end
239
+ end
240
+
241
+ # The effective guest policy that applies to a VM instance.
242
+ class EffectiveGuestPolicy
243
+ include Google::Apis::Core::Hashable
244
+
245
+ # List of package repository configurations assigned to the VM instance.
246
+ # Corresponds to the JSON property `packageRepositories`
247
+ # @return [Array<Google::Apis::OsconfigV1beta::EffectiveGuestPolicySourcedPackageRepository>]
248
+ attr_accessor :package_repositories
249
+
250
+ # List of package configurations assigned to the VM instance.
251
+ # Corresponds to the JSON property `packages`
252
+ # @return [Array<Google::Apis::OsconfigV1beta::EffectiveGuestPolicySourcedPackage>]
253
+ attr_accessor :packages
254
+
255
+ # List of recipes assigned to the VM instance.
256
+ # Corresponds to the JSON property `softwareRecipes`
257
+ # @return [Array<Google::Apis::OsconfigV1beta::EffectiveGuestPolicySourcedSoftwareRecipe>]
258
+ attr_accessor :software_recipes
259
+
260
+ def initialize(**args)
261
+ update!(**args)
262
+ end
263
+
264
+ # Update properties of this object
265
+ def update!(**args)
266
+ @package_repositories = args[:package_repositories] if args.key?(:package_repositories)
267
+ @packages = args[:packages] if args.key?(:packages)
268
+ @software_recipes = args[:software_recipes] if args.key?(:software_recipes)
269
+ end
270
+ end
271
+
272
+ # A guest policy package including its source.
273
+ class EffectiveGuestPolicySourcedPackage
274
+ include Google::Apis::Core::Hashable
275
+
276
+ # Package is a reference to the software package to be installed or removed.
277
+ # The agent on the VM instance uses the system package manager to apply the
278
+ # config.
279
+ # These are the commands that the agent uses to install or remove
280
+ # packages.
281
+ # Apt
282
+ # install: `apt-get update && apt-get -y install package1 package2 package3`
283
+ # remove: `apt-get -y remove package1 package2 package3`
284
+ # Yum
285
+ # install: `yum -y install package1 package2 package3`
286
+ # remove: `yum -y remove package1 package2 package3`
287
+ # Zypper
288
+ # install: `zypper install package1 package2 package3`
289
+ # remove: `zypper rm package1 package2`
290
+ # Googet
291
+ # install: `googet -noconfirm install package1 package2 package3`
292
+ # remove: `googet -noconfirm remove package1 package2 package3`
293
+ # Corresponds to the JSON property `package`
294
+ # @return [Google::Apis::OsconfigV1beta::Package]
295
+ attr_accessor :package
296
+
297
+ # Name of the guest policy providing this config.
298
+ # Corresponds to the JSON property `source`
299
+ # @return [String]
300
+ attr_accessor :source
301
+
302
+ def initialize(**args)
303
+ update!(**args)
304
+ end
305
+
306
+ # Update properties of this object
307
+ def update!(**args)
308
+ @package = args[:package] if args.key?(:package)
309
+ @source = args[:source] if args.key?(:source)
310
+ end
311
+ end
312
+
313
+ # A guest policy package repository including its source.
314
+ class EffectiveGuestPolicySourcedPackageRepository
315
+ include Google::Apis::Core::Hashable
316
+
317
+ # A package repository.
318
+ # Corresponds to the JSON property `packageRepository`
319
+ # @return [Google::Apis::OsconfigV1beta::PackageRepository]
320
+ attr_accessor :package_repository
321
+
322
+ # Name of the guest policy providing this config.
323
+ # Corresponds to the JSON property `source`
324
+ # @return [String]
325
+ attr_accessor :source
326
+
327
+ def initialize(**args)
328
+ update!(**args)
329
+ end
330
+
331
+ # Update properties of this object
332
+ def update!(**args)
333
+ @package_repository = args[:package_repository] if args.key?(:package_repository)
334
+ @source = args[:source] if args.key?(:source)
335
+ end
336
+ end
337
+
338
+ # A guest policy recipe including its source.
339
+ class EffectiveGuestPolicySourcedSoftwareRecipe
340
+ include Google::Apis::Core::Hashable
341
+
342
+ # A software recipe is a set of instructions for installing and configuring a
343
+ # piece of software. It consists of a set of artifacts that are
344
+ # downloaded, and a set of steps that install, configure, and/or update the
345
+ # software.
346
+ # Recipes support installing and updating software from artifacts in the
347
+ # following formats:
348
+ # Zip archive, Tar archive, Windows MSI, Debian package, and RPM package.
349
+ # Additionally, recipes support executing a script (either defined in a file or
350
+ # directly in this api) in bash, sh, cmd, and powershell.
351
+ # Updating a software recipe
352
+ # If a recipe is assigned to an instance and there is a recipe with the same
353
+ # name but a lower version already installed and the assigned state
354
+ # of the recipe is `INSTALLED_KEEP_UPDATED`, then the recipe is updated to
355
+ # the new version.
356
+ # Script Working Directories
357
+ # Each script or execution step is run in its own temporary directory which
358
+ # is deleted after completing the step.
359
+ # Corresponds to the JSON property `softwareRecipe`
360
+ # @return [Google::Apis::OsconfigV1beta::SoftwareRecipe]
361
+ attr_accessor :software_recipe
362
+
363
+ # Name of the guest policy providing this config.
364
+ # Corresponds to the JSON property `source`
365
+ # @return [String]
366
+ attr_accessor :source
367
+
368
+ def initialize(**args)
369
+ update!(**args)
370
+ end
371
+
372
+ # Update properties of this object
373
+ def update!(**args)
374
+ @software_recipe = args[:software_recipe] if args.key?(:software_recipe)
375
+ @source = args[:source] if args.key?(:source)
376
+ end
377
+ end
378
+
379
+ # A generic empty message that you can re-use to avoid defining duplicated
380
+ # empty messages in your APIs. A typical example is to use it as the request
381
+ # or the response type of an API method. For instance:
382
+ # service Foo `
383
+ # rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
384
+ # `
385
+ # The JSON representation for `Empty` is empty JSON object ````.
386
+ class Empty
387
+ include Google::Apis::Core::Hashable
388
+
389
+ def initialize(**args)
390
+ update!(**args)
391
+ end
392
+
393
+ # Update properties of this object
394
+ def update!(**args)
395
+ end
396
+ end
397
+
398
+ # A step that runs an executable for a PatchJob.
399
+ class ExecStep
400
+ include Google::Apis::Core::Hashable
401
+
402
+ # Common configurations for an ExecStep.
403
+ # Corresponds to the JSON property `linuxExecStepConfig`
404
+ # @return [Google::Apis::OsconfigV1beta::ExecStepConfig]
405
+ attr_accessor :linux_exec_step_config
406
+
407
+ # Common configurations for an ExecStep.
408
+ # Corresponds to the JSON property `windowsExecStepConfig`
409
+ # @return [Google::Apis::OsconfigV1beta::ExecStepConfig]
410
+ attr_accessor :windows_exec_step_config
411
+
412
+ def initialize(**args)
413
+ update!(**args)
414
+ end
415
+
416
+ # Update properties of this object
417
+ def update!(**args)
418
+ @linux_exec_step_config = args[:linux_exec_step_config] if args.key?(:linux_exec_step_config)
419
+ @windows_exec_step_config = args[:windows_exec_step_config] if args.key?(:windows_exec_step_config)
420
+ end
421
+ end
422
+
423
+ # Common configurations for an ExecStep.
424
+ class ExecStepConfig
425
+ include Google::Apis::Core::Hashable
426
+
427
+ # Defaults to [0]. A list of possible return values that the
428
+ # execution can return to indicate a success.
429
+ # Corresponds to the JSON property `allowedSuccessCodes`
430
+ # @return [Array<Fixnum>]
431
+ attr_accessor :allowed_success_codes
432
+
433
+ # Google Cloud Storage object representation.
434
+ # Corresponds to the JSON property `gcsObject`
435
+ # @return [Google::Apis::OsconfigV1beta::GcsObject]
436
+ attr_accessor :gcs_object
437
+
438
+ # The script interpreter to use to run the script. If no interpreter is
439
+ # specified the script will be executed directly, which will likely
440
+ # only succeed for scripts with [shebang lines]
441
+ # (https://en.wikipedia.org/wiki/Shebang_\(Unix\)).
442
+ # Corresponds to the JSON property `interpreter`
443
+ # @return [String]
444
+ attr_accessor :interpreter
445
+
446
+ # An absolute path to the executable on the VM.
447
+ # Corresponds to the JSON property `localPath`
448
+ # @return [String]
449
+ attr_accessor :local_path
450
+
451
+ def initialize(**args)
452
+ update!(**args)
453
+ end
454
+
455
+ # Update properties of this object
456
+ def update!(**args)
457
+ @allowed_success_codes = args[:allowed_success_codes] if args.key?(:allowed_success_codes)
458
+ @gcs_object = args[:gcs_object] if args.key?(:gcs_object)
459
+ @interpreter = args[:interpreter] if args.key?(:interpreter)
460
+ @local_path = args[:local_path] if args.key?(:local_path)
461
+ end
462
+ end
463
+
464
+ # A request message to initiate patching across Google Compute Engine
465
+ # instances.
466
+ class ExecutePatchJobRequest
467
+ include Google::Apis::Core::Hashable
468
+
469
+ # Description of the patch job. Length of the description is limited
470
+ # to 1024 characters.
471
+ # Corresponds to the JSON property `description`
472
+ # @return [String]
473
+ attr_accessor :description
474
+
475
+ # Display name for this patch job. This does not have to be unique.
476
+ # Corresponds to the JSON property `displayName`
477
+ # @return [String]
478
+ attr_accessor :display_name
479
+
480
+ # If this patch is a dry-run only, instances are contacted but
481
+ # will do nothing.
482
+ # Corresponds to the JSON property `dryRun`
483
+ # @return [Boolean]
484
+ attr_accessor :dry_run
485
+ alias_method :dry_run?, :dry_run
486
+
487
+ # Duration of the patch job. After the duration ends, the patch job
488
+ # times out.
489
+ # Corresponds to the JSON property `duration`
490
+ # @return [String]
491
+ attr_accessor :duration
492
+
493
+ # A filter to target VM instances for patching. The targeted
494
+ # VMs must meet all criteria specified. So if both labels and zones are
495
+ # specified, the patch job targets only VMs with those labels and in those
496
+ # zones.
497
+ # Corresponds to the JSON property `instanceFilter`
498
+ # @return [Google::Apis::OsconfigV1beta::PatchInstanceFilter]
499
+ attr_accessor :instance_filter
500
+
501
+ # Patch configuration specifications. Contains details on how to apply the
502
+ # patch(es) to a VM instance.
503
+ # Corresponds to the JSON property `patchConfig`
504
+ # @return [Google::Apis::OsconfigV1beta::PatchConfig]
505
+ attr_accessor :patch_config
506
+
507
+ def initialize(**args)
508
+ update!(**args)
509
+ end
510
+
511
+ # Update properties of this object
512
+ def update!(**args)
513
+ @description = args[:description] if args.key?(:description)
514
+ @display_name = args[:display_name] if args.key?(:display_name)
515
+ @dry_run = args[:dry_run] if args.key?(:dry_run)
516
+ @duration = args[:duration] if args.key?(:duration)
517
+ @instance_filter = args[:instance_filter] if args.key?(:instance_filter)
518
+ @patch_config = args[:patch_config] if args.key?(:patch_config)
519
+ end
520
+ end
521
+
522
+ # Google Cloud Storage object representation.
523
+ class GcsObject
524
+ include Google::Apis::Core::Hashable
525
+
526
+ # Required. Bucket of the Google Cloud Storage object.
527
+ # Corresponds to the JSON property `bucket`
528
+ # @return [String]
529
+ attr_accessor :bucket
530
+
531
+ # Required. Generation number of the Google Cloud Storage object. This is used
532
+ # to
533
+ # ensure that the ExecStep specified by this PatchJob does not change.
534
+ # Corresponds to the JSON property `generationNumber`
535
+ # @return [Fixnum]
536
+ attr_accessor :generation_number
537
+
538
+ # Required. Name of the Google Cloud Storage object.
539
+ # Corresponds to the JSON property `object`
540
+ # @return [String]
541
+ attr_accessor :object
542
+
543
+ def initialize(**args)
544
+ update!(**args)
545
+ end
546
+
547
+ # Update properties of this object
548
+ def update!(**args)
549
+ @bucket = args[:bucket] if args.key?(:bucket)
550
+ @generation_number = args[:generation_number] if args.key?(:generation_number)
551
+ @object = args[:object] if args.key?(:object)
552
+ end
553
+ end
554
+
555
+ # Represents a Goo package repository. These is added to a repo file
556
+ # that is stored at C:/ProgramData/GooGet/repos/google_osconfig.repo.
557
+ class GooRepository
558
+ include Google::Apis::Core::Hashable
559
+
560
+ # Required. The name of the repository.
561
+ # Corresponds to the JSON property `name`
562
+ # @return [String]
563
+ attr_accessor :name
564
+
565
+ # Required. The url of the repository.
566
+ # Corresponds to the JSON property `url`
567
+ # @return [String]
568
+ attr_accessor :url
569
+
570
+ def initialize(**args)
571
+ update!(**args)
572
+ end
573
+
574
+ # Update properties of this object
575
+ def update!(**args)
576
+ @name = args[:name] if args.key?(:name)
577
+ @url = args[:url] if args.key?(:url)
578
+ end
579
+ end
580
+
581
+ # Googet patching is performed by running `googet update`.
582
+ class GooSettings
583
+ include Google::Apis::Core::Hashable
584
+
585
+ def initialize(**args)
586
+ update!(**args)
587
+ end
588
+
589
+ # Update properties of this object
590
+ def update!(**args)
591
+ end
592
+ end
593
+
594
+ # An OS Config resource representing a guest configuration policy. These
595
+ # policies represent the desired state for VM instance guest environments
596
+ # including packages to install or remove, package repository configurations,
597
+ # and software to install.
598
+ class GuestPolicy
599
+ include Google::Apis::Core::Hashable
600
+
601
+ # An assignment represents the group or groups of VM instances that the policy
602
+ # applies to.
603
+ # If an assignment is empty, it applies to all VM instances. Otherwise, the
604
+ # targeted VM instances must meet all the criteria specified. So if both
605
+ # labels and zones are specified, the policy applies to VM instances with those
606
+ # labels and in those zones.
607
+ # Corresponds to the JSON property `assignment`
608
+ # @return [Google::Apis::OsconfigV1beta::Assignment]
609
+ attr_accessor :assignment
610
+
611
+ # Output only. Time this guest policy was created.
612
+ # Corresponds to the JSON property `createTime`
613
+ # @return [String]
614
+ attr_accessor :create_time
615
+
616
+ # Description of the guest policy. Length of the description is limited
617
+ # to 1024 characters.
618
+ # Corresponds to the JSON property `description`
619
+ # @return [String]
620
+ attr_accessor :description
621
+
622
+ # The etag for this guest policy.
623
+ # If this is provided on update, it must match the server's etag.
624
+ # Corresponds to the JSON property `etag`
625
+ # @return [String]
626
+ attr_accessor :etag
627
+
628
+ # Required. Unique name of the resource in this project using one of the
629
+ # following
630
+ # forms:
631
+ # `projects/`project_number`/guestPolicies/`guest_policy_id``.
632
+ # Corresponds to the JSON property `name`
633
+ # @return [String]
634
+ attr_accessor :name
635
+
636
+ # A list of package repositories to configure on the VM instance. This is
637
+ # done before any other configs are applied so they can use these repos.
638
+ # Package repositories are only configured if the corresponding package
639
+ # manager(s) are available.
640
+ # Corresponds to the JSON property `packageRepositories`
641
+ # @return [Array<Google::Apis::OsconfigV1beta::PackageRepository>]
642
+ attr_accessor :package_repositories
643
+
644
+ # The software packages to be managed by this policy.
645
+ # Corresponds to the JSON property `packages`
646
+ # @return [Array<Google::Apis::OsconfigV1beta::Package>]
647
+ attr_accessor :packages
648
+
649
+ # A list of Recipes to install on the VM instance.
650
+ # Corresponds to the JSON property `recipes`
651
+ # @return [Array<Google::Apis::OsconfigV1beta::SoftwareRecipe>]
652
+ attr_accessor :recipes
653
+
654
+ # Output only. Last time this guest policy was updated.
655
+ # Corresponds to the JSON property `updateTime`
656
+ # @return [String]
657
+ attr_accessor :update_time
658
+
659
+ def initialize(**args)
660
+ update!(**args)
661
+ end
662
+
663
+ # Update properties of this object
664
+ def update!(**args)
665
+ @assignment = args[:assignment] if args.key?(:assignment)
666
+ @create_time = args[:create_time] if args.key?(:create_time)
667
+ @description = args[:description] if args.key?(:description)
668
+ @etag = args[:etag] if args.key?(:etag)
669
+ @name = args[:name] if args.key?(:name)
670
+ @package_repositories = args[:package_repositories] if args.key?(:package_repositories)
671
+ @packages = args[:packages] if args.key?(:packages)
672
+ @recipes = args[:recipes] if args.key?(:recipes)
673
+ @update_time = args[:update_time] if args.key?(:update_time)
674
+ end
675
+ end
676
+
677
+ # A response message for listing guest policies.
678
+ class ListGuestPoliciesResponse
679
+ include Google::Apis::Core::Hashable
680
+
681
+ # The list of GuestPolicies.
682
+ # Corresponds to the JSON property `guestPolicies`
683
+ # @return [Array<Google::Apis::OsconfigV1beta::GuestPolicy>]
684
+ attr_accessor :guest_policies
685
+
686
+ # A pagination token that can be used to get the next page
687
+ # of guest policies.
688
+ # Corresponds to the JSON property `nextPageToken`
689
+ # @return [String]
690
+ attr_accessor :next_page_token
691
+
692
+ def initialize(**args)
693
+ update!(**args)
694
+ end
695
+
696
+ # Update properties of this object
697
+ def update!(**args)
698
+ @guest_policies = args[:guest_policies] if args.key?(:guest_policies)
699
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
700
+ end
701
+ end
702
+
703
+ # A response message for listing patch deployments.
704
+ class ListPatchDeploymentsResponse
705
+ include Google::Apis::Core::Hashable
706
+
707
+ # A pagination token that can be used to get the next page of patch
708
+ # deployments.
709
+ # Corresponds to the JSON property `nextPageToken`
710
+ # @return [String]
711
+ attr_accessor :next_page_token
712
+
713
+ # The list of patch deployments.
714
+ # Corresponds to the JSON property `patchDeployments`
715
+ # @return [Array<Google::Apis::OsconfigV1beta::PatchDeployment>]
716
+ attr_accessor :patch_deployments
717
+
718
+ def initialize(**args)
719
+ update!(**args)
720
+ end
721
+
722
+ # Update properties of this object
723
+ def update!(**args)
724
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
725
+ @patch_deployments = args[:patch_deployments] if args.key?(:patch_deployments)
726
+ end
727
+ end
728
+
729
+ # A response message for listing the instances details for a patch job.
730
+ class ListPatchJobInstanceDetailsResponse
731
+ include Google::Apis::Core::Hashable
732
+
733
+ # A pagination token that can be used to get the next page of results.
734
+ # Corresponds to the JSON property `nextPageToken`
735
+ # @return [String]
736
+ attr_accessor :next_page_token
737
+
738
+ # A list of instance status.
739
+ # Corresponds to the JSON property `patchJobInstanceDetails`
740
+ # @return [Array<Google::Apis::OsconfigV1beta::PatchJobInstanceDetails>]
741
+ attr_accessor :patch_job_instance_details
742
+
743
+ def initialize(**args)
744
+ update!(**args)
745
+ end
746
+
747
+ # Update properties of this object
748
+ def update!(**args)
749
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
750
+ @patch_job_instance_details = args[:patch_job_instance_details] if args.key?(:patch_job_instance_details)
751
+ end
752
+ end
753
+
754
+ # A response message for listing patch jobs.
755
+ class ListPatchJobsResponse
756
+ include Google::Apis::Core::Hashable
757
+
758
+ # A pagination token that can be used to get the next page of results.
759
+ # Corresponds to the JSON property `nextPageToken`
760
+ # @return [String]
761
+ attr_accessor :next_page_token
762
+
763
+ # The list of patch jobs.
764
+ # Corresponds to the JSON property `patchJobs`
765
+ # @return [Array<Google::Apis::OsconfigV1beta::PatchJob>]
766
+ attr_accessor :patch_jobs
767
+
768
+ def initialize(**args)
769
+ update!(**args)
770
+ end
771
+
772
+ # Update properties of this object
773
+ def update!(**args)
774
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
775
+ @patch_jobs = args[:patch_jobs] if args.key?(:patch_jobs)
776
+ end
777
+ end
778
+
779
+ # A request message for getting the effective guest policy assigned to the
780
+ # instance.
781
+ class LookupEffectiveGuestPolicyRequest
782
+ include Google::Apis::Core::Hashable
783
+
784
+ # Architecture of OS running on the instance. The OS Config agent only
785
+ # provides this field for targeting if OS Inventory is enabled for that
786
+ # instance.
787
+ # Corresponds to the JSON property `osArchitecture`
788
+ # @return [String]
789
+ attr_accessor :os_architecture
790
+
791
+ # Short name of the OS running on the instance. The OS Config agent only
792
+ # provides this field for targeting if OS Inventory is enabled for that
793
+ # instance.
794
+ # Corresponds to the JSON property `osShortName`
795
+ # @return [String]
796
+ attr_accessor :os_short_name
797
+
798
+ # Version of the OS running on the instance. The OS Config agent only
799
+ # provides this field for targeting if OS Inventory is enabled for that
800
+ # VM instance.
801
+ # Corresponds to the JSON property `osVersion`
802
+ # @return [String]
803
+ attr_accessor :os_version
804
+
805
+ def initialize(**args)
806
+ update!(**args)
807
+ end
808
+
809
+ # Update properties of this object
810
+ def update!(**args)
811
+ @os_architecture = args[:os_architecture] if args.key?(:os_architecture)
812
+ @os_short_name = args[:os_short_name] if args.key?(:os_short_name)
813
+ @os_version = args[:os_version] if args.key?(:os_version)
814
+ end
815
+ end
816
+
817
+ # Represents a monthly schedule. An example of a valid monthly schedule is
818
+ # "on the third Tuesday of the month" or "on the 15th of the month".
819
+ class MonthlySchedule
820
+ include Google::Apis::Core::Hashable
821
+
822
+ # Required. One day of the month. 1-31 indicates the 1st to the 31st day. -1
823
+ # indicates the last day of the month.
824
+ # Months without the target day will be skipped. For example, a schedule to
825
+ # run "every month on the 31st" will not run in February, April, June, etc.
826
+ # Corresponds to the JSON property `monthDay`
827
+ # @return [Fixnum]
828
+ attr_accessor :month_day
829
+
830
+ # Represents one week day in a month. An example is "the 4th Sunday".
831
+ # Corresponds to the JSON property `weekDayOfMonth`
832
+ # @return [Google::Apis::OsconfigV1beta::WeekDayOfMonth]
833
+ attr_accessor :week_day_of_month
834
+
835
+ def initialize(**args)
836
+ update!(**args)
837
+ end
838
+
839
+ # Update properties of this object
840
+ def update!(**args)
841
+ @month_day = args[:month_day] if args.key?(:month_day)
842
+ @week_day_of_month = args[:week_day_of_month] if args.key?(:week_day_of_month)
843
+ end
844
+ end
845
+
846
+ # Sets the time for a one time patch deployment. Timestamp is in
847
+ # <a href="https://www.ietf.org/rfc/rfc3339.txt" target="_blank">RFC3339</a>
848
+ # text format.
849
+ class OneTimeSchedule
850
+ include Google::Apis::Core::Hashable
851
+
852
+ # Required. The desired patch job execution time.
853
+ # Corresponds to the JSON property `executeTime`
854
+ # @return [String]
855
+ attr_accessor :execute_time
856
+
857
+ def initialize(**args)
858
+ update!(**args)
859
+ end
860
+
861
+ # Update properties of this object
862
+ def update!(**args)
863
+ @execute_time = args[:execute_time] if args.key?(:execute_time)
864
+ end
865
+ end
866
+
867
+ # Package is a reference to the software package to be installed or removed.
868
+ # The agent on the VM instance uses the system package manager to apply the
869
+ # config.
870
+ # These are the commands that the agent uses to install or remove
871
+ # packages.
872
+ # Apt
873
+ # install: `apt-get update && apt-get -y install package1 package2 package3`
874
+ # remove: `apt-get -y remove package1 package2 package3`
875
+ # Yum
876
+ # install: `yum -y install package1 package2 package3`
877
+ # remove: `yum -y remove package1 package2 package3`
878
+ # Zypper
879
+ # install: `zypper install package1 package2 package3`
880
+ # remove: `zypper rm package1 package2`
881
+ # Googet
882
+ # install: `googet -noconfirm install package1 package2 package3`
883
+ # remove: `googet -noconfirm remove package1 package2 package3`
884
+ class Package
885
+ include Google::Apis::Core::Hashable
886
+
887
+ # The desired_state the agent should maintain for this package. The
888
+ # default is to ensure the package is installed.
889
+ # Corresponds to the JSON property `desiredState`
890
+ # @return [String]
891
+ attr_accessor :desired_state
892
+
893
+ # Type of package manager that can be used to install this package.
894
+ # If a system does not have the package manager, the package is not
895
+ # installed or removed no error message is returned. By default,
896
+ # or if you specify `ANY`,
897
+ # the agent attempts to install and remove this package using the default
898
+ # package manager. This is useful when creating a policy that applies to
899
+ # different types of systems.
900
+ # The default behavior is ANY.
901
+ # Corresponds to the JSON property `manager`
902
+ # @return [String]
903
+ attr_accessor :manager
904
+
905
+ # Required. The name of the package. A package is uniquely identified for
906
+ # conflict
907
+ # validation by checking the package name and the manager(s) that the
908
+ # package targets.
909
+ # Corresponds to the JSON property `name`
910
+ # @return [String]
911
+ attr_accessor :name
912
+
913
+ def initialize(**args)
914
+ update!(**args)
915
+ end
916
+
917
+ # Update properties of this object
918
+ def update!(**args)
919
+ @desired_state = args[:desired_state] if args.key?(:desired_state)
920
+ @manager = args[:manager] if args.key?(:manager)
921
+ @name = args[:name] if args.key?(:name)
922
+ end
923
+ end
924
+
925
+ # A package repository.
926
+ class PackageRepository
927
+ include Google::Apis::Core::Hashable
928
+
929
+ # Represents a single Apt package repository. This repository is added to
930
+ # a repo file that is stored at
931
+ # `/etc/apt/sources.list.d/google_osconfig.list`.
932
+ # Corresponds to the JSON property `apt`
933
+ # @return [Google::Apis::OsconfigV1beta::AptRepository]
934
+ attr_accessor :apt
935
+
936
+ # Represents a Goo package repository. These is added to a repo file
937
+ # that is stored at C:/ProgramData/GooGet/repos/google_osconfig.repo.
938
+ # Corresponds to the JSON property `goo`
939
+ # @return [Google::Apis::OsconfigV1beta::GooRepository]
940
+ attr_accessor :goo
941
+
942
+ # Represents a single Yum package repository. This repository is added to a
943
+ # repo file that is stored at `/etc/yum.repos.d/google_osconfig.repo`.
944
+ # Corresponds to the JSON property `yum`
945
+ # @return [Google::Apis::OsconfigV1beta::YumRepository]
946
+ attr_accessor :yum
947
+
948
+ # Represents a single Zypper package repository. This repository is added to a
949
+ # repo file that is stored at `/etc/zypp/repos.d/google_osconfig.repo`.
950
+ # Corresponds to the JSON property `zypper`
951
+ # @return [Google::Apis::OsconfigV1beta::ZypperRepository]
952
+ attr_accessor :zypper
953
+
954
+ def initialize(**args)
955
+ update!(**args)
956
+ end
957
+
958
+ # Update properties of this object
959
+ def update!(**args)
960
+ @apt = args[:apt] if args.key?(:apt)
961
+ @goo = args[:goo] if args.key?(:goo)
962
+ @yum = args[:yum] if args.key?(:yum)
963
+ @zypper = args[:zypper] if args.key?(:zypper)
964
+ end
965
+ end
966
+
967
+ # Patch configuration specifications. Contains details on how to apply the
968
+ # patch(es) to a VM instance.
969
+ class PatchConfig
970
+ include Google::Apis::Core::Hashable
971
+
972
+ # Apt patching is completed by executing `apt-get update && apt-get
973
+ # upgrade`. Additional options can be set to control how this is executed.
974
+ # Corresponds to the JSON property `apt`
975
+ # @return [Google::Apis::OsconfigV1beta::AptSettings]
976
+ attr_accessor :apt
977
+
978
+ # Googet patching is performed by running `googet update`.
979
+ # Corresponds to the JSON property `goo`
980
+ # @return [Google::Apis::OsconfigV1beta::GooSettings]
981
+ attr_accessor :goo
982
+
983
+ # A step that runs an executable for a PatchJob.
984
+ # Corresponds to the JSON property `postStep`
985
+ # @return [Google::Apis::OsconfigV1beta::ExecStep]
986
+ attr_accessor :post_step
987
+
988
+ # A step that runs an executable for a PatchJob.
989
+ # Corresponds to the JSON property `preStep`
990
+ # @return [Google::Apis::OsconfigV1beta::ExecStep]
991
+ attr_accessor :pre_step
992
+
993
+ # Post-patch reboot settings.
994
+ # Corresponds to the JSON property `rebootConfig`
995
+ # @return [String]
996
+ attr_accessor :reboot_config
997
+
998
+ # Windows patching is performed using the Windows Update Agent.
999
+ # Corresponds to the JSON property `windowsUpdate`
1000
+ # @return [Google::Apis::OsconfigV1beta::WindowsUpdateSettings]
1001
+ attr_accessor :windows_update
1002
+
1003
+ # Yum patching is performed by executing `yum update`. Additional options
1004
+ # can be set to control how this is executed.
1005
+ # Note that not all settings are supported on all platforms.
1006
+ # Corresponds to the JSON property `yum`
1007
+ # @return [Google::Apis::OsconfigV1beta::YumSettings]
1008
+ attr_accessor :yum
1009
+
1010
+ # Zypper patching is performed by running `zypper patch`.
1011
+ # See also https://en.opensuse.org/SDB:Zypper_manual.
1012
+ # Corresponds to the JSON property `zypper`
1013
+ # @return [Google::Apis::OsconfigV1beta::ZypperSettings]
1014
+ attr_accessor :zypper
1015
+
1016
+ def initialize(**args)
1017
+ update!(**args)
1018
+ end
1019
+
1020
+ # Update properties of this object
1021
+ def update!(**args)
1022
+ @apt = args[:apt] if args.key?(:apt)
1023
+ @goo = args[:goo] if args.key?(:goo)
1024
+ @post_step = args[:post_step] if args.key?(:post_step)
1025
+ @pre_step = args[:pre_step] if args.key?(:pre_step)
1026
+ @reboot_config = args[:reboot_config] if args.key?(:reboot_config)
1027
+ @windows_update = args[:windows_update] if args.key?(:windows_update)
1028
+ @yum = args[:yum] if args.key?(:yum)
1029
+ @zypper = args[:zypper] if args.key?(:zypper)
1030
+ end
1031
+ end
1032
+
1033
+ # Patch deployments are configurations that individual patch jobs use to
1034
+ # complete a patch. These configurations include instance filter, package
1035
+ # repository settings, and a schedule. For more information about creating and
1036
+ # managing patch deployments, see [Scheduling patch
1037
+ # jobs](/compute/docs/os-patch-management/schedule-patch-jobs).
1038
+ class PatchDeployment
1039
+ include Google::Apis::Core::Hashable
1040
+
1041
+ # Output only. Time the patch deployment was created. Timestamp is in
1042
+ # <a href="https://www.ietf.org/rfc/rfc3339.txt" target="_blank">RFC3339</a>
1043
+ # text format.
1044
+ # Corresponds to the JSON property `createTime`
1045
+ # @return [String]
1046
+ attr_accessor :create_time
1047
+
1048
+ # Optional. Description of the patch deployment. Length of the description is
1049
+ # limited
1050
+ # to 1024 characters.
1051
+ # Corresponds to the JSON property `description`
1052
+ # @return [String]
1053
+ attr_accessor :description
1054
+
1055
+ # Optional. Duration of the patch. After the duration ends, the patch times out.
1056
+ # Corresponds to the JSON property `duration`
1057
+ # @return [String]
1058
+ attr_accessor :duration
1059
+
1060
+ # A filter to target VM instances for patching. The targeted
1061
+ # VMs must meet all criteria specified. So if both labels and zones are
1062
+ # specified, the patch job targets only VMs with those labels and in those
1063
+ # zones.
1064
+ # Corresponds to the JSON property `instanceFilter`
1065
+ # @return [Google::Apis::OsconfigV1beta::PatchInstanceFilter]
1066
+ attr_accessor :instance_filter
1067
+
1068
+ # Output only. The last time a patch job was started by this deployment.
1069
+ # Timestamp is in
1070
+ # <a href="https://www.ietf.org/rfc/rfc3339.txt" target="_blank">RFC3339</a>
1071
+ # text format.
1072
+ # Corresponds to the JSON property `lastExecuteTime`
1073
+ # @return [String]
1074
+ attr_accessor :last_execute_time
1075
+
1076
+ # Unique name for the patch deployment resource in a project. The patch
1077
+ # deployment name is in the form:
1078
+ # `projects/`project_id`/patchDeployments/`patch_deployment_id``.
1079
+ # This field is ignored when you create a new patch deployment.
1080
+ # Corresponds to the JSON property `name`
1081
+ # @return [String]
1082
+ attr_accessor :name
1083
+
1084
+ # Sets the time for a one time patch deployment. Timestamp is in
1085
+ # <a href="https://www.ietf.org/rfc/rfc3339.txt" target="_blank">RFC3339</a>
1086
+ # text format.
1087
+ # Corresponds to the JSON property `oneTimeSchedule`
1088
+ # @return [Google::Apis::OsconfigV1beta::OneTimeSchedule]
1089
+ attr_accessor :one_time_schedule
1090
+
1091
+ # Patch configuration specifications. Contains details on how to apply the
1092
+ # patch(es) to a VM instance.
1093
+ # Corresponds to the JSON property `patchConfig`
1094
+ # @return [Google::Apis::OsconfigV1beta::PatchConfig]
1095
+ attr_accessor :patch_config
1096
+
1097
+ # Sets the time for recurring patch deployments.
1098
+ # Corresponds to the JSON property `recurringSchedule`
1099
+ # @return [Google::Apis::OsconfigV1beta::RecurringSchedule]
1100
+ attr_accessor :recurring_schedule
1101
+
1102
+ # Output only. Time the patch deployment was last updated. Timestamp is in
1103
+ # <a href="https://www.ietf.org/rfc/rfc3339.txt" target="_blank">RFC3339</a>
1104
+ # text format.
1105
+ # Corresponds to the JSON property `updateTime`
1106
+ # @return [String]
1107
+ attr_accessor :update_time
1108
+
1109
+ def initialize(**args)
1110
+ update!(**args)
1111
+ end
1112
+
1113
+ # Update properties of this object
1114
+ def update!(**args)
1115
+ @create_time = args[:create_time] if args.key?(:create_time)
1116
+ @description = args[:description] if args.key?(:description)
1117
+ @duration = args[:duration] if args.key?(:duration)
1118
+ @instance_filter = args[:instance_filter] if args.key?(:instance_filter)
1119
+ @last_execute_time = args[:last_execute_time] if args.key?(:last_execute_time)
1120
+ @name = args[:name] if args.key?(:name)
1121
+ @one_time_schedule = args[:one_time_schedule] if args.key?(:one_time_schedule)
1122
+ @patch_config = args[:patch_config] if args.key?(:patch_config)
1123
+ @recurring_schedule = args[:recurring_schedule] if args.key?(:recurring_schedule)
1124
+ @update_time = args[:update_time] if args.key?(:update_time)
1125
+ end
1126
+ end
1127
+
1128
+ # A filter to target VM instances for patching. The targeted
1129
+ # VMs must meet all criteria specified. So if both labels and zones are
1130
+ # specified, the patch job targets only VMs with those labels and in those
1131
+ # zones.
1132
+ class PatchInstanceFilter
1133
+ include Google::Apis::Core::Hashable
1134
+
1135
+ # Target all VM instances in the project. If true, no other criteria is
1136
+ # permitted.
1137
+ # Corresponds to the JSON property `all`
1138
+ # @return [Boolean]
1139
+ attr_accessor :all
1140
+ alias_method :all?, :all
1141
+
1142
+ # Targets VM instances matching at least one of these label sets. This allows
1143
+ # targeting of disparate groups, for example "env=prod or env=staging".
1144
+ # Corresponds to the JSON property `groupLabels`
1145
+ # @return [Array<Google::Apis::OsconfigV1beta::PatchInstanceFilterGroupLabel>]
1146
+ attr_accessor :group_labels
1147
+
1148
+ # Targets VMs whose name starts with one of these prefixes. Similar to
1149
+ # labels, this is another way to group VMs when targeting configs, for
1150
+ # example prefix="prod-".
1151
+ # Corresponds to the JSON property `instanceNamePrefixes`
1152
+ # @return [Array<String>]
1153
+ attr_accessor :instance_name_prefixes
1154
+
1155
+ # Targets any of the VM instances specified. Instances are specified by their
1156
+ # URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME],
1157
+ # `projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]`, or
1158
+ # `https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/
1159
+ # instances/[INSTANCE_NAME]`
1160
+ # Corresponds to the JSON property `instances`
1161
+ # @return [Array<String>]
1162
+ attr_accessor :instances
1163
+
1164
+ # Targets VM instances in ANY of these zones. Leave empty to target VM
1165
+ # instances in any zone.
1166
+ # Corresponds to the JSON property `zones`
1167
+ # @return [Array<String>]
1168
+ attr_accessor :zones
1169
+
1170
+ def initialize(**args)
1171
+ update!(**args)
1172
+ end
1173
+
1174
+ # Update properties of this object
1175
+ def update!(**args)
1176
+ @all = args[:all] if args.key?(:all)
1177
+ @group_labels = args[:group_labels] if args.key?(:group_labels)
1178
+ @instance_name_prefixes = args[:instance_name_prefixes] if args.key?(:instance_name_prefixes)
1179
+ @instances = args[:instances] if args.key?(:instances)
1180
+ @zones = args[:zones] if args.key?(:zones)
1181
+ end
1182
+ end
1183
+
1184
+ # Represents a group of VMs that can be identified as having all these
1185
+ # labels, for example "env=prod and app=web".
1186
+ class PatchInstanceFilterGroupLabel
1187
+ include Google::Apis::Core::Hashable
1188
+
1189
+ # Google Compute Engine instance labels that must be present for a VM
1190
+ # instance to be targeted by this filter.
1191
+ # Corresponds to the JSON property `labels`
1192
+ # @return [Hash<String,String>]
1193
+ attr_accessor :labels
1194
+
1195
+ def initialize(**args)
1196
+ update!(**args)
1197
+ end
1198
+
1199
+ # Update properties of this object
1200
+ def update!(**args)
1201
+ @labels = args[:labels] if args.key?(:labels)
1202
+ end
1203
+ end
1204
+
1205
+ # A high level representation of a patch job that is either in progress
1206
+ # or has completed.
1207
+ # Instances details are not included in the job. To paginate through instance
1208
+ # details, use ListPatchJobInstanceDetails.
1209
+ # For more information about patch jobs, see
1210
+ # [Creating patch jobs](/compute/docs/os-patch-management/create-patch-job).
1211
+ class PatchJob
1212
+ include Google::Apis::Core::Hashable
1213
+
1214
+ # Time this patch job was created.
1215
+ # Corresponds to the JSON property `createTime`
1216
+ # @return [String]
1217
+ attr_accessor :create_time
1218
+
1219
+ # Description of the patch job. Length of the description is limited
1220
+ # to 1024 characters.
1221
+ # Corresponds to the JSON property `description`
1222
+ # @return [String]
1223
+ attr_accessor :description
1224
+
1225
+ # Display name for this patch job. This is not a unique identifier.
1226
+ # Corresponds to the JSON property `displayName`
1227
+ # @return [String]
1228
+ attr_accessor :display_name
1229
+
1230
+ # If this patch job is a dry run, the agent reports that it has
1231
+ # finished without running any updates on the VM instance.
1232
+ # Corresponds to the JSON property `dryRun`
1233
+ # @return [Boolean]
1234
+ attr_accessor :dry_run
1235
+ alias_method :dry_run?, :dry_run
1236
+
1237
+ # Duration of the patch job. After the duration ends, the
1238
+ # patch job times out.
1239
+ # Corresponds to the JSON property `duration`
1240
+ # @return [String]
1241
+ attr_accessor :duration
1242
+
1243
+ # If this patch job failed, this message provides information about the
1244
+ # failure.
1245
+ # Corresponds to the JSON property `errorMessage`
1246
+ # @return [String]
1247
+ attr_accessor :error_message
1248
+
1249
+ # A summary of the current patch state across all instances that this patch
1250
+ # job affects. Contains counts of instances in different states. These states
1251
+ # map to `InstancePatchState`. List patch job instance details to see the
1252
+ # specific states of each instance.
1253
+ # Corresponds to the JSON property `instanceDetailsSummary`
1254
+ # @return [Google::Apis::OsconfigV1beta::PatchJobInstanceDetailsSummary]
1255
+ attr_accessor :instance_details_summary
1256
+
1257
+ # A filter to target VM instances for patching. The targeted
1258
+ # VMs must meet all criteria specified. So if both labels and zones are
1259
+ # specified, the patch job targets only VMs with those labels and in those
1260
+ # zones.
1261
+ # Corresponds to the JSON property `instanceFilter`
1262
+ # @return [Google::Apis::OsconfigV1beta::PatchInstanceFilter]
1263
+ attr_accessor :instance_filter
1264
+
1265
+ # Unique identifier for this patch job in the form
1266
+ # `projects/*/patchJobs/*`
1267
+ # Corresponds to the JSON property `name`
1268
+ # @return [String]
1269
+ attr_accessor :name
1270
+
1271
+ # Patch configuration specifications. Contains details on how to apply the
1272
+ # patch(es) to a VM instance.
1273
+ # Corresponds to the JSON property `patchConfig`
1274
+ # @return [Google::Apis::OsconfigV1beta::PatchConfig]
1275
+ attr_accessor :patch_config
1276
+
1277
+ # Output only. Name of the patch deployment that created this patch job.
1278
+ # Corresponds to the JSON property `patchDeployment`
1279
+ # @return [String]
1280
+ attr_accessor :patch_deployment
1281
+
1282
+ # Reflects the overall progress of the patch job in the range of
1283
+ # 0.0 being no progress to 100.0 being complete.
1284
+ # Corresponds to the JSON property `percentComplete`
1285
+ # @return [Float]
1286
+ attr_accessor :percent_complete
1287
+
1288
+ # The current state of the PatchJob .
1289
+ # Corresponds to the JSON property `state`
1290
+ # @return [String]
1291
+ attr_accessor :state
1292
+
1293
+ # Last time this patch job was updated.
1294
+ # Corresponds to the JSON property `updateTime`
1295
+ # @return [String]
1296
+ attr_accessor :update_time
1297
+
1298
+ def initialize(**args)
1299
+ update!(**args)
1300
+ end
1301
+
1302
+ # Update properties of this object
1303
+ def update!(**args)
1304
+ @create_time = args[:create_time] if args.key?(:create_time)
1305
+ @description = args[:description] if args.key?(:description)
1306
+ @display_name = args[:display_name] if args.key?(:display_name)
1307
+ @dry_run = args[:dry_run] if args.key?(:dry_run)
1308
+ @duration = args[:duration] if args.key?(:duration)
1309
+ @error_message = args[:error_message] if args.key?(:error_message)
1310
+ @instance_details_summary = args[:instance_details_summary] if args.key?(:instance_details_summary)
1311
+ @instance_filter = args[:instance_filter] if args.key?(:instance_filter)
1312
+ @name = args[:name] if args.key?(:name)
1313
+ @patch_config = args[:patch_config] if args.key?(:patch_config)
1314
+ @patch_deployment = args[:patch_deployment] if args.key?(:patch_deployment)
1315
+ @percent_complete = args[:percent_complete] if args.key?(:percent_complete)
1316
+ @state = args[:state] if args.key?(:state)
1317
+ @update_time = args[:update_time] if args.key?(:update_time)
1318
+ end
1319
+ end
1320
+
1321
+ # Patch details for a VM instance. For more information about reviewing VM
1322
+ # instance details, see
1323
+ # [Listing all VM instance details for a specific patch
1324
+ # job](/compute/docs/os-patch-management/manage-patch-jobs#list-instance-details)
1325
+ # .
1326
+ class PatchJobInstanceDetails
1327
+ include Google::Apis::Core::Hashable
1328
+
1329
+ # The number of times the agent that the agent attempts to apply the patch.
1330
+ # Corresponds to the JSON property `attemptCount`
1331
+ # @return [Fixnum]
1332
+ attr_accessor :attempt_count
1333
+
1334
+ # If the patch fails, this field provides the reason.
1335
+ # Corresponds to the JSON property `failureReason`
1336
+ # @return [String]
1337
+ attr_accessor :failure_reason
1338
+
1339
+ # The unique identifier for the instance. This identifier is
1340
+ # defined by the server.
1341
+ # Corresponds to the JSON property `instanceSystemId`
1342
+ # @return [String]
1343
+ attr_accessor :instance_system_id
1344
+
1345
+ # The instance name in the form `projects/*/zones/*/instances/*`
1346
+ # Corresponds to the JSON property `name`
1347
+ # @return [String]
1348
+ attr_accessor :name
1349
+
1350
+ # Current state of instance patch.
1351
+ # Corresponds to the JSON property `state`
1352
+ # @return [String]
1353
+ attr_accessor :state
1354
+
1355
+ def initialize(**args)
1356
+ update!(**args)
1357
+ end
1358
+
1359
+ # Update properties of this object
1360
+ def update!(**args)
1361
+ @attempt_count = args[:attempt_count] if args.key?(:attempt_count)
1362
+ @failure_reason = args[:failure_reason] if args.key?(:failure_reason)
1363
+ @instance_system_id = args[:instance_system_id] if args.key?(:instance_system_id)
1364
+ @name = args[:name] if args.key?(:name)
1365
+ @state = args[:state] if args.key?(:state)
1366
+ end
1367
+ end
1368
+
1369
+ # A summary of the current patch state across all instances that this patch
1370
+ # job affects. Contains counts of instances in different states. These states
1371
+ # map to `InstancePatchState`. List patch job instance details to see the
1372
+ # specific states of each instance.
1373
+ class PatchJobInstanceDetailsSummary
1374
+ include Google::Apis::Core::Hashable
1375
+
1376
+ # Number of instances that have acked and will start shortly.
1377
+ # Corresponds to the JSON property `ackedInstanceCount`
1378
+ # @return [Fixnum]
1379
+ attr_accessor :acked_instance_count
1380
+
1381
+ # Number of instances that are applying patches.
1382
+ # Corresponds to the JSON property `applyingPatchesInstanceCount`
1383
+ # @return [Fixnum]
1384
+ attr_accessor :applying_patches_instance_count
1385
+
1386
+ # Number of instances that are downloading patches.
1387
+ # Corresponds to the JSON property `downloadingPatchesInstanceCount`
1388
+ # @return [Fixnum]
1389
+ attr_accessor :downloading_patches_instance_count
1390
+
1391
+ # Number of instances that failed.
1392
+ # Corresponds to the JSON property `failedInstanceCount`
1393
+ # @return [Fixnum]
1394
+ attr_accessor :failed_instance_count
1395
+
1396
+ # Number of instances that are inactive.
1397
+ # Corresponds to the JSON property `inactiveInstanceCount`
1398
+ # @return [Fixnum]
1399
+ attr_accessor :inactive_instance_count
1400
+
1401
+ # Number of instances that do not appear to be running the agent. Check to
1402
+ # ensure that the agent is installed, running, and able to communicate with
1403
+ # the service.
1404
+ # Corresponds to the JSON property `noAgentDetectedInstanceCount`
1405
+ # @return [Fixnum]
1406
+ attr_accessor :no_agent_detected_instance_count
1407
+
1408
+ # Number of instances notified about patch job.
1409
+ # Corresponds to the JSON property `notifiedInstanceCount`
1410
+ # @return [Fixnum]
1411
+ attr_accessor :notified_instance_count
1412
+
1413
+ # Number of instances pending patch job.
1414
+ # Corresponds to the JSON property `pendingInstanceCount`
1415
+ # @return [Fixnum]
1416
+ attr_accessor :pending_instance_count
1417
+
1418
+ # Number of instances that are running the post-patch step.
1419
+ # Corresponds to the JSON property `postPatchStepInstanceCount`
1420
+ # @return [Fixnum]
1421
+ attr_accessor :post_patch_step_instance_count
1422
+
1423
+ # Number of instances that are running the pre-patch step.
1424
+ # Corresponds to the JSON property `prePatchStepInstanceCount`
1425
+ # @return [Fixnum]
1426
+ attr_accessor :pre_patch_step_instance_count
1427
+
1428
+ # Number of instances rebooting.
1429
+ # Corresponds to the JSON property `rebootingInstanceCount`
1430
+ # @return [Fixnum]
1431
+ attr_accessor :rebooting_instance_count
1432
+
1433
+ # Number of instances that have started.
1434
+ # Corresponds to the JSON property `startedInstanceCount`
1435
+ # @return [Fixnum]
1436
+ attr_accessor :started_instance_count
1437
+
1438
+ # Number of instances that have completed successfully.
1439
+ # Corresponds to the JSON property `succeededInstanceCount`
1440
+ # @return [Fixnum]
1441
+ attr_accessor :succeeded_instance_count
1442
+
1443
+ # Number of instances that require reboot.
1444
+ # Corresponds to the JSON property `succeededRebootRequiredInstanceCount`
1445
+ # @return [Fixnum]
1446
+ attr_accessor :succeeded_reboot_required_instance_count
1447
+
1448
+ # Number of instances that exceeded the time out while applying the patch.
1449
+ # Corresponds to the JSON property `timedOutInstanceCount`
1450
+ # @return [Fixnum]
1451
+ attr_accessor :timed_out_instance_count
1452
+
1453
+ def initialize(**args)
1454
+ update!(**args)
1455
+ end
1456
+
1457
+ # Update properties of this object
1458
+ def update!(**args)
1459
+ @acked_instance_count = args[:acked_instance_count] if args.key?(:acked_instance_count)
1460
+ @applying_patches_instance_count = args[:applying_patches_instance_count] if args.key?(:applying_patches_instance_count)
1461
+ @downloading_patches_instance_count = args[:downloading_patches_instance_count] if args.key?(:downloading_patches_instance_count)
1462
+ @failed_instance_count = args[:failed_instance_count] if args.key?(:failed_instance_count)
1463
+ @inactive_instance_count = args[:inactive_instance_count] if args.key?(:inactive_instance_count)
1464
+ @no_agent_detected_instance_count = args[:no_agent_detected_instance_count] if args.key?(:no_agent_detected_instance_count)
1465
+ @notified_instance_count = args[:notified_instance_count] if args.key?(:notified_instance_count)
1466
+ @pending_instance_count = args[:pending_instance_count] if args.key?(:pending_instance_count)
1467
+ @post_patch_step_instance_count = args[:post_patch_step_instance_count] if args.key?(:post_patch_step_instance_count)
1468
+ @pre_patch_step_instance_count = args[:pre_patch_step_instance_count] if args.key?(:pre_patch_step_instance_count)
1469
+ @rebooting_instance_count = args[:rebooting_instance_count] if args.key?(:rebooting_instance_count)
1470
+ @started_instance_count = args[:started_instance_count] if args.key?(:started_instance_count)
1471
+ @succeeded_instance_count = args[:succeeded_instance_count] if args.key?(:succeeded_instance_count)
1472
+ @succeeded_reboot_required_instance_count = args[:succeeded_reboot_required_instance_count] if args.key?(:succeeded_reboot_required_instance_count)
1473
+ @timed_out_instance_count = args[:timed_out_instance_count] if args.key?(:timed_out_instance_count)
1474
+ end
1475
+ end
1476
+
1477
+ # Sets the time for recurring patch deployments.
1478
+ class RecurringSchedule
1479
+ include Google::Apis::Core::Hashable
1480
+
1481
+ # Optional. The end time at which a recurring patch deployment schedule is no
1482
+ # longer
1483
+ # active.
1484
+ # Corresponds to the JSON property `endTime`
1485
+ # @return [String]
1486
+ attr_accessor :end_time
1487
+
1488
+ # Required. The frequency unit of this recurring schedule.
1489
+ # Corresponds to the JSON property `frequency`
1490
+ # @return [String]
1491
+ attr_accessor :frequency
1492
+
1493
+ # Output only. The time the last patch job ran successfully.
1494
+ # Corresponds to the JSON property `lastExecuteTime`
1495
+ # @return [String]
1496
+ attr_accessor :last_execute_time
1497
+
1498
+ # Represents a monthly schedule. An example of a valid monthly schedule is
1499
+ # "on the third Tuesday of the month" or "on the 15th of the month".
1500
+ # Corresponds to the JSON property `monthly`
1501
+ # @return [Google::Apis::OsconfigV1beta::MonthlySchedule]
1502
+ attr_accessor :monthly
1503
+
1504
+ # Output only. The time the next patch job is scheduled to run.
1505
+ # Corresponds to the JSON property `nextExecuteTime`
1506
+ # @return [String]
1507
+ attr_accessor :next_execute_time
1508
+
1509
+ # Optional. The time that the recurring schedule becomes effective.
1510
+ # Defaults to `create_time` of the patch deployment.
1511
+ # Corresponds to the JSON property `startTime`
1512
+ # @return [String]
1513
+ attr_accessor :start_time
1514
+
1515
+ # Represents a time of day. The date and time zone are either not significant
1516
+ # or are specified elsewhere. An API may choose to allow leap seconds. Related
1517
+ # types are google.type.Date and `google.protobuf.Timestamp`.
1518
+ # Corresponds to the JSON property `timeOfDay`
1519
+ # @return [Google::Apis::OsconfigV1beta::TimeOfDay]
1520
+ attr_accessor :time_of_day
1521
+
1522
+ # Represents a time zone from the
1523
+ # [IANA Time Zone Database](https://www.iana.org/time-zones).
1524
+ # Corresponds to the JSON property `timeZone`
1525
+ # @return [Google::Apis::OsconfigV1beta::TimeZone]
1526
+ attr_accessor :time_zone
1527
+
1528
+ # Represents a weekly schedule.
1529
+ # Corresponds to the JSON property `weekly`
1530
+ # @return [Google::Apis::OsconfigV1beta::WeeklySchedule]
1531
+ attr_accessor :weekly
1532
+
1533
+ def initialize(**args)
1534
+ update!(**args)
1535
+ end
1536
+
1537
+ # Update properties of this object
1538
+ def update!(**args)
1539
+ @end_time = args[:end_time] if args.key?(:end_time)
1540
+ @frequency = args[:frequency] if args.key?(:frequency)
1541
+ @last_execute_time = args[:last_execute_time] if args.key?(:last_execute_time)
1542
+ @monthly = args[:monthly] if args.key?(:monthly)
1543
+ @next_execute_time = args[:next_execute_time] if args.key?(:next_execute_time)
1544
+ @start_time = args[:start_time] if args.key?(:start_time)
1545
+ @time_of_day = args[:time_of_day] if args.key?(:time_of_day)
1546
+ @time_zone = args[:time_zone] if args.key?(:time_zone)
1547
+ @weekly = args[:weekly] if args.key?(:weekly)
1548
+ end
1549
+ end
1550
+
1551
+ # A software recipe is a set of instructions for installing and configuring a
1552
+ # piece of software. It consists of a set of artifacts that are
1553
+ # downloaded, and a set of steps that install, configure, and/or update the
1554
+ # software.
1555
+ # Recipes support installing and updating software from artifacts in the
1556
+ # following formats:
1557
+ # Zip archive, Tar archive, Windows MSI, Debian package, and RPM package.
1558
+ # Additionally, recipes support executing a script (either defined in a file or
1559
+ # directly in this api) in bash, sh, cmd, and powershell.
1560
+ # Updating a software recipe
1561
+ # If a recipe is assigned to an instance and there is a recipe with the same
1562
+ # name but a lower version already installed and the assigned state
1563
+ # of the recipe is `INSTALLED_KEEP_UPDATED`, then the recipe is updated to
1564
+ # the new version.
1565
+ # Script Working Directories
1566
+ # Each script or execution step is run in its own temporary directory which
1567
+ # is deleted after completing the step.
1568
+ class SoftwareRecipe
1569
+ include Google::Apis::Core::Hashable
1570
+
1571
+ # Resources available to be used in the steps in the recipe.
1572
+ # Corresponds to the JSON property `artifacts`
1573
+ # @return [Array<Google::Apis::OsconfigV1beta::SoftwareRecipeArtifact>]
1574
+ attr_accessor :artifacts
1575
+
1576
+ # Default is INSTALLED. The desired state the agent should maintain for this
1577
+ # recipe.
1578
+ # INSTALLED: The software recipe is installed on the instance but
1579
+ # won't be updated to new versions.
1580
+ # INSTALLED_KEEP_UPDATED: The software recipe is installed on the
1581
+ # instance. The recipe is updated to a higher
1582
+ # version, if a higher version of the recipe is
1583
+ # assigned to this instance.
1584
+ # REMOVE: Remove is unsupported for software recipes and attempts to
1585
+ # create or update a recipe to the REMOVE state is rejected.
1586
+ # Corresponds to the JSON property `desiredState`
1587
+ # @return [String]
1588
+ attr_accessor :desired_state
1589
+
1590
+ # Actions to be taken for installing this recipe. On failure it stops
1591
+ # executing steps and does not attempt another installation. Any steps taken
1592
+ # (including partially completed steps) are not rolled back.
1593
+ # Corresponds to the JSON property `installSteps`
1594
+ # @return [Array<Google::Apis::OsconfigV1beta::SoftwareRecipeStep>]
1595
+ attr_accessor :install_steps
1596
+
1597
+ # Required. Unique identifier for the recipe. Only one recipe with a given name
1598
+ # is
1599
+ # installed on an instance.
1600
+ # Names are also used to identify resources which helps to determine whether
1601
+ # guest policies have conflicts. This means that requests to create multiple
1602
+ # recipes with the same name and version are rejected since they
1603
+ # could potentially have conflicting assignments.
1604
+ # Corresponds to the JSON property `name`
1605
+ # @return [String]
1606
+ attr_accessor :name
1607
+
1608
+ # Actions to be taken for updating this recipe. On failure it stops
1609
+ # executing steps and does not attempt another update for this recipe. Any
1610
+ # steps taken (including partially completed steps) are not rolled back.
1611
+ # Corresponds to the JSON property `updateSteps`
1612
+ # @return [Array<Google::Apis::OsconfigV1beta::SoftwareRecipeStep>]
1613
+ attr_accessor :update_steps
1614
+
1615
+ # The version of this software recipe. Version can be up to 4 period
1616
+ # separated numbers (e.g. 12.34.56.78).
1617
+ # Corresponds to the JSON property `version`
1618
+ # @return [String]
1619
+ attr_accessor :version
1620
+
1621
+ def initialize(**args)
1622
+ update!(**args)
1623
+ end
1624
+
1625
+ # Update properties of this object
1626
+ def update!(**args)
1627
+ @artifacts = args[:artifacts] if args.key?(:artifacts)
1628
+ @desired_state = args[:desired_state] if args.key?(:desired_state)
1629
+ @install_steps = args[:install_steps] if args.key?(:install_steps)
1630
+ @name = args[:name] if args.key?(:name)
1631
+ @update_steps = args[:update_steps] if args.key?(:update_steps)
1632
+ @version = args[:version] if args.key?(:version)
1633
+ end
1634
+ end
1635
+
1636
+ # Specifies a resource to be used in the recipe.
1637
+ class SoftwareRecipeArtifact
1638
+ include Google::Apis::Core::Hashable
1639
+
1640
+ # Defaults to false. When false, recipes are subject to validations
1641
+ # based on the artifact type:
1642
+ # Remote: A checksum must be specified, and only protocols with
1643
+ # transport-layer security are permitted.
1644
+ # GCS: An object generation number must be specified.
1645
+ # Corresponds to the JSON property `allowInsecure`
1646
+ # @return [Boolean]
1647
+ attr_accessor :allow_insecure
1648
+ alias_method :allow_insecure?, :allow_insecure
1649
+
1650
+ # Specifies an artifact available as a Google Cloud Storage object.
1651
+ # Corresponds to the JSON property `gcs`
1652
+ # @return [Google::Apis::OsconfigV1beta::SoftwareRecipeArtifactGcs]
1653
+ attr_accessor :gcs
1654
+
1655
+ # Required. Id of the artifact, which the installation and update steps of this
1656
+ # recipe can reference. Artifacts in a recipe cannot have the same id.
1657
+ # Corresponds to the JSON property `id`
1658
+ # @return [String]
1659
+ attr_accessor :id
1660
+
1661
+ # Specifies an artifact available via some URI.
1662
+ # Corresponds to the JSON property `remote`
1663
+ # @return [Google::Apis::OsconfigV1beta::SoftwareRecipeArtifactRemote]
1664
+ attr_accessor :remote
1665
+
1666
+ def initialize(**args)
1667
+ update!(**args)
1668
+ end
1669
+
1670
+ # Update properties of this object
1671
+ def update!(**args)
1672
+ @allow_insecure = args[:allow_insecure] if args.key?(:allow_insecure)
1673
+ @gcs = args[:gcs] if args.key?(:gcs)
1674
+ @id = args[:id] if args.key?(:id)
1675
+ @remote = args[:remote] if args.key?(:remote)
1676
+ end
1677
+ end
1678
+
1679
+ # Specifies an artifact available as a Google Cloud Storage object.
1680
+ class SoftwareRecipeArtifactGcs
1681
+ include Google::Apis::Core::Hashable
1682
+
1683
+ # Bucket of the Google Cloud Storage object.
1684
+ # Given an example URL:
1685
+ # `https://storage.googleapis.com/my-bucket/foo/bar#1234567`
1686
+ # this value would be `my-bucket`.
1687
+ # Corresponds to the JSON property `bucket`
1688
+ # @return [String]
1689
+ attr_accessor :bucket
1690
+
1691
+ # Must be provided if allow_insecure is false.
1692
+ # Generation number of the Google Cloud Storage object.
1693
+ # `https://storage.googleapis.com/my-bucket/foo/bar#1234567`
1694
+ # this value would be `1234567`.
1695
+ # Corresponds to the JSON property `generation`
1696
+ # @return [Fixnum]
1697
+ attr_accessor :generation
1698
+
1699
+ # Name of the Google Cloud Storage object.
1700
+ # As specified [here]
1701
+ # (https://cloud.google.com/storage/docs/naming#objectnames)
1702
+ # Given an example URL:
1703
+ # `https://storage.googleapis.com/my-bucket/foo/bar#1234567`
1704
+ # this value would be `foo/bar`.
1705
+ # Corresponds to the JSON property `object`
1706
+ # @return [String]
1707
+ attr_accessor :object
1708
+
1709
+ def initialize(**args)
1710
+ update!(**args)
1711
+ end
1712
+
1713
+ # Update properties of this object
1714
+ def update!(**args)
1715
+ @bucket = args[:bucket] if args.key?(:bucket)
1716
+ @generation = args[:generation] if args.key?(:generation)
1717
+ @object = args[:object] if args.key?(:object)
1718
+ end
1719
+ end
1720
+
1721
+ # Specifies an artifact available via some URI.
1722
+ class SoftwareRecipeArtifactRemote
1723
+ include Google::Apis::Core::Hashable
1724
+
1725
+ # Must be provided if `allow_insecure` is `false`.
1726
+ # SHA256 checksum in hex format, to compare to the checksum of the
1727
+ # artifact. If the checksum is not empty and it doesn't match the
1728
+ # artifact then the recipe installation fails before running any of the
1729
+ # steps.
1730
+ # Corresponds to the JSON property `checksum`
1731
+ # @return [String]
1732
+ attr_accessor :checksum
1733
+
1734
+ # URI from which to fetch the object. It should contain both the protocol
1735
+ # and path following the format `protocol`://`location`.
1736
+ # Corresponds to the JSON property `uri`
1737
+ # @return [String]
1738
+ attr_accessor :uri
1739
+
1740
+ def initialize(**args)
1741
+ update!(**args)
1742
+ end
1743
+
1744
+ # Update properties of this object
1745
+ def update!(**args)
1746
+ @checksum = args[:checksum] if args.key?(:checksum)
1747
+ @uri = args[:uri] if args.key?(:uri)
1748
+ end
1749
+ end
1750
+
1751
+ # An action that can be taken as part of installing or updating a recipe.
1752
+ class SoftwareRecipeStep
1753
+ include Google::Apis::Core::Hashable
1754
+
1755
+ # Extracts an archive of the type specified in the specified directory.
1756
+ # Corresponds to the JSON property `archiveExtraction`
1757
+ # @return [Google::Apis::OsconfigV1beta::SoftwareRecipeStepExtractArchive]
1758
+ attr_accessor :archive_extraction
1759
+
1760
+ # Installs a deb via dpkg.
1761
+ # Corresponds to the JSON property `dpkgInstallation`
1762
+ # @return [Google::Apis::OsconfigV1beta::SoftwareRecipeStepInstallDpkg]
1763
+ attr_accessor :dpkg_installation
1764
+
1765
+ # Copies the artifact to the specified path on the instance.
1766
+ # Corresponds to the JSON property `fileCopy`
1767
+ # @return [Google::Apis::OsconfigV1beta::SoftwareRecipeStepCopyFile]
1768
+ attr_accessor :file_copy
1769
+
1770
+ # Executes an artifact or local file.
1771
+ # Corresponds to the JSON property `fileExec`
1772
+ # @return [Google::Apis::OsconfigV1beta::SoftwareRecipeStepExecFile]
1773
+ attr_accessor :file_exec
1774
+
1775
+ # Installs an MSI file.
1776
+ # Corresponds to the JSON property `msiInstallation`
1777
+ # @return [Google::Apis::OsconfigV1beta::SoftwareRecipeStepInstallMsi]
1778
+ attr_accessor :msi_installation
1779
+
1780
+ # Installs an rpm file via the rpm utility.
1781
+ # Corresponds to the JSON property `rpmInstallation`
1782
+ # @return [Google::Apis::OsconfigV1beta::SoftwareRecipeStepInstallRpm]
1783
+ attr_accessor :rpm_installation
1784
+
1785
+ # Runs a script through an interpreter.
1786
+ # Corresponds to the JSON property `scriptRun`
1787
+ # @return [Google::Apis::OsconfigV1beta::SoftwareRecipeStepRunScript]
1788
+ attr_accessor :script_run
1789
+
1790
+ def initialize(**args)
1791
+ update!(**args)
1792
+ end
1793
+
1794
+ # Update properties of this object
1795
+ def update!(**args)
1796
+ @archive_extraction = args[:archive_extraction] if args.key?(:archive_extraction)
1797
+ @dpkg_installation = args[:dpkg_installation] if args.key?(:dpkg_installation)
1798
+ @file_copy = args[:file_copy] if args.key?(:file_copy)
1799
+ @file_exec = args[:file_exec] if args.key?(:file_exec)
1800
+ @msi_installation = args[:msi_installation] if args.key?(:msi_installation)
1801
+ @rpm_installation = args[:rpm_installation] if args.key?(:rpm_installation)
1802
+ @script_run = args[:script_run] if args.key?(:script_run)
1803
+ end
1804
+ end
1805
+
1806
+ # Copies the artifact to the specified path on the instance.
1807
+ class SoftwareRecipeStepCopyFile
1808
+ include Google::Apis::Core::Hashable
1809
+
1810
+ # Required. The id of the relevant artifact in the recipe.
1811
+ # Corresponds to the JSON property `artifactId`
1812
+ # @return [String]
1813
+ attr_accessor :artifact_id
1814
+
1815
+ # Required. The absolute path on the instance to put the file.
1816
+ # Corresponds to the JSON property `destination`
1817
+ # @return [String]
1818
+ attr_accessor :destination
1819
+
1820
+ # Whether to allow this step to overwrite existing files. If this is
1821
+ # false and the file already exists the file is not overwritten
1822
+ # and the step is considered a success. Defaults to false.
1823
+ # Corresponds to the JSON property `overwrite`
1824
+ # @return [Boolean]
1825
+ attr_accessor :overwrite
1826
+ alias_method :overwrite?, :overwrite
1827
+
1828
+ # Consists of three octal digits which represent, in
1829
+ # order, the permissions of the owner, group, and other users for the
1830
+ # file (similarly to the numeric mode used in the linux chmod utility).
1831
+ # Each digit represents a three bit number with the 4 bit
1832
+ # corresponding to the read permissions, the 2 bit corresponds to the
1833
+ # write bit, and the one bit corresponds to the execute permission.
1834
+ # Default behavior is 755.
1835
+ # Below are some examples of permissions and their associated values:
1836
+ # read, write, and execute: 7
1837
+ # read and execute: 5
1838
+ # read and write: 6
1839
+ # read only: 4
1840
+ # Corresponds to the JSON property `permissions`
1841
+ # @return [String]
1842
+ attr_accessor :permissions
1843
+
1844
+ def initialize(**args)
1845
+ update!(**args)
1846
+ end
1847
+
1848
+ # Update properties of this object
1849
+ def update!(**args)
1850
+ @artifact_id = args[:artifact_id] if args.key?(:artifact_id)
1851
+ @destination = args[:destination] if args.key?(:destination)
1852
+ @overwrite = args[:overwrite] if args.key?(:overwrite)
1853
+ @permissions = args[:permissions] if args.key?(:permissions)
1854
+ end
1855
+ end
1856
+
1857
+ # Executes an artifact or local file.
1858
+ class SoftwareRecipeStepExecFile
1859
+ include Google::Apis::Core::Hashable
1860
+
1861
+ # Defaults to [0]. A list of possible return values that the program
1862
+ # can return to indicate a success.
1863
+ # Corresponds to the JSON property `allowedExitCodes`
1864
+ # @return [Array<Fixnum>]
1865
+ attr_accessor :allowed_exit_codes
1866
+
1867
+ # Arguments to be passed to the provided executable.
1868
+ # Corresponds to the JSON property `args`
1869
+ # @return [Array<String>]
1870
+ attr_accessor :args
1871
+
1872
+ # The id of the relevant artifact in the recipe.
1873
+ # Corresponds to the JSON property `artifactId`
1874
+ # @return [String]
1875
+ attr_accessor :artifact_id
1876
+
1877
+ # The absolute path of the file on the local filesystem.
1878
+ # Corresponds to the JSON property `localPath`
1879
+ # @return [String]
1880
+ attr_accessor :local_path
1881
+
1882
+ def initialize(**args)
1883
+ update!(**args)
1884
+ end
1885
+
1886
+ # Update properties of this object
1887
+ def update!(**args)
1888
+ @allowed_exit_codes = args[:allowed_exit_codes] if args.key?(:allowed_exit_codes)
1889
+ @args = args[:args] if args.key?(:args)
1890
+ @artifact_id = args[:artifact_id] if args.key?(:artifact_id)
1891
+ @local_path = args[:local_path] if args.key?(:local_path)
1892
+ end
1893
+ end
1894
+
1895
+ # Extracts an archive of the type specified in the specified directory.
1896
+ class SoftwareRecipeStepExtractArchive
1897
+ include Google::Apis::Core::Hashable
1898
+
1899
+ # Required. The id of the relevant artifact in the recipe.
1900
+ # Corresponds to the JSON property `artifactId`
1901
+ # @return [String]
1902
+ attr_accessor :artifact_id
1903
+
1904
+ # Directory to extract archive to.
1905
+ # Defaults to `/` on Linux or `C:\` on Windows.
1906
+ # Corresponds to the JSON property `destination`
1907
+ # @return [String]
1908
+ attr_accessor :destination
1909
+
1910
+ # Required. The type of the archive to extract.
1911
+ # Corresponds to the JSON property `type`
1912
+ # @return [String]
1913
+ attr_accessor :type
1914
+
1915
+ def initialize(**args)
1916
+ update!(**args)
1917
+ end
1918
+
1919
+ # Update properties of this object
1920
+ def update!(**args)
1921
+ @artifact_id = args[:artifact_id] if args.key?(:artifact_id)
1922
+ @destination = args[:destination] if args.key?(:destination)
1923
+ @type = args[:type] if args.key?(:type)
1924
+ end
1925
+ end
1926
+
1927
+ # Installs a deb via dpkg.
1928
+ class SoftwareRecipeStepInstallDpkg
1929
+ include Google::Apis::Core::Hashable
1930
+
1931
+ # Required. The id of the relevant artifact in the recipe.
1932
+ # Corresponds to the JSON property `artifactId`
1933
+ # @return [String]
1934
+ attr_accessor :artifact_id
1935
+
1936
+ def initialize(**args)
1937
+ update!(**args)
1938
+ end
1939
+
1940
+ # Update properties of this object
1941
+ def update!(**args)
1942
+ @artifact_id = args[:artifact_id] if args.key?(:artifact_id)
1943
+ end
1944
+ end
1945
+
1946
+ # Installs an MSI file.
1947
+ class SoftwareRecipeStepInstallMsi
1948
+ include Google::Apis::Core::Hashable
1949
+
1950
+ # Return codes that indicate that the software installed or updated
1951
+ # successfully. Behaviour defaults to [0]
1952
+ # Corresponds to the JSON property `allowedExitCodes`
1953
+ # @return [Array<Fixnum>]
1954
+ attr_accessor :allowed_exit_codes
1955
+
1956
+ # Required. The id of the relevant artifact in the recipe.
1957
+ # Corresponds to the JSON property `artifactId`
1958
+ # @return [String]
1959
+ attr_accessor :artifact_id
1960
+
1961
+ # The flags to use when installing the MSI
1962
+ # defaults to ["/i"] (i.e. the install flag).
1963
+ # Corresponds to the JSON property `flags`
1964
+ # @return [Array<String>]
1965
+ attr_accessor :flags
1966
+
1967
+ def initialize(**args)
1968
+ update!(**args)
1969
+ end
1970
+
1971
+ # Update properties of this object
1972
+ def update!(**args)
1973
+ @allowed_exit_codes = args[:allowed_exit_codes] if args.key?(:allowed_exit_codes)
1974
+ @artifact_id = args[:artifact_id] if args.key?(:artifact_id)
1975
+ @flags = args[:flags] if args.key?(:flags)
1976
+ end
1977
+ end
1978
+
1979
+ # Installs an rpm file via the rpm utility.
1980
+ class SoftwareRecipeStepInstallRpm
1981
+ include Google::Apis::Core::Hashable
1982
+
1983
+ # Required. The id of the relevant artifact in the recipe.
1984
+ # Corresponds to the JSON property `artifactId`
1985
+ # @return [String]
1986
+ attr_accessor :artifact_id
1987
+
1988
+ def initialize(**args)
1989
+ update!(**args)
1990
+ end
1991
+
1992
+ # Update properties of this object
1993
+ def update!(**args)
1994
+ @artifact_id = args[:artifact_id] if args.key?(:artifact_id)
1995
+ end
1996
+ end
1997
+
1998
+ # Runs a script through an interpreter.
1999
+ class SoftwareRecipeStepRunScript
2000
+ include Google::Apis::Core::Hashable
2001
+
2002
+ # Return codes that indicate that the software installed or updated
2003
+ # successfully. Behaviour defaults to [0]
2004
+ # Corresponds to the JSON property `allowedExitCodes`
2005
+ # @return [Array<Fixnum>]
2006
+ attr_accessor :allowed_exit_codes
2007
+
2008
+ # The script interpreter to use to run the script. If no interpreter is
2009
+ # specified the script is executed directly, which likely
2010
+ # only succeed for scripts with
2011
+ # [shebang lines](https://en.wikipedia.org/wiki/Shebang_\(Unix\)).
2012
+ # Corresponds to the JSON property `interpreter`
2013
+ # @return [String]
2014
+ attr_accessor :interpreter
2015
+
2016
+ # Required. The shell script to be executed.
2017
+ # Corresponds to the JSON property `script`
2018
+ # @return [String]
2019
+ attr_accessor :script
2020
+
2021
+ def initialize(**args)
2022
+ update!(**args)
2023
+ end
2024
+
2025
+ # Update properties of this object
2026
+ def update!(**args)
2027
+ @allowed_exit_codes = args[:allowed_exit_codes] if args.key?(:allowed_exit_codes)
2028
+ @interpreter = args[:interpreter] if args.key?(:interpreter)
2029
+ @script = args[:script] if args.key?(:script)
2030
+ end
2031
+ end
2032
+
2033
+ # Represents a time of day. The date and time zone are either not significant
2034
+ # or are specified elsewhere. An API may choose to allow leap seconds. Related
2035
+ # types are google.type.Date and `google.protobuf.Timestamp`.
2036
+ class TimeOfDay
2037
+ include Google::Apis::Core::Hashable
2038
+
2039
+ # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
2040
+ # to allow the value "24:00:00" for scenarios like business closing time.
2041
+ # Corresponds to the JSON property `hours`
2042
+ # @return [Fixnum]
2043
+ attr_accessor :hours
2044
+
2045
+ # Minutes of hour of day. Must be from 0 to 59.
2046
+ # Corresponds to the JSON property `minutes`
2047
+ # @return [Fixnum]
2048
+ attr_accessor :minutes
2049
+
2050
+ # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
2051
+ # Corresponds to the JSON property `nanos`
2052
+ # @return [Fixnum]
2053
+ attr_accessor :nanos
2054
+
2055
+ # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
2056
+ # allow the value 60 if it allows leap-seconds.
2057
+ # Corresponds to the JSON property `seconds`
2058
+ # @return [Fixnum]
2059
+ attr_accessor :seconds
2060
+
2061
+ def initialize(**args)
2062
+ update!(**args)
2063
+ end
2064
+
2065
+ # Update properties of this object
2066
+ def update!(**args)
2067
+ @hours = args[:hours] if args.key?(:hours)
2068
+ @minutes = args[:minutes] if args.key?(:minutes)
2069
+ @nanos = args[:nanos] if args.key?(:nanos)
2070
+ @seconds = args[:seconds] if args.key?(:seconds)
2071
+ end
2072
+ end
2073
+
2074
+ # Represents a time zone from the
2075
+ # [IANA Time Zone Database](https://www.iana.org/time-zones).
2076
+ class TimeZone
2077
+ include Google::Apis::Core::Hashable
2078
+
2079
+ # IANA Time Zone Database time zone, e.g. "America/New_York".
2080
+ # Corresponds to the JSON property `id`
2081
+ # @return [String]
2082
+ attr_accessor :id
2083
+
2084
+ # Optional. IANA Time Zone Database version number, e.g. "2019a".
2085
+ # Corresponds to the JSON property `version`
2086
+ # @return [String]
2087
+ attr_accessor :version
2088
+
2089
+ def initialize(**args)
2090
+ update!(**args)
2091
+ end
2092
+
2093
+ # Update properties of this object
2094
+ def update!(**args)
2095
+ @id = args[:id] if args.key?(:id)
2096
+ @version = args[:version] if args.key?(:version)
2097
+ end
2098
+ end
2099
+
2100
+ # Represents one week day in a month. An example is "the 4th Sunday".
2101
+ class WeekDayOfMonth
2102
+ include Google::Apis::Core::Hashable
2103
+
2104
+ # Required. A day of the week.
2105
+ # Corresponds to the JSON property `dayOfWeek`
2106
+ # @return [String]
2107
+ attr_accessor :day_of_week
2108
+
2109
+ # Required. Week number in a month. 1-4 indicates the 1st to 4th week of the
2110
+ # month. -1
2111
+ # indicates the last week of the month.
2112
+ # Corresponds to the JSON property `weekOrdinal`
2113
+ # @return [Fixnum]
2114
+ attr_accessor :week_ordinal
2115
+
2116
+ def initialize(**args)
2117
+ update!(**args)
2118
+ end
2119
+
2120
+ # Update properties of this object
2121
+ def update!(**args)
2122
+ @day_of_week = args[:day_of_week] if args.key?(:day_of_week)
2123
+ @week_ordinal = args[:week_ordinal] if args.key?(:week_ordinal)
2124
+ end
2125
+ end
2126
+
2127
+ # Represents a weekly schedule.
2128
+ class WeeklySchedule
2129
+ include Google::Apis::Core::Hashable
2130
+
2131
+ # Required. Day of the week.
2132
+ # Corresponds to the JSON property `dayOfWeek`
2133
+ # @return [String]
2134
+ attr_accessor :day_of_week
2135
+
2136
+ def initialize(**args)
2137
+ update!(**args)
2138
+ end
2139
+
2140
+ # Update properties of this object
2141
+ def update!(**args)
2142
+ @day_of_week = args[:day_of_week] if args.key?(:day_of_week)
2143
+ end
2144
+ end
2145
+
2146
+ # Windows patching is performed using the Windows Update Agent.
2147
+ class WindowsUpdateSettings
2148
+ include Google::Apis::Core::Hashable
2149
+
2150
+ # Only apply updates of these windows update classifications. If empty, all
2151
+ # updates are applied.
2152
+ # Corresponds to the JSON property `classifications`
2153
+ # @return [Array<String>]
2154
+ attr_accessor :classifications
2155
+
2156
+ # List of KBs to exclude from update.
2157
+ # Corresponds to the JSON property `excludes`
2158
+ # @return [Array<String>]
2159
+ attr_accessor :excludes
2160
+
2161
+ # An exclusive list of kbs to be updated. These are the only patches
2162
+ # that will be updated. This field must not be used with other
2163
+ # patch configurations.
2164
+ # Corresponds to the JSON property `exclusivePatches`
2165
+ # @return [Array<String>]
2166
+ attr_accessor :exclusive_patches
2167
+
2168
+ def initialize(**args)
2169
+ update!(**args)
2170
+ end
2171
+
2172
+ # Update properties of this object
2173
+ def update!(**args)
2174
+ @classifications = args[:classifications] if args.key?(:classifications)
2175
+ @excludes = args[:excludes] if args.key?(:excludes)
2176
+ @exclusive_patches = args[:exclusive_patches] if args.key?(:exclusive_patches)
2177
+ end
2178
+ end
2179
+
2180
+ # Represents a single Yum package repository. This repository is added to a
2181
+ # repo file that is stored at `/etc/yum.repos.d/google_osconfig.repo`.
2182
+ class YumRepository
2183
+ include Google::Apis::Core::Hashable
2184
+
2185
+ # Required. The location of the repository directory.
2186
+ # Corresponds to the JSON property `baseUrl`
2187
+ # @return [String]
2188
+ attr_accessor :base_url
2189
+
2190
+ # The display name of the repository.
2191
+ # Corresponds to the JSON property `displayName`
2192
+ # @return [String]
2193
+ attr_accessor :display_name
2194
+
2195
+ # URIs of GPG keys.
2196
+ # Corresponds to the JSON property `gpgKeys`
2197
+ # @return [Array<String>]
2198
+ attr_accessor :gpg_keys
2199
+
2200
+ # Required. A one word, unique name for this repository. This is
2201
+ # the `repo id` in the Yum config file and also the `display_name` if
2202
+ # `display_name` is omitted. This id is also used as the unique identifier
2203
+ # when checking for guest policy conflicts.
2204
+ # Corresponds to the JSON property `id`
2205
+ # @return [String]
2206
+ attr_accessor :id
2207
+
2208
+ def initialize(**args)
2209
+ update!(**args)
2210
+ end
2211
+
2212
+ # Update properties of this object
2213
+ def update!(**args)
2214
+ @base_url = args[:base_url] if args.key?(:base_url)
2215
+ @display_name = args[:display_name] if args.key?(:display_name)
2216
+ @gpg_keys = args[:gpg_keys] if args.key?(:gpg_keys)
2217
+ @id = args[:id] if args.key?(:id)
2218
+ end
2219
+ end
2220
+
2221
+ # Yum patching is performed by executing `yum update`. Additional options
2222
+ # can be set to control how this is executed.
2223
+ # Note that not all settings are supported on all platforms.
2224
+ class YumSettings
2225
+ include Google::Apis::Core::Hashable
2226
+
2227
+ # List of packages to exclude from update. These packages are excluded by
2228
+ # using the yum `--exclude` flag.
2229
+ # Corresponds to the JSON property `excludes`
2230
+ # @return [Array<String>]
2231
+ attr_accessor :excludes
2232
+
2233
+ # An exclusive list of packages to be updated. These are the only packages
2234
+ # that will be updated. If these packages are not installed, they will be
2235
+ # ignored. This field must not be specified with any other patch
2236
+ # configuration fields.
2237
+ # Corresponds to the JSON property `exclusivePackages`
2238
+ # @return [Array<String>]
2239
+ attr_accessor :exclusive_packages
2240
+
2241
+ # Will cause patch to run `yum update-minimal` instead.
2242
+ # Corresponds to the JSON property `minimal`
2243
+ # @return [Boolean]
2244
+ attr_accessor :minimal
2245
+ alias_method :minimal?, :minimal
2246
+
2247
+ # Adds the `--security` flag to `yum update`. Not supported on
2248
+ # all platforms.
2249
+ # Corresponds to the JSON property `security`
2250
+ # @return [Boolean]
2251
+ attr_accessor :security
2252
+ alias_method :security?, :security
2253
+
2254
+ def initialize(**args)
2255
+ update!(**args)
2256
+ end
2257
+
2258
+ # Update properties of this object
2259
+ def update!(**args)
2260
+ @excludes = args[:excludes] if args.key?(:excludes)
2261
+ @exclusive_packages = args[:exclusive_packages] if args.key?(:exclusive_packages)
2262
+ @minimal = args[:minimal] if args.key?(:minimal)
2263
+ @security = args[:security] if args.key?(:security)
2264
+ end
2265
+ end
2266
+
2267
+ # Represents a single Zypper package repository. This repository is added to a
2268
+ # repo file that is stored at `/etc/zypp/repos.d/google_osconfig.repo`.
2269
+ class ZypperRepository
2270
+ include Google::Apis::Core::Hashable
2271
+
2272
+ # Required. The location of the repository directory.
2273
+ # Corresponds to the JSON property `baseUrl`
2274
+ # @return [String]
2275
+ attr_accessor :base_url
2276
+
2277
+ # The display name of the repository.
2278
+ # Corresponds to the JSON property `displayName`
2279
+ # @return [String]
2280
+ attr_accessor :display_name
2281
+
2282
+ # URIs of GPG keys.
2283
+ # Corresponds to the JSON property `gpgKeys`
2284
+ # @return [Array<String>]
2285
+ attr_accessor :gpg_keys
2286
+
2287
+ # Required. A one word, unique name for this repository. This is
2288
+ # the `repo id` in the zypper config file and also the `display_name` if
2289
+ # `display_name` is omitted. This id is also used as the unique identifier
2290
+ # when checking for guest policy conflicts.
2291
+ # Corresponds to the JSON property `id`
2292
+ # @return [String]
2293
+ attr_accessor :id
2294
+
2295
+ def initialize(**args)
2296
+ update!(**args)
2297
+ end
2298
+
2299
+ # Update properties of this object
2300
+ def update!(**args)
2301
+ @base_url = args[:base_url] if args.key?(:base_url)
2302
+ @display_name = args[:display_name] if args.key?(:display_name)
2303
+ @gpg_keys = args[:gpg_keys] if args.key?(:gpg_keys)
2304
+ @id = args[:id] if args.key?(:id)
2305
+ end
2306
+ end
2307
+
2308
+ # Zypper patching is performed by running `zypper patch`.
2309
+ # See also https://en.opensuse.org/SDB:Zypper_manual.
2310
+ class ZypperSettings
2311
+ include Google::Apis::Core::Hashable
2312
+
2313
+ # Install only patches with these categories.
2314
+ # Common categories include security, recommended, and feature.
2315
+ # Corresponds to the JSON property `categories`
2316
+ # @return [Array<String>]
2317
+ attr_accessor :categories
2318
+
2319
+ # List of patches to exclude from update.
2320
+ # Corresponds to the JSON property `excludes`
2321
+ # @return [Array<String>]
2322
+ attr_accessor :excludes
2323
+
2324
+ # An exclusive list of patches to be updated. These are the only patches
2325
+ # that will be installed using 'zypper patch patch:<patch_name>' command.
2326
+ # This field must not be used with any other patch configuration fields.
2327
+ # Corresponds to the JSON property `exclusivePatches`
2328
+ # @return [Array<String>]
2329
+ attr_accessor :exclusive_patches
2330
+
2331
+ # Install only patches with these severities.
2332
+ # Common severities include critical, important, moderate, and low.
2333
+ # Corresponds to the JSON property `severities`
2334
+ # @return [Array<String>]
2335
+ attr_accessor :severities
2336
+
2337
+ # Adds the `--with-optional` flag to `zypper patch`.
2338
+ # Corresponds to the JSON property `withOptional`
2339
+ # @return [Boolean]
2340
+ attr_accessor :with_optional
2341
+ alias_method :with_optional?, :with_optional
2342
+
2343
+ # Adds the `--with-update` flag, to `zypper patch`.
2344
+ # Corresponds to the JSON property `withUpdate`
2345
+ # @return [Boolean]
2346
+ attr_accessor :with_update
2347
+ alias_method :with_update?, :with_update
2348
+
2349
+ def initialize(**args)
2350
+ update!(**args)
2351
+ end
2352
+
2353
+ # Update properties of this object
2354
+ def update!(**args)
2355
+ @categories = args[:categories] if args.key?(:categories)
2356
+ @excludes = args[:excludes] if args.key?(:excludes)
2357
+ @exclusive_patches = args[:exclusive_patches] if args.key?(:exclusive_patches)
2358
+ @severities = args[:severities] if args.key?(:severities)
2359
+ @with_optional = args[:with_optional] if args.key?(:with_optional)
2360
+ @with_update = args[:with_update] if args.key?(:with_update)
2361
+ end
2362
+ end
2363
+ end
2364
+ end
2365
+ end