Method: Jamf::PatchTitle.patch_report
- Defined in:
- lib/jamf/api/classic/api_objects/patch_title.rb
.patch_report(title, version: :all, api: nil, cnx: Jamf.cnx) ⇒ Hash
Get a patch report for a softwaretitle, without fetching an instance. Defaults to reporting all versions. Specifiying a version will be faster.
The Hash returned has 3 keys:
- :total_comptuters [Integer] total computers found for the requested version(s)
- :total versions [Integer] How many versions does this title have?
Always 1 if you report a specific version
- :versions [Hash {String => Array<Hash>}] Keys are the version(s) requested
values are Arrays of Hashes, one per computer with the keyed version
installed. Computer Hashes have identifiers as keys.
PatchTitle#patch_report calls this method, as does PatchTitle::Version.patch_report.
261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 |
# File 'lib/jamf/api/classic/api_objects/patch_title.rb', line 261 def self.patch_report(title, version: :all, api: nil, cnx: Jamf.cnx) cnx = api if api title_id = valid_id title, cnx: cnx raise Jamf::NoSuchItemError, "No PatchTitle matches '#{title}'" unless title_id rsrc = patch_report_rsrc title_id, version # TODO: remove this and adjust parsing when jamf fixes the JSON raw_report = XMLWorkaround.data_via_xml(rsrc, PATCH_REPORT_DATA_MAP, cnx)[:patch_report] report = {} report[:total_computers] = raw_report[:total_computers] report[:total_versions] = raw_report[:total_versions] if raw_report[:versions].is_a? Hash vs = raw_report[:versions][:version][:software_version].to_s comps = raw_report[:versions][:version][:computers] comps = [] if comps.empty? report[:versions] = { vs => comps } return report end report[:versions] = {} raw_report[:versions].each do |v| report[:versions][v[:software_version].to_s] = v[:computers].empty? ? [] : v[:computers] end report end |