google-apis-osconfig_v1 0.9.0 → 0.10.0

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.
@@ -162,6 +162,47 @@ module Google
162
162
  end
163
163
  end
164
164
 
165
+ # Represents a whole or partial calendar date, such as a birthday. The time of
166
+ # day and time zone are either specified elsewhere or are insignificant. The
167
+ # date is relative to the Gregorian Calendar. This can represent one of the
168
+ # following: * A full date, with non-zero year, month, and day values * A month
169
+ # and day value, with a zero year, such as an anniversary * A year on its own,
170
+ # with zero month and day values * A year and month value, with a zero day, such
171
+ # as a credit card expiration date Related types are google.type.TimeOfDay and `
172
+ # google.protobuf.Timestamp`.
173
+ class Date
174
+ include Google::Apis::Core::Hashable
175
+
176
+ # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to
177
+ # specify a year by itself or a year and month where the day isn't significant.
178
+ # Corresponds to the JSON property `day`
179
+ # @return [Fixnum]
180
+ attr_accessor :day
181
+
182
+ # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month
183
+ # and day.
184
+ # Corresponds to the JSON property `month`
185
+ # @return [Fixnum]
186
+ attr_accessor :month
187
+
188
+ # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a
189
+ # year.
190
+ # Corresponds to the JSON property `year`
191
+ # @return [Fixnum]
192
+ attr_accessor :year
193
+
194
+ def initialize(**args)
195
+ update!(**args)
196
+ end
197
+
198
+ # Update properties of this object
199
+ def update!(**args)
200
+ @day = args[:day] if args.key?(:day)
201
+ @month = args[:month] if args.key?(:month)
202
+ @year = args[:year] if args.key?(:year)
203
+ end
204
+ end
205
+
165
206
  # A generic empty message that you can re-use to avoid defining duplicated empty
166
207
  # messages in your APIs. A typical example is to use it as the request or the
167
208
  # response type of an API method. For instance: service Foo ` rpc Bar(google.
@@ -568,6 +609,14 @@ module Google
568
609
  # @return [Google::Apis::OsconfigV1::InventoryWindowsQuickFixEngineeringPackage]
569
610
  attr_accessor :qfe_package
570
611
 
612
+ # Contains information about a Windows application as retrieved from the Windows
613
+ # Registry. For more information about these fields, see [Windows Installer
614
+ # Properties for the Uninstall Registry](https://docs.microsoft.com/en-us/
615
+ # windows/win32/msi/uninstall-registry-key)`: class="external" `
616
+ # Corresponds to the JSON property `windowsApplication`
617
+ # @return [Google::Apis::OsconfigV1::InventoryWindowsApplication]
618
+ attr_accessor :windows_application
619
+
571
620
  # Details related to a Windows Update package. Field data and names are taken
572
621
  # from Windows Update API IUpdate Interface: https://docs.microsoft.com/en-us/
573
622
  # windows/win32/api/_wua/ Descriptive fields like title, and description are
@@ -603,6 +652,7 @@ module Google
603
652
  @cos_package = args[:cos_package] if args.key?(:cos_package)
604
653
  @googet_package = args[:googet_package] if args.key?(:googet_package)
605
654
  @qfe_package = args[:qfe_package] if args.key?(:qfe_package)
655
+ @windows_application = args[:windows_application] if args.key?(:windows_application)
606
656
  @wua_package = args[:wua_package] if args.key?(:wua_package)
607
657
  @yum_package = args[:yum_package] if args.key?(:yum_package)
608
658
  @zypper_package = args[:zypper_package] if args.key?(:zypper_package)
@@ -642,6 +692,59 @@ module Google
642
692
  end
643
693
  end
644
694
 
695
+ # Contains information about a Windows application as retrieved from the Windows
696
+ # Registry. For more information about these fields, see [Windows Installer
697
+ # Properties for the Uninstall Registry](https://docs.microsoft.com/en-us/
698
+ # windows/win32/msi/uninstall-registry-key)`: class="external" `
699
+ class InventoryWindowsApplication
700
+ include Google::Apis::Core::Hashable
701
+
702
+ # The name of the application or product.
703
+ # Corresponds to the JSON property `displayName`
704
+ # @return [String]
705
+ attr_accessor :display_name
706
+
707
+ # The version of the product or application in string format.
708
+ # Corresponds to the JSON property `displayVersion`
709
+ # @return [String]
710
+ attr_accessor :display_version
711
+
712
+ # The internet address for technical support.
713
+ # Corresponds to the JSON property `helpLink`
714
+ # @return [String]
715
+ attr_accessor :help_link
716
+
717
+ # Represents a whole or partial calendar date, such as a birthday. The time of
718
+ # day and time zone are either specified elsewhere or are insignificant. The
719
+ # date is relative to the Gregorian Calendar. This can represent one of the
720
+ # following: * A full date, with non-zero year, month, and day values * A month
721
+ # and day value, with a zero year, such as an anniversary * A year on its own,
722
+ # with zero month and day values * A year and month value, with a zero day, such
723
+ # as a credit card expiration date Related types are google.type.TimeOfDay and `
724
+ # google.protobuf.Timestamp`.
725
+ # Corresponds to the JSON property `installDate`
726
+ # @return [Google::Apis::OsconfigV1::Date]
727
+ attr_accessor :install_date
728
+
729
+ # The name of the manufacturer for the product or application.
730
+ # Corresponds to the JSON property `publisher`
731
+ # @return [String]
732
+ attr_accessor :publisher
733
+
734
+ def initialize(**args)
735
+ update!(**args)
736
+ end
737
+
738
+ # Update properties of this object
739
+ def update!(**args)
740
+ @display_name = args[:display_name] if args.key?(:display_name)
741
+ @display_version = args[:display_version] if args.key?(:display_version)
742
+ @help_link = args[:help_link] if args.key?(:help_link)
743
+ @install_date = args[:install_date] if args.key?(:install_date)
744
+ @publisher = args[:publisher] if args.key?(:publisher)
745
+ end
746
+ end
747
+
645
748
  # Information related to a Quick Fix Engineering package. Fields are taken from
646
749
  # Windows QuickFixEngineering Interface and match the source names: https://docs.
647
750
  # microsoft.com/en-us/windows/win32/cimwin32prov/win32-quickfixengineering
@@ -840,6 +943,57 @@ module Google
840
943
  end
841
944
  end
842
945
 
946
+ # A response message for listing all revisions for a OS policy assignment.
947
+ class ListOsPolicyAssignmentRevisionsResponse
948
+ include Google::Apis::Core::Hashable
949
+
950
+ # The pagination token to retrieve the next page of OS policy assignment
951
+ # revisions.
952
+ # Corresponds to the JSON property `nextPageToken`
953
+ # @return [String]
954
+ attr_accessor :next_page_token
955
+
956
+ # The OS policy assignment revisions
957
+ # Corresponds to the JSON property `osPolicyAssignments`
958
+ # @return [Array<Google::Apis::OsconfigV1::OsPolicyAssignment>]
959
+ attr_accessor :os_policy_assignments
960
+
961
+ def initialize(**args)
962
+ update!(**args)
963
+ end
964
+
965
+ # Update properties of this object
966
+ def update!(**args)
967
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
968
+ @os_policy_assignments = args[:os_policy_assignments] if args.key?(:os_policy_assignments)
969
+ end
970
+ end
971
+
972
+ # A response message for listing all assignments under given parent.
973
+ class ListOsPolicyAssignmentsResponse
974
+ include Google::Apis::Core::Hashable
975
+
976
+ # The pagination token to retrieve the next page of OS policy assignments.
977
+ # Corresponds to the JSON property `nextPageToken`
978
+ # @return [String]
979
+ attr_accessor :next_page_token
980
+
981
+ # The list of assignments
982
+ # Corresponds to the JSON property `osPolicyAssignments`
983
+ # @return [Array<Google::Apis::OsconfigV1::OsPolicyAssignment>]
984
+ attr_accessor :os_policy_assignments
985
+
986
+ def initialize(**args)
987
+ update!(**args)
988
+ end
989
+
990
+ # Update properties of this object
991
+ def update!(**args)
992
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
993
+ @os_policy_assignments = args[:os_policy_assignments] if args.key?(:os_policy_assignments)
994
+ end
995
+ end
996
+
843
997
  # A response message for listing patch deployments.
844
998
  class ListPatchDeploymentsResponse
845
999
  include Google::Apis::Core::Hashable
