Sha256: 5f50e8fb57af031c7427ad9ec464c93b69e45147bf45843ddf76efe7ca63d71a

Contents?: true

Size: 1.91 KB

Versions: 20

Compression:

Stored size: 1.91 KB

Contents

# frozen_string_literal: true
require_relative '../../puppet/util/lockfile'

# This class provides a simple API for managing a lock file
# whose contents are a serialized JSON object.  In addition
# to querying the basic state (#locked?) of the lock, managing
# the lock (#lock, #unlock), the contents can be retrieved at
# any time while the lock is held (#lock_data).  This can be
# used to store structured data (state messages, etc.) about
# the lock.
#
# @see Puppet::Util::Lockfile
class Puppet::Util::JsonLockfile < Puppet::Util::Lockfile
  # Lock the lockfile.  You may optionally pass a data object, which will be
  # retrievable for the duration of time during which the file is locked.
  #
  # @param [Hash] lock_data an optional Hash of data to associate with the lock.
  #   This may be used to store pids, descriptive messages, etc.  The
  #   data may be retrieved at any time while the lock is held by
  #   calling the #lock_data method. <b>NOTE</b> that the JSON serialization
  #   does NOT support Symbol objects--if you pass them in, they will be
  #   serialized as Strings, so you should plan accordingly.
  # @return [boolean] true if lock is successfully acquired, false otherwise.
  def lock(lock_data = nil)
    return false if locked?

    super(Puppet::Util::Json.dump(lock_data))
  end

  # Retrieve the (optional) lock data that was specified at the time the file
  #  was locked.
  # @return [Object] the data object.  Remember that the serialization does not
  #  support Symbol objects, so if your data Object originally contained symbols,
  #  they will be converted to Strings.
  def lock_data
    return nil unless file_locked?
    file_contents = super
    return nil if file_contents.nil? or file_contents.empty?
    Puppet::Util::Json.load(file_contents)
  rescue Puppet::Util::Json::ParseError
    Puppet.warning _("Unable to read lockfile data from %{path}: not in JSON") % { path: @file_path }
    nil
  end

end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
puppet-8.3.0 lib/puppet/util/json_lockfile.rb
puppet-8.3.0-x86-mingw32 lib/puppet/util/json_lockfile.rb
puppet-8.3.0-x64-mingw32 lib/puppet/util/json_lockfile.rb
puppet-8.3.0-universal-darwin lib/puppet/util/json_lockfile.rb
puppet-8.3.1 lib/puppet/util/json_lockfile.rb
puppet-8.3.1-x86-mingw32 lib/puppet/util/json_lockfile.rb
puppet-8.3.1-x64-mingw32 lib/puppet/util/json_lockfile.rb
puppet-8.3.1-universal-darwin lib/puppet/util/json_lockfile.rb
puppet-8.2.0 lib/puppet/util/json_lockfile.rb
puppet-8.2.0-x86-mingw32 lib/puppet/util/json_lockfile.rb
puppet-8.2.0-x64-mingw32 lib/puppet/util/json_lockfile.rb
puppet-8.2.0-universal-darwin lib/puppet/util/json_lockfile.rb
puppet-8.1.0 lib/puppet/util/json_lockfile.rb
puppet-8.1.0-x86-mingw32 lib/puppet/util/json_lockfile.rb
puppet-8.1.0-x64-mingw32 lib/puppet/util/json_lockfile.rb
puppet-8.1.0-universal-darwin lib/puppet/util/json_lockfile.rb
puppet-8.0.1 lib/puppet/util/json_lockfile.rb
puppet-8.0.1-x86-mingw32 lib/puppet/util/json_lockfile.rb
puppet-8.0.1-x64-mingw32 lib/puppet/util/json_lockfile.rb
puppet-8.0.1-universal-darwin lib/puppet/util/json_lockfile.rb