class Jamf::Printer

Printer object inside JSS

@see Jamf::APIObject

Constants

CATEGORY_DATA_TYPE

How is the category stored in the API data?

CATEGORY_SUBSET

Where is the Category in the API JSON?

RSRC_BASE

The base for REST resources of this class

RSRC_LIST_KEY

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

RSRC_OBJECT_KEY

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

Attributes

CUPS_name[R]

@return [String] The CUPs name to be used

info[R]

@return [String] Information for this specific printer.

location[R]

@return [String] The physical location of the printer.

make_default[R]

@return [Boolean] Make this printer as the default printer upon installation.

model[R]

@return [String] The specific model of printer.

notes[R]

@return [String] Notes for this specific printer.

os_requirements[R]

@return [String] The OS version requirements seperated by commas

ppd[R]

@return [String] The PPD file name.

ppd_contents[R]

@return [String] The contents of the PPD file.

ppd_path[R]

@return [String] The path the PPD file will be installed.

shared[R]

@return [Boolean] Is this printer to be shared?

uri[R]

@return [String] The URI path for the specific printer.

use_generic[R]

@return [Boolean] Use a generic PPD.

Public Class Methods

new(**args) click to toggle source
Calls superclass method Jamf::APIObject::new
    # File lib/jamf/api/classic/api_objects/printer.rb
 89 def initialize(**args)
 90     super
 91 
 92     if self.in_jss?
 93 
 94         @uri = @init_data[:uri]
 95         @CUPS_name = @init_data[:CUPS_name]
 96         @location = @init_data[:location]
 97         @model = @init_data[:model]
 98         @shared = @init_data[:shared]
 99         @info = @init_data[:info]
100         @notes = @init_data[:notes]
101         @make_default = @init_data[:make_default]
102         @use_generic = @init_data[:use_generic]
103         @ppd = @init_data[:ppd]
104         @ppd_contents = @init_data[:ppd_contents]
105         @ppd_path = @init_data[:ppd_path]
106         @os_requirements = @init_data[:os_requirements]
107     else
108 
109         raise Jamf::MissingDataError, "CUPS_name must be provided." unless !@init_data[:CUPS_name].nil?
110         raise Jamf::MissingDataError, "uri must be provided." unless !@init_data[:uri].nil?
111 
112         raise Jamf::InvalidDataError, "uri must be a String." unless @init_data[:uri].is_a?(String) || @init_data[:uri].nil?
113         raise Jamf::InvalidDataError, "CUPS_name must be a String." unless @init_data[:CUPS_name].is_a?(String)
114         raise Jamf::InvalidDataError, "location must be a String." unless @init_data[:location].is_a?(String) || @init_data[:location].nil?
115         raise Jamf::InvalidDataError, "model must be a String." unless @init_data[:model].is_a?(String) || @init_data[:model].nil?
116         raise Jamf::InvalidDataError, "info must be a String." unless @init_data[:info].is_a?(String) || @init_data[:info].nil?
117         raise Jamf::InvalidDataError, "notes must be a String." unless @init_data[:notes].is_a?(String) || @init_data[:notes].nil?
118         raise Jamf::InvalidDataError, "ppd must be a String." unless @init_data[:ppd].is_a?(String) || @init_data[:ppd].nil?
119         raise Jamf::InvalidDataError, "ppd_contents must be a String." unless @init_data[:ppd_contents].is_a?(String) || @init_data[:ppd_contents].nil?
120         raise Jamf::InvalidDataError, "ppd_path must be a String." unless @init_data[:ppd_path].is_a?(String) || @init_data[:ppd_path].nil?
121         raise Jamf::InvalidDataError, "os_requirements must be a String." unless @init_data[:os_requirements].is_a?(String) || @init_data[:os_requirements].nil?
122         raise Jamf::InvalidDataError, "shared must be a String." unless (@init_data[:shared].is_a?(TrueClass) || @init_data[:shared].is_a?(FalseClass)) || @init_data[:shared].nil?
123         raise Jamf::InvalidDataError, "make_default must be a String." unless (@init_data[:make_default].is_a?(TrueClass) || @init_data[:make_default].is_a?(FalseClass)) || @init_data[:make_default].nil?
124         raise Jamf::InvalidDataError, "use_generic must be a String." unless (@init_data[:use_generic].is_a?(TrueClass) || @init_data[:use_generic].is_a?(FalseClass)) || @init_data[:use_generic].nil?
125 
126         @uri = @init_data[:uri]
127         @CUPS_name = @init_data[:CUPS_name]
128         @location = @init_data[:location]
129         @model = @init_data[:model]
130         @shared = @init_data[:shared]
131         @info = @init_data[:info]
132         @notes = @init_data[:notes]
133         @make_default = @init_data[:make_default]
134         @use_generic = @init_data[:use_generic]
135         @ppd = @init_data[:ppd]
136         @ppd_contents = @init_data[:ppd_contents]
137         @ppd_path = @init_data[:ppd_path]
138         @os_requirements = @init_data[:os_requirements]
139     end
140 end

