Class: JSS::MobileDeviceExtensionAttribute
- Inherits:
-
ExtensionAttribute
- Object
- APIObject
- ExtensionAttribute
- JSS::MobileDeviceExtensionAttribute
- Defined in:
- lib/jss/api_object/extension_attribute/mobile_device_extension_attribute.rb,
lib/jss.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
JSS::MobileDevice
- ALL_TARGETS_CRITERION =
A criterion that will return all members of the TARGET_CLASS
JSS::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
-
#attribute_mapping ⇒ String
The name of the LDAP attribute to use when the @input Type is “LDAP Attribute Mapping”.
-
#need_to_update ⇒ Boolean
included
from Updatable
readonly
Do we have unsaved changes?.
Instance Method Summary collapse
- #create ⇒ Object
-
#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.
-
#initialize(args = {}) ⇒ MobileDeviceExtensionAttribute
constructor
See JSS::APIObject.initialize.
- #input_type=(new_val) ⇒ Object
- #web_display=(new_val) ⇒ Object
Constructor Details
#initialize(args = {}) ⇒ MobileDeviceExtensionAttribute
See JSS::APIObject.initialize
101 102 103 104 |
# File 'lib/jss/api_object/extension_attribute/mobile_device_extension_attribute.rb', line 101 def initialize(args = {}) super args @attribute_mapping = @init_data[:input_type][:attribute_mapping] if @init_data[:input_type] end |
Instance Attribute Details
#attribute_mapping ⇒ String
Returns the name of the LDAP attribute to use when the @input Type is “LDAP Attribute Mapping”.
92 93 94 |
# File 'lib/jss/api_object/extension_attribute/mobile_device_extension_attribute.rb', line 92 def attribute_mapping @attribute_mapping end |
#need_to_update ⇒ Boolean (readonly) Originally defined in module Updatable
Returns do we have unsaved changes?.
Instance Method Details
#create ⇒ Object
113 114 115 116 117 118 |
# File 'lib/jss/api_object/extension_attribute/mobile_device_extension_attribute.rb', line 113 def create if @input_type == 'LDAP Attribute Mapping' raise MissingDataError, "No attribute_mapping defined for 'LDAP Attribute Mapping' input_type." unless @attribute_mapping end super end |
#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 JSS::DB_CNX.connect
171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 |
# File 'lib/jss/api_object/extension_attribute/mobile_device_extension_attribute.rb', line 171 def history(mobiledevice) raise JSS::NoSuchItemError, "EA Not In JSS! Use #create to create this #{RSRC_OBJECT_KEY}." unless @in_jss raise JSS::InvalidConnectionError, "Database connection required for 'history' query." unless JSS::DB_CNX.connected? mobile_device_id = case mobiledevice when *JSS::MobileDevice.all_ids(api: @api) mobiledevice when *JSS::MobileDevice.all_names(api: @api) JSS::MobileDevice.map_all_ids_to(:name, api: @api).invert[mobiledevice] end # case raise JSS::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 = JSS::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 JSS.parse_datetime(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
132 133 134 135 136 137 138 139 140 141 142 |
# File 'lib/jss/api_object/extension_attribute/mobile_device_extension_attribute.rb', line 132 def input_type= (new_val) raise JSS::InvalidDataError, "Mobile Device Extension Attribute input_type cannot be 'script'" if new_val == 'script' super if @input_type == 'LDAP Attribute Mapping' @popup_choices = nil else @attribute_mapping = nil end end |
#web_display=(new_val) ⇒ Object
123 124 125 126 |
# File 'lib/jss/api_object/extension_attribute/mobile_device_extension_attribute.rb', line 123 def web_display= (new_val) raise JSS::InvalidDataError, "web_display cannot be 'Operating System' for Mobile Device Extension Attributes." if new_val == 'Operating System' super end |