Class: JSS::Computer
- Extended by:
- Matchable
- Includes:
- Extendable, Locatable, Purchasable, Updatable, Uploadable
- Defined in:
- lib/jss-api/api_object/computer.rb,
lib/jss-api.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 from the Locatable module
-
purchasing data from the Purchasable module
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.
-
#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.
-
#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
540 541 542 543 544 545 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 |
# File 'lib/jss-api/api_object/computer.rb', line 540 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.
315 316 317 |
# File 'lib/jss-api/api_object/computer.rb', line 315 def alt_mac_address @alt_mac_address end |
#applecare_id ⇒ String Originally defined in module Purchasable
#asset_tag ⇒ String
Returns the asset tag.
318 319 320 |
# File 'lib/jss-api/api_object/computer.rb', line 318 def asset_tag @asset_tag end |
#barcode_1 ⇒ String Also known as: bar_code_1
Returns the barcodes.
321 322 323 |
# File 'lib/jss-api/api_object/computer.rb', line 321 def @barcode_1 end |
#barcode_2 ⇒ String Also known as: bar_code_2
Returns the barcodes.
321 322 323 |
# File 'lib/jss-api/api_object/computer.rb', line 321 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
387 388 389 |
# File 'lib/jss-api/api_object/computer.rb', line 387 def configuration_profiles @configuration_profiles end |
#distribution_point ⇒ String (readonly)
Returns The name of the distribution point for this computer.
325 326 327 |
# File 'lib/jss-api/api_object/computer.rb', line 325 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
-
405 406 407 |
# File 'lib/jss-api/api_object/computer.rb', line 405 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
-
-
465 466 467 |
# File 'lib/jss-api/api_object/computer.rb', line 465 def hardware @hardware end |
#initial_entry_date ⇒ Time (readonly)
Returns when was it added to the JSS.
328 329 330 |
# File 'lib/jss-api/api_object/computer.rb', line 328 def initial_entry_date @initial_entry_date end |
#ip_address ⇒ IPAddr
Returns the last known IP address.
331 332 333 |
# File 'lib/jss-api/api_object/computer.rb', line 331 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.
334 335 336 |
# File 'lib/jss-api/api_object/computer.rb', line 334 def jamf_version @jamf_version end |
#last_contact_time ⇒ Time (readonly)
Returns the last contact time.
337 338 339 |
# File 'lib/jss-api/api_object/computer.rb', line 337 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.
340 341 342 |
# File 'lib/jss-api/api_object/computer.rb', line 340 def mac_address @mac_address end |
#managed ⇒ Boolean (readonly) Also known as: managed?
Returns is this machine “managed” by Casper?.
343 344 345 |
# File 'lib/jss-api/api_object/computer.rb', line 343 def managed @managed end |
#management_username ⇒ String (readonly)
Returns the name of the management account.
346 347 348 |
# File 'lib/jss-api/api_object/computer.rb', line 346 def management_username @management_username end |
#mdm_capable ⇒ Boolean (readonly) Also known as: mdm?
Returns doesit support MDM?.
349 350 351 |
# File 'lib/jss-api/api_object/computer.rb', line 349 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.
352 353 354 |
# File 'lib/jss-api/api_object/computer.rb', line 352 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=>“”
-
507 508 509 |
# File 'lib/jss-api/api_object/computer.rb', line 507 def peripherals @peripherals end |
#platform ⇒ String (readonly)
Returns what kind of computer?.
355 356 357 |
# File 'lib/jss-api/api_object/computer.rb', line 355 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.
358 359 360 |
# File 'lib/jss-api/api_object/computer.rb', line 358 def report_date @report_date end |
#serial_number ⇒ String (readonly) Also known as: sn, serialnumber
Returns the serial number.
361 362 363 |
# File 'lib/jss-api/api_object/computer.rb', line 361 def serial_number @serial_number end |
#site ⇒ Hash (readonly)
Returns the :name and :id of the site for this machine.
365 366 367 |
# File 'lib/jss-api/api_object/computer.rb', line 365 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
529 530 531 |
# File 'lib/jss-api/api_object/computer.rb', line 529 def software @software end |
#sus ⇒ String (readonly)
Returns the name of the Software Update Server assigned to this machine.
368 369 370 |
# File 'lib/jss-api/api_object/computer.rb', line 368 def sus @sus end |
#udid ⇒ String (readonly)
Returns the UDID of the computer.
371 372 373 |
# File 'lib/jss-api/api_object/computer.rb', line 371 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.
147 148 149 150 151 |
# File 'lib/jss-api/api_object/computer.rb', line 147 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.
204 205 206 |
# File 'lib/jss-api/api_object/computer.rb', line 204 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.
209 210 211 |
# File 'lib/jss-api/api_object/computer.rb', line 209 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.
179 180 181 |
# File 'lib/jss-api/api_object/computer.rb', line 179 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.
159 160 161 |
# File 'lib/jss-api/api_object/computer.rb', line 159 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.
194 195 196 |
# File 'lib/jss-api/api_object/computer.rb', line 194 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.
189 190 191 |
# File 'lib/jss-api/api_object/computer.rb', line 189 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.
184 185 186 |
# File 'lib/jss-api/api_object/computer.rb', line 184 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.
219 220 221 |
# File 'lib/jss-api/api_object/computer.rb', line 219 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.
169 170 171 |
# File 'lib/jss-api/api_object/computer.rb', line 169 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.
214 215 216 |
# File 'lib/jss-api/api_object/computer.rb', line 214 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.
154 155 156 |
# File 'lib/jss-api/api_object/computer.rb', line 154 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.
164 165 166 |
# File 'lib/jss-api/api_object/computer.rb', line 164 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.
174 175 176 |
# File 'lib/jss-api/api_object/computer.rb', line 174 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.
617 |
# File 'lib/jss-api/api_object/computer.rb', line 617 def apps ; @software[:applications] ; 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).
584 585 586 |
# File 'lib/jss-api/api_object/computer.rb', line 584 def computer_groups @groups_accounts[:computer_group_memberships] end |
#delete ⇒ void
This method returns an undefined value.
Delete this computer from the JSS
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 752 753 754 755 756 757 |
# File 'lib/jss-api/api_object/computer.rb', line 718 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.
601 602 603 |
# File 'lib/jss-api/api_object/computer.rb', line 601 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.
#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.
623 |
# File 'lib/jss-api/api_object/computer.rb', line 623 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
593 594 595 |
# File 'lib/jss-api/api_object/computer.rb', line 593 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
659 660 661 662 663 664 665 666 |
# File 'lib/jss-api/api_object/computer.rb', line 659 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.
609 610 611 |
# File 'lib/jss-api/api_object/computer.rb', line 609 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!
640 641 642 643 644 645 646 |
# File 'lib/jss-api/api_object/computer.rb', line 640 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
707 708 709 710 711 |
# File 'lib/jss-api/api_object/computer.rb', line 707 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.