Class: Puppet::FileBucket::File

Inherits:
Object
  • Object
show all
Extended by:
Indirector
Defined in:
lib/puppet/file_bucket/file.rb

Constant Summary

Constants included from Indirector

Indirector::BadNameRegexp

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Indirector

configure_routes, indirects

Constructor Details

#initialize(contents, options = {}) ⇒ File

Returns a new instance of File.

Raises:

  • (ArgumentError)


30
31
32
33
34
35
36
37
# File 'lib/puppet/file_bucket/file.rb', line 30

def initialize(contents, options = {})
  raise ArgumentError.new("contents must be a String, got a #{contents.class}") unless contents.is_a?(String)
  @contents = contents

  @bucket_path = options.delete(:bucket_path)
  @checksum_type = Puppet[:digest_algorithm].to_sym
  raise ArgumentError.new("Unknown option(s): #{options.keys.join(', ')}") unless options.empty?
end

Instance Attribute Details

#bucket_pathObject (readonly)



15
16
17
# File 'lib/puppet/file_bucket/file.rb', line 15

def bucket_path
  @bucket_path
end

#contentsObject (readonly)



14
15
16
# File 'lib/puppet/file_bucket/file.rb', line 14

def contents
  @contents
end

Class Method Details

.default_formatObject



21
22
23
24
25
26
27
28
# File 'lib/puppet/file_bucket/file.rb', line 21

def self.default_format
  # This should really be :raw, like is done for Puppet::FileServing::Content
  # but this class hasn't historically supported `from_raw`, so switching
  # would break compatibility between newer 3.x agents talking to older 3.x
  # masters. However, to/from_s has been supported and achieves the desired
  # result without breaking compatibility.
  :s
end

.from_data_hash(data) ⇒ Object



78
79
80
# File 'lib/puppet/file_bucket/file.rb', line 78

def self.from_data_hash(data)
  self.new(data["contents"])
end

.from_pson(pson) ⇒ Object

This method is deprecated, but cannot be removed for awhile, otherwise older agents sending pson couldn’t backup to filebuckets on newer masters



89
90
91
92
# File 'lib/puppet/file_bucket/file.rb', line 89

def self.from_pson(pson)
  Puppet.deprecation_warning("Deserializing Puppet::FileBucket::File objects from pson is deprecated. Upgrade to a newer version.")
  self.from_data_hash(pson)
end

.from_s(contents) ⇒ Object



70
71
72
# File 'lib/puppet/file_bucket/file.rb', line 70

def self.from_s(contents)
  self.new(contents)
end

.supported_formatsObject



17
18
19
# File 'lib/puppet/file_bucket/file.rb', line 17

def self.supported_formats
  [:s, :pson]
end

Instance Method Details

#checksumObject



53
54
55
# File 'lib/puppet/file_bucket/file.rb', line 53

def checksum
  "{#{checksum_type}}#{checksum_data}"
end

#checksum_dataObject



57
58
59
60
# File 'lib/puppet/file_bucket/file.rb', line 57

def checksum_data
  algorithm = Puppet::Util::Checksums.method(@checksum_type)
  @checksum_data ||= algorithm.call(contents)
end

#checksum_typeObject



49
50
51
# File 'lib/puppet/file_bucket/file.rb', line 49

def checksum_type
  @checksum_type.to_s
end

#nameObject



66
67
68
# File 'lib/puppet/file_bucket/file.rb', line 66

def name
  "#{checksum_type}/#{checksum_data}"
end

#sizeNum

Returns The size of the contents.

Returns:

  • (Num)

    The size of the contents



40
41
42
# File 'lib/puppet/file_bucket/file.rb', line 40

def size
  contents.size
end

#streamIO

Returns A stream that reads the contents.

Returns:

  • (IO)

    A stream that reads the contents



45
46
47
# File 'lib/puppet/file_bucket/file.rb', line 45

def stream
  StringIO.new(contents)
end

#to_data_hashObject



74
75
76
# File 'lib/puppet/file_bucket/file.rb', line 74

def to_data_hash
  { "contents" => contents }
end

#to_psonObject



82
83
84
85
# File 'lib/puppet/file_bucket/file.rb', line 82

def to_pson
  Puppet.deprecation_warning("Serializing Puppet::FileBucket::File objects to pson is deprecated.")
  to_data_hash.to_pson
end

#to_sObject



62
63
64
# File 'lib/puppet/file_bucket/file.rb', line 62

def to_s
  contents
end