@@ -970,6 +1124,270 @@ module Google
970
1124
  end
971
1125
  end
972
1126
 
1127
+ # An OS policy defines the desired state configuration for a VM.
1128
+ class OsPolicy
1129
+ include Google::Apis::Core::Hashable
1130
+
1131
+ # This flag determines the OS policy compliance status when none of the resource
1132
+ # groups within the policy are applicable for a VM. Set this value to `true` if
1133
+ # the policy needs to be reported as compliant even if the policy has nothing to
1134
+ # validate or enforce.
1135
+ # Corresponds to the JSON property `allowNoResourceGroupMatch`
1136
+ # @return [Boolean]
1137
+ attr_accessor :allow_no_resource_group_match
1138
+ alias_method :allow_no_resource_group_match?, :allow_no_resource_group_match
1139
+
1140
+ # Policy description. Length of the description is limited to 1024 characters.
1141
+ # Corresponds to the JSON property `description`
1142
+ # @return [String]
1143
+ attr_accessor :description
1144
+
1145
+ # Required. The id of the OS policy with the following restrictions: * Must
1146
+ # contain only lowercase letters, numbers, and hyphens. * Must start with a
1147
+ # letter. * Must be between 1-63 characters. * Must end with a number or a
1148
+ # letter. * Must be unique within the assignment.
1149
+ # Corresponds to the JSON property `id`
1150
+ # @return [String]
1151
+ attr_accessor :id
1152
+
1153
+ # Required. Policy mode
1154
+ # Corresponds to the JSON property `mode`
1155
+ # @return [String]
1156
+ attr_accessor :mode
1157
+
1158
+ # Required. List of resource groups for the policy. For a particular VM,
1159
+ # resource groups are evaluated in the order specified and the first resource
1160
+ # group that is applicable is selected and the rest are ignored. If none of the
1161
+ # resource groups are applicable for a VM, the VM is considered to be non-
1162
+ # compliant w.r.t this policy. This behavior can be toggled by the flag `
1163
+ # allow_no_resource_group_match`
1164
+ # Corresponds to the JSON property `resourceGroups`
1165
+ # @return [Array<Google::Apis::OsconfigV1::OsPolicyResourceGroup>]
1166
+ attr_accessor :resource_groups
1167
+
1168
+ def initialize(**args)
1169
+ update!(**args)
1170
+ end
1171
+
1172
+ # Update properties of this object
1173
+ def update!(**args)
1174
+ @allow_no_resource_group_match = args[:allow_no_resource_group_match] if args.key?(:allow_no_resource_group_match)
1175
+ @description = args[:description] if args.key?(:description)
1176
+ @id = args[:id] if args.key?(:id)
1177
+ @mode = args[:mode] if args.key?(:mode)
1178
+ @resource_groups = args[:resource_groups] if args.key?(:resource_groups)
1179
+ end
1180
+ end
1181
+
1182
+ # OS policy assignment is an API resource that is used to apply a set of OS
1183
+ # policies to a dynamically targeted group of Compute Engine VM instances. An OS
1184
+ # policy is used to define the desired state configuration for a Compute Engine
1185
+ # VM instance through a set of configuration resources that provide capabilities
1186
+ # such as installing or removing software packages, or executing a script. For
1187
+ # more information, see [OS policy and OS policy assignment](https://cloud.
1188
+ # google.com/compute/docs/os-configuration-management/working-with-os-policies).
1189
+ class OsPolicyAssignment
1190
+ include Google::Apis::Core::Hashable
1191
+
1192
+ # Output only. Indicates that this revision has been successfully rolled out in
1193
+ # this zone and new VMs will be assigned OS policies from this revision. For a
1194
+ # given OS policy assignment, there is only one revision with a value of `true`
1195
+ # for this field.
1196
+ # Corresponds to the JSON property `baseline`
1197
+ # @return [Boolean]
1198
+ attr_accessor :baseline
1199
+ alias_method :baseline?, :baseline
1200
+
1201
+ # Output only. Indicates that this revision deletes the OS policy assignment.
1202
+ # Corresponds to the JSON property `deleted`
1203
+ # @return [Boolean]
1204
+ attr_accessor :deleted
1205
+ alias_method :deleted?, :deleted
1206
+
1207
+ # OS policy assignment description. Length of the description is limited to 1024
1208
+ # characters.
1209
+ # Corresponds to the JSON property `description`
1210
+ # @return [String]
1211
+ attr_accessor :description
1212
+
1213
+ # The etag for this OS policy assignment. If this is provided on update, it must
1214
+ # match the server's etag.
1215
+ # Corresponds to the JSON property `etag`
1216
+ # @return [String]
1217
+ attr_accessor :etag
1218
+
1219
+ # Filters to select target VMs for an assignment. If more than one filter
1220
+ # criteria is specified below, a VM will be selected if and only if it satisfies
1221
+ # all of them.
1222
+ # Corresponds to the JSON property `instanceFilter`
1223
+ # @return [Google::Apis::OsconfigV1::OsPolicyAssignmentInstanceFilter]
1224
+ attr_accessor :instance_filter
1225
+
1226
+ # Resource name. Format: `projects/`project_number`/locations/`location`/
1227
+ # osPolicyAssignments/`os_policy_assignment_id`` This field is ignored when you
1228
+ # create an OS policy assignment.
1229
+ # Corresponds to the JSON property `name`
1230
+ # @return [String]
1231
+ attr_accessor :name
1232
+
1233
+ # Required. List of OS policies to be applied to the VMs.
1234
+ # Corresponds to the JSON property `osPolicies`
1235
+ # @return [Array<Google::Apis::OsconfigV1::OsPolicy>]
1236
+ attr_accessor :os_policies
1237
+
1238
+ # Output only. Indicates that reconciliation is in progress for the revision.
1239
+ # This value is `true` when the `rollout_state` is one of: * IN_PROGRESS *
1240
+ # CANCELLING
1241
+ # Corresponds to the JSON property `reconciling`
1242
+ # @return [Boolean]
1243
+ attr_accessor :reconciling
1244
+ alias_method :reconciling?, :reconciling
1245
+
1246
+ # Output only. The timestamp that the revision was created.
1247
+ # Corresponds to the JSON property `revisionCreateTime`
1248
+ # @return [String]
1249
+ attr_accessor :revision_create_time
1250
+
1251
+ # Output only. The assignment revision ID A new revision is committed whenever a
1252
+ # rollout is triggered for a OS policy assignment
1253
+ # Corresponds to the JSON property `revisionId`
1254
+ # @return [String]
1255
+ attr_accessor :revision_id
1256
+
1257
+ # Message to configure the rollout at the zonal level for the OS policy
1258
+ # assignment.
1259
+ # Corresponds to the JSON property `rollout`
1260
+ # @return [Google::Apis::OsconfigV1::OsPolicyAssignmentRollout]
1261
+ attr_accessor :rollout
1262
+
1263
+ # Output only. OS policy assignment rollout state
1264
+ # Corresponds to the JSON property `rolloutState`
1265
+ # @return [String]
1266
+ attr_accessor :rollout_state
1267
+
1268
+ # Output only. Server generated unique id for the OS policy assignment resource.
1269
+ # Corresponds to the JSON property `uid`
1270
+ # @return [String]
1271
+ attr_accessor :uid
1272
+
1273
+ def initialize(**args)
1274
+ update!(**args)
1275
+ end
1276
+
1277
+ # Update properties of this object
1278
+ def update!(**args)
1279
+ @baseline = args[:baseline] if args.key?(:baseline)
1280
+ @deleted = args[:deleted] if args.key?(:deleted)
1281
+ @description = args[:description] if args.key?(:description)
1282
+ @etag = args[:etag] if args.key?(:etag)
1283
+ @instance_filter = args[:instance_filter] if args.key?(:instance_filter)
1284
+ @name = args[:name] if args.key?(:name)
1285
+ @os_policies = args[:os_policies] if args.key?(:os_policies)
1286
+ @reconciling = args[:reconciling] if args.key?(:reconciling)
1287
+ @revision_create_time = args[:revision_create_time] if args.key?(:revision_create_time)
1288
+ @revision_id = args[:revision_id] if args.key?(:revision_id)
1289
+ @rollout = args[:rollout] if args.key?(:rollout)
1290
+ @rollout_state = args[:rollout_state] if args.key?(:rollout_state)
1291
+ @uid = args[:uid] if args.key?(:uid)
1292
+ end
1293
+ end
1294
+
1295
+ # Filters to select target VMs for an assignment. If more than one filter
1296
+ # criteria is specified below, a VM will be selected if and only if it satisfies
1297
+ # all of them.
1298
+ class OsPolicyAssignmentInstanceFilter
1299
+ include Google::Apis::Core::Hashable
1300
+
1301
+ # Target all VMs in the project. If true, no other criteria is permitted.
1302
+ # Corresponds to the JSON property `all`
1303
+ # @return [Boolean]
1304
+ attr_accessor :all
1305
+ alias_method :all?, :all
1306
+
1307
+ # List of label sets used for VM exclusion. If the list has more than one label
1308
+ # set, the VM is excluded if any of the label sets are applicable for the VM.
1309
+ # Corresponds to the JSON property `exclusionLabels`
1310
+ # @return [Array<Google::Apis::OsconfigV1::OsPolicyAssignmentLabelSet>]
1311
+ attr_accessor :exclusion_labels
1312
+
1313
+ # List of label sets used for VM inclusion. If the list has more than one `
1314
+ # LabelSet`, the VM is included if any of the label sets are applicable for the
1315
+ # VM.
1316
+ # Corresponds to the JSON property `inclusionLabels`
1317
+ # @return [Array<Google::Apis::OsconfigV1::OsPolicyAssignmentLabelSet>]
1318
+ attr_accessor :inclusion_labels
1319
+
1320
+ # List of inventories to select VMs. A VM is selected if its inventory data
1321
+ # matches at least one of the following inventories.
1322
+ # Corresponds to the JSON property `inventories`
1323
+ # @return [Array<Google::Apis::OsconfigV1::OsPolicyAssignmentInstanceFilterInventory>]
1324
+ attr_accessor :inventories
1325
+
1326
+ def initialize(**args)
1327
+ update!(**args)
1328
+ end
1329
+
1330
+ # Update properties of this object
1331
+ def update!(**args)
1332
+ @all = args[:all] if args.key?(:all)
1333
+ @exclusion_labels = args[:exclusion_labels] if args.key?(:exclusion_labels)
1334
+ @inclusion_labels = args[:inclusion_labels] if args.key?(:inclusion_labels)
1335
+ @inventories = args[:inventories] if args.key?(:inventories)
1336
+ end
1337
+ end
1338
+
1339
+ # VM inventory details.
1340
+ class OsPolicyAssignmentInstanceFilterInventory
1341
+ include Google::Apis::Core::Hashable
1342
+
1343
+ # Required. The OS short name
1344
+ # Corresponds to the JSON property `osShortName`
1345
+ # @return [String]
1346
+ attr_accessor :os_short_name
1347
+
1348
+ # The OS version Prefix matches are supported if asterisk(*) is provided as the
1349
+ # last character. For example, to match all versions with a major version of `7`,
1350
+ # specify the following value for this field `7.*` An empty string matches all
1351
+ # OS versions.
1352
+ # Corresponds to the JSON property `osVersion`
1353
+ # @return [String]
1354
+ attr_accessor :os_version
1355
+
1356
+ def initialize(**args)
1357
+ update!(**args)
1358
+ end
1359
+
1360
+ # Update properties of this object
1361
+ def update!(**args)
1362
+ @os_short_name = args[:os_short_name] if args.key?(:os_short_name)
1363
+ @os_version = args[:os_version] if args.key?(:os_version)
1364
+ end
1365
+ end
1366
+
1367
+ # Message representing label set. * A label is a key value pair set for a VM. *
1368
+ # A LabelSet is a set of labels. * Labels within a LabelSet are ANDed. In other
1369
+ # words, a LabelSet is applicable for a VM only if it matches all the labels in
1370
+ # the LabelSet. * Example: A LabelSet with 2 labels: `env=prod` and `type=
1371
+ # webserver` will only be applicable for those VMs with both labels present.
1372
+ class OsPolicyAssignmentLabelSet
1373
+ include Google::Apis::Core::Hashable
1374
+
1375
+ # Labels are identified by key/value pairs in this map. A VM should contain all
1376
+ # the key/value pairs specified in this map to be selected.
1377
+ # Corresponds to the JSON property `labels`
1378
+ # @return [Hash<String,String>]
1379
+ attr_accessor :labels
1380
+
1381
+ def initialize(**args)
1382
+ update!(**args)
1383
+ end
1384
+
1385
+ # Update properties of this object
1386
+ def update!(**args)
1387
+ @labels = args[:labels] if args.key?(:labels)
1388
+ end
1389
+ end
1390
+
973
1391
  # OS policy assignment operation metadata provided by OS policy assignment API
