ruby-jss 0.9.2 → 0.10.0a1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of ruby-jss might be problematic. Click here for more details.

Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +13 -1
  3. data/README.md +7 -7
  4. data/bin/cgrouper +6 -6
  5. data/bin/netseg-update +1 -1
  6. data/lib/jss.rb +1 -0
  7. data/lib/jss/api_connection.rb +428 -44
  8. data/lib/jss/api_object.rb +119 -68
  9. data/lib/jss/api_object/account.rb +12 -12
  10. data/lib/jss/api_object/advanced_search.rb +12 -12
  11. data/lib/jss/api_object/categorizable.rb +4 -4
  12. data/lib/jss/api_object/category.rb +2 -2
  13. data/lib/jss/api_object/computer.rb +111 -58
  14. data/lib/jss/api_object/computer_invitation.rb +2 -2
  15. data/lib/jss/api_object/creatable.rb +19 -8
  16. data/lib/jss/api_object/criteriable/criteria.rb +8 -8
  17. data/lib/jss/api_object/distribution_point.rb +14 -48
  18. data/lib/jss/api_object/extension_attribute.rb +14 -11
  19. data/lib/jss/api_object/extension_attribute/computer_extension_attribute.rb +18 -18
  20. data/lib/jss/api_object/group.rb +7 -7
  21. data/lib/jss/api_object/ldap_server.rb +51 -60
  22. data/lib/jss/api_object/locatable.rb +2 -2
  23. data/lib/jss/api_object/matchable.rb +8 -9
  24. data/lib/jss/api_object/mobile_device.rb +61 -59
  25. data/lib/jss/api_object/mobile_device_application.rb +3 -3
  26. data/lib/jss/api_object/network_segment.rb +24 -19
  27. data/lib/jss/api_object/package.rb +6 -6
  28. data/lib/jss/api_object/peripheral.rb +5 -5
  29. data/lib/jss/api_object/policy.rb +5 -5
  30. data/lib/jss/api_object/restricted_software.rb +4 -4
  31. data/lib/jss/api_object/scopable/scope.rb +3 -3
  32. data/lib/jss/api_object/script.rb +1 -1
  33. data/lib/jss/api_object/self_servable.rb +3 -3
  34. data/lib/jss/api_object/self_servable/icon.rb +7 -2
  35. data/lib/jss/api_object/updatable.rb +2 -2
  36. data/lib/jss/api_object/uploadable.rb +1 -1
  37. data/lib/jss/api_object/user.rb +2 -2
  38. data/lib/jss/composer.rb +37 -10
  39. data/lib/jss/ruby_extensions/string.rb +51 -42
  40. data/lib/jss/server.rb +27 -6
  41. data/lib/jss/utility.rb +44 -0
  42. data/lib/jss/validate.rb +85 -0
  43. data/lib/jss/version.rb +1 -1
  44. metadata +5 -4
@@ -142,22 +142,29 @@ module JSS
142
142
  # class methods for accessing those other values as mapped Arrays,
143
143
  # e.g. JSS::Computer.all_udids
144
144
  #
145
- # The results of the first query for each subclass is stored in JSS.api.object_list_cache
146
- # and returned at every future call, so as to not requery the server every time.
145
+ # The results of the first query for each subclass is stored in the .object_list_cache
146
+ # of the given JSS::APIConnection and returned at every future call, so as
147
+ # to not requery the server every time.
147
148
  #
148
149
  # To force requerying to get updated data, provided a non-false argument.
149
150
  # I usually use :refresh, so that it's obvious what I'm doing, but true, 1,
150
151
  # or anything besides false or nil will work.
151
152
  #
153
+ # To query an APIConnection other than the currently active one,
154
+ # provide one via the api: named parameter.
155
+ #
152
156
  # @param refresh[Boolean] should the data be re-queried from the API?
153
157
  #
