Class: Jamf::Peripheral

Inherits:
APIObject show all
Includes:
Creatable, Locatable, Purchasable, Sitable, Updatable, Uploadable
Defined in:
lib/jamf/api/classic/api_objects/peripheral.rb

Overview

A peripheral in the JSS

See Also:

Constant Summary collapse

RSRC_BASE =

The base for REST resources of this class

'peripherals'
RSRC_LIST_KEY =

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

:peripherals
RSRC_OBJECT_KEY =

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

:peripheral
OBJECT_HISTORY_OBJECT_TYPE =

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

8
SITE_SUBSET =

Where is the Site data in the API JSON?

:general

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(**args) ⇒ Peripheral

Returns a new instance of Peripheral.

See Also:



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
124
125
126
127
128
129
130
# File 'lib/jamf/api/classic/api_objects/peripheral.rb', line 98

def initialize(**args)
  ### periphs don't really have names, and the JSS module list method for
  ### periphs gives the computer_id as the name, so give it a temp
  ### name of "-1", which shouldn't ever exist in the JSS
  args[:name] ||= '-1'

  super

  if args[:id] == :new
    raise Jamf::InvalidDataError, 'New Peripherals must have a :type, which must be one of those defined in the JSS.' unless args[:type]

    @type = args[:type]
    raise Jamf::InvalidDataError, "No peripheral type '#{@type}' in the JSS" unless Jamf::PeripheralType.all_names(:refresh, cnx: @cnx).include? @type

    @fields = {}
    @rest_rsrc = 'peripherals/id/-1'
    @site = 'None'
    return
  end

  @type = @init_data[:general][:type]
  @site = Jamf::APIObject.get_name(@init_data[:general][:site])
  @bar_code_1 = @init_data[:general][:bar_code_1]
  @bar_code_2 = @init_data[:general][:bar_code_2]
  @computer_id = @init_data[:general][:computer_id]

  ### fill in the fields
  @fields = {}
  @init_data[:general][:fields].each { |f| @fields[f[:name]] = f[:value] }

  ### get the field defs for this PeriphType, omitting the leading nil
  @field_defs ||= Jamf::PeripheralType.fetch(name: @type).fields.compact
end

Instance Attribute Details

#applecare_idString Originally defined in module Purchasable

#bar_code_1String Also known as: barcode_1, barcode1



83
84
85
# File 'lib/jamf/api/classic/api_objects/peripheral.rb', line 83

def bar_code_1
  @bar_code_1
end

#bar_code_2String Also known as: barcode_2, barcode2



86
87
88
# File 'lib/jamf/api/classic/api_objects/peripheral.rb', line 86

def bar_code_2
  @bar_code_2
end

#buildingString Originally defined in module Locatable

#computer_idInteger (readonly)



89
90
91
# File 'lib/jamf/api/classic/api_objects/peripheral.rb', line 89

def computer_id
  @computer_id
end

#departmentString Originally defined in module Locatable

#email_addressString Originally defined in module Locatable

#fieldsHash (readonly)



156
157
158
# File 'lib/jamf/api/classic/api_objects/peripheral.rb', line 156

def fields
  @fields
end

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

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

#lease_expiresTime Originally defined in module Purchasable

#life_expectancyInteger Originally defined in module Purchasable

#need_to_updateBoolean (readonly) Originally defined in module Updatable

#phoneString Originally defined in module Locatable

#po_dateTime Originally defined in module Purchasable

#po_numberString Originally defined in module Purchasable

#positionString Originally defined in module Locatable

#purchase_priceFloat Originally defined in module Purchasable

#purchasing_accountString Originally defined in module Purchasable

#purchasing_contactString Originally defined in module Purchasable

#real_nameString Originally defined in module Locatable

#roomString Originally defined in module Locatable

#typeString (readonly)



80
81
82
# File 'lib/jamf/api/classic/api_objects/peripheral.rb', line 80

def type
  @type
end

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

#vendorString Originally defined in module Purchasable

#warranty_expiresTime Originally defined in module Purchasable

Instance Method Details

#associate(computer) ⇒ void Also known as: assign_to

This method returns an undefined value.

Associate this peripheral with a computer.



204
205
206
207
208
209
210
211
212
213
214
215
# File 'lib/jamf/api/classic/api_objects/peripheral.rb', line 204

def associate(computer)
  if computer =~ /^d+$/
    raise Jamf::NoSuchItemError, "No computer in the JSS with id #{computer}" unless Jamf::Computer.all_ids(cnx: @cnx).include? computer

    @computer_id = computer
  else
    raise Jamf::NoSuchItemError, "No computer in the JSS with name #{computer}" unless Jamf::Computer.all_names(cnx: @cnx).include? computer

    @computer_id = Jamf::Computer.map_all_ids_to(:name, cnx: @cnx).invert[computer]
  end
  @need_to_update = true
end

#clear_locationvoid Originally defined in module Locatable

This method returns an undefined value.

Clear all location data

#clone(new_name, api: nil, cnx: nil) ⇒ APIObject Originally defined in module Creatable

make a clone of this API object, with a new name. The class must be creatable

#createObject

reset the restrsrc after creation

See Also:

  • Creatable#create


137
138
139
140
141
# File 'lib/jamf/api/classic/api_objects/peripheral.rb', line 137

def create
  super
  @rest_rsrc = "peripherals/id/#{@id}"
  @id
end

#disassociatevoid Also known as: unassign

This method returns an undefined value.

Disassociate this peripheral from any computer.

This seems to have no effect in the JSS, the computer/user/location data always shows the most recent.



225
226
227
228
# File 'lib/jamf/api/classic/api_objects/peripheral.rb', line 225

def disassociate
  @computer_id = nil
  @need_to_update = true
end

#has_location?Boolean Originally defined in module Locatable

#has_purchasing?Boolean Originally defined in module Purchasable

#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.

#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

#name=(_newname) ⇒ Object

periphs don’t have names



146
147
148
# File 'lib/jamf/api/classic/api_objects/peripheral.rb', line 146

def name=(_newname)
  raise Jamf::UnsupportedError, "Peripherals don't have names."
end

#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

#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.

#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.

#set_field(field, value) ⇒ void

This method returns an undefined value.

Set the value of a field. It will be checked to ensure validity.



167
168
169
170
171
# File 'lib/jamf/api/classic/api_objects/peripheral.rb', line 167

def set_field(field, value)
  check_field(field, value)
  @fields[field] = value
  @need_to_update = true
end

#site=(new_site) ⇒ void Originally defined in module Sitable

This method returns an undefined value.

Change the site of this object. Any of the NON_SITES values will unset the site

#site_assigned?Boolean Originally defined in module Sitable

Does this object have a site assigned?

#site_idInteger Originally defined in module Sitable

The id of the site for this object.

#site_nameString Also known as: site Originally defined in module Sitable

The name of the site for this object. For backward compatibility, this is aliased to just ‘site’

#site_objectJamf::Site Originally defined in module Sitable

The Jamf::Site instance for this object’s site

#unset_sitevoid Originally defined in module Sitable

This method returns an undefined value.

Set the site to nothing

#upload(type, local_file, force_ipa_upload: false) ⇒ Boolean Originally defined in module Uploadable

instance method wrapper for class method

Upload a file to the JSS to be stored with this instance of the class mixing in the Uploadable module