Class: Jamf::MobileDeviceExtensionAttribute

Inherits:
ExtensionAttribute show all
Defined in:
lib/jamf/api/classic/api_objects/mobile_device_extension_attribute.rb

Overview

An extension attribute as defined in the JSS

Constant Summary collapse

RSRC_BASE =

The base for REST resources of this class

'mobiledeviceextensionattributes'.freeze
RSRC_LIST_KEY =

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

:mobile_device_extension_attributes
RSRC_OBJECT_KEY =

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

:mobile_device_extension_attribute
TARGET_CLASS =

these ext attribs are related to these kinds of objects

Jamf::MobileDevice
ALL_TARGETS_CRITERION =

A criterion that will return all members of the TARGET_CLASS

Jamf::Criteriable::Criterion.new(and_or: 'and', name: 'Last Inventory Update', search_type: 'after (yyyy-mm-dd)', value: '2003-01-01')
OBJECT_HISTORY_OBJECT_TYPE =

the object type for this object in the object history table. See APIObject#add_object_history_entry

86

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

This class inherits a constructor from Jamf::ExtensionAttribute

Instance Attribute Details

#need_to_updateBoolean (readonly) Originally defined in module Updatable

Returns do we have unsaved changes?.

Returns:

  • (Boolean)

    do we have unsaved changes?

Instance Method Details

#history(mobiledevice) ⇒ Array<Hash{:timestamp=>Time,:value=>String,Integer,Time}>

Return an Array of Hashes showing the history of reported values for this EA on one MobileDevice.

Each hash contains these 2 keys:

  • :value - String, Integer, or Time, depending on @data_type

  • :timestamp - Time

This method requires a MySQL database connection established via Jamf::DB_CNX.connect

Parameters:

  • mobiledevice (Integer, String)

    the id or name of the MobileDevice.

Returns:

Raises:

See Also:



94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# File 'lib/jamf/api/classic/api_objects/mobile_device_extension_attribute.rb', line 94

def history(mobiledevice)
  raise Jamf::NoSuchItemError, "EA Not In JSS! Use #create to create this #{RSRC_OBJECT_KEY}." unless @in_jss
  raise Jamf::InvalidConnectionError, "Database connection required for 'history' query." unless Jamf::DB_CNX.connected?

  mobile_device_id = Jamf::MobileDevice.valid_id mobiledevice, cnx: @cnx
  raise Jamf::NoSuchItemError, "No MobileDevice found matching '#{mobiledevice}'" unless mobile_device_id

  the_query = <<-END_Q
  SELECT eav.value_on_client AS value, r.date_entered_epoch AS timestamp_epoch
  FROM mobile_device_extension_attribute_values eav JOIN reports r ON eav.report_id = r.report_id
  WHERE r.mobile_device_id = #{mobile_device_id}
    AND eav.mobile_device_extension_attribute_id = #{@id}
  ORDER BY timestamp_epoch
  END_Q

  qrez = Jamf::DB_CNX.db.query the_query
  history = []
  qrez.each_hash do |entry|
    value =
      case @data_type
      when 'String' then entry['value']
      when 'Integer' then entry['value'].to_i
      when 'Date' then Jamf.parse_time(entry['value'])
      end # case
    newhash = { value: value, timestamp: JSS.epoch_to_time(entry['timestamp_epoch']) }
    history << newhash
  end # each hash

  history
end

#input_type=(new_val) ⇒ Object



74
75
76
77
78
# File 'lib/jamf/api/classic/api_objects/mobile_device_extension_attribute.rb', line 74

def input_type=(new_val)
  raise Jamf::InvalidDataError, "Mobile Device Extension Attribute input_type cannot be '#{INPUT_TYPE_SCRIPT}'" if new_val == INPUT_TYPE_SCRIPT

  super
end

#web_display=(new_val) ⇒ Object



66
67
68
69
70
# File 'lib/jamf/api/classic/api_objects/mobile_device_extension_attribute.rb', line 66

def web_display=(new_val)
  raise Jamf::InvalidDataError, "Mobile Device Extension Attributes web_display cannot be '#{WEB_DISPLAY_CHOICE_OS}'" if new_val == WEB_DISPLAY_CHOICE_OS

  super
end