Class: Jamf::Script

Inherits:
CollectionResource show all
Includes:
ChangeLog, Referable
Defined in:
lib/jamf/api/resources/collection_resources/script.rb

Overview

A building defined in the JSS

Constant Summary collapse

RSRC_VERSION =

Constants

'v1'.freeze
RSRC_PATH =
'scripts'.freeze
PRIORITY_BEFORE =
'BEFORE'.freeze
PRIORITY_AFTER =
'AFTER'.freeze
PRIORITY_AT_REBOOT =
'AT_REBOOT'.freeze
PRIORTIES =
[
  PRIORITY_BEFORE,
  PRIORITY_AFTER,
  PRIORITY_AT_REBOOT
].freeze
OBJECT_MODEL =

Object Model / Attributes See APIObject class documentation for details of how the OBJECT_MODEL hash works.

{

  # @!attribute [r] id
  #   @return [Integer]
  id: {
    class: :j_id,
    identifier: :primary,
    readonly: true,
    filter_key: true
  },

  # @!attribute name
  #   @return [String]
  name: {
    class: :string,
    identifier: true,
    filter_key: true
  },

  # @!attribute info
  #   @return [String]
  info: {
    class: :string,
    filter_key: true
  },

  # @!attribute notes
  #   @return [String]
  notes: {
    class: :string,
    filter_key: true
  },

  # @!attribute priority
  #   @return [String]
  priority: {
    class: :string,
    enum: Jamf::Script::PRIORTIES,
    filter_key: true
  },

  # TODO: Jamf should standardize object references
  # this should be a Category::Reference object

  # @!attribute categoryId
  #   @return [Integer]
  categoryId: {
    class: :j_id,
    filter_key: true
  },

  # @!attribute categoryName
  #   @return [String]
  categoryName: {
    class: :string,
    filter_key: true
  },

  # @!attribute osRequirements
  #   @return [String]
  osRequirements: {
    class: :string,
    filter_key: true
  },

  # @!attribute scriptContents
  #   @return [String]
  scriptContents: {
    class: :string,
    validate: :script_contents,
    aliases: %i[code],
    filter_key: true
  },

  # @!attribute parameter4
  #   @return [String]
  parameter4: {
    class: :string,
    filter_key: true
  },

  # @!attribute parameter5
  #   @return [String]
  parameter5: {
    class: :string,
    filter_key: true
  },

  # @!attribute parameter6
  #   @return [String]
  parameter6: {
    class: :string,
    filter_key: true
  },

  # @!attribute parameter7
  #   @return [String]
  parameter7: {
    class: :string,
    filter_key: true
  },

  # @!attribute parameter8
  #   @return [String]
  parameter8: {
    class: :string,
    filter_key: true
  },

  # @!attribute parameter9
  #   @return [String]
  parameter9: {
    class: :string,
    filter_key: true
  },

  # @!attribute parameter10
  #   @return [String]
  parameter10: {
    class: :string,
    filter_key: true
  },

  # @!attribute parameter11
  #   @return [String]
  parameter11: {
    class: :string,
    filter_key: true
  }
}.freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

This class inherits a constructor from Jamf::JSONObject

Instance Attribute Details

#categoryIdInteger

Returns:

  • (Integer)


# File 'lib/jamf/api/resources/collection_resources/script.rb', line 105

#categoryNameString

Returns:



# File 'lib/jamf/api/resources/collection_resources/script.rb', line 112

#idInteger (readonly)

Returns:

  • (Integer)


# File 'lib/jamf/api/resources/collection_resources/script.rb', line 63

#infoString

Returns:



# File 'lib/jamf/api/resources/collection_resources/script.rb', line 80

#nameString

Returns:



# File 'lib/jamf/api/resources/collection_resources/script.rb', line 72

#notesString

Returns:



# File 'lib/jamf/api/resources/collection_resources/script.rb', line 87

#osRequirementsString

Returns:



# File 'lib/jamf/api/resources/collection_resources/script.rb', line 119

#parameter10String

Returns:



# File 'lib/jamf/api/resources/collection_resources/script.rb', line 177

#parameter11String

Returns:



# File 'lib/jamf/api/resources/collection_resources/script.rb', line 184

#parameter4String

Returns:



# File 'lib/jamf/api/resources/collection_resources/script.rb', line 135

#parameter5String

Returns:



