Class: Puppet::FileServing::Metadata
Overview
A class that handles retrieving file metadata.
Direct Known Subclasses
Defined Under Namespace
Classes: MetaStat, WindowsStat
Constant Summary collapse
- PARAM_ORDER =
[:mode, :ftype, :owner, :group]
Constants included from Indirector
Instance Attribute Summary collapse
-
#checksum ⇒ Object
readonly
Returns the value of attribute checksum.
-
#checksum_type ⇒ Object
Returns the value of attribute checksum_type.
-
#content_uri ⇒ Object
Returns the value of attribute content_uri.
-
#destination ⇒ Object
readonly
Returns the value of attribute destination.
-
#ftype ⇒ Object
readonly
Returns the value of attribute ftype.
-
#group ⇒ Object
readonly
Returns the value of attribute group.
-
#mode ⇒ Object
readonly
Returns the value of attribute mode.
-
#owner ⇒ Object
readonly
Returns the value of attribute owner.
-
#path ⇒ Object
readonly
Returns the value of attribute path.
-
#source_permissions ⇒ Object
Returns the value of attribute source_permissions.
Attributes inherited from Base
#links, #relative_path, #source
Class Method Summary collapse
Instance Method Summary collapse
-
#collect(source_permissions = nil) ⇒ Object
Retrieve the attributes for this file, relative to a base directory.
- #collect_stat(path) ⇒ Object
-
#initialize(path, data = {}) ⇒ Metadata
constructor
A new instance of Metadata.
- #to_data_hash ⇒ Object
Methods included from Indirector
Methods included from Util::Checksums
checksum?, checksum_file, checksum_stream, ctime, ctime?, ctime_file, ctime_stream, known_checksum_types, md5, md5?, md5_file, md5_hex_length, md5_stream, md5lite, md5lite?, md5lite_file, md5lite_hex_length, md5lite_stream, mtime, mtime?, mtime_file, mtime_stream, none, none?, none_file, none_stream, sha1, sha1?, sha1_file, sha1_hex_length, sha1_stream, sha1lite, sha1lite?, sha1lite_file, sha1lite_hex_length, sha1lite_stream, sha256, sha256?, sha256_file, sha256_hex_length, sha256_stream, sha256lite, sha256lite?, sha256lite_file, sha256lite_hex_length, sha256lite_stream, sumdata, sumtype
Methods inherited from Base
absolute?, #exist?, #full_path, #stat
Methods included from Util::MethodHelper
#requiredopts, #set_options, #symbolize_options
Constructor Details
#initialize(path, data = {}) ⇒ Metadata
Returns a new instance of Metadata.
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
# File 'lib/puppet/file_serving/metadata.rb', line 126 def initialize(path,data={}) @owner = data.delete('owner') @group = data.delete('group') @mode = data.delete('mode') if checksum = data.delete('checksum') @checksum_type = checksum['type'] @checksum = checksum['value'] end @checksum_type ||= Puppet[:digest_algorithm] @ftype = data.delete('type') @destination = data.delete('destination') @source = data.delete('source') @content_uri = data.delete('content_uri') super(path,data) end |
Instance Attribute Details
#checksum ⇒ Object (readonly)
Returns the value of attribute checksum.
16 17 18 |
# File 'lib/puppet/file_serving/metadata.rb', line 16 def checksum @checksum end |
#checksum_type ⇒ Object
Returns the value of attribute checksum_type.
16 17 18 |
# File 'lib/puppet/file_serving/metadata.rb', line 16 def checksum_type @checksum_type end |
#content_uri ⇒ Object
Returns the value of attribute content_uri.
16 17 18 |
# File 'lib/puppet/file_serving/metadata.rb', line 16 def content_uri @content_uri end |
#destination ⇒ Object (readonly)
Returns the value of attribute destination.
16 17 18 |
# File 'lib/puppet/file_serving/metadata.rb', line 16 def destination @destination end |
#ftype ⇒ Object (readonly)
Returns the value of attribute ftype.
16 17 18 |
# File 'lib/puppet/file_serving/metadata.rb', line 16 def ftype @ftype end |
#group ⇒ Object (readonly)
Returns the value of attribute group.
16 17 18 |
# File 'lib/puppet/file_serving/metadata.rb', line 16 def group @group end |
#mode ⇒ Object (readonly)
Returns the value of attribute mode.
16 17 18 |
# File 'lib/puppet/file_serving/metadata.rb', line 16 def mode @mode end |
#owner ⇒ Object (readonly)
Returns the value of attribute owner.
16 17 18 |
# File 'lib/puppet/file_serving/metadata.rb', line 16 def owner @owner end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
16 17 18 |
# File 'lib/puppet/file_serving/metadata.rb', line 16 def path @path end |
#source_permissions ⇒ Object
Returns the value of attribute source_permissions.
16 17 18 |
# File 'lib/puppet/file_serving/metadata.rb', line 16 def @source_permissions end |
Class Method Details
.from_data_hash(data) ⇒ Object
159 160 161 |
# File 'lib/puppet/file_serving/metadata.rb', line 159 def self.from_data_hash(data) new(data.delete('path'), data) end |
Instance Method Details
#collect(source_permissions = nil) ⇒ Object
Retrieve the attributes for this file, relative to a base directory. Note that Puppet::FileSystem.stat(path) raises Errno::ENOENT if the file is absent and this method does not catch that exception.
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/puppet/file_serving/metadata.rb', line 101 def collect( = nil) real_path = full_path stat = collect_stat(real_path) @owner = stat.owner @group = stat.group @ftype = stat.ftype # We have to mask the mode, yay. @mode = stat.mode & 007777 case stat.ftype when "file" @checksum = ("{#{@checksum_type}}") + send("#{@checksum_type}_file", real_path).to_s when "directory" # Always just timestamp the directory. @checksum_type = "ctime" @checksum = ("{#{@checksum_type}}") + send("#{@checksum_type}_file", path).to_s when "link" @destination = Puppet::FileSystem.readlink(real_path) @checksum = ("{#{@checksum_type}}") + send("#{@checksum_type}_file", real_path).to_s rescue nil else raise ArgumentError, _("Cannot manage files of type %{file_type}") % { file_type: stat.ftype } end end |
#collect_stat(path) ⇒ Object
88 89 90 91 92 93 94 95 96 |
# File 'lib/puppet/file_serving/metadata.rb', line 88 def collect_stat(path) stat = stat() if Puppet.features.microsoft_windows? WindowsStat.new(stat, path, @source_permissions) else MetaStat.new(stat, @source_permissions) end end |
#to_data_hash ⇒ Object
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 |
# File 'lib/puppet/file_serving/metadata.rb', line 142 def to_data_hash super.update( { 'owner' => owner, 'group' => group, 'mode' => mode, 'checksum' => { 'type' => checksum_type, 'value' => checksum }, 'type' => ftype, 'destination' => destination, }.merge(content_uri ? {'content_uri' => content_uri} : {}) .merge(source ? {'source' => source} : {}) ) end |