Class: JSS::Computer

Inherits:
APIObject show all
Extended by:
Matchable
Includes:
Extendable, Locatable, Purchasable, Updatable, Uploadable
Defined in:
lib/jss/api_object/computer.rb,
lib/jss.rb

Overview

This class represents a Computer in the JSS.

Adding Computers to the JSS

At the moment, this class cannot be used to add new Computers to the JSS. Please use other methods (like the Recon App or QuickAdd package)

Editing values

Any data that arrives in the JSS via an “inventory update” (a.k.a. ‘recon’) cannot be modified through this class, or the API.

Data that can be modified are:

  • Management Account (see #set_management_to)

  • asset_tag

  • barcodes 1 and 2

  • ip_address

  • udid

  • mac_addresses

  • location data via the Locatable module

  • purchasing data via the Purchasable module

  • Extension Attribute values via the Extendable module Note: as with other ‘recon’ generated values, Ext. Attrs. populated by scripts cannot be modified via the API. (the change would be overwritten the next time the machine did a recon)

After making any changes, you must call #update to send those changes to the server.

MDM Commands

The following methods can be used to send an APNS command to the computer represented by an instance of JSS::Computer, equivalent to clicking one of the buttons on the Management Commands section of the Management tab of the Computer details page in the JSS UI.

To send an MDM command without making a Computer instance, use the class Computer.send_mdm_command which can take multiple computer identifiers at once.

NOTE: the poorly named ‘UnmanageDevice’ command via the API is implemented as the #remove_mdm_profile method (which is its name in the webUI). Calling that method will NOT unmanage the machine from the JSS’s point of view, it will just remove the mdm management profile from the machine and all configuration profiles that were installed via the JSS. Those profiles may be re-installed automatically later if the computer is still in scope for them

The #make_unmanaged method also removes the mdm profile, but actually does make the machine unmanged by the JSS, setting the management acct to nil, and requring re-enrollment.

Computer History

Computer instances can now retrieve their management history from the JSS.

The full history data is available from the #history method, but beware that it is very large.

Subsets of that history have their own methods, which are faster and only retrieve the subset requested. See #usage_logs, #audits, #policy_los, #completed_policies, #failed_polices, #casper_remote_logs, #screen_sharing_logs, #casper_imaging_logs, #commands, #user_location_history,and #app_store_app_history

When any of the history methods is used the first time, the data is read from the API and cached internally, and that data is used for all future calls.. To re-read the data from the API and re-cache it, provide any non-false parameter to the subset methods , or ‘refresh: true` to the main #history method.

Appication Usage History

Computer Instances now have access to their Application Usage history via the #application_usage method. Call the method with a start-date value (either a String or a Time object) and an optional end-date value. If you omite the end-date, the start-date is used and you’ll see usage for just that day.

See #application_usage for details about the data returned.

NOTE: your JSS must be gathering Appication Usage data in order for any data to be returned, and the usage history will only go back as far as your setting for flushing of Application Usage Logs.

Management Data

The computers ‘manamgement data’, as presented on the ‘Management’ tab of the computer’s detail page in the JSS web UI, is available from the #management_data method. That method may return a large dataset, unless a subset is requested.

Subsets of management data have their own methods, which are faster and only retrieve the subset requested. See #smart_groups, #static_groups, #policies, #configuration_profiles, #ebooks, #app_store_apps, #restricted_software, and #patch_titles

The subset methods can take an ‘only:’ parameter, which is a symbol specifying the value you care to see. For example #smart_groups returns an array of hashes, one for each smart_group the computer is in. Those hashes have two keys, :name, and :id. However if you only want an array of names, you can call ‘smart_groups only: :name`

When any of the manamgement data methods are used the first time, the data is read from the API and cached internally, the cache is then used for all future calls. To re-read the data from the API and re-cache it, provide ‘refresh: true` to any of the manamgement data methods.

Other Methods

Constant Summary collapse

RSRC_BASE =

The base for REST resources of this class

'computers'.freeze
LIST_RSRC =

The (temporary?) list-resource

"#{RSRC_BASE}/subset/basic".freeze
RSRC_LIST_KEY =

the hash key used for the JSON list output of all objects in the JSS

:computers
RSRC_OBJECT_KEY =

The hash key used for the JSON object output. It’s also used in various error messages

:computer
VALID_DATA_KEYS =

these keys, as well as :id and :name, are present in valid API JSON data for this class

DEPRECATED, with be removed in a future release.
%i[sus distribution_point alt_mac_address].freeze
OTHER_LOOKUP_KEYS =

these keys, as well as :id and :name, can be used to look up objects of this class in the JSS

{
  udid: { rsrc_key: :udid, list: :all_udids },
  serialnumber: { rsrc_key: :serialnumber, list: :all_serial_numbers },
  serial_number: { rsrc_key: :serialnumber, list: :all_serial_numbers },
  macaddress: { rsrc_key: :macaddress, list: :all_mac_addresses },
  mac_address: { rsrc_key: :macaddress, list: :all_mac_addresses }
}.freeze
SEARCH_CLASS =

This class lets us seach for computers

JSS::AdvancedComputerSearch
EXT_ATTRIB_CLASS =

This is the class for relevant Extension Attributes

JSS::ComputerExtensionAttribute
BOOT_FLAG =

Boot partitions are noted with the string “(Boot Partition)” at the end

' (Boot Partition)'.freeze
UPLOAD_TYPES =

file uploads can send attachments to the JSS using :computers as the sub-resource.

{ attachment: :computers }.freeze
COMPUTER_MDM_RSRC =

The base REST resource for sending computer MDM commands

'computercommands/command'.freeze
COMPUTER_MDM_COMMANDS =

A mapping of Symbols available to the send_mdm_command class method, to the String commands actuallly sent via the API.

{
  blank_push: 'BlankPush',
  blankpush: 'BlankPush',
  send_blank_push: 'BlankPush',
  blank: 'BlankPush',
  noop: 'BlankPush',
  device_lock: 'DeviceLock',
  devicelock: 'DeviceLock',
  lock: 'DeviceLock',
  lock_device: 'DeviceLock',
  erase_device: 'EraseDevice',
  erasedevice: 'EraseDevice',
  erase: 'EraseDevice',
  wipe: 'EraseDevice',
  unmanage_device: 'UnmanageDevice',
  unmanagedevice: 'UnmanageDevice',
  unmanage: 'UnmanageDevice'
}.freeze
COMPUTER_MDM_COMMANDS_NEEDING_PASSCODE =

these MDM commands require a passcode

%w[DeviceLock EraseDevice].freeze
APPLICATION_USAGE_RSRC =

The API resource for app usage

'computerapplicationusage'.freeze
APPLICATION_USAGE_DATE_FMT =

The date format for retrieving usage data

'%Y-%m-%d'.freeze
APPLICATION_USAGE_DATE_CLASSES =

The classes that can be used with the date format

[Time, DateTime, Date].freeze
APPLICATION_USAGE_KEY =

The top-level hash key of the raw app usage data

:computer_application_usage
MGMT_DATA_RSRC =

The API resource for computer_management data

'computermanagement'.freeze
MGMT_DATA_KEY =

The top-level hash key of the computer_management data

:computer_management
MGMT_DATA_SUBSETS =

Thes are both the subset names in the resrouce URLS (when converted to strings) and the second-level hash key of the returned subset data.

%i[
  smart_groups
  static_groups
  mac_app_store_apps
  policies
  ebooks
  os_x_configuration_profiles
  restricted_software
  patch_reporting_software_titles
].freeze
CHECKIN_RSRC =

The API Resource for the computer checkin settings

'computercheckin'.freeze
CHECKIN_KEY =

The top-level hash key for the checkin settings

:computer_check_in
INV_COLLECTION_RSRC =

The API Resource for the computer inventory collection settings

'computerinventorycollection'.freeze
INV_COLLECTION_KEY =

The top-level hash key for the inventory collection settings

:computer_inventory_collection
HISTORY_RSRC =

The API Resource for the computer history data

'computerhistory'.freeze
HISTORY_KEY =

The top-level hash key for the history data

:computer_history
HISTORY_SUBSETS =

The keys are both the subset names in the resrouce URLS (when converted to strings) and the second-level hash key of the returned subset data.

The values are the key within each history item that contains the ‘epoch’ timestamp, for conver

%i[
  computer_usage_logs
  audits
  policy_logs
  casper_remote_logs
  screen_sharing_logs
  casper_imaging_logs
  commands
  user_location
  mac_app_store_applications
].freeze
POLICY_STATUS_COMPLETED =

HISTORY_SUBSETS = %i(

computer_usage_logs date_time_epoch
audits
policy_logs date_completed_epoch
casper_remote_logs date_time_epoch
screen_sharing_logs date_time_epoch
casper_imaging_logs
commands completed_epoch
user_location
mac_app_store_applications

).freeze

'Completed'.freeze
POLICY_STATUS_FAILED =
'Failed'.freeze
POLICY_STATUS_PENDING =
'Pending'.freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(args = {}) ⇒ Computer

As well as :id and :name, computers can be queried using :udid, :serialnumber, and :mac_address

Parameters:

  • args (Hash) (defaults to: {})

    the data for looking up, or constructing, a new object.



718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
# File 'lib/jss/api_object/computer.rb', line 718

def initialize(args = {})
  super args

  # now we have raw @init_data with something in it, so fill out the instance vars
  @alt_mac_address = @init_data[:general][:alt_mac_address]
  @asset_tag = @init_data[:general][:asset_tag]
  @barcode_1 = @init_data[:general][:barcode_1]
  @barcode_2 = @init_data[:general][:barcode_2]
  @distribution_point = @init_data[:general][:distribution_point]
  @initial_entry_date = JSS.epoch_to_time @init_data[:general][:initial_entry_date_epoch]
  @ip_address = @init_data[:general][:ip_address]
  @jamf_version = @init_data[:general][:jamf_version]
  @last_contact_time = JSS.epoch_to_time @init_data[:general][:last_contact_time_epoch]
  @mac_address = @init_data[:general][:mac_address]
  @managed = @init_data[:general][:remote_management][:managed]
  @management_username = @init_data[:general][:remote_management][:management_username]
  @mdm_capable = @init_data[:general][:mdm_capable]
  @netboot_server = @init_data[:general][:netboot_server]
  @platform = @init_data[:general][:platform]
  @report_date = JSS.epoch_to_time @init_data[:general][:report_date_epoch]
  @serial_number = @init_data[:general][:serial_number]
  @site = JSS::APIObject.get_name(@init_data[:general][:site])
  @sus = @init_data[:general][:sus]
  @udid = @init_data[:general][:udid]

  @configuration_profiles = @init_data[:configuration_profiles]
  @extension_attributes = @init_data[:extension_attributes]
  @groups_accounts = @init_data[:groups_accounts]
  @hardware = @init_data[:hardware]
  @peripherals = @init_data[:peripherals]
  @software = @init_data[:software]

  @management_password = nil
end

Instance Attribute Details

#alt_mac_addressString (readonly) Also known as: alt_macaddress

Returns the secondary mac address.

Returns:

  • (String)

    the secondary mac address



502
503
504
# File 'lib/jss/api_object/computer.rb', line 502

def alt_mac_address
  @alt_mac_address
end

#applecare_idString Originally defined in module Purchasable

Returns:

#asset_tagString

Returns the asset tag.

Returns:



505
506
507
# File 'lib/jss/api_object/computer.rb', line 505

def asset_tag
  @asset_tag
end

#barcode_1String Also known as: bar_code_1

Returns the barcodes.

Returns:



508
509
510
# File 'lib/jss/api_object/computer.rb', line 508

def barcode_1
  @barcode_1
end

#barcode_2String Also known as: bar_code_2

Returns the barcodes.

Returns:



508
509
510
# File 'lib/jss/api_object/computer.rb', line 508

def barcode_2
  @barcode_2
end

#buildingString Originally defined in module Locatable

Returns:

#configuration_profiles(only: nil, refresh: false) ⇒ Object (readonly)

A shortcut for ‘management_data subset: :os_x_configuration_profiles’



570
571
572
# File 'lib/jss/api_object/computer.rb', line 570

def configuration_profiles
  @configuration_profiles
end

#departmentString Originally defined in module Locatable

Returns:

#distribution_pointString (readonly)

Returns The name of the distribution point for this computer.

Returns:

  • (String)

    The name of the distribution point for this computer



511
512
513
# File 'lib/jss/api_object/computer.rb', line 511

def distribution_point
  @distribution_point
end

#email_addressString Originally defined in module Locatable

Returns:

#ext_attrsHash (readonly) Originally defined in module Extendable

Returns A mapping of Ext Attrib names to their values.

Returns:

  • (Hash)

    A mapping of Ext Attrib names to their values

#extension_attributesArray<Hash> (readonly) Originally defined in module Extendable

Returns The extension attribute values for the object.

Returns:

  • (Array<Hash>)

    The extension attribute values for the object

#groups_accountsHash (readonly)

Info about the local accts and ComputerGroups to which this machine beloings

The Hash keys are:

  • :computer_group_memberships => An Array of names of ComputerGroups to which this computer belongs

  • :local_accounts => An Array of Hashes for each local user acct on this computer. Each hash has these keys:

    • :name => String, the login name of the acct

    • :realname => the real name of the acct

    • :uid => String, the uid of the acct

    • :home => String, the path to the home folder

    • :home_size => String, the size of the homedir as a string like “53245MB”

    • :home_size_mb => Integer, the size of the homedir as an integer like 53245

    • :administrator => Boolean

    • :filevault_enabled => Boolean

Returns:



588
589
590
# File 'lib/jss/api_object/computer.rb', line 588

def groups_accounts
  @groups_accounts
end

#hardwareHash (readonly)

A Hash with info about the hardware of this cmoputer.

These are the keys & sample data

  • :number_processors=>2,

  • :processor_speed_mhz=>2530,

  • :make=>“Apple”,

  • :cache_size=>3072,

  • :processor_type=>“Intel Core i5”,

  • :total_ram_mb=>8192,

  • :model=>“15-inch MacBook Pro (Mid 2010)”,

  • :available_ram_slots=>0,

  • :processor_architecture=>“i386”,

  • :bus_speed_mhz=>0,

  • :total_ram=>8192,

  • :os_name=>“Mac OS X”,

  • :optical_drive=>“HL-DT-ST DVDRW GS23N”,

  • :model_identifier=>“MacBookPro6,2”,

  • :cache_size_kb=>3072,

  • :boot_rom=>“MBP61.0057.B0F”,

  • :os_version=>“10.9.3”,

  • :mapped_printers=> An Array of Hashes, one per printer, with these keys

    • :name => the name of the printer

    • :location => the location of the printer

    • :type => the printer model

    • :uri => the uri to reach the printer on the network

  • :nic_speed=>“10/100/1000”,

  • :processor_speed=>2530,

  • :active_directory_status=>“Not Bound”,

  • :bus_speed=>0,

  • :os_build=>“13D65”,

  • :smc_version=>“1.58f17”,

  • :service_pack=>“”,

  • :battery_capacity=>87

  • :storage=> An Array of Hashes, one per Drive, with these keys

    • :smart_status=>“Verified”,

    • :connection_type=>“NO”,

    • :model=>“M4-CT256M4SSD2”,

    • :revision=>“040H”,

    • :serial_number=>“00000000130709JH7GhhC”,

    • :size=>262205,

    • :disk=>“disk0”,

    • :drive_capacity_mb=>262205}],

    • :partition=> A Hash with these keys

      • :filevault2_status=>“Encrypted”,

      • :type=>“boot”,

      • :filevault2_percent=>100,

      • :partition_capacity_mb=>38014,

      • :lvgUUID=>“C4883AF5-3E58-4F76-A56C-094D4CEC7E9F”,

      • :percentage_full=>61,

      • :lvUUID=>“745A262E-AEA6-4608-8A3A-6CDC225B4DE6”,

      • :filevault_status=>“Encrypted”,

      • :size=>38014,

      • :pvUUID=>“C38051CF-5066-442F-A442-1035060ED462”,

      • :name=>“KimDrive40 (Boot Partition)”,

      • :filevault_percent=>100

Returns:



648
649
650
# File 'lib/jss/api_object/computer.rb', line 648

def hardware
  @hardware
end

#initial_entry_dateTime (readonly)

Returns when was it added to the JSS.

Returns:

  • (Time)

    when was it added to the JSS



514
515
516
# File 'lib/jss/api_object/computer.rb', line 514

def 
  @initial_entry_date
end

#ip_addressIPAddr

Returns the last known IP address.

Returns:

  • (IPAddr)

    the last known IP address



517
518
519
# File 'lib/jss/api_object/computer.rb', line 517

def ip_address
  @ip_address
end

#is_leasedBoolean Also known as: leased? Originally defined in module Purchasable

Returns:

  • (Boolean)

#is_purchasedBoolean Also known as: purchased? Originally defined in module Purchasable

Returns:

  • (Boolean)

#jamf_versionString (readonly)

Returns the version of the jamf binary.

Returns:

  • (String)

    the version of the jamf binary



520
521
522
# File 'lib/jss/api_object/computer.rb', line 520

def jamf_version
  @jamf_version
end

#last_contact_timeTime (readonly)

Returns the last contact time.

Returns:

  • (Time)

    the last contact time



523
524
525
# File 'lib/jss/api_object/computer.rb', line 523

def last_contact_time
  @last_contact_time
end

#lease_expiresTime Originally defined in module Purchasable

Returns:

#life_expectancyInteger Originally defined in module Purchasable

Returns:

  • (Integer)

#mac_addressString (readonly)

Returns the primary macaddress.

Returns:

  • (String)

    the primary macaddress



526
527
528
# File 'lib/jss/api_object/computer.rb', line 526

def mac_address
  @mac_address
end

#managedBoolean (readonly) Also known as: managed?

Returns is this machine “managed” by Casper?.

Returns:

  • (Boolean)

    is this machine “managed” by Casper?



529
530
531
# File 'lib/jss/api_object/computer.rb', line 529

def managed
  @managed
end

#management_usernameString (readonly)

Returns the name of the management account.

Returns:

  • (String)

    the name of the management account



532
533
534
# File 'lib/jss/api_object/computer.rb', line 532

def management_username
  @management_username
end

#mdm_capableBoolean (readonly) Also known as: mdm?

Returns doesit support MDM?.

Returns:

  • (Boolean)

    doesit support MDM?



535
536
537
# File 'lib/jss/api_object/computer.rb', line 535

def mdm_capable
  @mdm_capable
end

#need_to_updateBoolean (readonly) Originally defined in module Updatable

Returns do we have unsaved changes?.

Returns:

  • (Boolean)

    do we have unsaved changes?

#netboot_serverString (readonly)

Returns the name of the netboot server for this machine.

Returns:

  • (String)

    the name of the netboot server for this machine



538
539
540
# File 'lib/jss/api_object/computer.rb', line 538

def netboot_server
  @netboot_server
end

#peripheralsArray<Hash> (readonly)

A Hash per peripheral

Each hash has these keys & sample data:

  • :id=>286,

  • :type=>“Display”,

  • :field_0=>“HP”,

  • :field_1=>“HP LP2480zx”,

  • :field_2=>“DreamColor”,

  • :field_3=>“3CM10800F4”,

  • :field_4=>“”,

  • :field_5=>“”

  • :field_6=>“”,

  • :bar_code_1=>“”,

  • :bar_code_2=>“”,

  • :purchasing=> A hash with these keys:

    • :warranty_expires_utc=>“”,

    • :is_leased=>false,

    • :po_date=>“”,

    • :lease_expires=>“”,

    • :po_number=>“”,

    • :po_date_epoch=>0,

    • :lease_expires_epoch=>0,

    • :vendor=>“”,

    • :attachments=>[],

    • :po_date_utc=>“”,

    • :lease_expires_utc=>“”,

    • :applecare_id=>“”,

    • :warranty_expires=>“”,

    • :life_expectancy=>0,

    • :purchase_price=>“”,

    • :warranty_expires_epoch=>0,

    • :is_purchased=>true,

    • :purchasing_contact=>“”,

    • :purchasing_account=>“”

Returns:



687
688
689
# File 'lib/jss/api_object/computer.rb', line 687

def peripherals
  @peripherals
end

#phoneString Originally defined in module Locatable

Returns:

#platformString (readonly)

Returns what kind of computer?.

Returns:

  • (String)

    what kind of computer?



541
542
543
# File 'lib/jss/api_object/computer.rb', line 541

def platform
  @platform
end

#po_dateTime Originally defined in module Purchasable

Returns:

#po_numberString Originally defined in module Purchasable

Returns:

#positionString Originally defined in module Locatable

Returns:

#purchase_priceFloat Originally defined in module Purchasable

Returns:

  • (Float)

#purchasing_accountString Originally defined in module Purchasable

Returns:

#purchasing_contactString Originally defined in module Purchasable

Returns:

#real_nameString Originally defined in module Locatable

Returns:

#report_dateTime (readonly) Also known as: last_recon

Returns the last recon time.

Returns:

  • (Time)

    the last recon time



544
545
546
# File 'lib/jss/api_object/computer.rb', line 544

def report_date
  @report_date
end

#roomString Originally defined in module Locatable

Returns:

#serial_numberString (readonly) Also known as: sn, serialnumber

Returns the serial number.

Returns:

  • (String)

    the serial number



547
548
549
# File 'lib/jss/api_object/computer.rb', line 547

def serial_number
  @serial_number
end

#siteHash (readonly)

Returns the :name and :id of the site for this machine.

Returns:

  • (Hash)

    the :name and :id of the site for this machine



550
551
552
# File 'lib/jss/api_object/computer.rb', line 550

def site
  @site
end

#softwareHash (readonly)

A Hash of software data

The Hash has these keys:

  • :running_services => An Array of services running on the computer (if gathered) TODO - is each item a hash?

  • :installed_by_casper => An Array of Package names unstalled on this computer by Casper

  • :fonts => An Array of fonts on this computer (if gathered) TODO - is each item a hash?

  • :installed_by_installer_swu => An Array of pkg IDs for pkgs installed by SoftwareUpdate or the Apple Installer

  • :applications => An Array of Hashes, one per Application on the computer, with these keys:

    • :path => String, the path to the app

    • :name => String, the name of the app, including the .app suffix

    • :version => String, the version of the app at that path.

  • :cached_by_casper => An Array of Casper Package names cached on the machine, awaiting installation

  • :available_software_updates => An Array of available SoftwareUpdate (if gathered) TODO - is each item a hash?

  • :plugins => An Array of plugins installed on the machine (if gathered) TODO - is each item a hash?

  • :available_updates => A Hash - Deprecated?

  • :licensed_software => An Array, the names of Licenced Software (as defined in Casper) on this machine

  • :unix_executables => DEPRECATED

Returns:



709
710
711
# File 'lib/jss/api_object/computer.rb', line 709

def software
  @software
end

#susString (readonly)

Returns the name of the Software Update Server assigned to this machine.

Returns:

  • (String)

    the name of the Software Update Server assigned to this machine.



553
554
555
# File 'lib/jss/api_object/computer.rb', line 553

def sus
  @sus
end

#udidString (readonly)

Returns the UDID of the computer.

Returns:

  • (String)

    the UDID of the computer



556
557
558
# File 'lib/jss/api_object/computer.rb', line 556

def udid
  @udid
end

#usernameString Also known as: user Originally defined in module Locatable

Returns:

#vendorString Originally defined in module Purchasable

Returns:

#warranty_expiresTime Originally defined in module Purchasable

Returns:

Class Method Details

.all(refresh = false) ⇒ Array<Hash{:name=>String, :id=> Integer}>

A larger set of info about the computers in the JSS.

Casper 9.4 introduced the API Resource /computers/subset/basic that returns an array of hashes with more data than just /computers/ (which was just :name and :id). Similar to /mobildevices/, this new list includes :udid, :serial_number, and :mac_address, as well as :model, :managed, :building, :department, :username, and :report_date

Because this requires a different, unusual, resource path, we’re completely re-defining APIObject.all for JSS::Computer. Hopefully some day the original /computers/ resource will be updated to return this data.

Parameters:

  • refresh (Boolean) (defaults to: false)

    should the data be re-queried from the API?

Returns:



370
371
372
373
374
# File 'lib/jss/api_object/computer.rb', line 370

def self.all(refresh = false)
  JSS.api.object_list_cache[RSRC_LIST_KEY] = nil if refresh
  return JSS.api.object_list_cache[RSRC_LIST_KEY] if JSS.api.object_list_cache[RSRC_LIST_KEY]
  JSS.api.object_list_cache[RSRC_LIST_KEY] = JSS.api_connection.get_rsrc(self::LIST_RSRC)[self::RSRC_LIST_KEY]
end

.all_desktops(refresh = false) ⇒ Array<Hash>

Returns all desktop macs in the jss.

Returns:

  • (Array<Hash>)

    all desktop macs in the jss



427
428
429
# File 'lib/jss/api_object/computer.rb', line 427

def self.all_desktops(refresh = false)
  all(refresh).reject { |d| d[:model] =~ /serve|book/i }
end

.all_imacs(refresh = false) ⇒ Array<Hash>

Returns all imacs in the jss.

Returns:



432
433
434
# File 'lib/jss/api_object/computer.rb', line 432

def self.all_imacs(refresh = false)
  all(refresh).select { |d| d[:model] =~ /^imac/i }
end

.all_laptops(refresh = false) ⇒ Array<Hash>

Returns all laptop computers in the jss.

Returns:

  • (Array<Hash>)

    all laptop computers in the jss



402
403
404
# File 'lib/jss/api_object/computer.rb', line 402

def self.all_laptops(refresh = false)
  all(refresh).select { |d| d[:model] =~ /book/i }
end

.all_mac_addresses(refresh = false) ⇒ Array<String>

Returns all computer mac_addresses in the jss.

Returns:

  • (Array<String>)

    all computer mac_addresses in the jss



382
383
384
# File 'lib/jss/api_object/computer.rb', line 382

def self.all_mac_addresses(refresh = false)
  all(refresh).map { |i| i[:mac_address] }
end

.all_macbookairs(refresh = false) ⇒ Array<Hash>

Returns all macbookairs in the jss.

Returns:

  • (Array<Hash>)

    all macbookairs in the jss



417
418
419
# File 'lib/jss/api_object/computer.rb', line 417

def self.all_macbookairs(refresh = false)
  all(refresh).select { |d| d[:model] =~ /^macbookair\d/i  }
end

.all_macbookpros(refresh = false) ⇒ Array<Hash>

Returns all macbookpros in the jss.

Returns:

  • (Array<Hash>)

    all macbookpros in the jss



412
413
414
# File 'lib/jss/api_object/computer.rb', line 412

def self.all_macbookpros(refresh = false)
  all(refresh).select { |d| d[:model] =~ /^macbookpro\d/i  }
end

.all_macbooks(refresh = false) ⇒ Array<Hash>

Returns all macbooks in the jss.

Returns:



407
408
409
# File 'lib/jss/api_object/computer.rb', line 407

def self.all_macbooks(refresh = false)
  all(refresh).select { |d| d[:model] =~ /^macbook\d/i }
end

.all_macpros(refresh = false) ⇒ Array<Hash>

Returns all macpros in the jss.

Returns:



442
443
444
# File 'lib/jss/api_object/computer.rb', line 442

def self.all_macpros(refresh = false)
  all(refresh).select { |d| d[:model] =~ /^macpro/i }
end

.all_managed(refresh = false) ⇒ Array<Hash>

Returns all managed computers in the jss.

Returns:

  • (Array<Hash>)

    all managed computers in the jss



392
393
394
# File 'lib/jss/api_object/computer.rb', line 392

def self.all_managed(refresh = false)
  all(refresh).select { |d| d[:managed] }
end

.all_minis(refresh = false) ⇒ Array<Hash>

Returns all mac minis in the jss.

Returns:



437
438
439
# File 'lib/jss/api_object/computer.rb', line 437

def self.all_minis(refresh = false)
  all(refresh).select { |d| d[:model] =~ /^macmini/i }
end

.all_serial_numbers(refresh = false) ⇒ Array<String>

Returns all computer serial numbers in the jss.

Returns:

  • (Array<String>)

    all computer serial numbers in the jss



377
378
379
# File 'lib/jss/api_object/computer.rb', line 377

def self.all_serial_numbers(refresh = false)
  all(refresh).map { |i| i[:serial_number] }
end

.all_udids(refresh = false) ⇒ Array<String>

Returns all computer udids in the jss.

Returns:



387
388
389
# File 'lib/jss/api_object/computer.rb', line 387

def self.all_udids(refresh = false)
  all(refresh).map { |i| i[:udid] }
end

.all_unmanaged(refresh = false) ⇒ Array<Hash>

Returns all unmanaged computers in the jss.

Returns:

  • (Array<Hash>)

    all unmanaged computers in the jss



397
398
399
# File 'lib/jss/api_object/computer.rb', line 397

def self.all_unmanaged(refresh = false)
  all(refresh).reject { |d| d[:managed] }
end

.all_xserves(refresh = false) ⇒ Array<Hash>

Returns all xserves in the jss.

Returns:



422
423
424
# File 'lib/jss/api_object/computer.rb', line 422

def self.all_xserves(refresh = false)
  all(refresh).select { |d| d[:model] =~ /serve/i }
end

.checkin_settingsHash

Display the current Computer CheckIn settings in the JSS. Currently this is read-only in ruby-jss, even tho the API allows updating.

Returns:

  • (Hash)

    the Computer Checkin Settings from the currently connected JSS.



339
340
341
# File 'lib/jss/api_object/computer.rb', line 339

def self.checkin_settings
  JSS.api_connection.get_rsrc(CHECKIN_RSRC)[CHECKIN_KEY]
end

.inventory_collection_settingsHash

Display the current Computer Inventory Collection settings in the JSS. Currently this is read-only in ruby-jss, even tho the API allows updating.

Returns:

  • (Hash)

    the Computer Inventpry Collection Settings from the currently connected JSS.



350
351
352
# File 'lib/jss/api_object/computer.rb', line 350

def self.inventory_collection_settings
  JSS.api_connection.get_rsrc(INV_COLLECTION_RSRC)[INV_COLLECTION_KEY]
end

.match(term) ⇒ Array<Hash> Originally defined in module Matchable

Perform a match, returning an Array of Hashes, one for each item matched

At the moment, it appears the search is an “exact match” search regardless of the prefs of the user connected to the API.

Parameters:

  • term (String)

    the term to match.

Returns:

Raises:

.send_mdm_command(targets, command, passcode = nil) ⇒ String

Send an MDM command to one or more managed computers by id or name

Parameters:

  • targets (String, Integer, Array<String,Integer>)

    the name or id of the computer to receive the command, or an array of such names or ids, or a comma-separated string of them.

  • command (Symbol)

    the command to send, one of the keys of COMPUTER_MDM_COMMANDS

  • passcode (String) (defaults to: nil)

    some commands require a 6-character passcode

Returns:

  • (String)

    The uuid of the MDM command sent, if applicable (blank pushes do not generate uuids)

Raises:



461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
# File 'lib/jss/api_object/computer.rb', line 461

def self.send_mdm_command(targets, command, passcode = nil)
  raise JSS::NoSuchItemError, "Unknown command '#{command}'" unless COMPUTER_MDM_COMMANDS.keys.include? command

  command = COMPUTER_MDM_COMMANDS[command]
  cmd_rsrc = "#{COMPUTER_MDM_RSRC}/#{command}"

  if COMPUTER_MDM_COMMANDS_NEEDING_PASSCODE.include? command
    unless passcode && passcode.is_a?(String) && passcode.length == 6
      raise JSS::MissingDataError, "Command '#{command}' requires a 6-character passcode"
    end
    cmd_rsrc << "/passcode/#{passcode}"
  end

  targets = JSS.to_s_and_a(targets.to_s)[:arrayform] unless targets.is_a? Array

  # make sure its an array of ids
  targets.map! do |comp|
    if all_ids.include? comp.to_i
      comp.to_i
    elsif all_names.include? comp
      map_all_ids_to(:name).invert[comp]
    else
      raise JSS::NoSuchItemError, "No computer found matching '#{comp}'"
    end # if
  end # map!

  cmd_rsrc << "/id/#{targets.join ','}"

  result = JSS::API.post_rsrc cmd_rsrc, nil
  result =~ %r{<command_uuid>(.*)</command_uuid>}
  Regexp.last_match(1)
end

Instance Method Details

#app_store_app_history(refresh = false) ⇒ Object

Shortcut for history(:mac_app_store_applications)



1038
1039
1040
# File 'lib/jss/api_object/computer.rb', line 1038

def app_store_app_history(refresh = false)
  history(subset: :mac_app_store_applications, refresh: refresh)
end

#app_store_apps(only: nil, refresh: false) ⇒ Object

A shortcut for ‘management_data subset: :mac_app_store_apps’



931
932
933
# File 'lib/jss/api_object/computer.rb', line 931

def app_store_apps(only: nil, refresh: false)
  management_data subset: :mac_app_store_apps, only: only, refresh: refresh
end

#application_usage(start_date, end_date = nil) ⇒ Hash{Date=>Array<Hash>}

Get application usage data for this computer for a given date range.

Parameters:

  • start_date (String, Date, DateTime, Time)
  • end_date (String, Date, DateTime, Time) (defaults to: nil)

    Defaults to start_date

Returns:

  • (Hash{Date=>Array<Hash>})

    For each day in the range, an Array with one Hash per application used. The hash keys are: :name => String, the name of the app :version => String ,the version of the app :foreground => Integer, the minutes it was in the foreground :open => Integer, the minutes it was running.



828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
# File 'lib/jss/api_object/computer.rb', line 828

def application_usage(start_date, end_date = nil)
  end_date ||= start_date
  start_date = Time.parse start_date if start_date.is_a? String
  end_date = Time.parse end_date if end_date.is_a? String
  unless ([start_date.class, end_date.class] - APPLICATION_USAGE_DATE_CLASSES).empty?
    raise JSS::InvalidDataError, 'Invalid Start or End Date'
  end
  start_date = start_date.strftime APPLICATION_USAGE_DATE_FMT
  end_date = end_date.strftime APPLICATION_USAGE_DATE_FMT
  data = JSS.api_connection.get_rsrc(APPLICATION_USAGE_RSRC + "/id/#{@id}/#{start_date}_#{end_date}")
  parsed_data = {}
  data[APPLICATION_USAGE_KEY].each do |day_hash|
    date = Date.parse day_hash[:date]
    parsed_data[date] = day_hash[:apps]
  end
  parsed_data
end

#appsArray<Hash>

Returns all apps installed on this machine. Hash keys are :name, :path, and :version.

Returns:

  • (Array<Hash>)

    all apps installed on this machine. Hash keys are :name, :path, and :version



803
804
805
# File 'lib/jss/api_object/computer.rb', line 803

def apps
  @software[:applications]
end

#audits(refresh = false) ⇒ Object

Shortcut for history(:audits)



993
994
995
# File 'lib/jss/api_object/computer.rb', line 993

def audits(refresh = false)
  history(subset: :audits, refresh: refresh)
end

#blank_pushObject Also known as: noop, send_blank_push

Send a blank_push MDM command

See JSS::Computer.send_mdm_command



1174
1175
1176
# File 'lib/jss/api_object/computer.rb', line 1174

def blank_push
  self.class.send_mdm_command @id, :blank_push
end

#boot_driveHash?

Returns The hardware hash of the boot drive.

Returns:



788
789
790
791
# File 'lib/jss/api_object/computer.rb', line 788

def boot_drive
  drives.each { |d| return d if d[:partition][:type] == 'boot' }
  nil
end

#casper_imaging_logs(refresh = false) ⇒ Object

Shortcut for history(:casper_imaging_logs)



1023
1024
1025
# File 'lib/jss/api_object/computer.rb', line 1023

def casper_imaging_logs(refresh = false)
  history(subset: :casper_imaging_logs, refresh: refresh)
end

#casper_remote_logs(refresh = false) ⇒ Object

Shortcut for history(:casper_remote_logs)



1013
1014
1015
# File 'lib/jss/api_object/computer.rb', line 1013

def casper_remote_logs(refresh = false)
  history(subset: :casper_remote_logs, refresh: refresh)
end

#clear_locationvoid Originally defined in module Locatable

This method returns an undefined value.

Clear all location data

#commands(refresh = false) ⇒ Object

Shortcut for history(:commands)



1028
1029
1030
# File 'lib/jss/api_object/computer.rb', line 1028

def commands(refresh = false)
  history(subset: :commands, refresh: refresh)
end

#completed_policies(refresh = false) ⇒ Object

Shortcut for history(:policy_logs), but just the completed policies



1003
1004
1005
# File 'lib/jss/api_object/computer.rb', line 1003

def completed_policies(refresh = false)
  policy_logs(refresh).select { |pl| pl[:status] == POLICY_STATUS_COMPLETED }
end

#computer_groupsArray

Returns the JSS groups to which thismachine belongs (smart and static).

Returns:

  • (Array)

    the JSS groups to which thismachine belongs (smart and static)



755
756
757
# File 'lib/jss/api_object/computer.rb', line 755

def computer_groups
  @groups_accounts[:computer_group_memberships]
end

#deletevoid

This method returns an undefined value.

Delete this computer from the JSS



1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
# File 'lib/jss/api_object/computer.rb', line 1129

def delete
  super
  @alt_mac_address = nil
  @asset_tag = nil
  @barcode_1 = nil
  @barcode_2 = nil
  @distribution_point = nil
  @initial_entry_date = nil
  @ip_address = nil
  @jamf_version = nil
  @last_contact_time = nil
  @macaddress = nil
  @managed = nil
  @management_username = nil
  @mdm_capable = nil
  @netboot_server = nil
  @platform = nil
  @report_date = nil
  @serial_number = nil
  @site = nil
  @sus = nil
  @udid = nil

  @building = nil
  @department = nil
  @email_address = nil
  @phone = nil
  @position = nil
  @real_name = nil
  @room = nil
  @username = nil

  @configuration_profiles = nil
  @extension_attributes = nil
  @groups_accounts = nil
  @hardware = nil
  @peripherals = nil
  @purchasing = nil
  @software = nil
end

#device_lock(passcode) ⇒ Object Also known as: lock, lock_device

Send a device_lock MDM command

See JSS::Computer.send_mdm_command



1184
1185
1186
# File 'lib/jss/api_object/computer.rb', line 1184

def device_lock(passcode)
  self.class.send_mdm_command @id, :device_lock, passcode
end

#drivesArray<Hash>

Returns each storage device.

Returns:



782
783
784
# File 'lib/jss/api_object/computer.rb', line 782

def drives
  @hardware[:storage]
end

#ebooks(only: nil, refresh: false) ⇒ Object

A shortcut for ‘management_data subset: :ebooks’



925
926
927
# File 'lib/jss/api_object/computer.rb', line 925

def ebooks(only: nil, refresh: false)
  management_data subset: :ebooks, only: only, refresh: refresh
end

#erase_device(passcode) ⇒ Object Also known as: erase, wipe

Send an erase_device MDM command

See JSS::Computer.send_mdm_command



1194
1195
1196
# File 'lib/jss/api_object/computer.rb', line 1194

def erase_device(passcode)
  self.class.send_mdm_command @id, :erase_device, passcode
end

#ext_attr_xmlREXML::Element Originally defined in module Extendable

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns An <extension_attribute> element to be included in the rest_xml of objects that mix-in this module.

Returns:

  • (REXML::Element)

    An <extension_attribute> element to be included in the rest_xml of objects that mix-in this module.

#failed_policies(refresh = false) ⇒ Object

Shortcut for history(:policy_logs), but just the failes policies



1008
1009
1010
# File 'lib/jss/api_object/computer.rb', line 1008

def failed_policies(refresh = false)
  policy_log(refresh).select { |pl| pl[:status] == POLICY_STATUS_FAILED }
end

#filevault1_accountsArray<Hash>

Returns The local_accounts Array that have Legacy FV enabled.

Returns:

  • (Array<Hash>)

    The local_accounts Array that have Legacy FV enabled



775
776
777
778
# File 'lib/jss/api_object/computer.rb', line 775

def filevault1_accounts
  return [] if filevault2_enabled?
  local_accounts.select { |a| a[:filevault_enabled] }
end

#filevault2_enabled?Boolean

Returns is FileVault2 enabled?.

Returns:

  • (Boolean)

    is FileVault2 enabled?



769
770
771
# File 'lib/jss/api_object/computer.rb', line 769

def filevault2_enabled?
  boot_drive[:partition][:filevault2_status] != 'Not Encrypted'
end

#has_location?Boolean Originally defined in module Locatable

Returns Does this item have location data?.

Returns:

  • (Boolean)

    Does this item have location data?

#has_purchasing?Boolean Originally defined in module Purchasable

Returns does this item have any purchasing info?.

Returns:

  • (Boolean)

    does this item have any purchasing info?

#history(subset: nil, refresh: false) ⇒ Hash, Array

Return this computer’s history. WARNING! Its huge, better to use a subset a nd one of the shortcut methods.

Parameters:

  • subset (Symbol) (defaults to: nil)

    the subset to return, rather than full history.

  • refresh (Boolean) (defaults to: false)

    should we re-cache the data from the API?

Returns:

  • (Hash)

    The full history

  • (Array)

    The history subset requested



959
960
961
962
963
964
965
966
# File 'lib/jss/api_object/computer.rb', line 959

def history(subset: nil, refresh: false)
  @history ||= {}
  if subset
    history_subset(subset: subset, refresh: refresh)
  else
    full_history refresh
  end
end

#licensed_swArray<String>

Returns the JSS-defined “licensed software” titles installed on this machine.

Returns:

  • (Array<String>)

    the JSS-defined “licensed software” titles installed on this machine.



810
811
812
# File 'lib/jss/api_object/computer.rb', line 810

def licensed_sw
  @software[:licensed_software]
end

#local_accountsArray<Hash> Also known as: accounts, accts

Each item has keys :name, :realname, :uid, :home, :home_size, :administrator, :filevault_enabled

Returns:

  • (Array<Hash>)

    all the local accts on the machine.



763
764
765
# File 'lib/jss/api_object/computer.rb', line 763

def local_accounts
  @groups_accounts[:local_accounts]
end

#locationHash<String> Originally defined in module Locatable

All the location data in a Hash, as it comes from the API.

The reason it isn’t stored this way is to prevent editing of the hash directly.

Returns:

#location_xmlREXML::Element Originally defined in module Locatable

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Return a REXML <location> element to be included in the rest_xml of objects that have a Location subset

Returns:

  • (REXML::Element)

#make_unmanagedvoid

This method returns an undefined value.

Make the machine unmanaged.

The same as

#set_management_to nil, nil

followed by

JSS::Computer.send_mdm_command @id, :unmanage_device

which currently isn’t working



1074
1075
1076
1077
1078
1079
# File 'lib/jss/api_object/computer.rb', line 1074

def make_unmanaged
  return nil unless managed?
  set_management_to(nil, nil)
  return unless mdm_capable
  self.class.send_mdm_command(@id, :unmanage_device)
end

#management_data(subset: nil, only: nil, refresh: false) ⇒ Hash, Array

The ‘computer management’ data for this computer, looked up on the fly.

Without specifying a subset:, the entire dataset is returned as a hash of arrays, one per subset If a subset is given then only that array is returned, and it contains hashes with data about each item (usually :name and :id)

If the only: param is provided with a subset, it is used as a hash-key to map the array to just those values, so subset: :smart_groups, only: :name will return an array of names of smartgroups that contain this computer.

Parameters:

  • subset (Symbol) (defaults to: nil)

    Fetch only a subset of data, as an array. must be one of the symbols in MGMT_DATA_SUBSETS

  • only (Symbol) (defaults to: nil)

    When fetching a subset, only return one value per item in the array. meaningless without a subset.

  • refresh (Boolean) (defaults to: false)

    should the data be re-cached from the API?

Returns:

  • (Hash)

    Without a subset:, a hash of all subsets, each of which is an Array

  • (Array)

    With a subset:, an array of items in that subset.



870
871
872
873
874
875
876
877
# File 'lib/jss/api_object/computer.rb', line 870

def management_data(subset: nil, only: nil, refresh: false)
  @management_data ||= {}
  if subset
    management_data_subset(subset: subset, only: only, refresh: refresh)
  else
    full_management_data refresh
  end
end

#name=(newname) ⇒ void Originally defined in module Updatable

This method returns an undefined value.

Change the name of this item Remember to #update to push changes to the server.

Parameters:

  • newname (String)

    the new name

Raises:

#parse_ext_attrsvoid Originally defined in module Extendable

This method returns an undefined value.

Populate @extension_attributes (the Array of Hashes that comes from the API) and @ext_attr_names, which is a Hash mapping the EA names to their index in the @extension_attributes Array.

Classes including this module should call this in #initialize

#parse_locationvoid Originally defined in module Locatable

This method returns an undefined value.

Call this during initialization of objects that have a Location subset and the location attributes will be populated (as primary attributes) from @init_data

#parse_purchasingObject Originally defined in module Purchasable

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Call this during initialization of objects that have a Purchasing subset and the purchasing attribute will be populated from @init_data

#patch_titles(only: nil, refresh: false) ⇒ Object

A shortcut for ‘management_data subset: :patch_reporting_software_titles’



943
944
945
# File 'lib/jss/api_object/computer.rb', line 943

def patch_titles(only: nil, refresh: false)
  management_data subset: :patch_reporting_software_titles, only: only, refresh: refresh
end

#policies(only: nil, refresh: false) ⇒ Object

A shortcut for ‘management_data subset: :policies’



913
914
915
# File 'lib/jss/api_object/computer.rb', line 913

def policies(only: nil, refresh: false)
  management_data subset: :policies, only: only, refresh: refresh
end

#policy_logs(refresh = false) ⇒ Object

Shortcut for history(:policy_logs)



998
999
1000
# File 'lib/jss/api_object/computer.rb', line 998

def policy_logs(refresh = false)
  history(subset: :policy_logs, refresh: refresh)
end

#printersArray<Hash>

Returns each printer on this computer Keys are :name, :uri, :type, :location.

Returns:

  • (Array<Hash>)

    each printer on this computer Keys are :name, :uri, :type, :location



796
797
798
# File 'lib/jss/api_object/computer.rb', line 796

def printers
  @hardware[:mapped_printers]
end

#purchasingHash<String> Originally defined in module Purchasable

All the purchasing data in a Hash, as it comes from the API.

The reason it isn’t stored this way is to prevent editing of the hash directly.

Returns:

#purchasing_xmlREXML::Element Originally defined in module Purchasable

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns A <purchasing> element to be included in the rest_xml of objects that mix-in this module.

Returns:

  • (REXML::Element)

    A <purchasing> element to be included in the rest_xml of objects that mix-in this module.

#remove_mdm_profileObject

Remove MDM management profile without un-enrolling from the JSS or resetting the JSS management acct.

To do those things as well, see #make_unmanaged

See JSS::Computer.send_mdm_command



1208
1209
1210
# File 'lib/jss/api_object/computer.rb', line 1208

def remove_mdm_profile
  self.class.send_mdm_command(@id, :unmanage_device)
end

#restricted_software(only: nil, refresh: false) ⇒ Object

A shortcut for ‘management_data subset: :restricted_software’



937
938
939
# File 'lib/jss/api_object/computer.rb', line 937

def restricted_software(only: nil, refresh: false)
  management_data subset: :restricted_software, only: only, refresh: refresh
end

#screen_sharing_logs(refresh = false) ⇒ Object

Shortcut for history(:screen_sharing_logs)



1018
1019
1020
# File 'lib/jss/api_object/computer.rb', line 1018

def screen_sharing_logs(refresh = false)
  history(subset: :screen_sharing_logs, refresh: refresh)
end

#set_ext_attr(name, value) ⇒ void Originally defined in module Extendable

This method returns an undefined value.

Set the value of an extension attribute

If the extension attribute is defined as a popup menu, the value must be one of the defined popup choices.

If the ext. attrib. is defined with a data type of Integer, the value must be an Integer.

If the ext. attrib. is defined with a data type of Date, the value will be converted to a Time

Parameters:

  • name (String)

    the name of the extension attribute to set

  • value (String, Time, Time, Integer)

    the new value for the extension attribute for this user

#set_management_to(name, password) ⇒ void Also known as: make_managed

This method returns an undefined value.

Set or unset management acct and password for this computer

The changes will need to be pushed to the server with #update before they take effect.

CAUTION: this does nothing to confirm the name and password will work on the machine!

Parameters:

  • name (String)

    the name of the management acct.

  • password (String)

    the password of the management acct



1056
1057
1058
1059
1060
1061
1062
# File 'lib/jss/api_object/computer.rb', line 1056

def set_management_to(name, password)
  password = nil unless name
  @management_username = name
  @management_password = password
  @managed = name ? true : false
  @need_to_update = true
end

#smart_groups(only: nil, refresh: false) ⇒ Object

A shortcut for ‘management_data subset: :smart_groups’



901
902
903
# File 'lib/jss/api_object/computer.rb', line 901

def smart_groups(only: nil, refresh: false)
  management_data subset: :smart_groups, only: only, refresh: refresh
end

#static_groups(only: nil, refresh: false) ⇒ Object

A shortcut for ‘management_data subset: :static_groups’



907
908
909
# File 'lib/jss/api_object/computer.rb', line 907

def static_groups(only: nil, refresh: false)
  management_data subset: :static_groups, only: only, refresh: refresh
end

#updatevoid

This method returns an undefined value.

Send changes to the API



1119
1120
1121
1122
1123
# File 'lib/jss/api_object/computer.rb', line 1119

def update
  id = super
  @management_password = nil
  id
end

#upload(type, local_file) ⇒ String Originally defined in module Uploadable

Upload a file to the JSS via the REST Resource of the object to which this module is mixed in.

Parameters:

  • type (Symbol)

    the type of upload happening. Must be one of the keys defined in the class’s UPLOAD_TYPES Hash.

  • local_file (String, Pathname)

    String or Pathname pointing to the locally-readable file to be uploaded.

Returns:

  • (String)

    The xml response from the server.

Raises:

#usage_logs(refresh = false) ⇒ Object

Shortcut for history(:computer_usage_logs)



988
989
990
# File 'lib/jss/api_object/computer.rb', line 988

def usage_logs(refresh = false)
  history(subset: :computer_usage_logs, refresh: refresh)
end

#user_location_history(refresh = false) ⇒ Object

Shortcut for history(:user_location)



1033
1034
1035
# File 'lib/jss/api_object/computer.rb', line 1033

def user_location_history(refresh = false)
  history(subset: :user_location, refresh: refresh)
end