158
+ # @param api[JSS::APIConnection] an API connection to use for the query.
159
+ # Defaults to the corrently active API. See {JSS::APIConnection}
160
+ #
154
161
  # @return [Array<Hash{:name=>String, :id=> Integer}>]
155
162
  #
156
- def self.all(refresh = false)
163
+ def self.all(refresh = false, api: JSS.api)
157
164
  raise JSS::UnsupportedError, '.all can only be called on subclasses of JSS::APIObject' if self == JSS::APIObject
158
- JSS.api.object_list_cache[self::RSRC_LIST_KEY] = nil if refresh
159
- return JSS.api.object_list_cache[self::RSRC_LIST_KEY] if JSS.api.object_list_cache[self::RSRC_LIST_KEY]
160
- JSS.api.object_list_cache[self::RSRC_LIST_KEY] = JSS.api.get_rsrc(self::RSRC_BASE)[self::RSRC_LIST_KEY]
165
+ api.object_list_cache[self::RSRC_LIST_KEY] = nil if refresh
166
+ return api.object_list_cache[self::RSRC_LIST_KEY] if api.object_list_cache[self::RSRC_LIST_KEY]
167
+ api.object_list_cache[self::RSRC_LIST_KEY] = api.get_rsrc(self::RSRC_BASE)[self::RSRC_LIST_KEY]
161
168
  end
162
169
 
163
170
  # Returns an Array of the JSS id numbers of all the members
@@ -168,10 +175,13 @@ module JSS
168
175
  #
169
176
  # @param refresh[Boolean] should the data be re-queried from the API?
170
177
  #
178
+ # @param api[JSS::APIConnection] an API connection to use for the query.
179
+ # Defaults to the corrently active API. See {JSS::APIConnection}
180
+ #
171
181
  # @return [Array<Integer>] the ids of all it1ems of this subclass in the JSS
172
182
  #
173
- def self.all_ids(refresh = false)
174
- all(refresh).map { |i| i[:id] }
183
+ def self.all_ids(refresh = false, api: JSS.api)
184
+ all(refresh, api: api).map { |i| i[:id] }
175
185
  end
176
186
 
177
187
  # Returns an Array of the JSS names of all the members
@@ -182,10 +192,13 @@ module JSS
182
192
  #
183
193
  # @param refresh[Boolean] should the data be re-queried from the API?
184
194
  #
195
+ # @param api[JSS::APIConnection] an API connection to use for the query.
196
+ # Defaults to the corrently active API. See {JSS::APIConnection}
197
+ #
185
198
  # @return [Array<String>] the names of all item of this subclass in the JSS
186
199
  #
187
- def self.all_names(refresh = false)
188
- all(refresh).map { |i| i[:name] }
200
+ def self.all_names(refresh = false, api: JSS.api)
201
+ all(refresh, api: api).map { |i| i[:name] }
189
202
  end
190
203
 
191
204
  # Return a hash of all objects of this subclass
@@ -212,11 +225,14 @@ module JSS
212
225
  #
213
226
  # @param refresh[Boolean] should the data re-queried from the API?
214
227
  #
228
+ # @param api[JSS::APIConnection] an API connection to use for the query.
229
+ # Defaults to the corrently active API. See {JSS::APIConnection}
230
+ #
215
231
  # @return [Hash{Integer => Oject}] the associated ids and data
216
232
  #
217
- def self.map_all_ids_to(other_key, refresh = false)
233
+ def self.map_all_ids_to(other_key, refresh = false, api: JSS.api)
218
234
  h = {}
219
- all(refresh).each { |i| h[i[:id]] = i[other_key] }
235
+ all(refresh, api: api).each { |i| h[i[:id]] = i[other_key] }
220
236
  h
221
237
  end
222
238
 
@@ -229,55 +245,56 @@ module JSS
229
245
  #
230
246
  # @param refresh[Boolean] should the data re-queried from the API?
231
247
  #