974
1392
  # methods that return long running operations.
975
1393
  class OsPolicyAssignmentOperationMetadata
@@ -1016,15 +1434,24 @@ module Google
1016
1434
  end
1017
1435
  end
1018
1436
 
1019
- # Sets the time for a one time patch deployment. Timestamp is in [RFC3339](https:
1020
- # //www.ietf.org/rfc/rfc3339.txt) text format.
1021
- class OneTimeSchedule
1437
+ # Message to configure the rollout at the zonal level for the OS policy
1438
+ # assignment.
1439
+ class OsPolicyAssignmentRollout
1022
1440
  include Google::Apis::Core::Hashable
1023
1441
 
1024
- # Required. The desired patch job execution time.
1025
- # Corresponds to the JSON property `executeTime`
1442
+ # Message encapsulating a value that can be either absolute ("fixed") or
1443
+ # relative ("percent") to a value.
1444
+ # Corresponds to the JSON property `disruptionBudget`
1445
+ # @return [Google::Apis::OsconfigV1::FixedOrPercent]
1446
+ attr_accessor :disruption_budget
1447
+
1448
+ # Required. This determines the minimum duration of time to wait after the
1449
+ # configuration changes are applied through the current rollout. A VM continues
1450
+ # to count towards the `disruption_budget` at least until this duration of time
1451
+ # has passed after configuration changes are applied.
1452
+ # Corresponds to the JSON property `minWaitDuration`
1026
1453
  # @return [String]
1027
- attr_accessor :execute_time
1454
+ attr_accessor :min_wait_duration
1028
1455
 
1029
1456
  def initialize(**args)
1030
1457
  update!(**args)
@@ -1032,40 +1459,915 @@ module Google
1032
1459
 
1033
1460
  # Update properties of this object
1034
1461
  def update!(**args)
1035
- @execute_time = args[:execute_time] if args.key?(:execute_time)
1462
+ @disruption_budget = args[:disruption_budget] if args.key?(:disruption_budget)
1463
+ @min_wait_duration = args[:min_wait_duration] if args.key?(:min_wait_duration)
1036
1464
  end
1037
1465
  end
1038
1466
 
1039
- # Patch configuration specifications. Contains details on how to apply the patch(
1040
- # es) to a VM instance.
1041
- class PatchConfig
1467
+ # Filtering criteria to select VMs based on inventory details.
1468
+ class OsPolicyInventoryFilter
1042
1469
  include Google::Apis::Core::Hashable
1043
1470
 
1044
- # Apt patching is completed by executing `apt-get update && apt-get upgrade`.
1045
- # Additional options can be set to control how this is executed.
1046
- # Corresponds to the JSON property `apt`
1047
- # @return [Google::Apis::OsconfigV1::AptSettings]
1048
- attr_accessor :apt
1471
+ # Required. The OS short name
1472
+ # Corresponds to the JSON property `osShortName`
1473
+ # @return [String]
1474
+ attr_accessor :os_short_name
1049
1475
 
1050
- # Googet patching is performed by running `googet update`.
1051
- # Corresponds to the JSON property `goo`
1052
- # @return [Google::Apis::OsconfigV1::GooSettings]
1053
- attr_accessor :goo
1476
+ # The OS version Prefix matches are supported if asterisk(*) is provided as the
1477
+ # last character. For example, to match all versions with a major version of `7`,
1478
+ # specify the following value for this field `7.*` An empty string matches all
1479
+ # OS versions.
1480
+ # Corresponds to the JSON property `osVersion`
1481
+ # @return [String]
1482
+ attr_accessor :os_version
1054
1483
 
1055
- # A step that runs an executable for a PatchJob.
1056
- # Corresponds to the JSON property `postStep`
1057
- # @return [Google::Apis::OsconfigV1::ExecStep]
1058
- attr_accessor :post_step
1484
+ def initialize(**args)
1485
+ update!(**args)
1486
+ end
1059
1487
 
