Class: Entitlement::NumberedEntry
Overview
This class allows you to specify the number of nodes to use the module on.
Instance Attribute Summary
Attributes inherited from Entry
#file
Class Method Summary
collapse
Instance Method Summary
collapse
-
#initialize(modules, from, to, filename_string, number, server = nil, license_id = 'none', warn_number = nil, &proc) ⇒ NumberedEntry
constructor
rubocop: disable Metrics/ParameterLists.
-
#inspect ⇒ Object
-
#invalid_puppetserver? ⇒ Boolean
-
#puppetserver_in_hosts_file? ⇒ Boolean
-
#registered_licenses ⇒ Object
-
#registered_modules ⇒ Object
-
#registered_nodes_for(module_name, puppet_server) ⇒ Object
-
#valid?(module_name, _resources = nil) ⇒ Boolean
rubocop: enable Metrics/ParameterLists.
-
#valid_node?(node) ⇒ Boolean
#camelize, #convert_csv_data_to_hash, #get_puppet_file, included
Methods inherited from Entry
#days_left, #expiring?, #notify_if_expiring, #purgable?
Constructor Details
#initialize(modules, from, to, filename_string, number, server = nil, license_id = 'none', warn_number = nil, &proc) ⇒ NumberedEntry
rubocop: disable Metrics/ParameterLists
36
37
38
39
40
41
42
43
44
|
# File 'lib/entitlement/numbered_entry.rb', line 36
def initialize(modules, from, to, filename_string, number, server = nil, license_id = 'none', warn_number = nil, &proc)
super(modules, from, to, &proc)
@number = number
@warn_number = warn_number
@licensed_server = server || ''
@licensed_servers = server.split(',').map(&:strip)
@license_id = license_id
@registered_server = self.class.puppet_server
end
|
Class Method Details
.puppet_server ⇒ Object
21
22
23
24
25
26
27
28
29
30
|
# File 'lib/entitlement/numbered_entry.rb', line 21
def self.puppet_server
server = if in_bolt?
yaml_data = File.read('/tmp/run_info.yaml')
data = Puppet::Util::Yaml.safe_load(yaml_data, [Symbol])
data[:puppet_server]
else
Puppet.settings[:server]
end
server
end
|
Instance Method Details
#inspect ⇒ Object
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
# File 'lib/entitlement/numbered_entry.rb', line 57
def inspect
super
puts "License ID : #{@license_id}"
puts "entitled : #{@number}"
puts "Warn at : #{@warn_number}" if @warn_number
puts "on server : #{@licensed_server}" if @licensed_server
@modules.collect {|m| m.split('#').first}.uniq.each do | module_name|
puts "module : #{module_name}"
registered_nodes = Array(registered_nodes_for(module_name, @licensed_server))
valid = registered_nodes.include?(current_node)
puts " registered : #{registered_nodes.size}"
puts " on nodes : #{registered_nodes.join(',')}"
puts " valid on current node : #{valid}"
end
end
|
#invalid_puppetserver? ⇒ Boolean
97
98
99
100
101
102
103
|
# File 'lib/entitlement/numbered_entry.rb', line 97
def invalid_puppetserver?
[@registered_server] - @licensed_servers == [@registered_server]
end
|
#puppetserver_in_hosts_file? ⇒ Boolean
105
106
107
|
# File 'lib/entitlement/numbered_entry.rb', line 105
def puppetserver_in_hosts_file?
Resolv::Hosts.new().getaddresses(@registered_server).any?
end
|
#registered_licenses ⇒ Object
109
110
111
112
113
|
# File 'lib/entitlement/numbered_entry.rb', line 109
def registered_licenses
node_data.keys
rescue
[]
end
|
#registered_modules ⇒ Object
115
116
117
118
119
|
# File 'lib/entitlement/numbered_entry.rb', line 115
def registered_modules
node_data[@license_id].keys
rescue
[]
end
|
#registered_nodes_for(module_name, puppet_server) ⇒ Object
121
122
123
124
125
|
# File 'lib/entitlement/numbered_entry.rb', line 121
def registered_nodes_for(module_name, puppet_server)
node_data[@license_id][module_name][puppet_server] || []
rescue
[]
end
|
#valid?(module_name, _resources = nil) ⇒ Boolean
rubocop: enable Metrics/ParameterLists
47
48
49
50
51
52
53
54
55
|
# File 'lib/entitlement/numbered_entry.rb', line 47
def valid?(module_name, _resources = nil)
begin
@module_name = module_name.split('#').first
rescue
@module_name = module_name
end
Puppet.debug "Found a Numbered entitlement with id #{@license_id} allowing usage on #{@number} nodes,served from #{@registered_server}...."
super(module_name) ? valid_node?(current_node) : false
end
|
#valid_node?(node) ⇒ Boolean
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
# File 'lib/entitlement/numbered_entry.rb', line 73
def valid_node?(node)
if puppetserver_in_hosts_file?
Puppet.err "Entitlement doesn't support puppetserver #{@registered_server} in host file."
return false
end
if invalid_puppetserver?
Puppet.debug "License #{@license_id} is only valid on puppet server(s) #{@licensed_server}. Now running on #{@registered_server}, so skipping this one."
return false
end
unless enough_nodes?
Puppet.err "Your node list for module #{@module_name} contains more nodes then entitled. Only using first #{@number}. Please make the list compliant."
else
Puppet.warn_once :license, :usage_overdrawn, "Using module #{@module_name} on more then #{@warn_number} nodes. Make sure you are using the software within license limits." if above_warning_level?
end
unless validated_registered_nodes.include?(node)
Puppet.debug :license, :not_registered, "Node #{node} is not registered in the node list for module #{@module_name} with license id #{@license_id}."
return false
else
Puppet.debug "Node #{node} is registered in the node list for module #{@module_name} in #{ENTITLEMENTS_URL}"
end
Puppet.debug "Your node list for module #{@module_name} is compliant."
true
end
|