248
+ # @param api[JSS::APIConnection] an API connection to use for the query.
249
+ # Defaults to the corrently active API. See {JSS::APIConnection}
250
+ #
232
251
  # @return [Hash{Integer => Object}] the objects requested
233
- def self.all_objects(refresh = false)
252
+ #
253
+ def self.all_objects(refresh = false, api: JSS.api)
234
254
  objects_key = "#{self::RSRC_LIST_KEY}_objects".to_sym
235
- JSS.api.object_list_cache[objects_key] = nil if refresh
236
- return JSS.api.object_list_cache[objects_key] if JSS.api.object_list_cache[objects_key]
237
- JSS.api.object_list_cache[objects_key] = all(refresh).map { |o| new id: o[:id] }
255
+ return api.object_list_cache[objects_key] unless refresh || api.object_list_cache[objects_key].nil?
256
+ api.object_list_cache[objects_key] = all(refresh, api: api).map { |o| fetch id: o[:id], api: api }
238
257
  end
239
258
 
240
259
  # Return true or false if an object of this subclass
241
- # with the given name or id exists on the server
260
+ # with the given Identifier exists on the server
242
261
  #
243
- # @param identfier [String,Integer] The name or id of object to check for
262
+ # @param identfier [String,Integer] An identifier for an object, a value for
263
+ # one of the available lookup_keys
244
264
  #
245
265
  # @param refresh [Boolean] Should the data be re-read from the server
246
266
  #
247
- # @return [Boolean] does an object with the given name or id exist?
267
+ # @param api[JSS::APIConnection] an API connection to use for the query.
268
+ # Defaults to the corrently active API. See {JSS::APIConnection}
248
269
  #
249
- def self.exist?(identfier, refresh = false)
250
- case identfier
251
- when Integer
252
- all_ids(refresh).include? identfier
253
- when String
254
- all_names(refresh).include? identfier
255
- else
256
- raise ArgumentError, 'Identifier must be a name (String) or id (Integer)'
257
- end
270
+ # @return [Boolean] does an object with the given identifier exist?
271
+ #
272
+ def self.exist?(identifier, refresh = false, api: JSS.api)
273
+ !valid_id(identifier, refresh, api: api).nil?
258
274
  end
259
275
 
260
276
  # Return an id or nil if an object of this subclass
261
277
  # with the given name or id exists on the server
262
278
  #
263
- # Subclasses may want to override this method to support more
264
- # identifiers than name and id.
265
- #
266
- # @param identfier [String,Integer] The name or id of object to check for
279
+ # @param identfier [String,Integer] An identifier for an object, a value for
280
+ # one of the available lookup_keys
267
281
  #
268
282
  # @param refresh [Boolean] Should the data be re-read from the server
269
283
  #
284
+ # @param api[JSS::APIConnection] an API connection to use for the query.
285
+ # Defaults to the corrently active API. See {JSS::APIConnection}
286
+ #
270
287
  # @return [Integer, nil] the id of the matching object, or nil if it doesn't exist
271
288
  #
272
- def self.valid_id(identfier, refresh = false)
273
- case identfier
274
- when Integer
275
- return identfier if all_ids(refresh).include? identfier
276
- when String
277
- return map_all_ids_to(:name).invert[identfier] if all_names(refresh).include? identfier
278
- else
279
- raise ArgumentError, 'Identifier must be a name (String) or id (Integer)'
280
- end
289
+ def self.valid_id(identifier, refresh = false, api: JSS.api)
290
+ return identifier if all_ids(refresh, api: api).include? identifier
291
+ id = nil
292
+ all_lookup_keys.keys.each do |key|
293
+ next if key == :id
294
+ id = map_all_ids_to(key).invert[identifier]
295
+ return id if id
296
+ end # do key
297
+ id
281
298
  end
282
299
 
283
300
  # Convert an Array of Hashes of API object data to a
@@ -377,26 +394,32 @@ module JSS
377
394
  #
378
395
  def self.rsrc_keys
379
396
  hash = {}
