Module: Jamf::Creatable
- Included in:
- AdvancedSearch, Building, Category, Computer, ComputerInvitation, Department, DirectoryBinding, DockItem, ExtensionAttribute, Group, IBeacon, MobileDevice, MobileDeviceApplication, NetworkSegment, Package, PatchExternalSource, PatchPolicy, PatchTitle, Peripheral, PeripheralType, Policy, Printer, RemovableMacAddress, RestrictedSoftware, Script, Site, User, WebHook
- Defined in:
- lib/jamf/api/classic/api_objects/creatable.rb
Overview
A mix-in module that allows objects to be created in the JSS via the API.
When a Jamf::APIObject subclass includes this module, that subclass can be instantiated with :id => :new, and :name => “some_new_name”.
Classes mixing this module must provide a #rest_xml instance method that returns the XML String to be submitted to the API for object creation.
The instance can be used to set desired values for the new object, and once everything’s good, use #create to create it in the JSS.
If a Creatable object requires more data than just a :name for creation, the subclass may want to redefine #initialize to require those data before calling super, or may want to redefine #create or #rest_xml to check the data for consistency, and then call super
It is also wise to have the individual setter methods do data validation
Constant Summary collapse
- CREATABLE =
Constants
true
Instance Method Summary collapse
-
#clone(new_name, api: nil, cnx: nil) ⇒ APIObject
make a clone of this API object, with a new name.
Instance Method Details
#clone(new_name, api: nil, cnx: nil) ⇒ APIObject
make a clone of this API object, with a new name. The class must be creatable
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 |