Class: JSS::Computer
- 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
This class cannot be used to add new Computers to the JSS. Please use other Casper 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
MDM Commands are Not Yet Supported!
*Hopefully they will be soon*
The following methods will 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.
The methods supported will be:
-
#blank_push (aliases blank, noop, send_blank_push)
-
#device_lock (aliases lock, lock_device)
-
#erase_device (aliases wipe)
To send an MDM command without making an instance, use the class method send_mdm_command
Each returns true if the command as sent.
Other Methods
-
#set_management_to change the management acct and passwd for this computer, aliased to #make_managed
-
requires calling #update to push changes to the server
-
-
#make_unmanaged an shortcut method for #set_management_to(nil)
-
requires calling #update to push changes to the server
-
-
#licensed_sw a shortcut to #software [:licensed_software]
-
#computer_groups a shortcut to #groups_accounts [:computer_group_memberships]
-
#local_accounts a shortcut to #groups_accounts [:local_accounts]
Constant Summary collapse
- RSRC_BASE =
The base for REST resources of this class
"computers"- LIST_RSRC =
The (temporary?) list-resource
"#{RSRC_BASE}/subset/basic"- 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
[:sus, :distribution_point, :alt_mac_address ]
- 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)"- UPLOAD_TYPES =
file uploads can send attachments to the JSS using :computers as the sub-resource.
{ :attachment => :computers}
- 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", :send_blank_push => "BlankPush", :blank => "BlankPush", :noop => "BlankPush", :device_lock => "DeviceLock", :lock => "DeviceLock", :lock_device => "DeviceLock", :erase_device => "EraseDevice", :erase => "EraseDevice", :wipe => "EraseDevice", :unmanage_device => "UnmanageDevice", :unmanage => "UnmanageDevice" }
- @@all_computers =
Class Variables
nil
Instance Attribute Summary collapse
-
#alt_mac_address ⇒ String
(also: #alt_macaddress)
readonly
The secondary mac address.
- #applecare_id ⇒ String included from Purchasable
-
#asset_tag ⇒ String
The asset tag.
-
#barcode_1 ⇒ String
(also: #bar_code_1)
The barcodes.
-
#barcode_2 ⇒ String
(also: #bar_code_2)
The barcodes.
- #building ⇒ String included from Locatable
-
#configuration_profiles ⇒ Array<Hash>
readonly
A Hash for each ConfigurationProfile on the computer.
- #department ⇒ String included from Locatable
-
#distribution_point ⇒ String
readonly
The name of the distribution point for this computer.
- #email_address ⇒ String included from Locatable
-
#ext_attrs ⇒ Hash
included
from Extendable
readonly
A mapping of Ext Attrib names to their values.
-
#extension_attributes ⇒ Array<Hash>
included
from Extendable
readonly
The extension attribute values for the object.
-
#groups_accounts ⇒ Hash
readonly
Info about the local accts and ComputerGroups to which this machine beloings.
-
#hardware ⇒ Hash
readonly
A Hash with info about the hardware of this cmoputer.
-
#initial_entry_date ⇒ Time
readonly
When was it added to the JSS.
-
#ip_address ⇒ IPAddr
The last known IP address.
- #is_leased ⇒ Boolean (also: #leased?) included from Purchasable
- #is_purchased ⇒ Boolean (also: #purchased?) included from Purchasable
-
#jamf_version ⇒ String
readonly
The version of the jamf binary.
-
#last_contact_time ⇒ Time
readonly
The last contact time.
- #lease_expires ⇒ Time included from Purchasable
- #life_expectancy ⇒ Integer included from Purchasable
-
#mac_address ⇒ String
readonly
The primary macaddress.
-
#managed ⇒ Boolean
(also: #managed?)
readonly
Is this machine “managed” by Casper?.
-
#management_username ⇒ String
readonly
The name of the management account.
-
#mdm_capable ⇒ Boolean
(also: #mdm?)
readonly
Doesit support MDM?.
-
#need_to_update ⇒ Boolean
included
from Updatable
readonly
Do we have unsaved changes?.
-
#netboot_server ⇒ String
readonly
The name of the netboot server for this machine.
-
#peripherals ⇒ Array<Hash>
readonly
A Hash per peripheral.
- #phone ⇒ String included from Locatable
-
#platform ⇒ String
readonly
What kind of computer?.
- #po_date ⇒ Time included from Purchasable
- #po_number ⇒ String included from Purchasable
- #position ⇒ String included from Locatable
- #purchase_price ⇒ Float included from Purchasable
- #purchasing_account ⇒ String included from Purchasable
- #purchasing_contact ⇒ String included from Purchasable
- #real_name ⇒ String included from Locatable
-
#report_date ⇒ Time
(also: #last_recon)
readonly
The last recon time.
- #room ⇒ String included from Locatable
-
#serial_number ⇒ String
(also: #sn, #serialnumber)
readonly
The serial number.
-
#site ⇒ Hash
readonly
The :name and :id of the site for this machine.
-
#software ⇒ Hash
readonly
A Hash of software data.
-
#sus ⇒ String
readonly
The name of the Software Update Server assigned to this machine.
-
#udid ⇒ String
readonly
The UDID of the computer.
- #username ⇒ String (also: #user) included from Locatable
- #vendor ⇒ String included from Purchasable
- #warranty_expires ⇒ Time included from Purchasable
Class Method Summary collapse
-
.all(refresh = false) ⇒ Array<Hash{:name=>String, :id=> Integer}>
A larger set of info about the computers in the JSS.
-
.all_desktops(refresh = false) ⇒ Array<Hash>
All desktop macs in the jss.
-
.all_imacs(refresh = false) ⇒ Array<Hash>
All imacs in the jss.
-
.all_laptops(refresh = false) ⇒ Array<Hash>
All laptop computers in the jss.
-
.all_mac_addresses(refresh = false) ⇒ Array<String>
All computer mac_addresses in the jss.
-
.all_macbookairs(refresh = false) ⇒ Array<Hash>
All macbookairs in the jss.
-
.all_macbookpros(refresh = false) ⇒ Array<Hash>
All macbookpros in the jss.
-
.all_macbooks(refresh = false) ⇒ Array<Hash>
All macbooks in the jss.
-
.all_macpros(refresh = false) ⇒ Array<Hash>
All macpros in the jss.
-
.all_managed(refresh = false) ⇒ Array<Hash>
All managed computers in the jss.
-
.all_minis(refresh = false) ⇒ Array<Hash>
All mac minis in the jss.
-
.all_serial_numbers(refresh = false) ⇒ Array<String>
All computer serial numbers in the jss.
-
.all_udids(refresh = false) ⇒ Array<String>
All computer udids in the jss.
-
.all_unmanaged(refresh = false) ⇒ Array<Hash>
All unmanaged computers in the jss.
-
.all_xserves(refresh = false) ⇒ Array<Hash>
All xserves in the jss.
-
.match(term) ⇒ Array<Hash>
extended
from Matchable
Perform a match, returning an Array of Hashes, one for each item matched.
Instance Method Summary collapse
-
#apps ⇒ Array<Hash>
All apps installed on this machine.
-
#boot_drive ⇒ Hash?
The hardware hash of the boot drive.
-
#clear_location ⇒ void
included
from Locatable
Clear all location data.
-
#computer_groups ⇒ Array
The JSS groups to which thismachine belongs (smart and static).
-
#delete ⇒ void
Delete this computer from the JSS.
-
#drives ⇒ Array<Hash>
Each storage device.
-
#ext_attr_xml ⇒ REXML::Element
included
from Extendable
private
An <extension_attribute> element to be included in the rest_xml of objects that mix-in this module.
-
#filevault1_accounts ⇒ Array<Hash>
The local_accounts Array that have Legacy FV enabled.
-
#filevault2_enabled? ⇒ Boolean
Is FileVault2 enabled?.
-
#has_location? ⇒ Boolean
included
from Locatable
Does this item have location data?.
-
#has_purchasing? ⇒ Boolean
included
from Purchasable
Does this item have any purchasing info?.
-
#initialize(args = {}) ⇒ Computer
constructor
As well as :id and :name, computers can be queried using :udid, :serialnumber, and :mac_address.
-
#licensed_sw ⇒ Array<String>
The JSS-defined “licensed software” titles installed on this machine.
-
#local_accounts ⇒ Array<Hash>
(also: #accounts, #accts)
Each item has keys :name, :realname, :uid, :home, :home_size, :administrator, :filevault_enabled.
-
#location ⇒ Hash<String>
included
from Locatable
All the location data in a Hash, as it comes from the API.
-
#location_xml ⇒ REXML::Element
included
from Locatable
private
Return a REXML <location> element to be included in the rest_xml of objects that have a Location subset.
-
#make_unmanaged ⇒ void
Make the machine unmanaged.
-
#name=(newname) ⇒ void
included
from Updatable
Change the name of this item Remember to #update to push changes to the server.
-
#parse_ext_attrs ⇒ void
included
from Extendable
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.
-
#parse_location ⇒ void
included
from Locatable
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_purchasing ⇒ Object
included
from Purchasable
private
Call this during initialization of objects that have a Purchasing subset and the purchasing attribute will be populated from @init_data.
-
#printers ⇒ Array<Hash>
Each printer on this computer Keys are :name, :uri, :type, :location.
-
#purchasing ⇒ Hash<String>
included
from Purchasable
All the purchasing data in a Hash, as it comes from the API.
-
#purchasing_xml ⇒ REXML::Element
included
from Purchasable
private
A <purchasing> element to be included in the rest_xml of objects that mix-in this module.
-
#set_ext_attr(name, value) ⇒ void
included
from Extendable
Set the value of an extension attribute.
-
#set_management_to(name, password) ⇒ void
(also: #make_managed)
Set or unset management acct and password for this computer.
-
#update ⇒ void
Send changes to the API.
-
#upload(type, local_file) ⇒ String
included
from Uploadable
Upload a file to the JSS via the REST Resource of the object to which this module is mixed in.
Constructor Details
#initialize(args = {}) ⇒ Computer
As well as :id and :name, computers can be queried using :udid, :serialnumber, and :mac_address
546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 |
# File 'lib/jss/api_object/computer.rb', line 546 def initialize (args = {}) super args, [:udid, :serialnumber, :mac_address] ### 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] parse_location parse_purchasing parse_ext_attrs @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_address ⇒ String (readonly) Also known as: alt_macaddress
Returns the secondary mac address.
321 322 323 |
# File 'lib/jss/api_object/computer.rb', line 321 def alt_mac_address @alt_mac_address end |
#applecare_id ⇒ String Originally defined in module Purchasable
#asset_tag ⇒ String
Returns the asset tag.
324 325 326 |
# File 'lib/jss/api_object/computer.rb', line 324 def asset_tag @asset_tag end |
#barcode_1 ⇒ String Also known as: bar_code_1
Returns the barcodes.
327 328 329 |
# File 'lib/jss/api_object/computer.rb', line 327 def @barcode_1 end |
#barcode_2 ⇒ String Also known as: bar_code_2
Returns the barcodes.
327 328 329 |
# File 'lib/jss/api_object/computer.rb', line 327 def @barcode_2 end |
#configuration_profiles ⇒ Array<Hash> (readonly)
A Hash for each ConfigurationProfile on the computer
The Hash keys are:
-
:id => the ConfigurationProfile id in the JSS
-
:name => the username to whom this user-level profile has been applied (if it’s a user-level profile)
-
:uuid => the ConfigurationProfile uuid
393 394 395 |
# File 'lib/jss/api_object/computer.rb', line 393 def configuration_profiles @configuration_profiles end |
#distribution_point ⇒ String (readonly)
Returns The name of the distribution point for this computer.
331 332 333 |
# File 'lib/jss/api_object/computer.rb', line 331 def distribution_point @distribution_point end |
#ext_attrs ⇒ Hash (readonly) Originally defined in module Extendable
Returns A mapping of Ext Attrib names to their values.
#extension_attributes ⇒ Array<Hash> (readonly) Originally defined in module Extendable
Returns The extension attribute values for the object.
#groups_accounts ⇒ Hash (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
-
411 412 413 |
# File 'lib/jss/api_object/computer.rb', line 411 def groups_accounts @groups_accounts end |
#hardware ⇒ Hash (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
-
-
471 472 473 |
# File 'lib/jss/api_object/computer.rb', line 471 def hardware @hardware end |
#initial_entry_date ⇒ Time (readonly)
Returns when was it added to the JSS.
334 335 336 |
# File 'lib/jss/api_object/computer.rb', line 334 def initial_entry_date @initial_entry_date end |
#ip_address ⇒ IPAddr
Returns the last known IP address.
337 338 339 |
# File 'lib/jss/api_object/computer.rb', line 337 def ip_address @ip_address end |
#is_leased ⇒ Boolean Also known as: leased? Originally defined in module Purchasable
#is_purchased ⇒ Boolean Also known as: purchased? Originally defined in module Purchasable
#jamf_version ⇒ String (readonly)
Returns the version of the jamf binary.
340 341 342 |
# File 'lib/jss/api_object/computer.rb', line 340 def jamf_version @jamf_version end |
#last_contact_time ⇒ Time (readonly)
Returns the last contact time.
343 344 345 |
# File 'lib/jss/api_object/computer.rb', line 343 def last_contact_time @last_contact_time end |
#lease_expires ⇒ Time Originally defined in module Purchasable
#life_expectancy ⇒ Integer Originally defined in module Purchasable
#mac_address ⇒ String (readonly)
Returns the primary macaddress.
346 347 348 |
# File 'lib/jss/api_object/computer.rb', line 346 def mac_address @mac_address end |
#managed ⇒ Boolean (readonly) Also known as: managed?
Returns is this machine “managed” by Casper?.
349 350 351 |
# File 'lib/jss/api_object/computer.rb', line 349 def managed @managed end |
#management_username ⇒ String (readonly)
Returns the name of the management account.
352 353 354 |
# File 'lib/jss/api_object/computer.rb', line 352 def management_username @management_username end |
#mdm_capable ⇒ Boolean (readonly) Also known as: mdm?
Returns doesit support MDM?.
355 356 357 |
# File 'lib/jss/api_object/computer.rb', line 355 def mdm_capable @mdm_capable end |
#need_to_update ⇒ Boolean (readonly) Originally defined in module Updatable
Returns do we have unsaved changes?.
#netboot_server ⇒ String (readonly)
Returns the name of the netboot server for this machine.
358 359 360 |
# File 'lib/jss/api_object/computer.rb', line 358 def netboot_server @netboot_server end |
#peripherals ⇒ Array<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=>“”
-
513 514 515 |
# File 'lib/jss/api_object/computer.rb', line 513 def peripherals @peripherals end |
#platform ⇒ String (readonly)
Returns what kind of computer?.
361 362 363 |
# File 'lib/jss/api_object/computer.rb', line 361 def platform @platform end |
#po_date ⇒ Time Originally defined in module Purchasable
#po_number ⇒ String Originally defined in module Purchasable
#purchase_price ⇒ Float Originally defined in module Purchasable
#purchasing_account ⇒ String Originally defined in module Purchasable
#purchasing_contact ⇒ String Originally defined in module Purchasable
#report_date ⇒ Time (readonly) Also known as: last_recon
Returns the last recon time.
364 365 366 |
# File 'lib/jss/api_object/computer.rb', line 364 def report_date @report_date end |
#serial_number ⇒ String (readonly) Also known as: sn, serialnumber
Returns the serial number.
367 368 369 |
# File 'lib/jss/api_object/computer.rb', line 367 def serial_number @serial_number end |
#site ⇒ Hash (readonly)
Returns the :name and :id of the site for this machine.
371 372 373 |
# File 'lib/jss/api_object/computer.rb', line 371 def site @site end |
#software ⇒ Hash (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
535 536 537 |
# File 'lib/jss/api_object/computer.rb', line 535 def software @software end |
#sus ⇒ String (readonly)
Returns the name of the Software Update Server assigned to this machine.
374 375 376 |
# File 'lib/jss/api_object/computer.rb', line 374 def sus @sus end |
#udid ⇒ String (readonly)
Returns the UDID of the computer.
377 378 379 |
# File 'lib/jss/api_object/computer.rb', line 377 def udid @udid end |
#vendor ⇒ String Originally defined in module Purchasable
#warranty_expires ⇒ Time Originally defined in module Purchasable
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.
153 154 155 156 157 |
# File 'lib/jss/api_object/computer.rb', line 153 def self.all(refresh = false) @@all_computers = nil if refresh return @@all_computers if @@all_computers @@all_computers = JSS::API.get_rsrc(self::LIST_RSRC)[self::RSRC_LIST_KEY] end |
.all_desktops(refresh = false) ⇒ Array<Hash>
Returns all desktop macs in the jss.
210 211 212 |
# File 'lib/jss/api_object/computer.rb', line 210 def self.all_desktops(refresh = false) self.all(refresh).select{|d| d[:model] !~ /serve|book/i } end |
.all_imacs(refresh = false) ⇒ Array<Hash>
Returns all imacs in the jss.
215 216 217 |
# File 'lib/jss/api_object/computer.rb', line 215 def self.all_imacs(refresh = false) self.all(refresh).select{|d| d[:model] =~ /^imac/i } end |
.all_laptops(refresh = false) ⇒ Array<Hash>
Returns all laptop computers in the jss.
185 186 187 |
# File 'lib/jss/api_object/computer.rb', line 185 def self.all_laptops(refresh = false) self.all(refresh).select{|d| d[:model] =~ /book/i } end |
.all_mac_addresses(refresh = false) ⇒ Array<String>
Returns all computer mac_addresses in the jss.
165 166 167 |
# File 'lib/jss/api_object/computer.rb', line 165 def self.all_mac_addresses(refresh = false) self.all(refresh).map{|i| i[:mac_address]} end |
.all_macbookairs(refresh = false) ⇒ Array<Hash>
Returns all macbookairs in the jss.
200 201 202 |
# File 'lib/jss/api_object/computer.rb', line 200 def self.all_macbookairs(refresh = false) self.all(refresh).select{|d| d[:model] =~ /^macbookair\d/i } end |
.all_macbookpros(refresh = false) ⇒ Array<Hash>
Returns all macbookpros in the jss.
195 196 197 |
# File 'lib/jss/api_object/computer.rb', line 195 def self.all_macbookpros(refresh = false) self.all(refresh).select{|d| d[:model] =~ /^macbookpro\d/i } end |
.all_macbooks(refresh = false) ⇒ Array<Hash>
Returns all macbooks in the jss.
190 191 192 |
# File 'lib/jss/api_object/computer.rb', line 190 def self.all_macbooks(refresh = false) self.all(refresh).select{|d| d[:model] =~ /^macbook\d/i } end |
.all_macpros(refresh = false) ⇒ Array<Hash>
Returns all macpros in the jss.
225 226 227 |
# File 'lib/jss/api_object/computer.rb', line 225 def self.all_macpros(refresh = false) self.all(refresh).select{|d| d[:model] =~ /^macpro/i } end |
.all_managed(refresh = false) ⇒ Array<Hash>
Returns all managed computers in the jss.
175 176 177 |
# File 'lib/jss/api_object/computer.rb', line 175 def self.all_managed(refresh = false) self.all(refresh).select{|d| d[:managed] } end |
.all_minis(refresh = false) ⇒ Array<Hash>
Returns all mac minis in the jss.
220 221 222 |
# File 'lib/jss/api_object/computer.rb', line 220 def self.all_minis(refresh = false) self.all(refresh).select{|d| d[:model] =~ /^macmini/i } end |
.all_serial_numbers(refresh = false) ⇒ Array<String>
Returns all computer serial numbers in the jss.
160 161 162 |
# File 'lib/jss/api_object/computer.rb', line 160 def self.all_serial_numbers(refresh = false) self.all(refresh).map{|i| i[:serial_number]} end |
.all_udids(refresh = false) ⇒ Array<String>
Returns all computer udids in the jss.
170 171 172 |
# File 'lib/jss/api_object/computer.rb', line 170 def self.all_udids(refresh = false) self.all(refresh).map{|i| i[:udid]} end |
.all_unmanaged(refresh = false) ⇒ Array<Hash>
Returns all unmanaged computers in the jss.
180 181 182 |
# File 'lib/jss/api_object/computer.rb', line 180 def self.all_unmanaged(refresh = false) self.all(refresh).select{|d| not d[:managed] } end |
Instance Method Details
#apps ⇒ Array<Hash>
Returns all apps installed on this machine. Hash keys are :name, :path, and :version.
641 |
# File 'lib/jss/api_object/computer.rb', line 641 def apps ; @software[:applications] ; end |
#boot_drive ⇒ Hash?
Returns The hardware hash of the boot drive.
625 626 627 628 |
# File 'lib/jss/api_object/computer.rb', line 625 def boot_drive drives.each{ |d| return d if d[:partition][:type] == "boot" } return nil end |
#clear_location ⇒ void Originally defined in module Locatable
This method returns an undefined value.
Clear all location data
#computer_groups ⇒ Array
Returns the JSS groups to which thismachine belongs (smart and static).
590 591 592 |
# File 'lib/jss/api_object/computer.rb', line 590 def computer_groups @groups_accounts[:computer_group_memberships] end |
#delete ⇒ void
This method returns an undefined value.
Delete this computer from the JSS
742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 |
# File 'lib/jss/api_object/computer.rb', line 742 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 |
#drives ⇒ Array<Hash>
Returns each storage device.
619 620 621 |
# File 'lib/jss/api_object/computer.rb', line 619 def drives @hardware[:storage] end |
#ext_attr_xml ⇒ REXML::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.
#filevault1_accounts ⇒ Array<Hash>
Returns The local_accounts Array that have Legacy FV enabled.
612 613 614 615 |
# File 'lib/jss/api_object/computer.rb', line 612 def filevault1_accounts return [] if filevault2_enabled? local_accounts.select{ |a| a[:filevault_enabled] } end |
#filevault2_enabled? ⇒ Boolean
Returns is FileVault2 enabled?.
606 607 608 |
# File 'lib/jss/api_object/computer.rb', line 606 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?.
#has_purchasing? ⇒ Boolean Originally defined in module Purchasable
Returns does this item have any purchasing info?.
#licensed_sw ⇒ Array<String>
Returns the JSS-defined “licensed software” titles installed on this machine.
647 |
# File 'lib/jss/api_object/computer.rb', line 647 def licensed_sw ; @software[:licensed_software] ; end |
#local_accounts ⇒ Array<Hash> Also known as: accounts, accts
Each item has keys :name, :realname, :uid, :home, :home_size, :administrator, :filevault_enabled
599 600 601 |
# File 'lib/jss/api_object/computer.rb', line 599 def local_accounts @groups_accounts[:local_accounts] end |
#location ⇒ Hash<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.
#location_xml ⇒ REXML::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
#make_unmanaged ⇒ void
683 684 685 686 687 688 689 690 |
# File 'lib/jss/api_object/computer.rb', line 683 def make_unmanaged return nil unless managed? set_management_to(nil, nil) begin self.class.send_mdm_command(@id, :unmanage_device) rescue 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.
#parse_ext_attrs ⇒ void 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_location ⇒ void 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_purchasing ⇒ Object 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
#printers ⇒ Array<Hash>
Returns each printer on this computer Keys are :name, :uri, :type, :location.
633 634 635 |
# File 'lib/jss/api_object/computer.rb', line 633 def printers @hardware[:mapped_printers] end |
#purchasing ⇒ Hash<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.
#purchasing_xml ⇒ REXML::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.
#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
#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!
664 665 666 667 668 669 670 |
# File 'lib/jss/api_object/computer.rb', line 664 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 |
#update ⇒ void
This method returns an undefined value.
Send changes to the API
731 732 733 734 735 |
# File 'lib/jss/api_object/computer.rb', line 731 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.