380
- all_keys = if defined?(self::OTHER_LOOKUP_KEYS)
381
- DEFAULT_LOOKUP_KEYS.merge self::OTHER_LOOKUP_KEYS
382
- else
383
- DEFAULT_LOOKUP_KEYS
384
- end
385
- all_keys.each { |key, deets| hash[key] = deets[:rsrc_key]}
397
+ all_lookup_keys.each { |key, deets| hash[key] = deets[:rsrc_key] }
386
398
  hash
387
399
  end
388
400
 
401
+ # the available list methods for an APIObject sublcass
402
+ #
403
+ # @return [Array<Symbol>] The list methods (e.g. .all_serial_numbers) for
404
+ # this APIObject subclass
405
+ #
406
+
407
+ # The combined DEFAULT_LOOKUP_KEYS and OTHER_LOOKUP_KEYS
408
+ # (which may be defined in subclasses)
409
+ #
410
+ # @return [Hash] See DEFAULT_LOOKUP_KEYS constant
411
+ #
412
+ def self.all_lookup_keys
413
+ return DEFAULT_LOOKUP_KEYS.merge(self::OTHER_LOOKUP_KEYS) if defined? self::OTHER_LOOKUP_KEYS
414
+ DEFAULT_LOOKUP_KEYS
415
+ end
416
+
389
417
  # @return [Hash] the available lookup keys mapped to the appropriate
390
418
  # list class method (e.g. id: :all_ids )
391
419
  #
392
420
  def self.lookup_key_list_methods
393
421
  hash = {}
394
- all_keys = if defined?(self::OTHER_LOOKUP_KEYS)
395
- DEFAULT_LOOKUP_KEYS.merge self::OTHER_LOOKUP_KEYS
396
- else
397
- DEFAULT_LOOKUP_KEYS
398
- end
399
- all_keys.each { |key, deets| hash[key] = deets[:list]}
422
+ all_lookup_keys.each { |key, deets| hash[key] = deets[:list] }
400
423
  hash
401
424
  end
402
425
 
@@ -414,13 +437,14 @@ module JSS
414
437
  #
415
438
  # @return [APIObject] The ruby-instance of a JSS object
416
439
  #
417
- def self.fetch(arg)
440
+ def self.fetch(arg, api: JSS.api)
418
441
  raise JSS::UnsupportedError, 'JSS::APIObject cannot be instantiated' if self.class == JSS::APIObject
419
442
 
420
443
  # if given a hash (or a colletion of named params)
421
444
  # pass to .new
422
445
  if arg.is_a? Hash
423
- raise ArgumentError, 'Use .create to create new JSS objects' if arg[:id] == :new
446
+ raise ArgumentError, 'Use .make to create new JSS objects' if arg[:id] == :new
447
+ api = arg[:api] if arg[:api]
424
448
  return new arg
425
449
  end
426
450
 
@@ -428,7 +452,7 @@ module JSS
428
452
  # and if it's result includes the desired value,
429
453
  # the pass they key and arg to .new
430
454
  lookup_key_list_methods.each do |key, method_name|
431
- return new({key => arg}) if self.send(method_name).include? arg
455
+ return new ({ key => arg, :api => api }) if method_name && send(method_name).include?(arg)
432
456
  end # each key
433
457
 
434
458
  # if we're here, we couldn't find a matching object
@@ -451,7 +475,8 @@ module JSS
451
475
  #
452
476
  # @return [APIObject] The un-created ruby-instance of a JSS object
453
477
  #
454
- def self.make(args = {})
478
+ def self.make(**args)
479
+ args[:api] ||= JSS.api
455
480
  raise JSS::UnsupportedError, 'JSS::APIObject cannot be instantiated' if self.class == JSS::APIObject
456
481
  raise ArgumentError, "Use '#{self.class}.fetch id: xx' to retrieve existing JSS objects" if args[:id]
457
482
  args[:id] = :new