1060
- # A step that runs an executable for a PatchJob.
1061
- # Corresponds to the JSON property `preStep`
1062
- # @return [Google::Apis::OsconfigV1::ExecStep]
1063
- attr_accessor :pre_step
1488
+ # Update properties of this object
1489
+ def update!(**args)
1490
+ @os_short_name = args[:os_short_name] if args.key?(:os_short_name)
1491
+ @os_version = args[:os_version] if args.key?(:os_version)
1492
+ end
1493
+ end
1064
1494
 
1065
- # Post-patch reboot settings.
1066
- # Corresponds to the JSON property `rebootConfig`
1495
+ # An OS policy resource is used to define the desired state configuration and
1496
+ # provides a specific functionality like installing/removing packages, executing
1497
+ # a script etc. The system ensures that resources are always in their desired
1498
+ # state by taking necessary actions if they have drifted from their desired
1499
+ # state.
1500
+ class OsPolicyResource
1501
+ include Google::Apis::Core::Hashable
1502
+
1503
+ # A resource that allows executing scripts on the VM. The `ExecResource` has 2
1504
+ # stages: `validate` and `enforce` and both stages accept a script as an
1505
+ # argument to execute. When the `ExecResource` is applied by the agent, it first
1506
+ # executes the script in the `validate` stage. The `validate` stage can signal
1507
+ # that the `ExecResource` is already in the desired state by returning an exit
1508
+ # code of `100`. If the `ExecResource` is not in the desired state, it should
1509
+ # return an exit code of `101`. Any other exit code returned by this stage is
1510
+ # considered an error. If the `ExecResource` is not in the desired state based
1511
+ # on the exit code from the `validate` stage, the agent proceeds to execute the
1512
+ # script from the `enforce` stage. If the `ExecResource` is already in the
1513
+ # desired state, the `enforce` stage will not be run. Similar to `validate`
1514
+ # stage, the `enforce` stage should return an exit code of `100` to indicate
1515
+ # that the resource in now in its desired state. Any other exit code is
1516
+ # considered an error. NOTE: An exit code of `100` was chosen over `0` (and `101`
1517
+ # vs `1`) to have an explicit indicator of `in desired state`, `not in desired
1518
+ # state` and errors. Because, for example, Powershell will always return an exit
1519
+ # code of `0` unless an `exit` statement is provided in the script. So, for
1520
+ # reasons of consistency and being explicit, exit codes `100` and `101` were
1521
+ # chosen.
1522
+ # Corresponds to the JSON property `exec`
1523
+ # @return [Google::Apis::OsconfigV1::OsPolicyResourceExecResource]
1524
+ attr_accessor :exec
1525
+
1526
+ # A resource that manages the state of a file.
1527
+ # Corresponds to the JSON property `file`
1528
+ # @return [Google::Apis::OsconfigV1::OsPolicyResourceFileResource]
1529
+ attr_accessor :file
1530
+
1531
+ # Required. The id of the resource with the following restrictions: * Must
1532
+ # contain only lowercase letters, numbers, and hyphens. * Must start with a
1533
+ # letter. * Must be between 1-63 characters. * Must end with a number or a
1534
+ # letter. * Must be unique within the OS policy.
1535
+ # Corresponds to the JSON property `id`
1067
1536
  # @return [String]
