Class: Puppet::Provider::ElasticUserRoles
- Inherits:
-
ElasticYaml
- Object
- ElasticYaml
- Puppet::Provider::ElasticUserRoles
- Defined in:
- lib/puppet/provider/elastic_user_roles.rb
Overview
Provider to help manage file-based Shield/X-Pack user/role configuration files.
Class Method Summary collapse
-
.parse(text) ⇒ Object
Override the ancestor ‘parse` method to process a users/roles file managed by the Elasticsearch user tools.
- .skip_record?(_record) ⇒ Boolean
-
.to_file(records) ⇒ Object
Represent this user/role record as a correctly-formatted config file.
Class Method Details
.parse(text) ⇒ Object
Override the ancestor ‘parse` method to process a users/roles file managed by the Elasticsearch user tools.
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/puppet/provider/elastic_user_roles.rb', line 8 def self.parse(text) text.split("\n").map(&:strip).select do |line| # Strip comments not line.start_with? '#' and not line.empty? end.map do |line| # Turn array of roles into array of users that have the role role, users = line.split(':') users.split(',').map do |user| { user => [role] } end end.flatten.inject({}) do |hash, user| # Gather up user => role hashes by append-merging role lists hash.merge(user) { |_, o, n| o + n } end.map do |user, roles| # Map those hashes into what the provider expects { :name => user, :roles => roles } end.to_a end |
.skip_record?(_record) ⇒ Boolean
46 47 48 |
# File 'lib/puppet/provider/elastic_user_roles.rb', line 46 def self.skip_record?(_record) false end |
.to_file(records) ⇒ Object
Represent this user/role record as a correctly-formatted config file.
31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/puppet/provider/elastic_user_roles.rb', line 31 def self.to_file(records) debug "Flushing: #{records.inspect}" records.map do |record| record[:roles].map do |r| { [record[:name]] => r } end end.flatten.map(&:invert).inject({}) do |acc, role| acc.merge(role) { |_, o, n| o + n } end.delete_if do |_, users| users.empty? end.map do |role, users| "#{role}:#{users.join(',')}" end.join("\n") + "\n" end |