• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2021 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15syntax = "proto3";
16
17package google.cloud.osconfig.v1alpha;
18
19import "google/api/field_behavior.proto";
20import "google/api/resource.proto";
21import "google/protobuf/timestamp.proto";
22import "google/type/date.proto";
23
24option csharp_namespace = "Google.Cloud.OsConfig.V1Alpha";
25option go_package = "cloud.google.com/go/osconfig/apiv1alpha/osconfigpb;osconfigpb";
26option java_multiple_files = true;
27option java_outer_classname = "Inventories";
28option java_package = "com.google.cloud.osconfig.v1alpha";
29option php_namespace = "Google\\Cloud\\OsConfig\\V1alpha";
30option ruby_package = "Google::Cloud::OsConfig::V1alpha";
31
32// OS Inventory is a service for collecting and reporting operating
33// system and package information on VM instances.
34
35// This API resource represents the available inventory data for a
36// Compute Engine virtual machine (VM) instance at a given point in time.
37//
38// You can use this API resource to determine the inventory data of your VM.
39//
40// For more information, see [Information provided by OS inventory
41// management](https://cloud.google.com/compute/docs/instances/os-inventory-management#data-collected).
42message Inventory {
43  option (google.api.resource) = {
44    type: "osconfig.googleapis.com/Inventory"
45    pattern: "projects/{project}/locations/{location}/instances/{instance}/inventory"
46  };
47
48  // Operating system information for the VM.
49  message OsInfo {
50    // The VM hostname.
51    string hostname = 9;
52
53    // The operating system long name.
54    // For example 'Debian GNU/Linux 9' or 'Microsoft Window Server 2019
55    // Datacenter'.
56    string long_name = 2;
57
58    // The operating system short name.
59    // For example, 'windows' or 'debian'.
60    string short_name = 3;
61
62    // The version of the operating system.
63    string version = 4;
64
65    // The system architecture of the operating system.
66    string architecture = 5;
67
68    // The kernel version of the operating system.
69    string kernel_version = 6;
70
71    // The kernel release of the operating system.
72    string kernel_release = 7;
73
74    // The current version of the OS Config agent running on the VM.
75    string osconfig_agent_version = 8;
76  }
77
78  // A single piece of inventory on a VM.
79  message Item {
80    // The origin of a specific inventory item.
81    enum OriginType {
82      // Invalid. An origin type must be specified.
83      ORIGIN_TYPE_UNSPECIFIED = 0;
84
85      // This inventory item was discovered as the result of the agent
86      // reporting inventory via the reporting API.
87      INVENTORY_REPORT = 1;
88    }
89
90    // The different types of inventory that are tracked on a VM.
91    enum Type {
92      // Invalid. An type must be specified.
93      TYPE_UNSPECIFIED = 0;
94
95      // This represents a package that is installed on the VM.
96      INSTALLED_PACKAGE = 1;
97
98      // This represents an update that is available for a package.
99      AVAILABLE_PACKAGE = 2;
100    }
101
102    // Identifier for this item, unique across items for this VM.
103    string id = 1;
104
105    // The origin of this inventory item.
106    OriginType origin_type = 2;
107
108    // When this inventory item was first detected.
109    google.protobuf.Timestamp create_time = 8;
110
111    // When this inventory item was last modified.
112    google.protobuf.Timestamp update_time = 9;
113
114    // The specific type of inventory, correlating to its specific details.
115    Type type = 5;
116
117    // Specific details of this inventory item based on its type.
118    oneof details {
119      // Software package present on the VM instance.
120      SoftwarePackage installed_package = 6;
121
122      // Software package available to be installed on the VM instance.
123      SoftwarePackage available_package = 7;
124    }
125  }
126
127  // Software package information of the operating system.
128  message SoftwarePackage {
129    // Information about the different types of software packages.
130    oneof details {
131      // Yum package info.
132      // For details about the yum package manager, see
133      // https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/deployment_guide/ch-yum.
134      VersionedPackage yum_package = 1;
135
136      // Details of an APT package.
137      // For details about the apt package manager, see
138      // https://wiki.debian.org/Apt.
139      VersionedPackage apt_package = 2;
140
141      // Details of a Zypper package.
142      // For details about the Zypper package manager, see
143      // https://en.opensuse.org/SDB:Zypper_manual.
144      VersionedPackage zypper_package = 3;
145
146      // Details of a Googet package.
147      //  For details about the googet package manager, see
148      //  https://github.com/google/googet.
149      VersionedPackage googet_package = 4;
150
151      // Details of a Zypper patch.
152      // For details about the Zypper package manager, see
153      // https://en.opensuse.org/SDB:Zypper_manual.
154      ZypperPatch zypper_patch = 5;
155
156      // Details of a Windows Update package.
157      // See https://docs.microsoft.com/en-us/windows/win32/api/_wua/ for
158      // information about Windows Update.
159      WindowsUpdatePackage wua_package = 6;
160
161      // Details of a Windows Quick Fix engineering package.
162      // See
163      // https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/win32-quickfixengineering
164      // for info in Windows Quick Fix Engineering.
165      WindowsQuickFixEngineeringPackage qfe_package = 7;
166
167      // Details of a COS package.
168      VersionedPackage cos_package = 8;
169
170      // Details of Windows Application.
171      WindowsApplication windows_application = 9;
172    }
173  }
174
175  // Information related to the a standard versioned package.  This includes
176  // package info for APT, Yum, Zypper, and Googet package managers.
177  message VersionedPackage {
178    // The name of the package.
179    string package_name = 4;
180
181    // The system architecture this package is intended for.
182    string architecture = 2;
183
184    // The version of the package.
185    string version = 3;
186  }
187
188  // Details related to a Zypper Patch.
189  message ZypperPatch {
190    // The name of the patch.
191    string patch_name = 5;
192
193    // The category of the patch.
194    string category = 2;
195
196    // The severity specified for this patch
197    string severity = 3;
198
199    // Any summary information provided about this patch.
200    string summary = 4;
201  }
202
203  // Details related to a Windows Update package.
204  // Field data and names are taken from Windows Update API IUpdate Interface:
205  // https://docs.microsoft.com/en-us/windows/win32/api/_wua/
206  // Descriptive fields like title, and description are localized based on
207  // the locale of the VM being updated.
208  message WindowsUpdatePackage {
209    // Categories specified by the Windows Update.
210    message WindowsUpdateCategory {
211      // The identifier of the windows update category.
212      string id = 1;
213
214      // The name of the windows update category.
215      string name = 2;
216    }
217
218    // The localized title of the update package.
219    string title = 1;
220
221    // The localized description of the update package.
222    string description = 2;
223
224    // The categories that are associated with this update package.
225    repeated WindowsUpdateCategory categories = 3;
226
227    // A collection of Microsoft Knowledge Base article IDs that are associated
228    // with the update package.
229    repeated string kb_article_ids = 4;
230
231    // A hyperlink to the language-specific support information for the update.
232    string support_url = 11;
233
234    // A collection of URLs that provide more information about the update
235    // package.
236    repeated string more_info_urls = 5;
237
238    // Gets the identifier of an update package.  Stays the same across
239    // revisions.
240    string update_id = 6;
241
242    // The revision number of this update package.
243    int32 revision_number = 7;
244
245    // The last published date of the update, in (UTC) date and time.
246    google.protobuf.Timestamp last_deployment_change_time = 10;
247  }
248
249  // Information related to a Quick Fix Engineering package.
250  // Fields are taken from Windows QuickFixEngineering Interface and match
251  // the source names:
252  // https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/win32-quickfixengineering
253  message WindowsQuickFixEngineeringPackage {
254    // A short textual description of the QFE update.
255    string caption = 1;
256
257    // A textual description of the QFE update.
258    string description = 2;
259
260    // Unique identifier associated with a particular QFE update.
261    string hot_fix_id = 3;
262
263    // Date that the QFE update was installed.  Mapped from installed_on field.
264    google.protobuf.Timestamp install_time = 5;
265  }
266
267  // Contains information about a Windows application that is retrieved from the
268  // Windows Registry. For more information about these fields, see:
269  // https://docs.microsoft.com/en-us/windows/win32/msi/uninstall-registry-key
270  message WindowsApplication {
271    // The name of the application or product.
272    string display_name = 1;
273
274    // The version of the product or application in string format.
275    string display_version = 2;
276
277    // The name of the manufacturer for the product or application.
278    string publisher = 3;
279
280    // The last time this product received service. The value of this property
281    // is replaced each time a patch is applied or removed from the product or
282    // the command-line option is used to repair the product.
283    google.type.Date install_date = 4;
284
285    // The internet address for technical support.
286    string help_link = 5;
287  }
288
289  // Output only. The `Inventory` API resource name.
290  //
291  // Format:
292  // `projects/{project_number}/locations/{location}/instances/{instance_id}/inventory`
293  string name = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
294
295  // Output only. Base level operating system information for the VM.
296  OsInfo os_info = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
297
298  // Output only. Inventory items related to the VM keyed by an opaque unique identifier for
299  // each inventory item. The identifier is unique to each distinct and
300  // addressable inventory item and will change, when there is a new package
301  // version.
302  map<string, Item> items = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
303
304  // Output only. Timestamp of the last reported inventory for the VM.
305  google.protobuf.Timestamp update_time = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
306}
307
308// A request message for getting inventory data for the specified VM.
309message GetInventoryRequest {
310  // Required. API resource name for inventory resource.
311  //
312  // Format:
313  // `projects/{project}/locations/{location}/instances/{instance}/inventory`
314  //
315  // For `{project}`, either `project-number` or `project-id` can be provided.
316  // For `{instance}`, either Compute Engine  `instance-id` or `instance-name`
317  // can be provided.
318  string name = 1 [
319    (google.api.field_behavior) = REQUIRED,
320    (google.api.resource_reference) = {
321      type: "osconfig.googleapis.com/Inventory"
322    }
323  ];
324
325  // Inventory view indicating what information should be included in the
326  // inventory resource. If unspecified, the default view is BASIC.
327  InventoryView view = 2;
328}
329
330// A request message for listing inventory data for all VMs in the specified
331// location.
332message ListInventoriesRequest {
333  // Required. The parent resource name.
334  //
335  // Format: `projects/{project}/locations/{location}/instances/-`
336  //
337  // For `{project}`, either `project-number` or `project-id` can be provided.
338  string parent = 1 [
339    (google.api.field_behavior) = REQUIRED,
340    (google.api.resource_reference) = {
341      type: "compute.googleapis.com/Instance"
342    }
343  ];
344
345  // Inventory view indicating what information should be included in the
346  // inventory resource. If unspecified, the default view is BASIC.
347  InventoryView view = 2;
348
349  // The maximum number of results to return.
350  int32 page_size = 3;
351
352  // A pagination token returned from a previous call to
353  // `ListInventories` that indicates where this listing
354  // should continue from.
355  string page_token = 4;
356
357  // If provided, this field specifies the criteria that must be met by a
358  // `Inventory` API resource to be included in the response.
359  string filter = 5;
360}
361
362// A response message for listing inventory data for all VMs in a specified
363// location.
364message ListInventoriesResponse {
365  // List of inventory objects.
366  repeated Inventory inventories = 1;
367
368  // The pagination token to retrieve the next page of inventory objects.
369  string next_page_token = 2;
370}
371
372// The view for inventory objects.
373enum InventoryView {
374  // The default value.
375  // The API defaults to the BASIC view.
376  INVENTORY_VIEW_UNSPECIFIED = 0;
377
378  // Returns the basic inventory information that includes `os_info`.
379  BASIC = 1;
380
381  // Returns all fields.
382  FULL = 2;
383}
384