google-apis-osconfig_v1 0.9.0 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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`.