foreman_discovery 12.0.2 → 13.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/mailers/discovered_mailer.rb +12 -1
- data/app/models/host/discovered.rb +20 -7
- data/app/models/setting/discovered.rb +2 -0
- data/app/services/foreman_discovery/fact_parser.rb +8 -2
- data/app/services/foreman_discovery/lldp_neighbors.rb +104 -0
- data/app/views/discovery_rules/index.html.erb +1 -1
- data/extra/discovery/pxeless-vlan.json +217 -0
- data/lib/foreman_discovery/engine.rb +1 -1
- data/lib/foreman_discovery/version.rb +1 -1
- data/locale/ca/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ca/foreman_discovery.edit.po +143 -58
- data/locale/ca/foreman_discovery.po +4 -4
- data/locale/de/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/de/foreman_discovery.edit.po +145 -59
- data/locale/de/foreman_discovery.po +7 -7
- data/locale/en/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/en/foreman_discovery.edit.po +90 -58
- data/locale/en/foreman_discovery.po +28 -4
- data/locale/en_GB/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/en_GB/foreman_discovery.edit.po +151 -66
- data/locale/en_GB/foreman_discovery.po +12 -12
- data/locale/es/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/es/foreman_discovery.edit.po +155 -70
- data/locale/es/foreman_discovery.po +16 -16
- data/locale/foreman_discovery.pot +93 -59
- data/locale/fr/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/fr/foreman_discovery.edit.po +287 -200
- data/locale/fr/foreman_discovery.po +149 -148
- data/locale/gl/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/gl/foreman_discovery.edit.po +144 -59
- data/locale/gl/foreman_discovery.po +5 -5
- data/locale/it/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/it/foreman_discovery.edit.po +144 -59
- data/locale/it/foreman_discovery.po +5 -5
- data/locale/ja/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ja/foreman_discovery.edit.po +153 -68
- data/locale/ja/foreman_discovery.po +16 -14
- data/locale/ko/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ko/foreman_discovery.edit.po +143 -59
- data/locale/ko/foreman_discovery.po +5 -5
- data/locale/pt_BR/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/pt_BR/foreman_discovery.edit.po +155 -70
- data/locale/pt_BR/foreman_discovery.po +16 -16
- data/locale/ru/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ru/foreman_discovery.edit.po +146 -63
- data/locale/ru/foreman_discovery.po +6 -6
- data/locale/sv_SE/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/sv_SE/foreman_discovery.edit.po +144 -59
- data/locale/sv_SE/foreman_discovery.po +5 -5
- data/locale/zh_CN/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/zh_CN/foreman_discovery.edit.po +150 -69
- data/locale/zh_CN/foreman_discovery.po +13 -15
- data/locale/zh_TW/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/zh_TW/foreman_discovery.edit.po +227 -144
- data/locale/zh_TW/foreman_discovery.po +88 -88
- data/test/functional/api/v2/discovery_rules_controller_test.rb +8 -0
- data/test/functional/api/v2/settings_controller_test.rb +2 -0
- data/test/test_helper_discovery.rb +2 -0
- data/test/unit/discovered_mailer_test.rb +14 -0
- data/test/unit/discovery_rule_test.rb +3 -0
- data/test/unit/facts_with_lldp.json +107 -0
- data/test/unit/facts_with_lldp_bond_candidate.json +107 -0
- data/test/unit/host_discovered_test.rb +72 -1
- data/test/unit/lldp_neighbors_test.rb +56 -0
- metadata +11 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9ffdab95d6a69414a0b99ecdb838f4c9d4c2ee9f9eba3d71ba2a5bb3fe3ef3d0
|
4
|
+
data.tar.gz: 5e721d701c1d35f93dcec4f096b41cfcb08ea605bd46aa37a538349c61c2985d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bac34ddb73174715645508c038e8d1951840374b8b32b0c8073f424522c0ff322645cc5dde847914cc2861f9363f8ad64aa943c9a48f04b947c37c633c48afb3
|
7
|
+
data.tar.gz: 37e531b52508c10f32617eae2af3beb893c9eee65698dbad324af1bb77212ca4659ab1a71b35f77b57ddaca3825f10fde2f452b6bf1e87fd6b0628616d4e00fb
|
@@ -1,7 +1,18 @@
|
|
1
1
|
class DiscoveredMailer < ::ApplicationMailer
|
2
2
|
helper :discovered_hosts
|
3
3
|
def discovered_summary(options = {})
|
4
|
-
|
4
|
+
user = if options[:user].kind_of? User
|
5
|
+
options[:user]
|
6
|
+
elsif options[:user].kind_of? Integer
|
7
|
+
User.find(options[:user])
|
8
|
+
else
|
9
|
+
raise ::Foreman::Exception.new(N_('Invalid user type of %s was provided'), options[:user].class.to_s)
|
10
|
+
end
|
11
|
+
|
12
|
+
unless user.mail_enabled?
|
13
|
+
Rails.logger.debug("The user #{user.id} does not email enabled")
|
14
|
+
return
|
15
|
+
end
|
5
16
|
begin
|
6
17
|
Time.zone = user.timezone
|
7
18
|
rescue ArgumentError
|
@@ -42,6 +42,12 @@ class Host::Discovered < ::Host::Base
|
|
42
42
|
where(taxonomy_conditions).order("hosts.created_at DESC")
|
43
43
|
}
|
44
44
|
|
45
|
+
NAMING_PATTERNS = {
|
46
|
+
'Fact' => _('Fact + prefix'),
|
47
|
+
'Random-name' => _('Random name'),
|
48
|
+
'MAC-name' => _('MAC-based name')
|
49
|
+
}.freeze
|
50
|
+
|
45
51
|
# Discovery import workflow:
|
46
52
|
# discovered#import_host ->
|
47
53
|
# discovered#import_facts -> base#import_facts -> base#parse_facts ->
|
@@ -56,16 +62,22 @@ class Host::Discovered < ::Host::Base
|
|
56
62
|
raise ::Foreman::Exception.new(N_("Expected discovery_fact '%s' is missing, unable to detect primary interface and set hostname") % FacterUtils::bootif_name) unless FacterUtils::bootif_present(facts)
|
57
63
|
|
58
64
|
# construct hostname
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
+
bootif_mac = FacterUtils::bootif_mac(facts).try(:downcase)
|
66
|
+
hostname = ''
|
67
|
+
if Setting[:discovery_naming] == 'MAC-name'
|
68
|
+
hostname = NameGenerator.new.generate_next_mac_name(bootif_mac)
|
69
|
+
elsif Setting[:discovery_naming] == 'Random-name'
|
70
|
+
hostname = NameGenerator.new.generate_next_random_name
|
71
|
+
else
|
72
|
+
prefix_from_settings = Setting[:discovery_prefix]
|
73
|
+
hostname_prefix = prefix_from_settings if prefix_from_settings.present? && prefix_from_settings.match(/^[a-zA-Z].*/)
|
74
|
+
name_fact = return_first_valid_fact(Setting::Discovered.discovery_hostname_fact_array, facts)
|
75
|
+
raise(::Foreman::Exception.new(N_("Invalid facts: hash does not contain a valid value for any of the facts in the discovery_hostname setting: %s"), Setting::Discovered.discovery_hostname_fact_array.join(', '))) unless name_fact && name_fact.present?
|
76
|
+
hostname = normalize_string_for_hostname("#{hostname_prefix}#{name_fact}")
|
77
|
+
end
|
65
78
|
Rails.logger.warn "Hostname does not start with an alphabetical character" unless hostname.downcase.match(/^[a-z]/)
|
66
79
|
|
67
80
|
# check for existing managed hosts and fail or warn
|
68
|
-
bootif_mac = FacterUtils::bootif_mac(facts).try(:downcase)
|
69
81
|
existing_managed = Nic::Managed.joins(:host).where(:mac => bootif_mac, :provision => true, :hosts => {:type => "Host::Managed"}).limit(1)
|
70
82
|
if existing_managed.count > 0
|
71
83
|
if Setting[:discovery_error_on_existing]
|
@@ -131,6 +143,7 @@ class Host::Discovered < ::Host::Base
|
|
131
143
|
self.discovery_attribute_set = DiscoveryAttributeSet.where(:host_id => id).first_or_create
|
132
144
|
self.discovery_attribute_set.update_attributes(import_from_facts)
|
133
145
|
# set additional discovery attributes
|
146
|
+
::ForemanDiscovery::LldpNeighbors.eventually_make_bond(self) if Setting[:discovery_auto_bond]
|
134
147
|
primary_ip = self.primary_interface.ip
|
135
148
|
unless primary_ip.nil?
|
136
149
|
subnet = Subnet.subnet_for(primary_ip)
|
@@ -17,6 +17,7 @@ class Setting::Discovered < ::Setting
|
|
17
17
|
Setting.transaction do
|
18
18
|
[
|
19
19
|
self.set('discovery_fact', N_("Fact name to use for primary interface detection"), "discovery_bootif", N_("Interface fact")),
|
20
|
+
self.set('discovery_auto_bond', N_("Automatic bond interface (if another interface is detected on the same VLAN via LLDP)"), false, N_("Create bond interfaces")),
|
20
21
|
self.set('discovery_clean_facts', N_("Clean all reported facts during provisioning (except discovery facts)"), false, N_("Clean all facts")),
|
21
22
|
self.set('discovery_hostname', N_("List of facts to use for the hostname (separated by comma, first wins)"), "discovery_bootif", N_("Hostname facts")),
|
22
23
|
self.set('discovery_auto', N_("Automatically provision newly discovered hosts, according to the provisioning rules"), false, N_("Auto provisioning")),
|
@@ -35,6 +36,7 @@ class Setting::Discovered < ::Setting
|
|
35
36
|
self.set('discovery_pxegrub2_lock_template', N_("PXEGrub2 template to be used when pinning a host to discovery"), 'pxegrub2_discovery', N_("Locked PXEGrub2 template name"), nil, { :collection => Proc.new {Hash[ProvisioningTemplate.where(:template_kind => TemplateKind.find_by_name(:snippet)).map{|template| [template[:name], template[:name]]}]} }),
|
36
37
|
self.set('discovery_always_rebuild_dns', N_("Force DNS entries creation when provisioning discovered host"), true, N_("Force DNS")),
|
37
38
|
self.set('discovery_error_on_existing', N_("Do not allow to discover existing managed host matching MAC of a provisioning NIC (errors out early)"), false, N_("Error on existing NIC")),
|
39
|
+
self.set('discovery_naming', N_("Discovery hostname naming pattern"), 'Fact', N_("Type of name generator"), nil, {:collection => Proc.new {::Host::Discovered::NAMING_PATTERNS} }),
|
38
40
|
].compact.each { |s| self.create s.update(:category => "Setting::Discovered")}
|
39
41
|
end
|
40
42
|
|
@@ -6,15 +6,21 @@ module ForemanDiscovery
|
|
6
6
|
raise(::Foreman::Exception.new(N_("Discovered host '%{host}' has all NICs filtered out, filter: %{filter}") %
|
7
7
|
{:host => host, :filter => Setting[:ignored_interface_identifiers]})) if interfaces.size == 0
|
8
8
|
bootif_mac = FacterUtils::bootif_mac(facts).try(:downcase)
|
9
|
-
detected = interfaces.detect { |_, values| values[:macaddress].try(:downcase) == bootif_mac }
|
9
|
+
detected = interfaces.detect { |_, values| values[:macaddress].try(:downcase) == bootif_mac && values[:ipaddress].present? }
|
10
10
|
Rails.logger.debug "Discovery fact parser detected primary interface: #{detected}"
|
11
11
|
# return the detected interface as array [name, facts]
|
12
12
|
detected || raise(::Foreman::Exception.new(N_("Unable to find primary NIC with %{mac} specified via '%{fact}', NIC filter: %{filter}") %
|
13
13
|
{:mac => bootif_mac, :fact => FacterUtils::bootif_name, :filter => Setting[:ignored_interface_identifiers]}))
|
14
14
|
end
|
15
15
|
|
16
|
+
# ignores 'ignore_puppet_facts_for_provisioning' setting
|
16
17
|
def parse_interfaces?
|
17
|
-
true
|
18
|
+
true
|
19
|
+
end
|
20
|
+
|
21
|
+
# ignores 'update_subnets_from_facts' setting
|
22
|
+
def get_facts_for_interface(interface)
|
23
|
+
super.merge(keep_subnet: true)
|
18
24
|
end
|
19
25
|
end
|
20
26
|
end
|
@@ -0,0 +1,104 @@
|
|
1
|
+
module ForemanDiscovery
|
2
|
+
class LldpNeighbors
|
3
|
+
def set(iface, neighbor)
|
4
|
+
interfaces[iface] = neighbor
|
5
|
+
end
|
6
|
+
|
7
|
+
def get(iface)
|
8
|
+
interfaces[iface]
|
9
|
+
end
|
10
|
+
|
11
|
+
def list_by_pvid
|
12
|
+
list = {}
|
13
|
+
interfaces.each do |name, neighbor|
|
14
|
+
next unless neighbor.has_key? 'PVID'
|
15
|
+
vlan = neighbor['PVID']
|
16
|
+
list[vlan] = [] unless list.has_key? vlan
|
17
|
+
list[vlan].push name
|
18
|
+
end
|
19
|
+
|
20
|
+
list.each { |_, interfaces| interfaces.sort!}
|
21
|
+
list
|
22
|
+
end
|
23
|
+
|
24
|
+
def interfaces
|
25
|
+
@interfaces ||= {}
|
26
|
+
end
|
27
|
+
|
28
|
+
def get_neighbors_by_interface(ifname)
|
29
|
+
return nil unless interfaces.has_key? ifname
|
30
|
+
|
31
|
+
interface = get(ifname)
|
32
|
+
return nil unless interface.has_key? 'PVID'
|
33
|
+
|
34
|
+
list = []
|
35
|
+
interfaces.each do |name, neighbor|
|
36
|
+
next unless neighbor.has_key? 'PVID'
|
37
|
+
list.push name if neighbor['PVID'] == interface['PVID']
|
38
|
+
end
|
39
|
+
|
40
|
+
return if list.size < 2
|
41
|
+
list.sort
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.eventually_make_bond(host)
|
45
|
+
primary = host.primary_interface
|
46
|
+
return if primary.nil?
|
47
|
+
return if primary.type == 'Nic::Bond'
|
48
|
+
|
49
|
+
neighbors = ::ForemanDiscovery::LldpNeighbors
|
50
|
+
.from_facts(host.facts_hash)
|
51
|
+
.get_neighbors_by_interface(primary.identifier)
|
52
|
+
|
53
|
+
return if neighbors.nil?
|
54
|
+
|
55
|
+
ip = primary.ip
|
56
|
+
mac = primary.mac
|
57
|
+
name = primary.name
|
58
|
+
primary.update(
|
59
|
+
:primary => false,
|
60
|
+
:provision => false,
|
61
|
+
:managed => false,
|
62
|
+
:name => nil,
|
63
|
+
:ip => nil
|
64
|
+
)
|
65
|
+
|
66
|
+
bond = Nic::Bond.create(
|
67
|
+
:identifier => "bond0",
|
68
|
+
:attached_devices => neighbors,
|
69
|
+
:primary => true,
|
70
|
+
:provision => true,
|
71
|
+
:name => name,
|
72
|
+
:ip => ip,
|
73
|
+
:mac => mac,
|
74
|
+
:host => host
|
75
|
+
)
|
76
|
+
|
77
|
+
bond.save!
|
78
|
+
host.interfaces.push(bond)
|
79
|
+
end
|
80
|
+
|
81
|
+
def self.from_facts(facts)
|
82
|
+
neighbors = self.new
|
83
|
+
interfaces = {}
|
84
|
+
facts.keys.each do |key|
|
85
|
+
key_s = key.to_s
|
86
|
+
next unless key_s.start_with? 'lldp_neighbor_'
|
87
|
+
|
88
|
+
property, iface = key_s[14..-1].split('_', 2)
|
89
|
+
if property == 'mngAddr'
|
90
|
+
protocol, iface = iface.split('_', 2)
|
91
|
+
property += '_' + protocol
|
92
|
+
end
|
93
|
+
interfaces[iface] = {} unless interfaces.has_key? iface
|
94
|
+
interfaces[iface][property] = facts[key]
|
95
|
+
end
|
96
|
+
|
97
|
+
interfaces.each do |name, properties|
|
98
|
+
neighbors.set name, properties
|
99
|
+
end
|
100
|
+
|
101
|
+
neighbors
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
@@ -0,0 +1,217 @@
|
|
1
|
+
{
|
2
|
+
"lib": "/usr/share/fdi/facts:/opt/extension/facts",
|
3
|
+
"selinux": false,
|
4
|
+
"kernelversion": "3.10.0",
|
5
|
+
"memorysize": "2.39 GB",
|
6
|
+
"memoryfree": "2.18 GB",
|
7
|
+
"swapsize": "0.00 MB",
|
8
|
+
"swapfree": "0.00 MB",
|
9
|
+
"swapsize_mb": "0.00",
|
10
|
+
"swapfree_mb": "0.00",
|
11
|
+
"memorysize_mb": "2443.68",
|
12
|
+
"memoryfree_mb": "2228.96",
|
13
|
+
"kernel": "Linux",
|
14
|
+
"hardwareisa": "x86_64",
|
15
|
+
"interfaces": "eth0,eth0_2,lo",
|
16
|
+
"macaddress_eth0": "52:54:00:00:00:99",
|
17
|
+
"mtu_eth0": 1500,
|
18
|
+
"macaddress_eth0_2": "52:54:00:00:00:99",
|
19
|
+
"mtu_eth0_2": 1500,
|
20
|
+
"ipaddress_lo": "127.0.0.1",
|
21
|
+
"ipaddress": "192.168.99.56",
|
22
|
+
"ipaddress_eth0_2": "192.168.99.56",
|
23
|
+
"netmask_lo": "255.0.0.0",
|
24
|
+
"netmask_eth0_2": "255.255.255.0",
|
25
|
+
"mtu_lo": 65536,
|
26
|
+
"uptime": "0:23 hours",
|
27
|
+
"processors": {
|
28
|
+
"models": [
|
29
|
+
"AMD Opteron 63xx class CPU",
|
30
|
+
"AMD Opteron 63xx class CPU",
|
31
|
+
"AMD Opteron 63xx class CPU",
|
32
|
+
"AMD Opteron 63xx class CPU",
|
33
|
+
"AMD Opteron 63xx class CPU",
|
34
|
+
"AMD Opteron 63xx class CPU"
|
35
|
+
],
|
36
|
+
"count": 6,
|
37
|
+
"physicalcount": 6
|
38
|
+
},
|
39
|
+
"architecture": "x86_64",
|
40
|
+
"hardwaremodel": "x86_64",
|
41
|
+
"operatingsystem": "CentOS",
|
42
|
+
"os": {
|
43
|
+
"name": "CentOS",
|
44
|
+
"family": "RedHat",
|
45
|
+
"release": {
|
46
|
+
"major": "7",
|
47
|
+
"minor": "4",
|
48
|
+
"full": "7.4.1708"
|
49
|
+
}
|
50
|
+
},
|
51
|
+
"processor0": "AMD Opteron 63xx class CPU",
|
52
|
+
"processor1": "AMD Opteron 63xx class CPU",
|
53
|
+
"processor2": "AMD Opteron 63xx class CPU",
|
54
|
+
"processor3": "AMD Opteron 63xx class CPU",
|
55
|
+
"processor4": "AMD Opteron 63xx class CPU",
|
56
|
+
"processor5": "AMD Opteron 63xx class CPU",
|
57
|
+
"processorcount": 6,
|
58
|
+
"virtual": "kvm",
|
59
|
+
"is_virtual": true,
|
60
|
+
"vlans": "2",
|
61
|
+
"filesystems": "ext2,ext3,ext4,iso9660,squashfs",
|
62
|
+
"facterversion": "2.4.1",
|
63
|
+
"fqdn": "fdi",
|
64
|
+
"macaddress": "52:54:00:00:00:99",
|
65
|
+
"partitions": {
|
66
|
+
"vda1": {
|
67
|
+
"uuid": "86da4843-d401-45c7-95ae-f71ac60ce089",
|
68
|
+
"size": "14678016",
|
69
|
+
"filesystem": "ext4"
|
70
|
+
}
|
71
|
+
},
|
72
|
+
"kernelmajversion": "3.10",
|
73
|
+
"osfamily": "RedHat",
|
74
|
+
"path": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/extension/bin:/root/bin",
|
75
|
+
"uptime_days": 0,
|
76
|
+
"netmask": "255.255.255.0",
|
77
|
+
"id": "root",
|
78
|
+
"uniqueid": "007f0200",
|
79
|
+
"network_lo": "127.0.0.0",
|
80
|
+
"network_eth0_2": "192.168.99.0",
|
81
|
+
"bios_vendor": "SeaBIOS",
|
82
|
+
"bios_version": "1.10.2-2.fc27",
|
83
|
+
"bios_release_date": "04/01/2014",
|
84
|
+
"manufacturer": "QEMU",
|
85
|
+
"productname": "Standard PC (i440FX + PIIX, 1996)",
|
86
|
+
"serialnumber": "Not Specified",
|
87
|
+
"uuid": "5F567C25-92DF-4D69-BF7B-98255E9A18D7",
|
88
|
+
"type": "Other",
|
89
|
+
"blockdevice_sr0_size": 301989888,
|
90
|
+
"blockdevice_sr0_vendor": "QEMU",
|
91
|
+
"blockdevice_sr0_model": "QEMU DVD-ROM",
|
92
|
+
"blockdevice_vda_size": 7516192768,
|
93
|
+
"blockdevice_vda_vendor": "0x1af4",
|
94
|
+
"blockdevices": "sr0,vda",
|
95
|
+
"operatingsystemrelease": "7.4.1708",
|
96
|
+
"uptime_seconds": 1426,
|
97
|
+
"rubyversion": "2.0.0",
|
98
|
+
"uptime_hours": 0,
|
99
|
+
"ps": "ps -ef",
|
100
|
+
"rubysitedir": "/usr/local/share/ruby/site_ruby/",
|
101
|
+
"operatingsystemmajrelease": "7",
|
102
|
+
"system_uptime": {
|
103
|
+
"seconds": 1426,
|
104
|
+
"hours": 0,
|
105
|
+
"days": 0,
|
106
|
+
"uptime": "0:23 hours"
|
107
|
+
},
|
108
|
+
"gid": "root",
|
109
|
+
"sshrsakey": "AAAAB3NzaC1yc2EAAAADAQABAAABAQC6wMNWRHdg9EkNyhz69xO7BEw173aAGS+h0siUeAZV1vBtUBxmMKUip03YKuOJNYyuFFM1Xoi3AvhuNau97L8lKLDwuafu/2nfb8ov6wWPpG84qSMul0Bk7ZQ2G+o6pgkKY9mQwLn65S5Cbi4u6xMRtOrv+2J6QoSXq9mIUupEKQqbrTCboIKiS6qwFkelWF2SL3Yc87dhedRsqdscgOemaBj8o3yTNswQJO9XnTT1JeSD9zj2uTNTQT2u17z3yAPmBHzBgBY2VbYj5BQfQ9AKGhxj/KsSlbCZXBksGLnMoAZl/NKnxy79fHM3pw2PPyGLsVJVEC5xJtDgTizkzSMp",
|
110
|
+
"sshfp_rsa": "SSHFP 1 1 0f09ec3c15a69053a0ac08ea419bc4647f3e7760\nSSHFP 1 2 84ba4b8589c52f74016f98d6fadafaa232f3c1b823e17d1668f88d19716c5318",
|
111
|
+
"sshecdsakey": "AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLyHOqoT/QLRlOuhWpxI5eHSyWbiU7y0KmZFKVvQnajFQWvyPLyy1C3URTCozIGnJJmJiX6CgeOBSE3dQM1Yuos=",
|
112
|
+
"sshfp_ecdsa": "SSHFP 3 1 e409cb6d894d92b61f8983a1ff24fc244b0ff3e7\nSSHFP 3 2 a01e6f5f4c7d402b62d01f3af2ec594c07054c5114c004cd5e6bbd76e1bacc01",
|
113
|
+
"sshed25519key": "AAAAC3NzaC1lZDI1NTE5AAAAIGOF1jRpvPpJL92iNPUwLAZYH8EC7U8EXHggVaqj09Mp",
|
114
|
+
"sshfp_ed25519": "SSHFP 4 1 65e5525827acebb42e15ed3bbe0143d87bc07155\nSSHFP 4 2 28281c896ac18da6dd272dd239a82a03eb549a813e228cd6b0f347bda4cf01a3",
|
115
|
+
"kernelrelease": "3.10.0-693.11.1.el7.x86_64",
|
116
|
+
"rubyplatform": "x86_64-linux",
|
117
|
+
"hostname": "fdi",
|
118
|
+
"timezone": "UTC",
|
119
|
+
"physicalprocessorcount": 6,
|
120
|
+
"discovery_version": "3.4.2",
|
121
|
+
"discovery_release": "20180102.1",
|
122
|
+
"discovery_bootif": "52:54:00:00:00:99",
|
123
|
+
"link_eth0": "true",
|
124
|
+
"link_eth0_2": "true",
|
125
|
+
"link_lo": "true",
|
126
|
+
"nmprimary_connection_id": "primary",
|
127
|
+
"nmprimary_connection_uuid": "12ce9b2c-f53c-11e7-99bc-525400000099",
|
128
|
+
"nmprimary_connection_stable-id": "",
|
129
|
+
"nmprimary_connection_interface-name": "",
|
130
|
+
"nmprimary_connection_type": "vlan",
|
131
|
+
"nmprimary_connection_autoconnect": "yes",
|
132
|
+
"nmprimary_connection_autoconnect-priority": "1",
|
133
|
+
"nmprimary_connection_autoconnect-retries": "-1",
|
134
|
+
"nmprimary_connection_timestamp": "0",
|
135
|
+
"nmprimary_connection_read-only": "no",
|
136
|
+
"nmprimary_connection_permissions": "",
|
137
|
+
"nmprimary_connection_zone": "",
|
138
|
+
"nmprimary_connection_master": "",
|
139
|
+
"nmprimary_connection_slave-type": "",
|
140
|
+
"nmprimary_connection_autoconnect-slaves": "-1",
|
141
|
+
"nmprimary_connection_secondaries": "",
|
142
|
+
"nmprimary_connection_gateway-ping-timeout": "0",
|
143
|
+
"nmprimary_connection_metered": "unknown",
|
144
|
+
"nmprimary_connection_lldp": "default",
|
145
|
+
"nmprimary_802-3-ethernet_port": "",
|
146
|
+
"nmprimary_802-3-ethernet_speed": "0",
|
147
|
+
"nmprimary_802-3-ethernet_duplex": "",
|
148
|
+
"nmprimary_802-3-ethernet_auto-negotiate": "no",
|
149
|
+
"nmprimary_802-3-ethernet_mac-address": "52:54:00:00:00:99",
|
150
|
+
"nmprimary_802-3-ethernet_cloned-mac-address": "",
|
151
|
+
"nmprimary_802-3-ethernet_generate-mac-address-mask": "",
|
152
|
+
"nmprimary_802-3-ethernet_mac-address-blacklist": "",
|
153
|
+
"nmprimary_802-3-ethernet_mtu": "auto",
|
154
|
+
"nmprimary_802-3-ethernet_s390-subchannels": "",
|
155
|
+
"nmprimary_802-3-ethernet_s390-nettype": "",
|
156
|
+
"nmprimary_802-3-ethernet_s390-options": "",
|
157
|
+
"nmprimary_802-3-ethernet_wake-on-lan": "default",
|
158
|
+
"nmprimary_802-3-ethernet_wake-on-lan-password": "",
|
159
|
+
"nmprimary_ipv4_method": "auto",
|
160
|
+
"nmprimary_ipv4_dns": "",
|
161
|
+
"nmprimary_ipv4_dns-search": "",
|
162
|
+
"nmprimary_ipv4_dns-options": "",
|
163
|
+
"nmprimary_ipv4_dns-priority": "0",
|
164
|
+
"nmprimary_ipv4_addresses": "",
|
165
|
+
"nmprimary_ipv4_gateway": "",
|
166
|
+
"nmprimary_ipv4_routes": "",
|
167
|
+
"nmprimary_ipv4_route-metric": "-1",
|
168
|
+
"nmprimary_ipv4_ignore-auto-routes": "no",
|
169
|
+
"nmprimary_ipv4_ignore-auto-dns": "no",
|
170
|
+
"nmprimary_ipv4_dhcp-client-id": "",
|
171
|
+
"nmprimary_ipv4_dhcp-timeout": "300",
|
172
|
+
"nmprimary_ipv4_dhcp-send-hostname": "no",
|
173
|
+
"nmprimary_ipv4_dhcp-hostname": "",
|
174
|
+
"nmprimary_ipv4_dhcp-fqdn": "",
|
175
|
+
"nmprimary_ipv4_never-default": "no",
|
176
|
+
"nmprimary_ipv4_may-fail": "yes",
|
177
|
+
"nmprimary_ipv4_dad-timeout": "-1",
|
178
|
+
"nmprimary_ipv6_method": "ignore",
|
179
|
+
"nmprimary_ipv6_dns": "",
|
180
|
+
"nmprimary_ipv6_dns-search": "",
|
181
|
+
"nmprimary_ipv6_dns-options": "",
|
182
|
+
"nmprimary_ipv6_dns-priority": "0",
|
183
|
+
"nmprimary_ipv6_addresses": "",
|
184
|
+
"nmprimary_ipv6_gateway": "",
|
185
|
+
"nmprimary_ipv6_routes": "",
|
186
|
+
"nmprimary_ipv6_route-metric": "-1",
|
187
|
+
"nmprimary_ipv6_ignore-auto-routes": "no",
|
188
|
+
"nmprimary_ipv6_ignore-auto-dns": "no",
|
189
|
+
"nmprimary_ipv6_never-default": "no",
|
190
|
+
"nmprimary_ipv6_may-fail": "yes",
|
191
|
+
"nmprimary_ipv6_ip6-privacy": "-1",
|
192
|
+
"nmprimary_ipv6_addr-gen-mode": "eui64",
|
193
|
+
"nmprimary_ipv6_dhcp-send-hostname": "yes",
|
194
|
+
"nmprimary_ipv6_dhcp-hostname": "",
|
195
|
+
"nmprimary_ipv6_token": "",
|
196
|
+
"nmprimary_vlan_parent": "",
|
197
|
+
"nmprimary_vlan_id": "2",
|
198
|
+
"nmprimary_vlan_flags": "1",
|
199
|
+
"nmprimary_vlan_ingress-priority-map": "",
|
200
|
+
"nmprimary_vlan_egress-priority-map": "",
|
201
|
+
"nmprimary_proxy_method": "none",
|
202
|
+
"nmprimary_proxy_browser-only": "no",
|
203
|
+
"nmprimary_proxy_pac-url": "",
|
204
|
+
"nmprimary_proxy_pac-script": "",
|
205
|
+
"nmprimary_general_name": "primary",
|
206
|
+
"nmprimary_general_uuid": "12ce9b2c-f53c-11e7-99bc-525400000099",
|
207
|
+
"nmprimary_general_devices": "eth0.2",
|
208
|
+
"nmprimary_general_state": "activating",
|
209
|
+
"nmprimary_general_default": "no",
|
210
|
+
"nmprimary_general_default6": "no",
|
211
|
+
"nmprimary_general_vpn": "no",
|
212
|
+
"nmprimary_general_zone": "",
|
213
|
+
"nmprimary_general_dbus-path": "/org/freedesktop/NetworkManager/ActiveConnection/3",
|
214
|
+
"nmprimary_general_con-path": "/org/freedesktop/NetworkManager/Settings/2",
|
215
|
+
"nmprimary_general_spec-object": "",
|
216
|
+
"nmprimary_general_master-path": ""
|
217
|
+
}
|