Public Instance Methods

CUPS_name=(newvalue) click to toggle source

The CUPs name to be used

@author Tyler Morgan

@param newvalue [String]

@raise [Jamf::InvalidDataError] If newvalue is not a String

@return [void]

    # File lib/jamf/api/classic/api_objects/printer.rb
175 def CUPS_name=(newvalue)
176 
177     raise Jamf::InvalidDataError, "CUPS_name must be a string." unless newvalue.is_a? String
178 
179     @CUPS_name = newvalue
180 
181     @need_to_update = true
182 end
info=(newvalue) click to toggle source

Information for this specific printer.

@author Tyler Morgan

@param newvalue [String]

@raise [Jamf::InvalidDataError] If newvalue is not a String

@return [void]

    # File lib/jamf/api/classic/api_objects/printer.rb
251 def info=(newvalue)
252 
253     raise Jamf::InvalidDataError, "info must be a string." unless newvalue.is_a? String
254 
255     @info = newvalue
256 
257     @need_to_update = true
258 end
location=(newvalue) click to toggle source

The physical location of the printer.

@author Tyler Morgan

@param newvalue [String]

@raise [Jamf::InvalidDataError] If newvalue is not a String

@return [void]

    # File lib/jamf/api/classic/api_objects/printer.rb
194 def location=(newvalue)
195 
196     raise Jamf::InvalidDataError, "location must be a string." unless newvalue.is_a? String
197 
198     @location = newvalue
199 
200     @need_to_update = true
201 end
make_default=(newvalue) click to toggle source

Make this printer as the default printer upon installation.

@author Tyler Morgan

@param newvalue [Boolean]

@raise [Jamf::InvalidDataError] If newvalue is not a Boolean

@return [void]

    # File lib/jamf/api/classic/api_objects/printer.rb
289 def make_default=(newvalue)
290 
291     raise Jamf::InvalidDataError, "make_default must be a string." unless newvalue.is_a?(TrueClass) || newvalue.is_a?(FalseClass)
292 
293     @make_default = newvalue
294 
295     @need_to_update = true
296 end
model=(newvalue) click to toggle source

The specific model of printer.

@author Tyler Morgan

@param newvalue [String]

@raise [Jamf::InvalidDataError] If newvalue is not a String

@return [void]

    # File lib/jamf/api/classic/api_objects/printer.rb
213 def model=(newvalue)
214 
215     raise Jamf::InvalidDataError, "model must be a string." unless newvalue.is_a? String
216 
217     @model = newvalue
218 
219     @need_to_update = true
220 end
notes=(newvalue) click to toggle source

Notes for this specific printer.

@author Tyler Morgan

@param newvalue [String]

@raise [Jamf::InvalidDataError] If newvalue is not a String

@return [void]

    # File lib/jamf/api/classic/api_objects/printer.rb
270 def notes=(newvalue)
271 
272     raise Jamf::InvalidDataError, "notes must be a string." unless newvalue.is_a? String
273 
274     @notes = newvalue
275 
276     @need_to_update = true
277 end
os_requirements=(newvalue) click to toggle source

The OS version requirements seperated by commas

@author Tyler Morgan

@param newvalue [String, Float, Array, Array]

@raise [Jamf::InvalidDataError] If newvalue is not a String, Float, Array containing Strings, or Array containing Floats.

@example Limit Printer object to only High Sierra devices and Mojave 10.14.5 OS versions

printer.os_requirements = "10.13.x, 10.14.5"

@return [void]

    # File lib/jamf/api/classic/api_objects/printer.rb
387 def os_requirements=(newvalue)
388 
389     if newvalue.is_a? Array
390         # Parse Array
391         raise Jamf::InvalidDataError, "If setting os_requirements with an array, it must contain strings or floats." unless newvalue[0].is_a?(String) || newvalue[0].is_a?(Float)
392         newvalue = newvalue.map { |x| x.to_s }.join(',')
393     else
394         raise Jamf::InvalidDataError, "os_requirements must either be a string, float, or an array containing strings or floats." unless (newvalue.is_a?(String) || newvalue.is_a?(Float)) && !newvalue.nil?
395     end
396 
397     @os_requirements = newvalue
398 
399     @need_to_update = true
400 end
ppd=(newvalue) click to toggle source