@@ -464,7 +489,7 @@ module JSS
464
489
  # These Symbols are added to VALID_DATA_KEYS for performing the
465
490
  # :data validity test described above.
466
491
  #
467
- REQUIRED_DATA_KEYS = [:id, :name].freeze
492
+ REQUIRED_DATA_KEYS = %i[id name].freeze
468
493
 
469
494
  # All API objects have an id and a name. As such By these keys are available
470
495
  # for object lookups.
@@ -473,6 +498,7 @@ module JSS
473
498
  # which has the same format, described here:
474
499
  #
475
500
  # The merged Hashes DEFAULT_LOOKUP_KEYS and OTHER_LOOKUP_KEYS
501
+ # (as provided by the .all_lookup_keys Class method)
476
502
  # define what unique identifiers can be passed as parameters to the
477
503
  # fetch method for retrieving an object from the API.
478
504
  # They also define the class methods that return a list (Array) of all such
@@ -494,13 +520,21 @@ module JSS
494
520
  # }
495
521
  #
496
522
  DEFAULT_LOOKUP_KEYS = {
497
- id: {rsrc_key: :id, list: :all_ids},
498
- name: {rsrc_key: :name, list: :all_names}
523
+ id: { rsrc_key: :id, list: :all_ids },
524
+ name: { rsrc_key: :name, list: :all_names }
499
525
  }.freeze
500
526
 
501
527
  # Attributes
502
528
  #####################################
503
529
 
530
+ # @return [JSS::APIConnection] the API connection thru which we deal with
531
+ # this object.
532
+ attr_reader :api
533
+
534
+ # @return the parsed JSON data retrieved from the API when this object was
535
+ # fetched
536
+ attr_reader :init_data
537
+
504
538
  # @return [Integer] the JSS id number
505
539
  attr_reader :id
506
540
 
@@ -535,7 +569,8 @@ module JSS
535
569
  #
536
570
  #
537
571
  def initialize(args = {})
538
-
572
+ args[:api] ||= JSS.api
573
+ @api = args[:api]
539
574
  raise JSS::UnsupportedError, 'JSS::APIObject cannot be instantiated' if self.class == JSS::APIObject
540
575
 
541
576
  ####### Previously looked-up JSON data
@@ -559,7 +594,6 @@ module JSS
559
594
  @init_data = look_up_object_data(args)
560
595
  end ## end arg parsing
561
596
 
562
-
563
597
  parse_init_data
564
598
  @need_to_update = false
565
599
  end # init
@@ -652,6 +686,9 @@ module JSS
652
686
 
653
687
  # Delete this item from the JSS.
654
688
  #
689
+ # TODO: Make a class method for mass deletion
690
+ # without instantiating, then call it from this method.
691
+ #
655
692
  # Subclasses may want to redefine this method,
656
693
  # first calling super, then setting other attributes to
657
694
  # nil, false, empty, etc..
@@ -660,7 +697,7 @@ module JSS
660
697
  #
661
698
  def delete
662
699
  return nil unless @in_jss
663
- JSS.api.delete_rsrc @rest_rsrc
700
+ @api.delete_rsrc @rest_rsrc
664
701
  @rest_rsrc = "#{self.class::RSRC_BASE}/name/#{CGI.escape @name}"
665
702
  @id = nil
666
703
  @in_jss = false
@@ -676,6 +713,19 @@ module JSS
676
713
  "#{self.class}, name: #{@name}, id: #{@id}"
677
714
  end
678
715
 
716
+ # Remove the init_data and api object from
717
+ # the instance_variables used to create
718
+ # pretty-print (pp) output.
719
+ #
720
+ # @return [Array] the desired instance_variables
721
+ #
722
+ def pretty_print_instance_variables
723
+ vars = instance_variables.sort
724
+ vars.delete :@api
725
+ vars.delete :@init_data
726
+ vars
727
+ end
728
+
679
729
  # Private Instance Methods
680
730
  #####################################
