Class: Puppet::Provider::ElasticYaml
- Inherits:
-
ElasticParsedFile
- Object
- ElasticParsedFile
- Puppet::Provider::ElasticYaml
- Defined in:
- lib/puppet/provider/elastic_yaml.rb
Overview
Provider for yaml-based Elasticsearch configuration files.
Direct Known Subclasses
Class Attribute Summary collapse
-
.metadata ⇒ Object
Returns the value of attribute metadata.
Class Method Summary collapse
-
.parse(text) ⇒ Object
Transform a given string into a Hash-based representation of the provider.
- .skip_record?(_record) ⇒ Boolean
-
.to_file(records) ⇒ Object
Transform a given list of provider records into yaml-based representation.
-
.valid_attr?(klass, attr_name) ⇒ Boolean
This is ugly, but it’s overridden in ParsedFile with abstract functionality we don’t need for our simple provider class.
Class Attribute Details
.metadata ⇒ Object
Returns the value of attribute metadata.
11 12 13 |
# File 'lib/puppet/provider/elastic_yaml.rb', line 11 def @metadata end |
Class Method Details
.parse(text) ⇒ Object
Transform a given string into a Hash-based representation of the provider.
16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/puppet/provider/elastic_yaml.rb', line 16 def self.parse(text) yaml = YAML.load text if yaml yaml.map do |key, | { :name => key, :ensure => :present, @metadata => } end else [] end end |
.skip_record?(_record) ⇒ Boolean
53 54 55 |
# File 'lib/puppet/provider/elastic_yaml.rb', line 53 def self.skip_record?(_record) false end |
.to_file(records) ⇒ Object
Transform a given list of provider records into yaml-based representation.
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/puppet/provider/elastic_yaml.rb', line 33 def self.to_file(records) yaml = records.map do |record| # Convert top-level symbols to strings Hash[record.map { |k, v| [k.to_s, v] }] end.inject({}) do |hash, record| # Flatten array of hashes into single hash hash.merge({ record['name'] => record.delete(@metadata.to_s) }) end.extend(Puppet_X::Elastic::SortedHash).to_yaml.split("\n") yaml.shift if yaml.first =~ /---/ yaml = yaml.join("\n") # Puppet < 4 uses ZAML, which prepends spaces in to_yaml... why unless Puppet::Util::Package.versioncmp(Puppet.version, '4') >= 0 yaml.gsub!(/^\s{2}/, '') end yaml << "\n" end |
.valid_attr?(klass, attr_name) ⇒ Boolean
This is ugly, but it’s overridden in ParsedFile with abstract functionality we don’t need for our simple provider class. This has been observed to break in Puppet version 3/4 switches.
60 61 62 |
# File 'lib/puppet/provider/elastic_yaml.rb', line 60 def self.valid_attr?(klass, attr_name) klass.is_a? Class ? klass.parameters.include?(attr_name) : true end |