1068
- attr_accessor :reboot_config
1537
+ attr_accessor :id
1538
+
1539
+ # A resource that manages a system package.
1540
+ # Corresponds to the JSON property `pkg`
1541
+ # @return [Google::Apis::OsconfigV1::OsPolicyResourcePackageResource]
1542
+ attr_accessor :pkg
1543
+
1544
+ # A resource that manages a package repository.
1545
+ # Corresponds to the JSON property `repository`
1546
+ # @return [Google::Apis::OsconfigV1::OsPolicyResourceRepositoryResource]
1547
+ attr_accessor :repository
1548
+
1549
+ def initialize(**args)
1550
+ update!(**args)
1551
+ end
1552
+
1553
+ # Update properties of this object
1554
+ def update!(**args)
1555
+ @exec = args[:exec] if args.key?(:exec)
1556
+ @file = args[:file] if args.key?(:file)
1557
+ @id = args[:id] if args.key?(:id)
1558
+ @pkg = args[:pkg] if args.key?(:pkg)
1559
+ @repository = args[:repository] if args.key?(:repository)
1560
+ end
1561
+ end
1562
+
1563
+ # A resource that allows executing scripts on the VM. The `ExecResource` has 2
1564
+ # stages: `validate` and `enforce` and both stages accept a script as an
1565
+ # argument to execute. When the `ExecResource` is applied by the agent, it first
1566
+ # executes the script in the `validate` stage. The `validate` stage can signal
1567
+ # that the `ExecResource` is already in the desired state by returning an exit
1568
+ # code of `100`. If the `ExecResource` is not in the desired state, it should
1569
+ # return an exit code of `101`. Any other exit code returned by this stage is
1570
+ # considered an error. If the `ExecResource` is not in the desired state based
1571
+ # on the exit code from the `validate` stage, the agent proceeds to execute the
1572
+ # script from the `enforce` stage. If the `ExecResource` is already in the
1573
+ # desired state, the `enforce` stage will not be run. Similar to `validate`
1574
+ # stage, the `enforce` stage should return an exit code of `100` to indicate
1575
+ # that the resource in now in its desired state. Any other exit code is
1576
+ # considered an error. NOTE: An exit code of `100` was chosen over `0` (and `101`
1577
+ # vs `1`) to have an explicit indicator of `in desired state`, `not in desired
1578
+ # state` and errors. Because, for example, Powershell will always return an exit
1579
+ # code of `0` unless an `exit` statement is provided in the script. So, for
1580
+ # reasons of consistency and being explicit, exit codes `100` and `101` were
1581
+ # chosen.
1582
+ class OsPolicyResourceExecResource
1583
+ include Google::Apis::Core::Hashable
1584
+
1585
+ # A file or script to execute.
1586
+ # Corresponds to the JSON property `enforce`
1587
+ # @return [Google::Apis::OsconfigV1::OsPolicyResourceExecResourceExec]
1588
+ attr_accessor :enforce
1589
+
1590
+ # A file or script to execute.
1591
+ # Corresponds to the JSON property `validate`
1592
+ # @return [Google::Apis::OsconfigV1::OsPolicyResourceExecResourceExec]
1593
+ attr_accessor :validate
1594
+
1595
+ def initialize(**args)
1596
+ update!(**args)
1597
+ end
1598
+
1599
+ # Update properties of this object
1600
+ def update!(**args)
1601
+ @enforce = args[:enforce] if args.key?(:enforce)
1602
+ @validate = args[:validate] if args.key?(:validate)
1603
+ end
1604
+ end
1605
+
1606
+ # A file or script to execute.
1607
+ class OsPolicyResourceExecResourceExec
1608
+ include Google::Apis::Core::Hashable
1609
+
1610
+ # Optional arguments to pass to the source during execution.
1611
+ # Corresponds to the JSON property `args`
1612
+ # @return [Array<String>]
1613
+ attr_accessor :args
1614
+
1615
+ # A remote or local file.
1616
+ # Corresponds to the JSON property `file`
1617
+ # @return [Google::Apis::OsconfigV1::OsPolicyResourceFile]
1618
+ attr_accessor :file
1619
+
1620
+ # Required. The script interpreter to use.
1621
+ # Corresponds to the JSON property `interpreter`
1622
+ # @return [String]
1623
+ attr_accessor :interpreter
1624
+
1625
+ # Only recorded for enforce Exec. Path to an output file (that is created by
1626
+ # this Exec) whose content will be recorded in OSPolicyResourceCompliance after
1627
+ # a successful run. Absence or failure to read this file will result in this
1628
+ # ExecResource being non-compliant. Output file size is limited to 100K bytes.
1629
+ # Corresponds to the JSON property `outputFilePath`
1630
+ # @return [String]
1631
+ attr_accessor :output_file_path
1632
+
1633
+ # An inline script. The size of the script is limited to 1024 characters.
1634
+ # Corresponds to the JSON property `script`
1635
+ # @return [String]
1636
+ attr_accessor :script
1637
+
1638
+ def initialize(**args)
1639
+ update!(**args)
1640
+ end
1641
+
1642
+ # Update properties of this object
1643
+ def update!(**args)
1644
+ @args = args[:args] if args.key?(:args)
1645
+ @file = args[:file] if args.key?(:file)
1646
+ @interpreter = args[:interpreter] if args.key?(:interpreter)
1647
+ @output_file_path = args[:output_file_path] if args.key?(:output_file_path)
1648
+ @script = args[:script] if args.key?(:script)
1649
+ end
1650
+ end
1651
+
1652
+ # A remote or local file.
1653
+ class OsPolicyResourceFile
1654
+ include Google::Apis::Core::Hashable
1655
+
1656
+ # Defaults to false. When false, files are subject to validations based on the
1657
+ # file type: Remote: A checksum must be specified. Cloud Storage: An object
1658
+ # generation number must be specified.
1659
+ # Corresponds to the JSON property `allowInsecure`
1660
+ # @return [Boolean]
1661
+ attr_accessor :allow_insecure
1662
+ alias_method :allow_insecure?, :allow_insecure
1663
+
1664
+ # Specifies a file available as a Cloud Storage Object.
1665
+ # Corresponds to the JSON property `gcs`
1666
+ # @return [Google::Apis::OsconfigV1::OsPolicyResourceFileGcs]
1667
+ attr_accessor :gcs
1668
+
1669
+ # A local path within the VM to use.
1670
+ # Corresponds to the JSON property `localPath`
1671
+ # @return [String]
1672
+ attr_accessor :local_path
1673
+
1674
+ # Specifies a file available via some URI.
1675
+ # Corresponds to the JSON property `remote`
1676
+ # @return [Google::Apis::OsconfigV1::OsPolicyResourceFileRemote]
1677
+ attr_accessor :remote
1678
+
1679
+ def initialize(**args)
1680
+ update!(**args)
1681
+ end
1682
+
1683
+ # Update properties of this object
1684
+ def update!(**args)
1685
+ @allow_insecure = args[:allow_insecure] if args.key?(:allow_insecure)
1686
+ @gcs = args[:gcs] if args.key?(:gcs)
1687
+ @local_path = args[:local_path] if args.key?(:local_path)
1688
+ @remote = args[:remote] if args.key?(:remote)
1689
+ end
1690
+ end
1691
+
1692
+ # Specifies a file available as a Cloud Storage Object.
1693
+ class OsPolicyResourceFileGcs
1694
+ include Google::Apis::Core::Hashable
1695
+
1696
+ # Required. Bucket of the Cloud Storage object.
1697
+ # Corresponds to the JSON property `bucket`
1698
+ # @return [String]
1699
+ attr_accessor :bucket
1700
+
1701
+ # Generation number of the Cloud Storage object.
1702
+ # Corresponds to the JSON property `generation`
1703
+ # @return [Fixnum]
1704
+ attr_accessor :generation
1705
+
1706
+ # Required. Name of the Cloud Storage object.
1707
+ # Corresponds to the JSON property `object`
1708
+ # @return [String]
1709
+ attr_accessor :object
1710
+
1711
+ def initialize(**args)
1712
+ update!(**args)
1713
+ end
1714
+
1715
+ # Update properties of this object
1716
+ def update!(**args)
1717
+ @bucket = args[:bucket] if args.key?(:bucket)
1718
+ @generation = args[:generation] if args.key?(:generation)
1719
+ @object = args[:object] if args.key?(:object)
1720
+ end
1721
+ end
1722
+
1723
+ # Specifies a file available via some URI.
1724
+ class OsPolicyResourceFileRemote
1725
+ include Google::Apis::Core::Hashable
1726
+
1727
+ # SHA256 checksum of the remote file.
1728
+ # Corresponds to the JSON property `sha256Checksum`
1729
+ # @return [String]
1730
+ attr_accessor :sha256_checksum
1731
+
1732
+ # Required. URI from which to fetch the object. It should contain both the
1733
+ # protocol and path following the format ``protocol`://`location``.
1734
+ # Corresponds to the JSON property `uri`
1735
+ # @return [String]
1736
+ attr_accessor :uri
1737
+
1738
+ def initialize(**args)
1739
+ update!(**args)
1740
+ end
1741
+
1742
+ # Update properties of this object
1743
+ def update!(**args)
1744
+ @sha256_checksum = args[:sha256_checksum] if args.key?(:sha256_checksum)
1745
+ @uri = args[:uri] if args.key?(:uri)
1746
+ end
1747
+ end
1748
+
1749
+ # A resource that manages the state of a file.
1750
+ class OsPolicyResourceFileResource
1751
+ include Google::Apis::Core::Hashable
1752
+
1753
+ # A a file with this content. The size of the content is limited to 1024
1754
+ # characters.
1755
+ # Corresponds to the JSON property `content`
1756
+ # @return [String]
1757
+ attr_accessor :content
1758
+
1759
+ # A remote or local file.
1760
+ # Corresponds to the JSON property `file`
1761
+ # @return [Google::Apis::OsconfigV1::OsPolicyResourceFile]
1762
+ attr_accessor :file
1763
+
1764
+ # Required. The absolute path of the file within the VM.
1765
+ # Corresponds to the JSON property `path`
1766
+ # @return [String]
1767
+ attr_accessor :path
1768
+
1769
+ # Consists of three octal digits which represent, in order, the permissions of
1770
+ # the owner, group, and other users for the file (similarly to the numeric mode
1771
+ # used in the linux chmod utility). Each digit represents a three bit number
1772
+ # with the 4 bit corresponding to the read permissions, the 2 bit corresponds to
1773
+ # the write bit, and the one bit corresponds to the execute permission. Default
1774
+ # behavior is 755. Below are some examples of permissions and their associated
1775
+ # values: read, write, and execute: 7 read and execute: 5 read and write: 6 read
1776
+ # only: 4
1777
+ # Corresponds to the JSON property `permissions`
1778
+ # @return [String]
1779
+ attr_accessor :permissions
1780
+
1781
+ # Required. Desired state of the file.
1782
+ # Corresponds to the JSON property `state`
1783
+ # @return [String]
1784
+ attr_accessor :state
1785
+
1786
+ def initialize(**args)
1787
+ update!(**args)
1788
+ end
1789
+
1790
+ # Update properties of this object
1791
+ def update!(**args)
1792
+ @content = args[:content] if args.key?(:content)
1793
+ @file = args[:file] if args.key?(:file)
1794
+ @path = args[:path] if args.key?(:path)
1795
+ @permissions = args[:permissions] if args.key?(:permissions)
1796
+ @state = args[:state] if args.key?(:state)
1797
+ end
1798
+ end
1799
+
1800
+ # Resource groups provide a mechanism to group OS policy resources. Resource
1801
+ # groups enable OS policy authors to create a single OS policy to be applied to
1802
+ # VMs running different operating Systems. When the OS policy is applied to a
1803
+ # target VM, the appropriate resource group within the OS policy is selected
1804
+ # based on the `OSFilter` specified within the resource group.
1805
+ class OsPolicyResourceGroup
1806
+ include Google::Apis::Core::Hashable
1807
+
1808
+ # List of inventory filters for the resource group. The resources in this
1809
+ # resource group are applied to the target VM if it satisfies at least one of
1810
+ # the following inventory filters. For example, to apply this resource group to
1811
+ # VMs running either `RHEL` or `CentOS` operating systems, specify 2 items for
1812
+ # the list with following values: inventory_filters[0].os_short_name='rhel' and
1813
+ # inventory_filters[1].os_short_name='centos' If the list is empty, this
1814
+ # resource group will be applied to the target VM unconditionally.
1815
+ # Corresponds to the JSON property `inventoryFilters`
1816
+ # @return [Array<Google::Apis::OsconfigV1::OsPolicyInventoryFilter>]
1817
+ attr_accessor :inventory_filters
1818
+
1819
+ # Required. List of resources configured for this resource group. The resources
1820
+ # are executed in the exact order specified here.
1821
+ # Corresponds to the JSON property `resources`
1822
+ # @return [Array<Google::Apis::OsconfigV1::OsPolicyResource>]
1823
+ attr_accessor :resources
1824
+
1825
+ def initialize(**args)
1826
+ update!(**args)
1827
+ end
1828
+
1829
+ # Update properties of this object
1830
+ def update!(**args)
1831
+ @inventory_filters = args[:inventory_filters] if args.key?(:inventory_filters)
1832
+ @resources = args[:resources] if args.key?(:resources)
1833
+ end
1834
+ end
1835
+
1836
+ # A resource that manages a system package.
1837
+ class OsPolicyResourcePackageResource
1838
+ include Google::Apis::Core::Hashable
1839
+
1840
+ # A package managed by APT. - install: `apt-get update && apt-get -y install [
1841
+ # name]` - remove: `apt-get -y remove [name]`
1842
+ # Corresponds to the JSON property `apt`
1843
+ # @return [Google::Apis::OsconfigV1::OsPolicyResourcePackageResourceApt]
1844
+ attr_accessor :apt
1845
+
1846
+ # A deb package file. dpkg packages only support INSTALLED state.
1847
+ # Corresponds to the JSON property `deb`
1848
+ # @return [Google::Apis::OsconfigV1::OsPolicyResourcePackageResourceDeb]
1849
+ attr_accessor :deb
1850
+
1851
+ # Required. The desired state the agent should maintain for this package.
1852
+ # Corresponds to the JSON property `desiredState`
1853
+ # @return [String]
1854
+ attr_accessor :desired_state
1855
+
1856
+ # A package managed by GooGet. - install: `googet -noconfirm install package` -
1857
+ # remove: `googet -noconfirm remove package`
1858
+ # Corresponds to the JSON property `googet`
1859
+ # @return [Google::Apis::OsconfigV1::OsPolicyResourcePackageResourceGooGet]
1860
+ attr_accessor :googet
1861
+
1862
+ # An MSI package. MSI packages only support INSTALLED state.
1863
+ # Corresponds to the JSON property `msi`
1864
+ # @return [Google::Apis::OsconfigV1::OsPolicyResourcePackageResourceMsi]
1865
+ attr_accessor :msi
1866
+
1867
+ # An RPM package file. RPM packages only support INSTALLED state.
1868
+ # Corresponds to the JSON property `rpm`
1869
+ # @return [Google::Apis::OsconfigV1::OsPolicyResourcePackageResourceRpm]
1870
+ attr_accessor :rpm
1871
+
1872
+ # A package managed by YUM. - install: `yum -y install package` - remove: `yum -
1873
+ # y remove package`
1874
+ # Corresponds to the JSON property `yum`
1875
+ # @return [Google::Apis::OsconfigV1::OsPolicyResourcePackageResourceYum]
1876
+ attr_accessor :yum
1877
+
1878
+ # A package managed by Zypper. - install: `zypper -y install package` - remove: `
1879
+ # zypper -y rm package`
1880
+ # Corresponds to the JSON property `zypper`
1881
+ # @return [Google::Apis::OsconfigV1::OsPolicyResourcePackageResourceZypper]
1882
+ attr_accessor :zypper
1883
+
1884
+ def initialize(**args)
1885
+ update!(**args)
1886
+ end
1887
+
1888
+ # Update properties of this object
1889
+ def update!(**args)
1890
+ @apt = args[:apt] if args.key?(:apt)
1891
+ @deb = args[:deb] if args.key?(:deb)
1892
+ @desired_state = args[:desired_state] if args.key?(:desired_state)
1893
+ @googet = args[:googet] if args.key?(:googet)
1894
+ @msi = args[:msi] if args.key?(:msi)
1895
+ @rpm = args[:rpm] if args.key?(:rpm)
1896
+ @yum = args[:yum] if args.key?(:yum)
1897
+ @zypper = args[:zypper] if args.key?(:zypper)
1898
+ end
1899
+ end
1900
+
1901
+ # A package managed by APT. - install: `apt-get update && apt-get -y install [
1902
+ # name]` - remove: `apt-get -y remove [name]`
1903
+ class OsPolicyResourcePackageResourceApt
1904
+ include Google::Apis::Core::Hashable
1905
+
1906
+ # Required. Package name.
1907
+ # Corresponds to the JSON property `name`
1908
+ # @return [String]
1909
+ attr_accessor :name
1910
+
1911
+ def initialize(**args)
1912
+ update!(**args)
1913
+ end
1914
+
1915
+ # Update properties of this object
1916
+ def update!(**args)
1917
+ @name = args[:name] if args.key?(:name)
1918
+ end
1919
+ end
1920
+
1921
+ # A deb package file. dpkg packages only support INSTALLED state.
1922
+ class OsPolicyResourcePackageResourceDeb
1923
+ include Google::Apis::Core::Hashable
1924
+
1925
+ # Whether dependencies should also be installed. - install when false: `dpkg -i
1926
+ # package` - install when true: `apt-get update && apt-get -y install package.
1927
+ # deb`
1928
+ # Corresponds to the JSON property `pullDeps`
1929
+ # @return [Boolean]
1930
+ attr_accessor :pull_deps
1931
+ alias_method :pull_deps?, :pull_deps
1932
+
1933
+ # A remote or local file.
1934
+ # Corresponds to the JSON property `source`
1935
+ # @return [Google::Apis::OsconfigV1::OsPolicyResourceFile]
1936
+ attr_accessor :source
1937
+
1938
+ def initialize(**args)
1939
+ update!(**args)
1940
+ end
1941
+
1942
+ # Update properties of this object
1943
+ def update!(**args)
1944
+ @pull_deps = args[:pull_deps] if args.key?(:pull_deps)
1945
+ @source = args[:source] if args.key?(:source)
1946
+ end
1947
+ end
1948
+
1949
+ # A package managed by GooGet. - install: `googet -noconfirm install package` -
1950
+ # remove: `googet -noconfirm remove package`
1951
+ class OsPolicyResourcePackageResourceGooGet
1952
+ include Google::Apis::Core::Hashable
1953
+
1954
+ # Required. Package name.
1955
+ # Corresponds to the JSON property `name`
1956
+ # @return [String]
1957
+ attr_accessor :name
1958
+
1959
+ def initialize(**args)
1960
+ update!(**args)
1961
+ end
1962
+
1963
+ # Update properties of this object
1964
+ def update!(**args)
1965
+ @name = args[:name] if args.key?(:name)
1966
+ end
1967
+ end
1968
+
1969
+ # An MSI package. MSI packages only support INSTALLED state.
1970
+ class OsPolicyResourcePackageResourceMsi
1971
+ include Google::Apis::Core::Hashable
1972
+
1973
+ # Additional properties to use during installation. This should be in the format
1974
+ # of Property=Setting. Appended to the defaults of `ACTION=INSTALL REBOOT=
1975
+ # ReallySuppress`.
1976
+ # Corresponds to the JSON property `properties`
1977
+ # @return [Array<String>]
1978
+ attr_accessor :properties
1979
+
1980
+ # A remote or local file.
1981
+ # Corresponds to the JSON property `source`
1982
+ # @return [Google::Apis::OsconfigV1::OsPolicyResourceFile]
1983
+ attr_accessor :source
1984
+
1985
+ def initialize(**args)
1986
+ update!(**args)
1987
+ end
1988
+
1989
+ # Update properties of this object
1990
+ def update!(**args)
1991
+ @properties = args[:properties] if args.key?(:properties)
1992
+ @source = args[:source] if args.key?(:source)
1993
+ end
1994
+ end
1995
+
1996
+ # An RPM package file. RPM packages only support INSTALLED state.
1997
+ class OsPolicyResourcePackageResourceRpm
1998
+ include Google::Apis::Core::Hashable
1999
+
2000
+ # Whether dependencies should also be installed. - install when false: `rpm --
2001
+ # upgrade --replacepkgs package.rpm` - install when true: `yum -y install
2002
+ # package.rpm` or `zypper -y install package.rpm`
2003
+ # Corresponds to the JSON property `pullDeps`
2004
+ # @return [Boolean]
2005
+ attr_accessor :pull_deps
2006
+ alias_method :pull_deps?, :pull_deps
2007
+
2008
+ # A remote or local file.
2009
+ # Corresponds to the JSON property `source`
2010
+ # @return [Google::Apis::OsconfigV1::OsPolicyResourceFile]
2011
+ attr_accessor :source
2012
+
2013
+ def initialize(**args)
2014
+ update!(**args)
2015
+ end
2016
+
2017
+ # Update properties of this object
2018
+ def update!(**args)
2019
+ @pull_deps = args[:pull_deps] if args.key?(:pull_deps)
2020
+ @source = args[:source] if args.key?(:source)
2021
+ end
2022
+ end
2023
+
2024
+ # A package managed by YUM. - install: `yum -y install package` - remove: `yum -
2025
+ # y remove package`
2026
+ class OsPolicyResourcePackageResourceYum
2027
+ include Google::Apis::Core::Hashable
2028
+
2029
+ # Required. Package name.
2030
+ # Corresponds to the JSON property `name`
2031
+ # @return [String]
2032
+ attr_accessor :name
2033
+
2034
+ def initialize(**args)
2035
+ update!(**args)
2036
+ end
2037
+
2038
+ # Update properties of this object
2039
+ def update!(**args)
2040
+ @name = args[:name] if args.key?(:name)
2041
+ end
2042
+ end
2043
+
2044
+ # A package managed by Zypper. - install: `zypper -y install package` - remove: `
2045
+ # zypper -y rm package`
2046
+ class OsPolicyResourcePackageResourceZypper
2047
+ include Google::Apis::Core::Hashable
2048
+
2049
+ # Required. Package name.
2050
+ # Corresponds to the JSON property `name`
2051
+ # @return [String]
2052
+ attr_accessor :name
2053
+
2054
+ def initialize(**args)
2055
+ update!(**args)
2056
+ end
2057
+
2058
+ # Update properties of this object
2059
+ def update!(**args)
2060
+ @name = args[:name] if args.key?(:name)
2061
+ end
2062
+ end
2063
+
2064
+ # A resource that manages a package repository.
2065
+ class OsPolicyResourceRepositoryResource
2066
+ include Google::Apis::Core::Hashable
2067
+
2068
+ # Represents a single apt package repository. These will be added to a repo file
2069
+ # that will be managed at `/etc/apt/sources.list.d/google_osconfig.list`.
2070
+ # Corresponds to the JSON property `apt`
2071
+ # @return [Google::Apis::OsconfigV1::OsPolicyResourceRepositoryResourceAptRepository]
2072
+ attr_accessor :apt
2073
+
2074
+ # Represents a Goo package repository. These are added to a repo file that is
2075
+ # managed at `C:/ProgramData/GooGet/repos/google_osconfig.repo`.
2076
+ # Corresponds to the JSON property `goo`
2077
+ # @return [Google::Apis::OsconfigV1::OsPolicyResourceRepositoryResourceGooRepository]
2078
+ attr_accessor :goo
2079
+
2080
+ # Represents a single yum package repository. These are added to a repo file
2081
+ # that is managed at `/etc/yum.repos.d/google_osconfig.repo`.
2082
+ # Corresponds to the JSON property `yum`
2083
+ # @return [Google::Apis::OsconfigV1::OsPolicyResourceRepositoryResourceYumRepository]
2084
+ attr_accessor :yum
2085
+
2086
+ # Represents a single zypper package repository. These are added to a repo file
2087
+ # that is managed at `/etc/zypp/repos.d/google_osconfig.repo`.
2088
+ # Corresponds to the JSON property `zypper`
2089
+ # @return [Google::Apis::OsconfigV1::OsPolicyResourceRepositoryResourceZypperRepository]
2090
+ attr_accessor :zypper
2091
+
2092
+ def initialize(**args)
2093
+ update!(**args)
2094
+ end
2095
+
2096
+ # Update properties of this object
2097
+ def update!(**args)
2098
+ @apt = args[:apt] if args.key?(:apt)
2099
+ @goo = args[:goo] if args.key?(:goo)
2100
+ @yum = args[:yum] if args.key?(:yum)
2101
+ @zypper = args[:zypper] if args.key?(:zypper)
2102
+ end
2103
+ end
2104
+
2105
+ # Represents a single apt package repository. These will be added to a repo file
2106
+ # that will be managed at `/etc/apt/sources.list.d/google_osconfig.list`.
2107
+ class OsPolicyResourceRepositoryResourceAptRepository
2108
+ include Google::Apis::Core::Hashable
2109
+
2110
+ # Required. Type of archive files in this repository.
2111
+ # Corresponds to the JSON property `archiveType`
2112
+ # @return [String]
2113
+ attr_accessor :archive_type
2114
+
2115
+ # Required. List of components for this repository. Must contain at least one
2116
+ # item.
2117
+ # Corresponds to the JSON property `components`
2118
+ # @return [Array<String>]
2119
+ attr_accessor :components
2120
+
2121
+ # Required. Distribution of this repository.
2122
+ # Corresponds to the JSON property `distribution`
2123
+ # @return [String]
2124
+ attr_accessor :distribution
2125
+
2126
+ # URI of the key file for this repository. The agent maintains a keyring at `/
2127
+ # etc/apt/trusted.gpg.d/osconfig_agent_managed.gpg`.
2128
+ # Corresponds to the JSON property `gpgKey`
2129
+ # @return [String]
2130
+ attr_accessor :gpg_key
2131
+
2132
+ # Required. URI for this repository.
2133
+ # Corresponds to the JSON property `uri`
2134
+ # @return [String]
2135
+ attr_accessor :uri
2136
+
2137
+ def initialize(**args)
2138
+ update!(**args)
2139
+ end
2140
+
2141
+ # Update properties of this object
2142
+ def update!(**args)
2143
+ @archive_type = args[:archive_type] if args.key?(:archive_type)
2144
+ @components = args[:components] if args.key?(:components)
2145
+ @distribution = args[:distribution] if args.key?(:distribution)
2146
+ @gpg_key = args[:gpg_key] if args.key?(:gpg_key)
2147
+ @uri = args[:uri] if args.key?(:uri)
2148
+ end
2149
+ end
2150
+
2151
+ # Represents a Goo package repository. These are added to a repo file that is
2152
+ # managed at `C:/ProgramData/GooGet/repos/google_osconfig.repo`.
2153
+ class OsPolicyResourceRepositoryResourceGooRepository
2154
+ include Google::Apis::Core::Hashable
2155
+
2156
+ # Required. The name of the repository.
2157
+ # Corresponds to the JSON property `name`
2158
+ # @return [String]
2159
+ attr_accessor :name
2160
+
2161
+ # Required. The url of the repository.
2162
+ # Corresponds to the JSON property `url`
2163
+ # @return [String]
2164
+ attr_accessor :url
2165
+
2166
+ def initialize(**args)
2167
+ update!(**args)
2168
+ end
2169
+
2170
+ # Update properties of this object
2171
+ def update!(**args)
2172
+ @name = args[:name] if args.key?(:name)
2173
+ @url = args[:url] if args.key?(:url)
2174
+ end
2175
+ end
2176
+
2177
+ # Represents a single yum package repository. These are added to a repo file
2178
+ # that is managed at `/etc/yum.repos.d/google_osconfig.repo`.
2179
+ class OsPolicyResourceRepositoryResourceYumRepository
2180
+ include Google::Apis::Core::Hashable
2181
+
2182
+ # Required. The location of the repository directory.
2183
+ # Corresponds to the JSON property `baseUrl`
2184
+ # @return [String]
2185
+ attr_accessor :base_url
2186
+
2187
+ # The display name of the repository.
2188
+ # Corresponds to the JSON property `displayName`
2189
+ # @return [String]
2190
+ attr_accessor :display_name
2191
+
2192
+ # URIs of GPG keys.
2193
+ # Corresponds to the JSON property `gpgKeys`
2194
+ # @return [Array<String>]
2195
+ attr_accessor :gpg_keys
2196
+
2197
+ # Required. A one word, unique name for this repository. This is the `repo id`
2198
+ # in the yum config file and also the `display_name` if `display_name` is
2199
+ # omitted. This id is also used as the unique identifier when checking for
2200
+ # resource conflicts.
2201
+ # Corresponds to the JSON property `id`
2202
+ # @return [String]
2203
+ attr_accessor :id
2204
+
2205
+ def initialize(**args)
2206
+ update!(**args)
2207
+ end
2208
+
2209
+ # Update properties of this object
2210
+ def update!(**args)
2211
+ @base_url = args[:base_url] if args.key?(:base_url)
2212
+ @display_name = args[:display_name] if args.key?(:display_name)
2213
+ @gpg_keys = args[:gpg_keys] if args.key?(:gpg_keys)
2214
+ @id = args[:id] if args.key?(:id)
2215
+ end
2216
+ end
2217
+
2218
+ # Represents a single zypper package repository. These are added to a repo file
2219
+ # that is managed at `/etc/zypp/repos.d/google_osconfig.repo`.
2220
+ class OsPolicyResourceRepositoryResourceZypperRepository
2221
+ include Google::Apis::Core::Hashable
2222
+
2223
+ # Required. The location of the repository directory.
2224
+ # Corresponds to the JSON property `baseUrl`
2225
+ # @return [String]
2226
+ attr_accessor :base_url
2227
+
2228
+ # The display name of the repository.
2229
+ # Corresponds to the JSON property `displayName`
2230
+ # @return [String]
2231
+ attr_accessor :display_name
2232
+
2233
+ # URIs of GPG keys.
2234
+ # Corresponds to the JSON property `gpgKeys`
2235
+ # @return [Array<String>]
2236
+ attr_accessor :gpg_keys
2237
+
2238
+ # Required. A one word, unique name for this repository. This is the `repo id`
2239
+ # in the zypper config file and also the `display_name` if `display_name` is
2240
+ # omitted. This id is also used as the unique identifier when checking for
2241
+ # GuestPolicy conflicts.
2242
+ # Corresponds to the JSON property `id`
2243
+ # @return [String]
2244
+ attr_accessor :id
2245
+
2246
+ def initialize(**args)
2247
+ update!(**args)
2248
+ end
2249
+
2250
+ # Update properties of this object
2251
+ def update!(**args)
2252
+ @base_url = args[:base_url] if args.key?(:base_url)
2253
+ @display_name = args[:display_name] if args.key?(:display_name)
2254
+ @gpg_keys = args[:gpg_keys] if args.key?(:gpg_keys)
2255
+ @id = args[:id] if args.key?(:id)
2256
+ end
2257
+ end
2258
+
2259
+ # Sets the time for a one time patch deployment. Timestamp is in [RFC3339](https:
2260
+ # //www.ietf.org/rfc/rfc3339.txt) text format.
2261
+ class OneTimeSchedule
2262
+ include Google::Apis::Core::Hashable
2263
+
2264
+ # Required. The desired patch job execution time.
2265
+ # Corresponds to the JSON property `executeTime`
2266
+ # @return [String]
2267
+ attr_accessor :execute_time
2268
+
2269
+ def initialize(**args)
2270
+ update!(**args)
2271
+ end
2272
+
2273
+ # Update properties of this object
2274
+ def update!(**args)
2275
+ @execute_time = args[:execute_time] if args.key?(:execute_time)
2276
+ end
2277
+ end
2278
+
2279
+ # This resource represents a long-running operation that is the result of a
2280
+ # network API call.
2281
+ class Operation
2282
+ include Google::Apis::Core::Hashable
2283
+
2284
+ # If the value is `false`, it means the operation is still in progress. If `true`
2285
+ # , the operation is completed, and either `error` or `response` is available.
2286
+ # Corresponds to the JSON property `done`
2287
+ # @return [Boolean]
2288
+ attr_accessor :done
2289
+ alias_method :done?, :done
2290
+
2291
+ # The `Status` type defines a logical error model that is suitable for different
2292
+ # programming environments, including REST APIs and RPC APIs. It is used by [
2293
+ # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
2294
+ # data: error code, error message, and error details. You can find out more
2295
+ # about this error model and how to work with it in the [API Design Guide](https:
2296
+ # //cloud.google.com/apis/design/errors).
2297
+ # Corresponds to the JSON property `error`
2298
+ # @return [Google::Apis::OsconfigV1::Status]
2299
+ attr_accessor :error
2300
+
2301
+ # Service-specific metadata associated with the operation. It typically contains
2302
+ # progress information and common metadata such as create time. Some services
2303
+ # might not provide such metadata. Any method that returns a long-running
2304
+ # operation should document the metadata type, if any.
2305
+ # Corresponds to the JSON property `metadata`
2306
+ # @return [Hash<String,Object>]
2307
+ attr_accessor :metadata
2308
+
2309
+ # The server-assigned name, which is only unique within the same service that
2310
+ # originally returns it. If you use the default HTTP mapping, the `name` should
2311
+ # be a resource name ending with `operations/`unique_id``.
2312
+ # Corresponds to the JSON property `name`
2313
+ # @return [String]
2314
+ attr_accessor :name
2315
+
2316
+ # The normal response of the operation in case of success. If the original
2317
+ # method returns no data on success, such as `Delete`, the response is `google.
2318
+ # protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`,
2319
+ # the response should be the resource. For other methods, the response should
2320
+ # have the type `XxxResponse`, where `Xxx` is the original method name. For
2321
+ # example, if the original method name is `TakeSnapshot()`, the inferred
2322
+ # response type is `TakeSnapshotResponse`.
2323
+ # Corresponds to the JSON property `response`
2324
+ # @return [Hash<String,Object>]
2325
+ attr_accessor :response
2326
+
2327
+ def initialize(**args)
2328
+ update!(**args)
2329
+ end
2330
+
2331
+ # Update properties of this object
2332
+ def update!(**args)
2333
+ @done = args[:done] if args.key?(:done)
2334
+ @error = args[:error] if args.key?(:error)
2335
+ @metadata = args[:metadata] if args.key?(:metadata)
2336
+ @name = args[:name] if args.key?(:name)
2337
+ @response = args[:response] if args.key?(:response)
2338
+ end
2339
+ end
2340
+
2341
+ # Patch configuration specifications. Contains details on how to apply the patch(
2342
+ # es) to a VM instance.
2343
+ class PatchConfig
2344
+ include Google::Apis::Core::Hashable
2345
+
2346
+ # Apt patching is completed by executing `apt-get update && apt-get upgrade`.
2347
+ # Additional options can be set to control how this is executed.
2348
+ # Corresponds to the JSON property `apt`
2349
+ # @return [Google::Apis::OsconfigV1::AptSettings]
2350
+ attr_accessor :apt
2351
+
2352
+ # Googet patching is performed by running `googet update`.
2353
+ # Corresponds to the JSON property `goo`
2354
+ # @return [Google::Apis::OsconfigV1::GooSettings]
2355
+ attr_accessor :goo
2356
+
2357
+ # A step that runs an executable for a PatchJob.
2358
+ # Corresponds to the JSON property `postStep`
2359
+ # @return [Google::Apis::OsconfigV1::ExecStep]
2360
+ attr_accessor :post_step
2361
+
2362
+ # A step that runs an executable for a PatchJob.
2363
+ # Corresponds to the JSON property `preStep`
2364
+ # @return [Google::Apis::OsconfigV1::ExecStep]
2365
+ attr_accessor :pre_step
2366
+
2367
+ # Post-patch reboot settings.
2368
+ # Corresponds to the JSON property `rebootConfig`
2369
+ # @return [String]
2370
+ attr_accessor :reboot_config
1069
2371
 
