1// Copyright 2020 Google LLC 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15syntax = "proto3"; 16 17package google.cloud.osconfig.agentendpoint.v1; 18 19import "google/protobuf/timestamp.proto"; 20import "google/type/date.proto"; 21 22option go_package = "cloud.google.com/go/osconfig/agentendpoint/apiv1/agentendpointpb;agentendpointpb"; 23option java_multiple_files = true; 24option java_outer_classname = "InventoryProto"; 25option java_package = "com.google.cloud.osconfig.agentendpoint.v1"; 26 27// OS Config Inventory is a service for collecting and reporting operating 28// system and package information on VM instances. 29 30// The inventory details of a VM. 31message Inventory { 32 // Operating system information for the VM. 33 message OsInfo { 34 // The VM hostname. 35 string hostname = 1; 36 37 // The operating system long name. 38 // For example 'Debian GNU/Linux 9' or 'Microsoft Window Server 2019 39 // Datacenter'. 40 string long_name = 2; 41 42 // The operating system short name. 43 // For example, 'windows' or 'debian'. 44 string short_name = 3; 45 46 // The version of the operating system. 47 string version = 4; 48 49 // The system architecture of the operating system. 50 string architecture = 5; 51 52 // The kernel version of the operating system. 53 string kernel_version = 6; 54 55 // The kernel release of the operating system. 56 string kernel_release = 7; 57 58 // The current version of the OS Config agent running on the VM. 59 string osconfig_agent_version = 8; 60 } 61 62 // Software package information of the operating system. 63 message SoftwarePackage { 64 // Information about the different types of software packages. 65 oneof details { 66 // Yum package info. 67 // For details about the yum package manager, see 68 // https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/deployment_guide/ch-yum. 69 VersionedPackage yum_package = 1; 70 71 // Details of an APT package. 72 // For details about the apt package manager, see 73 // https://wiki.debian.org/Apt. 74 VersionedPackage apt_package = 2; 75 76 // Details of a Zypper package. 77 // For details about the Zypper package manager, see 78 // https://en.opensuse.org/SDB:Zypper_manual. 79 VersionedPackage zypper_package = 3; 80 81 // Details of a Googet package. 82 // For details about the googet package manager, see 83 // https://github.com/google/googet. 84 VersionedPackage googet_package = 4; 85 86 // Details of a Zypper patch. 87 // For details about the Zypper package manager, see 88 // https://en.opensuse.org/SDB:Zypper_manual. 89 ZypperPatch zypper_patch = 5; 90 91 // Details of a Windows Update package. 92 // See https://docs.microsoft.com/en-us/windows/win32/api/_wua/ for 93 // information about Windows Update. 94 WindowsUpdatePackage wua_package = 6; 95 96 // Details of a Windows Quick Fix engineering package. 97 // See 98 // https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/win32-quickfixengineering 99 // for info in Windows Quick Fix Engineering. 100 WindowsQuickFixEngineeringPackage qfe_package = 7; 101 102 // Details of a COS package. 103 VersionedPackage cos_package = 8; 104 105 // Details of Windows Application. 106 WindowsApplication windows_application = 9; 107 } 108 } 109 110 // Information related to the a standard versioned package. This includes 111 // package info for APT, Yum, Zypper, and Googet package managers. 112 message VersionedPackage { 113 // The name of the package. 114 string package_name = 1; 115 116 // The system architecture this package is intended for. 117 string architecture = 2; 118 119 // The version of the package. 120 string version = 3; 121 } 122 123 // Details related to a Zypper Patch. 124 message ZypperPatch { 125 // The name of the patch. 126 string patch_name = 1; 127 128 // The category of the patch. 129 string category = 2; 130 131 // The severity specified for this patch 132 string severity = 3; 133 134 // Any summary information provided about this patch. 135 string summary = 4; 136 } 137 138 // Details related to a Windows Update package. 139 // Field data and names are taken from Windows Update API IUpdate Interface: 140 // https://docs.microsoft.com/en-us/windows/win32/api/_wua/ 141 // Descriptive fields like title, and description are localized based on 142 // the locale of the VM being updated. 143 message WindowsUpdatePackage { 144 // Categories specified by the Windows Update. 145 message WindowsUpdateCategory { 146 // The identifier of the windows update category. 147 string id = 1; 148 149 // The name of the windows update category. 150 string name = 2; 151 } 152 153 // The localized title of the update package. 154 string title = 1; 155 156 // The localized description of the update package. 157 string description = 2; 158 159 // The categories that are associated with this update package. 160 repeated WindowsUpdateCategory categories = 3; 161 162 // A collection of Microsoft Knowledge Base article IDs that are associated 163 // with the update package. 164 repeated string kb_article_ids = 4; 165 166 // A hyperlink to the language-specific support information for the update. 167 string support_url = 5; 168 169 // A collection of URLs that provide more information about the update 170 // package. 171 repeated string more_info_urls = 6; 172 173 // Gets the identifier of an update package. Stays the same across 174 // revisions. 175 string update_id = 7; 176 177 // The revision number of this update package. 178 int32 revision_number = 8; 179 180 // The last published date of the update, in (UTC) date and time. 181 google.protobuf.Timestamp last_deployment_change_time = 9; 182 } 183 184 // Information related to a Quick Fix Engineering package. 185 // Fields are taken from Windows QuickFixEngineering Interface and match 186 // the source names: 187 // https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/win32-quickfixengineering 188 message WindowsQuickFixEngineeringPackage { 189 // A short textual description of the QFE update. 190 string caption = 1; 191 192 // A textual description of the QFE update. 193 string description = 2; 194 195 // Unique identifier associated with a particular QFE update. 196 string hot_fix_id = 3; 197 198 // Date that the QFE update was installed. Mapped from installed_on field. 199 google.protobuf.Timestamp install_time = 4; 200 } 201 202 // Details about Windows Application - based on Windows Registry. 203 // All fields in this message are taken from: 204 // https://docs.microsoft.com/en-us/windows/win32/msi/uninstall-registry-key 205 message WindowsApplication { 206 // DisplayName field from Windows Registry. 207 string display_name = 1; 208 209 // DisplayVersion field from Windows Registry. 210 string display_version = 2; 211 212 // Publisher field from Windows Registry. 213 string publisher = 3; 214 215 // Installation date field from Windows Registry. 216 google.type.Date install_date = 4; 217 218 // HelpLink field from Windows Registry. 219 string help_link = 5; 220 } 221 222 // Base level operating system information for the VM. 223 OsInfo os_info = 1; 224 225 // A list of installed packages currently on the VM. 226 repeated SoftwarePackage installed_packages = 2; 227 228 // A list of software updates available for the VM as reported by the update 229 // managers. 230 repeated SoftwarePackage available_packages = 3; 231} 232