681
731
  private
@@ -702,7 +752,7 @@ module JSS
702
752
  end
703
753
  # and the id must be in the jss
704
754
  raise NoSuchItemError, "No #{self.class::RSRC_OBJECT_KEY} with JSS id: #{@init_data[:id]}" unless \
705
- self.class.all_ids.include? hash_to_check[:id]
755
+ self.class.all_ids(api: @api).include? hash_to_check[:id]
706
756
  end # validate_init_data
707
757
 
708
758
  # If we're making a new object in the JSS, make sure we were given
@@ -719,9 +769,9 @@ module JSS
719
769
  def validate_init_for_creation(args)
720
770
  raise JSS::UnsupportedError, "Creating #{self.class::RSRC_LIST_KEY} isn't yet supported. Please use other Casper workflows." unless creatable?
721
771
 
722
- raise JSS::MissingDataError, "You must provide a :name to create a #{self.class::RSRC_OBJECT_KEY}." unless args[:name]
772
+ raise JSS::MissingDataError, "You must provide a :name to create a #{self.class::RSRC_OBJECT_KEY}." unless args[:name]
723
773
 
724
- raise JSS::AlreadyExistsError, "A #{self.class::RSRC_OBJECT_KEY} already exists with the name '#{args[:name]}'" if self.class.all_names.include? args[:name]
774
+ raise JSS::AlreadyExistsError, "A #{self.class::RSRC_OBJECT_KEY} already exists with the name '#{args[:name]}'" if self.class.all_names(api: @api).include? args[:name]
725
775
  end
726
776
 
727
777
  # Given initialization args, perform an API lookup for an object.
@@ -743,7 +793,7 @@ module JSS
743
793
  # e.g. User when loookup is by email.
744
794
  rsrc_object_key = args[:rsrc_object_key] ? args[:rsrc_object_key] : self.class::RSRC_OBJECT_KEY
745
795
 
746
- return JSS.api.get_rsrc(rsrc)[rsrc_object_key]
796
+ return @api.get_rsrc(rsrc)[rsrc_object_key]
747
797
  rescue RestClient::ResourceNotFound
748
798
  raise NoSuchItemError, "No #{self.class::RSRC_OBJECT_KEY} found matching: #{rsrc_key}/#{args[lookup_key]}"
749
799
  end
@@ -767,6 +817,7 @@ module JSS
767
817
 
768
818
  # many things have a :site
769
819
  # TODO: Implement a Sitable mixin module
820
+ #
770
821
  @site = JSS::APIObject.get_name(@main_subset[:site]) if @main_subset[:site]
771
822
 
772
823
  ##### Handle Mix-ins
@@ -792,7 +843,7 @@ module JSS
792
843
  def find_main_subset
793
844
  return @init_data if @init_data[:id] && @init_data[:name]
794
845
  return @init_data[:general] if @init_data[:general] && @init_data[:general][:id] && @init_data[:general][:name]
795
- @init_data.each do |key, value|
846
+ @init_data.each do |_key, value|
796
847
  next unless value.is_a? Hash
797
848
  return value if value.keys.include?(:id) && value.keys.include?(:name)
798
849
  end
@@ -72,33 +72,33 @@ module JSS
72
72
  #####################################
73
73
 
74
74
  # @return [Array<Hash>] all JSS account users
75
- def self.all_users(refresh = false)
76
- all(refresh)[:users]
75
+ def self.all_users(refresh = false, api: JSS.api)
76
+ all(refresh, api: api)[:users]
77
77
  end
78
78
 
79
79
  # @return [Array<Hash>] all JSS account user ids
80
- def self.all_user_ids(refresh = false)
81
- all(refresh)[:users].map { |i| i[:id] }
80
+ def self.all_user_ids(refresh = false, api: JSS.api)
81
+ all(refresh, api: api)[:users].map { |i| i[:id] }
82
82
  end
83
83
 
84
84
  # @return [Array<Hash>] all JSS account user names