1070
2372
  # Windows patching is performed using the Windows Update Agent.
1071
2373
  # Corresponds to the JSON property `windowsUpdate`
@@ -1650,6 +2952,45 @@ module Google
1650
2952
  end
1651
2953
  end
1652
2954
 
2955
+ # The `Status` type defines a logical error model that is suitable for different
2956
+ # programming environments, including REST APIs and RPC APIs. It is used by [
2957
+ # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
2958
+ # data: error code, error message, and error details. You can find out more
2959
+ # about this error model and how to work with it in the [API Design Guide](https:
2960
+ # //cloud.google.com/apis/design/errors).
2961
+ class Status
2962
+ include Google::Apis::Core::Hashable
2963
+
2964
+ # The status code, which should be an enum value of google.rpc.Code.
2965
+ # Corresponds to the JSON property `code`
2966
+ # @return [Fixnum]
2967
+ attr_accessor :code
2968
+
2969
+ # A list of messages that carry the error details. There is a common set of
2970
+ # message types for APIs to use.
2971
+ # Corresponds to the JSON property `details`
2972
+ # @return [Array<Hash<String,Object>>]
2973
+ attr_accessor :details
2974
+
2975
+ # A developer-facing error message, which should be in English. Any user-facing
2976
+ # error message should be localized and sent in the google.rpc.Status.details
2977
+ # field, or localized by the client.
2978
+ # Corresponds to the JSON property `message`
2979
+ # @return [String]
2980
+ attr_accessor :message
2981
+
2982
+ def initialize(**args)
2983
+ update!(**args)
2984
+ end
2985
+
2986
+ # Update properties of this object
2987
+ def update!(**args)
2988
+ @code = args[:code] if args.key?(:code)
2989
+ @details = args[:details] if args.key?(:details)
2990
+ @message = args[:message] if args.key?(:message)
2991
+ end
2992
+ end
2993
+
1653
2994
  # Represents a time of day. The date and time zone are either not significant or
1654
2995
  # are specified elsewhere. An API may choose to allow leap seconds. Related
1655
2996
  # types are google.type.Date and `google.protobuf.Timestamp`.