The PPD file name.

@author Tyler Morgan

@param newvalue [String]

@raise [Jamf::InvalidDataError] If newvalue is not a String

@return [void]

    # File lib/jamf/api/classic/api_objects/printer.rb
327 def ppd=(newvalue)
328 
329     raise Jamf::InvalidDataError, "ppd must be a string." unless newvalue.is_a? String
330 
331     @ppd = newvalue
332 
333     @need_to_update = true
334 end
ppd_contents=(newvalue) click to toggle source

The contents of the PPD file.

@author Tyler Morgan

@param newvalue [String]

@raise [Jamf::InvalidDataError] If newvalue is not a String

@return [void]

    # File lib/jamf/api/classic/api_objects/printer.rb
346 def ppd_contents=(newvalue)
347 
348     raise Jamf::InvalidDataError, "ppd_contents must be a string." unless newvalue.is_a? String
349 
350     @ppd_contents = newvalue
351 
352     @need_to_update = true
353 end
ppd_path=(newvalue) click to toggle source

The path the PPD file will be installed.

@author Tyler Morgan

@param newvalue [String]

@raise [Jamf::InvalidDataError] If newvalue is not a String

@return [void]

    # File lib/jamf/api/classic/api_objects/printer.rb
365 def ppd_path=(newvalue)
366 
367     raise Jamf::InvalidDataError, "ppd_path must be a string." unless newvalue.is_a? String
368 
369     @ppd_path = newvalue
370 
371     @need_to_update = true
372 end
pretty_print_instance_variables() click to toggle source

Remove the various large data from the instance_variables used to create pretty-print (pp) output.

@return [Array] the desired instance_variables

    # File lib/jamf/api/classic/api_objects/printer.rb
408 def pretty_print_instance_variables
409   vars = super
410   vars.delete :@ppd_contents
411   vars
412 end
shared=(newvalue) click to toggle source

Is this printer to be shared?

@author Tyler Morgan

@param newvalue [Boolean]

@raise [Jamf::InvalidDataError] If newvalue is not a Boolean

@return [void]

    # File lib/jamf/api/classic/api_objects/printer.rb
232 def shared=(newvalue)
233 
234     raise Jamf::InvalidDataError, "shared must be a string." unless newvalue.is_a?(TrueClass) || newvalue.is_a?(FalseClass)
235 
236     @shared = newvalue
237 
238     @need_to_update = true
239 end
uri=(newvalue) click to toggle source

The URI path for the specific printer.

@author Tyler Morgan

@param newvalue [String]

@raise [Jamf::InvalidDataError] If newvalue is not a String

@return [void]

    # File lib/jamf/api/classic/api_objects/printer.rb
156 def uri=(newvalue)
157 
158     raise Jamf::InvalidDataError, "URI must be a string." unless newvalue.is_a? String
159 
160     @uri = newvalue
161 
162     @need_to_update = true
163 end
use_generic=(newvalue) click to toggle source

Use a generic PPD.

@author Tyler Morgan

@param newvalue [Boolean]

@raise [Jamf::InvalidDataError] If newvalue is not a Boolean

@return [void]

    # File lib/jamf/api/classic/api_objects/printer.rb
308 def use_generic=(newvalue)
309 
310     raise Jamf::InvalidDataError, "use_generic must be a string." unless newvalue.is_a?(TrueClass) || newvalue.is_a?(FalseClass)
311 
312     @use_generic = newvalue
313 
314     @need_to_update = true
315 end

Private Instance Methods

rest_xml() click to toggle source

Return the xml for creating or updating this script in the JSS

    # File lib/jamf/api/classic/api_objects/printer.rb
421 def rest_xml
422     doc = REXML::Document.new
423     printer = doc.add_element 'printer'
424 
425     printer.add_element('id').text = @id
426     printer.add_element('name').text = @name
427     printer.add_element('uri').text = @uri
428     printer.add_element('CUPS_name').text = @CUPS_name
429     printer.add_element('location').text = @location
430     printer.add_element('model').text = @model
431     printer.add_element('shared').text = @shared
432     printer.add_element('info').text = @info
433     printer.add_element('notes').text = @notes
434     printer.add_element('make_default').text = @make_default
435     printer.add_element('use_generic').text = @use_generic
436     printer.add_element('ppd').text = @ppd
437     printer.add_element('ppd_contents').text = @ppd_contents
438     printer.add_element('ppd_path').text = @ppd_path
439     printer.add_element('os_requirements').text = @os_requirements
440     add_category_to_xml(doc)
441 
442     doc.to_s
443 
444 end