85
- def self.all_user_names(refresh = false)
86
- all(refresh)[:users].map { |i| i[:name] }
85
+ def self.all_user_names(refresh = false, api: JSS.api)
86
+ all(refresh, api: api)[:users].map { |i| i[:name] }
87
87
  end
88
88
 
89
89
  # @return [Array<Hash>] all JSS account groups
90
- def self.all_groups(refresh = false)
91
- all(refresh)[:groups]
90
+ def self.all_groups(refresh = false, api: JSS.api)
91
+ all(refresh, api: api)[:groups]
92
92
  end
93
93
 
94
94
  # @return [Array<Hash>] all JSS account group ids
95
- def self.all_group_ids(refresh = false)
96
- all(refresh)[:groups].map { |i| i[:id] }
95
+ def self.all_group_ids(refresh = false, api: JSS.api)
96
+ all(refresh, api: api)[:groups].map { |i| i[:id] }
97
97
  end
98
98
 
99
99
  # @return [Array<Hash>] all JSS account group names
100
- def self.all_group_names(refresh = false)
101
- all(refresh)[:groups].map { |i| i[:name] }
100
+ def self.all_group_names(refresh = false, api: JSS.api)
101
+ all(refresh, api: api)[:groups].map { |i| i[:name] }
102
102
  end
103
103
 
104
104
  # Attributes
@@ -167,11 +167,11 @@ module JSS
167
167
  raise JSS::InvalidDataError, 'JSS::Criteriable::Criteria instance required' unless @criteria.is_a? JSS::Criteriable::Criteria
168
168
  raise JSS::InvalidDataError, 'display_fields must be an Array.' unless @display_fields.is_a? Array
169
169
 
170
- orig_timeout = JSS.api_connection.cnx.options[:timeout]
171
- JSS.api_connection.timeout = 1800
170
+ orig_timeout = @api.cnx.options[:timeout]
171
+ @api.timeout = 1800
172
172
  super()
173
173
  requery_search_results if get_results
174
- JSS.api_connection.timeout = orig_timeout
174
+ @api.timeout = orig_timeout
175
175
 
176
176
  @id # remember to return the id
177
177
  end
@@ -185,11 +185,11 @@ module JSS
185
185
  # @return [Integer] the id of the updated search
186
186
  #
187
187
  def update(get_results = false)
188
- orig_timeout = JSS.api_connection.cnx.options[:timeout]
189
- JSS.api_connection.timeout = 1800
188
+ orig_timeout = @api.cnx.options[:timeout]
189
+ @api.timeout = 1800
190
190
  super()
191
191
  requery_search_results if get_results
192
- JSS.api_connection.timeout = orig_timeout
192
+ @api.timeout = orig_timeout
193
193
 
194
194
  @id # remember to return the id
195
195
  end
@@ -201,17 +201,17 @@ module JSS
201
201
  # @return [Array<Hash>] the new search results
202
202
  #
203
203
  def requery_search_results
204
- orig_open_timeout = JSS.api_connection.cnx.options[:open_timeout]
205
- orig_timeout = JSS.api_connection.cnx.options[:timeout]
206
- JSS.api_connection.timeout = 1800
207
- JSS.api_connection.open_timeout = 1800
204
+ orig_open_timeout = @api.cnx.options[:open_timeout]
205
+ orig_timeout = @api.cnx.options[:timeout]
206
+ @api.timeout = 1800
207
+ @api.open_timeout = 1800
208
208
  begin
209
209
  requery = self.class.new(id: @id)
210
210
  @search_results = requery.search_results
211
211
  @result_display_keys = requery.result_display_keys
212
212
  ensure
213
- JSS.api_connection.timeout = orig_timeout
214
- JSS.api_connection.open_timeout = orig_open_timeout
213
+ @api.timeout = orig_timeout
214
+ @api.open_timeout = orig_open_timeout
215
215
  end
216
216
  end
217
217