Skip to content

Commit 6d68028

Browse files
committed
Interface name added for ip and mac addr
1 parent 1774584 commit 6d68028

File tree

3 files changed

+73
-43
lines changed

3 files changed

+73
-43
lines changed

internal/metadataproviders/system/metadata.go

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -70,15 +70,26 @@ type Provider interface {
7070
HostArch() (string, error)
7171

7272
// HostIPs returns the host's IP interfaces
73-
HostIPs() ([]net.IP, error)
73+
HostIPs() ([]InterfaceIP, error)
7474

7575
// HostMACs returns the host's MAC addresses
76-
HostMACs() ([]net.HardwareAddr, error)
76+
HostMACs() ([]InterfaceMAC, error)
7777

7878
// CPUInfo returns the host's CPU info
7979
CPUInfo(ctx context.Context) ([]cpu.InfoStat, error)
8080
}
8181

82+
type InterfaceIP struct {
83+
IP net.IP
84+
InterfaceName string
85+
}
86+
87+
// Define a new struct for interface MACs
88+
type InterfaceMAC struct {
89+
MAC net.HardwareAddr
90+
InterfaceName string
91+
}
92+
8293
type systemMetadataProvider struct {
8394
nameInfoProvider
8495
newResource func(context.Context, ...resource.Option) (*resource.Resource, error)
@@ -182,7 +193,7 @@ func (systemMetadataProvider) HostArch() (string, error) {
182193
return internal.GOARCHtoHostArch(runtime.GOARCH), nil
183194
}
184195

185-
func (p systemMetadataProvider) HostIPs() (ips []net.IP, err error) {
196+
func (p systemMetadataProvider) HostIPs() (interfaceIPs []InterfaceIP, err error) {
186197
ifaces, err := net.Interfaces()
187198
if err != nil {
188199
return nil, err
@@ -209,13 +220,16 @@ func (p systemMetadataProvider) HostIPs() (ips []net.IP, err error) {
209220
continue
210221
}
211222

212-
ips = append(ips, ip)
223+
interfaceIPs = append(interfaceIPs, InterfaceIP{
224+
IP: ip,
225+
InterfaceName: iface.Name,
226+
})
213227
}
214228
}
215-
return ips, err
229+
return interfaceIPs, err
216230
}
217231

218-
func (p systemMetadataProvider) HostMACs() (macs []net.HardwareAddr, err error) {
232+
func (p systemMetadataProvider) HostMACs() (interfaceMACs []InterfaceMAC, err error) {
219233
ifaces, err := net.Interfaces()
220234
if err != nil {
221235
return nil, err
@@ -226,10 +240,12 @@ func (p systemMetadataProvider) HostMACs() (macs []net.HardwareAddr, err error)
226240
if iface.Flags&net.FlagUp == 0 || iface.Flags&net.FlagLoopback != 0 {
227241
continue
228242
}
229-
230-
macs = append(macs, iface.HardwareAddr)
243+
interfaceMACs = append(interfaceMACs, InterfaceMAC{
244+
MAC: iface.HardwareAddr,
245+
InterfaceName: iface.Name,
246+
})
231247
}
232-
return macs, err
248+
return interfaceMACs, err
233249
}
234250

235251
func (p systemMetadataProvider) CPUInfo(ctx context.Context) ([]cpu.InfoStat, error) {

processor/resourcedetectionprocessor/internal/system/system.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@ func (d *Detector) Detect(ctx context.Context) (resource pcommon.Resource, schem
8787
if err != nil {
8888
return pcommon.NewResource(), "", fmt.Errorf("failed getting OS type: %w", err)
8989
}
90-
9190
osVersion, err := d.provider.OSVersion()
9291
if err != nil {
9392
return pcommon.NewResource(), "", fmt.Errorf("failed getting OS version: %w", err)
@@ -104,9 +103,10 @@ func (d *Detector) Detect(ctx context.Context) (resource pcommon.Resource, schem
104103
if errIPs != nil {
105104
return pcommon.NewResource(), "", fmt.Errorf("failed getting host IP addresses: %w", errIPs)
106105
}
107-
for _, ip := range hostIPs {
108-
hostIPAttribute = append(hostIPAttribute, ip.String())
109-
}
106+
for _, result := range hostIPs {
107+
attr := fmt.Sprintf("Interface: %s, IP: %s", result.InterfaceName, result.IP.String())
108+
hostIPAttribute = append(hostIPAttribute, attr)
109+
}
110110
}
111111

112112
var hostMACAttribute []any
@@ -115,8 +115,9 @@ func (d *Detector) Detect(ctx context.Context) (resource pcommon.Resource, schem
115115
if errMACs != nil {
116116
return pcommon.NewResource(), "", fmt.Errorf("failed to get host MAC addresses: %w", errMACs)
117117
}
118-
for _, mac := range hostMACs {
119-
hostMACAttribute = append(hostMACAttribute, toIEEERA(mac))
118+
for _, result := range hostMACs {
119+
attr := fmt.Sprintf("Interface: %s, MAC: %s", result.InterfaceName, toIEEERA(result.MAC))
120+
hostMACAttribute = append(hostMACAttribute, attr)
120121
}
121122
}
122123

processor/resourcedetectionprocessor/internal/system/system_test.go

Lines changed: 41 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package system
66
import (
77
"context"
88
"errors"
9+
"fmt"
910
"net"
1011
"testing"
1112

@@ -73,14 +74,14 @@ func (m *mockMetadata) ReverseLookupHost() (string, error) {
7374
return args.String(0), args.Error(1)
7475
}
7576

76-
func (m *mockMetadata) HostIPs() ([]net.IP, error) {
77+
func (m *mockMetadata) HostIPs() ([]system.InterfaceIP, error) {
7778
args := m.MethodCalled("HostIPs")
78-
return args.Get(0).([]net.IP), args.Error(1)
79+
return args.Get(0).([]system.InterfaceIP), args.Error(1)
7980
}
8081

81-
func (m *mockMetadata) HostMACs() ([]net.HardwareAddr, error) {
82+
func (m *mockMetadata) HostMACs() ([]system.InterfaceMAC, error) {
8283
args := m.MethodCalled("HostMACs")
83-
return args.Get(0).([]net.HardwareAddr), args.Error(1)
84+
return args.Get(0).([]system.InterfaceMAC), args.Error(1)
8485
}
8586

8687
func (m *mockMetadata) CPUInfo(_ context.Context) ([]cpu.InfoStat, error) {
@@ -89,11 +90,23 @@ func (m *mockMetadata) CPUInfo(_ context.Context) ([]cpu.InfoStat, error) {
8990
}
9091

9192
var (
92-
testIPsAttribute = []any{"192.168.1.140", "fe80::abc2:4a28:737a:609e"}
93-
testIPsAddresses = []net.IP{net.ParseIP(testIPsAttribute[0].(string)), net.ParseIP(testIPsAttribute[1].(string))}
93+
testIPs = []system.InterfaceIP{
94+
{IP: net.ParseIP("192.168.1.140"), InterfaceName: "eth0"},
95+
{IP: net.ParseIP("fe80::abc2:4a28:737a:609e"), InterfaceName: "eth1"},
96+
}
97+
testIPsAttribute = []any{
98+
fmt.Sprintf("Interface: %s, IP: %s", "eth0", "192.168.1.140"),
99+
fmt.Sprintf("Interface: %s, IP: %s", "eth1", "fe80::abc2:4a28:737a:609e"),
100+
}
94101

95-
testMACsAttribute = []any{"00-00-00-00-00-01", "DE-AD-BE-EF-00-00"}
96-
testMACsAddresses = []net.HardwareAddr{{0x00, 0x00, 0x00, 0x00, 0x00, 0x01}, {0xDE, 0xAD, 0xBE, 0xEF, 0x00, 0x00}}
102+
testMACs = []system.InterfaceMAC{
103+
{MAC: net.HardwareAddr{0x00, 0x00, 0x00, 0x00, 0x00, 0x01}, InterfaceName: "eth0"},
104+
{MAC: net.HardwareAddr{0xDE, 0xAD, 0xBE, 0xEF, 0x00, 0x00}, InterfaceName: "eth1"},
105+
}
106+
testMACsAttribute = []any{
107+
fmt.Sprintf("Interface: %s, MAC: %s", "eth0", "00-00-00-00-00-01"),
108+
fmt.Sprintf("Interface: %s, MAC: %s", "eth1", "DE-AD-BE-EF-00-00"),
109+
}
97110
)
98111

99112
func TestNewDetector(t *testing.T) {
@@ -129,12 +142,12 @@ func TestToIEEERA(t *testing.T) {
129142
expected string
130143
}{
131144
{
132-
addr: testMACsAddresses[0],
133-
expected: testMACsAttribute[0].(string),
145+
addr: net.HardwareAddr{0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
146+
expected: "00-00-00-00-00-01",
134147
},
135148
{
136-
addr: testMACsAddresses[1],
137-
expected: testMACsAttribute[1].(string),
149+
addr: net.HardwareAddr{0xDE, 0xAD, 0xBE, 0xEF, 0x00, 0x00},
150+
expected: "DE-AD-BE-EF-00-00",
138151
},
139152
}
140153

@@ -164,8 +177,8 @@ func TestDetectFQDNAvailable(t *testing.T) {
164177
md.On("OSVersion").Return("22.04.2 LTS (Jammy Jellyfish)", nil)
165178
md.On("HostID").Return("2", nil)
166179
md.On("HostArch").Return("amd64", nil)
167-
md.On("HostIPs").Return(testIPsAddresses, nil)
168-
md.On("HostMACs").Return(testMACsAddresses, nil)
180+
md.On("HostIPs").Return(testIPs, nil)
181+
md.On("HostMACs").Return(testMACs, nil)
169182

170183
detector := newTestDetector(md, []string{"dns"}, allEnabledConfig())
171184
res, schemaURL, err := detector.Detect(context.Background())
@@ -222,8 +235,8 @@ func TestEnableHostID(t *testing.T) {
222235
mdHostname.On("OSVersion").Return("22.04.2 LTS (Jammy Jellyfish)", nil)
223236
mdHostname.On("HostID").Return("3", nil)
224237
mdHostname.On("HostArch").Return("amd64", nil)
225-
mdHostname.On("HostIPs").Return(testIPsAddresses, nil)
226-
mdHostname.On("HostMACs").Return(testMACsAddresses, nil)
238+
mdHostname.On("HostIPs").Return(testIPs, nil)
239+
mdHostname.On("HostMACs").Return(testMACs, nil)
227240

228241
detector := newTestDetector(mdHostname, []string{"dns", "os"}, allEnabledConfig())
229242
res, schemaURL, err := detector.Detect(context.Background())
@@ -253,8 +266,8 @@ func TestUseHostname(t *testing.T) {
253266
mdHostname.On("OSVersion").Return("22.04.2 LTS (Jammy Jellyfish)", nil)
254267
mdHostname.On("HostID").Return("1", nil)
255268
mdHostname.On("HostArch").Return("amd64", nil)
256-
mdHostname.On("HostIPs").Return(testIPsAddresses, nil)
257-
mdHostname.On("HostMACs").Return(testMACsAddresses, nil)
269+
mdHostname.On("HostIPs").Return(testIPs, nil)
270+
mdHostname.On("HostMACs").Return(testMACs, nil)
258271

259272
detector := newTestDetector(mdHostname, []string{"os"}, allEnabledConfig())
260273
res, schemaURL, err := detector.Detect(context.Background())
@@ -286,8 +299,8 @@ func TestDetectError(t *testing.T) {
286299
mdFQDN.On("Hostname").Return("", errors.New("err"))
287300
mdFQDN.On("HostID").Return("", errors.New("err"))
288301
mdFQDN.On("HostArch").Return("amd64", nil)
289-
mdFQDN.On("HostIPs").Return(testIPsAddresses, nil)
290-
mdFQDN.On("HostMACs").Return(testMACsAddresses, nil)
302+
mdFQDN.On("HostIPs").Return(testIPs, nil)
303+
mdFQDN.On("HostMACs").Return(testMACs, nil)
291304

292305
detector := newTestDetector(mdFQDN, []string{"dns"}, allEnabledConfig())
293306
res, schemaURL, err := detector.Detect(context.Background())
@@ -303,8 +316,8 @@ func TestDetectError(t *testing.T) {
303316
mdHostname.On("Hostname").Return("", errors.New("err"))
304317
mdHostname.On("HostID").Return("", errors.New("err"))
305318
mdHostname.On("HostArch").Return("amd64", nil)
306-
mdHostname.On("HostIPs").Return(testIPsAddresses, nil)
307-
mdHostname.On("HostMACs").Return(testMACsAddresses, nil)
319+
mdHostname.On("HostIPs").Return(testIPs, nil)
320+
mdHostname.On("HostMACs").Return(testMACs, nil)
308321

309322
detector = newTestDetector(mdHostname, []string{"os"}, allEnabledConfig())
310323
res, schemaURL, err = detector.Detect(context.Background())
@@ -320,7 +333,7 @@ func TestDetectError(t *testing.T) {
320333
mdOSType.On("OSVersion").Return("", "22.04.2 LTS (Jammy Jellyfish)")
321334
mdOSType.On("HostID").Return("1", nil)
322335
mdOSType.On("HostArch").Return("amd64", nil)
323-
mdOSType.On("HostIPs").Return(testIPsAddresses, nil)
336+
mdOSType.On("HostIPs").Return(testIPs, nil)
324337

325338
detector = newTestDetector(mdOSType, []string{"os"}, allEnabledConfig())
326339
res, schemaURL, err = detector.Detect(context.Background())
@@ -336,7 +349,7 @@ func TestDetectError(t *testing.T) {
336349
mdOSVersion.On("OSVersion").Return("", errors.New("err"))
337350
mdOSVersion.On("HostID").Return("1", nil)
338351
mdOSVersion.On("HostArch").Return("amd64", nil)
339-
mdOSVersion.On("HostIPs").Return(testIPsAddresses, nil)
352+
mdOSVersion.On("HostIPs").Return(testIPs, nil)
340353

341354
detector = newTestDetector(mdOSVersion, []string{"os"}, allEnabledConfig())
342355
res, schemaURL, err = detector.Detect(context.Background())
@@ -352,8 +365,8 @@ func TestDetectError(t *testing.T) {
352365
mdHostID.On("OSVersion").Return("22.04.2 LTS (Jammy Jellyfish)", nil)
353366
mdHostID.On("HostID").Return("", errors.New("err"))
354367
mdHostID.On("HostArch").Return("arm64", nil)
355-
mdHostID.On("HostIPs").Return(testIPsAddresses, nil)
356-
mdHostID.On("HostMACs").Return(testMACsAddresses, nil)
368+
mdHostID.On("HostIPs").Return(testIPs, nil)
369+
mdHostID.On("HostMACs").Return(testMACs, nil)
357370

358371
detector = newTestDetector(mdHostID, []string{"os"}, allEnabledConfig())
359372
res, schemaURL, err = detector.Detect(context.Background())
@@ -378,8 +391,8 @@ func TestDetectCPUInfo(t *testing.T) {
378391
md.On("OSVersion").Return("22.04.2 LTS (Jammy Jellyfish)", nil)
379392
md.On("HostID").Return("2", nil)
380393
md.On("HostArch").Return("amd64", nil)
381-
md.On("HostIPs").Return(testIPsAddresses, nil)
382-
md.On("HostMACs").Return(testMACsAddresses, nil)
394+
md.On("HostIPs").Return(testIPs, nil)
395+
md.On("HostMACs").Return(testMACs, nil)
383396
md.On("CPUInfo").Return([]cpu.InfoStat{{Family: "some"}}, nil)
384397

385398
cfg := allEnabledConfig()

0 commit comments

Comments
 (0)