CHANGES.md in ruby-jss-1.2.10 vs CHANGES.md in ruby-jss-1.3.2

- old
+ new

@@ -2,10 +2,98 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## \[1.3.2] - 2020-07-31 +Many thanks to @cybertunnel for adding a huge amount of code to get JSS::Policy fully implimented, as well as other fixes and updates! + +### Added + - new class JSS::DockItem + - new classes JSS::DirectoryBinding and JSS::DirectoryBindingType + - new class JSS::Printer + - new class JSS::DiskEncryptionConfiguration + - JSS::Policy: + - getters and setters for `#user_message_start` and `#user_message_end` + - `#set_management_account` and `#verify_management_password` + - `#add_dock_item` and `#remove_dock_item` + - `#directory_bindings`, `#add_directory_binding` and `#remove_directory_binding` + - `#add_printer` and `#remove_printer` + - `#reissue_key`, `#apply_encryption_configuration`, and `#remove_encryption_configuration` + + +### Changed + - JSS::Package: + - no longer issues a warning when changing the file_name of a package + - Updated the CPU type string from 'x86' to 'Intel/x86' + - Methods which used to always use the master distribution point now accept a parameter `dist_point: dp` where dp is the name or id of a fileshare distribution point. If not specified, it still defaults to the Master Distribution Point. This is needed because if the Cloud Distribution Point is the master, there is no access to it via the Classic API, and any use of DistributionPoint.master_distribution_point will raise an error. + +## \[1.3.1] - 2020-06-21 + +### Changed + + - JSS::MobileDeviceApplication when using PrettyPrint (pp) in irb, no longer shows the base64 data for the ipa file. + + - JSS::DistributionPoint.my_distribution_point and .master_distribution_point now have options for dealing with the Cloud Distribution Point (which is not available in the classic API) being the master. + +### Fixed + + - JSS::NetworkSegment.distribution_point= now takes nil or an empty string to unset the dist point. + +## \[1.3.0] - 2020-06-05 + +### Added + + - JSS::NetworkSegment.network_ranges_as_integers method, Similar to NetworkSegment.network_ranges, but the ranges are of Integers, not IPAddr instances. This makes for *MUCH* faster range calculations, needed to implement improvements to NetworkSegment.network_segment_for_ip + + - JSS::Package.all_filenames_by, returns a Hash of all distribution point filenames for all packages, keyed by either the package id, or the package name. NOTE: as with JSS::Package.all_filenames, this method must instantiate all JSS::Package objects, so it will be slow. + +### Changed + + - JSS.expand_min_os now expands to macOS 10.30.x, which should hold us for a while + + - JSS::NetworkSegment.network_segment_for_ip and .my_network_segment are no longer deprecated, but now return an integer NetSeg id (or nil). The plural forms of those methods still return an Array of ids for all the matching network segments. + + - The logic for JSS::NetworkSegment.network_segment_for_ip (and .my_network_segment) now matches how the Jamf server does it: when you IP address is in more than one Network Segment, Jamf uses the smallest/narrowest one (the one containing fewest IP addresses). If more than one of your Network Segments are that same width, the one with the lowest starting IP address is used. + + - In some networking situations (e.g. Split-tunnel VPN with multiple active network ports) the JSS::APIObject.delete method will raise a 404 NotFound error, seemingly because the object was already deleted but a second http DELETE is sent (I think). We now just rescue and ignore that error, since the fact that it's not found means it was indeed deleted. + +### Fixed + + - A copy/paste bug in Jamf::Prestage.serials_for_prestage + +## \[1.2.15] - 2020-04-30 + +### Fixed + + - USER_CONF_FILE is always a pathname, never nil + + - issues with Array#j_ci_* methods related to removing safe navigation + +## \[1.2.13] - 2020-04-29 + +### Fixed + + - Ruby 2.6 needs parens in more places than 2.3, apparently + +## \[1.2.12] - 2020-04-29 + +### Added + + - Backport of `#dig` for Arrays, Hashes and OpenStructs, for compatibiliy with older rubiesd (for a while longer anyway). Gratefully borrowed from https://github.com/Invoca/ruby_dig + +### Changed + + - Removed all safe navigation operators (`&.`) for compatibility with older rubies (for a while longer anyway) + + +## \[1.2.11] - 2020-04-26 + +### Fixed + + - Bug in Package#install that prevented installs from 'alt_download_url'. + ## \[1.2.10] - 2020-04-25 ### Added - Computer#reported_ip_address. This value is collected in newer versions of Jamf Pro. While the #ip_address is the client's IP address from the Jamf Server's perspective, the #reported_ip_address is the IP from the client's perspective, which may be different on a NATted network like a home network. @@ -53,11 +141,13 @@ ### Fixed - Classic API (JSS module) - Sitable objects now recognize the string "None" as meaning no site is assigned. Thanks @cybertunnel for this fix! + - Scopable::Scope now deals with some bugs in the API regarding Jamf & LDAP users & user groups in targets, limitations, & exclusions. Please see the documentation/comments for the class in the file or the online documentation. Thanks @cybertunnel again! + - Criteriable::Criteria can now be empty - containing no criterion objects. When criteriable objects are created (such as Advanced Searches) the default JSS::Criteriable::Criteria object has no criteria. To remove all criteria, use `criteria.clear`, `criteria = nil`, or `criteria = JSS::Criteriable::Criteria.new` and then save. Once again, thanks to @cybertunnel for finding this. - Jamf Pro API (Jamf module) - More fixes for various JamfPro API (Jamf module) methods that accept a passed-in Jamf::Connection instance. @@ -97,10 +187,11 @@ - the ManagementHistory mixin module used by the Computer and MobileDevice classes, now has a `last_mdm_contact` class and instance method, which returns a Time object for the timestamp of the most recent completed MDM command. This is useful for MobileDevices, which don't have anything like the `last_checkin` value for comptuers, indicating real communication between the device and Jamf Pro. Note that the `last_inventory_update` value does NOT indicate such communication, since that timestamp is updated when values are changed via the API - All APIObject Subclasses (Policy, Computer, MobileDevice, ComputerGroup, etc..) now have `get_raw`, `post_raw` & `put_raw` class methods, which are simpler wrappers for APIConnection#get_rsrc, #post_rsrc, and #put_rsrc. - `get_raw` takes an object's id, and returns the 'raw' JSON (parsed into a ruby Hash with symbolized keys) or a REXML::Document (from which you'll probably want to use the `root` element). If you pass `as_string: true` you'll get the un-parsed JSON or XML string directly from the API - This can be useful when you need to retrieve the full object, to get some data not available in the summary-list, but instantiating the full ruby class is too slow. + This can be useful when you need to retrieve the full object, to get some data not available in the summary-list, but instantiating the full ruby class is too slow + - `post_raw` & `put_raw` can send raw XML to the API without instantiating objects. In some cases, where you're making simple changes to simple XML, this can be faster than fetching a full instance and the re-saving it. WARNING You must create or acquire the XML to be sent, and no validation will be performed on it. It must be a String of XML, or something that returns such a string with #to_s, such as a REXML::Document, or a REXML::Element. - APIConnection#get_rsrc now takes the boolean raw_json: parameter (defaults to false). If true, the raw JSON string is returned, not parsed into a Hash. When requesting XML, it already comes as a string.