Method: Jamf::Creatable#clone

Defined in:
lib/jamf/api/classic/api_objects/creatable.rb

#clone(new_name, api: nil, cnx: nil) ⇒ APIObject

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

Parameters:

  • name (String)

    the name for the new object

  • cnx (Jamf::Connection) (defaults to: nil)

    the API in which to create the object Defaults to the API used to instantiate this object

Returns:

  • (APIObject)

    An unsaved clone of this APIObject with the given name

Raises:



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/creatable.rb', line 97

def clone(new_name, api: nil, cnx: nil)
  cnx = api if api
  cnx ||= @cnx

  raise Jamf::UnsupportedError, 'This class is not creatable in via ruby-jss' unless creatable?
  raise Jamf::AlreadyExistsError, "A #{self.class::RSRC_OBJECT_KEY} already exists with that name" if \
    self.class.all_names(:refresh, cnx: cnx).include? new_name

  orig_in_jss = @in_jss
  @in_jss = false
  orig_id = @id
  @id = nil
  orig_rsrc = @rest_rsrc
  @rest_rsrc = "#{self.class::RSRC_BASE}/name/#{CGI.escape new_name.to_s}"
  orig_cnx = @cnx
  @cnx = cnx

  new_obj = dup

  @in_jss = orig_in_jss
  @id = orig_id
  @rest_rsrc = orig_rsrc
  @cnx = orig_cnx
  new_obj.name = new_name

  new_obj
end