# File 'lib/jamf/api/resources/collection_resources/script.rb', line 142

#parameter6String

Returns:



# File 'lib/jamf/api/resources/collection_resources/script.rb', line 149

#parameter7String

Returns:



# File 'lib/jamf/api/resources/collection_resources/script.rb', line 156

#parameter8String

Returns:



# File 'lib/jamf/api/resources/collection_resources/script.rb', line 163

#parameter9String

Returns:



# File 'lib/jamf/api/resources/collection_resources/script.rb', line 170

#priorityString

Returns:



# File 'lib/jamf/api/resources/collection_resources/script.rb', line 94

#scriptContentsString

Returns:



# File 'lib/jamf/api/resources/collection_resources/script.rb', line 126

Class Method Details

.download(cnx: Jamf.cnx, **ident_and_val) ⇒ String

Retrieve a script's code without instantiating

Specify an ident key, either id: or name: and the value for that ident e.g. `download id: 123` or `download name: 'myscript'`

Parameters:

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

    The connection to use, default: Jamf.cnx

Returns:

  • (String)

    The code of the desired script

Raises:



207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
# File 'lib/jamf/api/resources/collection_resources/script.rb', line 207

def self.download(cnx: Jamf.cnx, **ident_and_val)
  ident, value = ident_and_val.first
  if ident == :id
    begin
      return cnx.download "#{rsrc_path}/#{value}/download"
    rescue => e
      raise Jamf::NoSuchItemError, "No script with #{ident} = #{value}" if e.httpStatus == 404

      raise e
    end # begin
  end # if
  id = raw_data(cnx: cnx, **ident_and_val)&.dig(:id)
  raise Jamf::NoSuchItemError, "No script with #{ident} = #{value}" unless id

  cnx.download "#{rsrc_path}/#{id}/download"
end

Instance Method Details

#add_change_log_note(note, cnx: Jamf.cnx) ⇒ void Originally defined in module ChangeLog

This method returns an undefined value.

Add a note to this resource's change log.

If the change history has been cached already, the cache is flushed after adding the note.

Parameters:

  • note (String)

    The note to add. It cannot be empty.

#change_log(sort: nil, filter: nil, paged: nil, page_size: nil, refresh: false, cnx: Jamf.cnx) ⇒ Array<Jamf::ChangeLogEntry> Originally defined in module ChangeLog

The change and note history for this resource. This is a collection of objects as a sub-resource of some primary resource. As such, retriving the change log returns an array of objects, and can be paged, sorted and filtered.

This method is very similar to CollectionResource.all, see the docs for that method for more details

successive page.

Parameters:

  • sort (String, Array<String>) (defaults to: nil)

    Server-side sorting criteria in the format: property:direction, where direction is 'asc' or 'desc'. Multiple properties are supported, either as separate strings in an Array, or a single string, comma separated.

  • filter (String) (defaults to: nil)

    An RSQL filter string. Not all change_log resources currently support filters, and if they don't, this will be ignored.

  • paged (Boolean) (defaults to: nil)

    Defaults to false. Returns only the first page of `page_size` log entries. Use #next_page_of_change_log to retrieve each

  • page_size (Integer) (defaults to: nil)

    How many log entries are returned per page? Minimum is 1, maximum is 2000, default is 100. Ignored unless paged: is truthy. Note: the final page may contain fewer entries than the page_size

  • refresh (Boolean) (defaults to: false)

    re-fetch and re-cache the full list of all entries. Ignored if paged:, page_size:, sort:, or filter: are used.

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

    The API connection to use, default: Jamf.cnx. If this is an instance of a Collection Resource, this is always the connection from which it was fetched.

Returns:

#change_log_count(cnx: Jamf.cnx) ⇒ Integer Originally defined in module ChangeLog

how many change log entries are there? needed when using paged #change_log calls

Parameters:

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

    The API connection to use, default: Jamf.cnx This is ignored for instances of Collection Resources, which always use the same connection from which they were fetched.

Returns:

  • (Integer)

    How many changelog entries exist?

#next_page_of_change_logArray<Jamf::ChangeHistoryEntry> Originally defined in module ChangeLog

Fetch the next page of a paged #change_log request Returns an empty array if there's been no paged request or if the last one has no more pages.

Returns:

  • (Array<Jamf::ChangeHistoryEntry>)

    The next page of the change and note history for this resource