Skip to content

Commit 248df00

Browse files
authored
Merge pull request #47 from msherif1234/ovs_monitor
NETOBSERV-1640: add ovs monitoring feature to cli repo
2 parents ce58170 + 3d3a9cf commit 248df00

File tree

1,454 files changed

+75513
-36793
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,454 files changed

+75513
-36793
lines changed

.github/workflows/pull_request_e2e.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,11 @@ jobs:
2929
- name: run end-to-end tests
3030
run: make tests-e2e
3131
- name: upload e2e test logs
32-
uses: actions/upload-artifact@v3
32+
uses: actions/upload-artifact@v4
3333
if: always()
3434
with:
3535
name: e2e-logs
36-
path: e2e-logs
36+
path: |
37+
e2e-logs
38+
e2e/commands
39+
e2e/output

cmd/flow_capture.go

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,13 @@ var (
3535
regexes = []string{}
3636
lastFlows = []config.GenericMap{}
3737

38-
rawDisplay = "Raw"
39-
standardDisplay = "Standard"
40-
pktDropDisplay = "PktDrop"
41-
dnsDisplay = "DNS"
42-
rttDisplay = "RTT"
43-
display = []string{pktDropDisplay, dnsDisplay, rttDisplay}
38+
rawDisplay = "Raw"
39+
standardDisplay = "Standard"
40+
pktDropDisplay = "PktDrop"
41+
dnsDisplay = "DNS"
42+
rttDisplay = "RTT"
43+
networkEventsDisplay = "NetworkEvents"
44+
display = []string{pktDropDisplay, dnsDisplay, rttDisplay, networkEventsDisplay}
4445

4546
noEnrichment = "None"
4647
zoneEnrichment = "Zone"
@@ -196,7 +197,7 @@ func toSize(fieldName string) int {
196197
return 40
197198
case "DropState":
198199
return 20
199-
case "Time", "Interfaces", "SrcZone", "DstZone":
200+
case "Time", "Interfaces", "SrcZone", "DstZone", "NetworkEvents":
200201
return 16
201202
case "DropBytes", "DropPackets", "SrcOwnerType", "DstOwnerType":
202203
return 12
@@ -313,6 +314,11 @@ func updateTable() {
313314
"RTT",
314315
)
315316
}
317+
if slices.Contains(display, networkEventsDisplay) {
318+
cols = append(cols,
319+
"NetworkEvents",
320+
)
321+
}
316322
} else {
317323
cols = append(cols,
318324
"Dir",
@@ -389,7 +395,8 @@ func scanner() {
389395
flowsToShow = flowsToShow - 1
390396
}
391397
} else if key == keyboard.KeyArrowRight {
392-
if slices.Contains(display, pktDropDisplay) && slices.Contains(display, dnsDisplay) && slices.Contains(display, rttDisplay) {
398+
if slices.Contains(display, pktDropDisplay) && slices.Contains(display, dnsDisplay) &&
399+
slices.Contains(display, rttDisplay) && slices.Contains(display, networkEventsDisplay) {
393400
display = []string{rawDisplay}
394401
} else if slices.Contains(display, rawDisplay) {
395402
display = []string{standardDisplay}
@@ -398,23 +405,30 @@ func scanner() {
398405
} else if slices.Contains(display, pktDropDisplay) {
399406
display = []string{dnsDisplay}
400407
} else if slices.Contains(display, dnsDisplay) {
408+
display = []string{networkEventsDisplay}
409+
} else if slices.Contains(display, networkEventsDisplay) {
401410
display = []string{rttDisplay}
411+
} else if slices.Contains(display, rttDisplay) {
412+
display = []string{rawDisplay}
402413
} else {
403-
display = []string{pktDropDisplay, dnsDisplay, rttDisplay}
414+
display = []string{pktDropDisplay, dnsDisplay, rttDisplay, networkEventsDisplay}
404415
}
405416
} else if key == keyboard.KeyArrowLeft {
406-
if slices.Contains(display, pktDropDisplay) && slices.Contains(display, dnsDisplay) && slices.Contains(display, rttDisplay) {
417+
if slices.Contains(display, pktDropDisplay) && slices.Contains(display, dnsDisplay) && slices.Contains(display, rttDisplay) &&
418+
slices.Contains(display, networkEventsDisplay) {
407419
display = []string{rttDisplay}
408420
} else if slices.Contains(display, rttDisplay) {
409421
display = []string{dnsDisplay}
410422
} else if slices.Contains(display, dnsDisplay) {
411423
display = []string{pktDropDisplay}
412424
} else if slices.Contains(display, pktDropDisplay) {
425+
display = []string{networkEventsDisplay}
426+
} else if slices.Contains(display, networkEventsDisplay) {
413427
display = []string{standardDisplay}
414428
} else if slices.Contains(display, standardDisplay) {
415429
display = []string{rawDisplay}
416430
} else {
417-
display = []string{pktDropDisplay, dnsDisplay, rttDisplay}
431+
display = []string{pktDropDisplay, dnsDisplay, rttDisplay, networkEventsDisplay}
418432
}
419433
} else if key == keyboard.KeyPgup {
420434
if slices.Contains(enrichement, zoneEnrichment) && slices.Contains(enrichement, hostEnrichment) && slices.Contains(enrichement, ownerEnrichment) {

cmd/flow_capture_test.go

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ func TestFlowTableDefaultDisplay(t *testing.T) {
3939
rows := strings.Split(buf.String(), "\n")
4040

4141
assert.Equal(t, 4, len(rows))
42-
assert.Equal(t, `Time SrcName SrcType DstName DstType DropBytes DropPackets DropState DropCause DnsId DnsLatency DnsRCode DnsErrno RTT `, rows[0])
43-
assert.Equal(t, `17:25:28.703000 src-pod Pod dst-pod Pod 32B 1 TCP_INVALID_STATE SKB_DROP_REASON_TCP_INVALID_SEQUENCE 31319 1ms NoError 0 10µs `, rows[1])
44-
assert.Equal(t, `---------------- --------------------------------------------- -------- --------------------------------------------- -------- ------------ ------------ -------------------- ---------------------------------------- ------ ------ ------ ------ ------ `, rows[2])
42+
assert.Equal(t, `Time SrcName SrcType DstName DstType DropBytes DropPackets DropState DropCause DnsId DnsLatency DnsRCode DnsErrno RTT NetworkEvents `, rows[0])
43+
assert.Equal(t, `17:25:28.703000 src-pod Pod dst-pod Pod 32B 1 TCP_INVALID_STATE SKB_DROP_REASON_TCP_INVALID_SEQUENCE 31319 1ms NoError 0 10µs hello `, rows[1])
44+
assert.Equal(t, `---------------- --------------------------------------------- -------- --------------------------------------------- -------- ------------ ------------ -------------------- ---------------------------------------- ------ ------ ------ ------ ------ ---------------- `, rows[2])
4545
assert.Empty(t, rows[3])
4646
}
4747

@@ -127,12 +127,11 @@ func TestFlowTableAdvancedDisplay(t *testing.T) {
127127
}
128128

129129
// set display without enrichment
130-
rows := getRows([]string{pktDropDisplay, dnsDisplay, rttDisplay}, []string{noEnrichment})
131-
130+
rows := getRows([]string{pktDropDisplay, dnsDisplay, rttDisplay, networkEventsDisplay}, []string{noEnrichment})
132131
assert.Equal(t, 4, len(rows))
133-
assert.Equal(t, `Time SrcAddr SrcPort DstAddr DstPort DropBytes DropPackets DropState DropCause DnsId DnsLatency DnsRCode DnsErrno RTT `, rows[0])
134-
assert.Equal(t, `17:25:28.703000 10.128.0.29 1234 10.129.0.26 5678 32B 1 TCP_INVALID_STATE SKB_DROP_REASON_TCP_INVALID_SEQUENCE 31319 1ms NoError 0 10µs `, rows[1])
135-
assert.Equal(t, `---------------- ---------------------------------------- ------ ---------------------------------------- ------ ------------ ------------ -------------------- ---------------------------------------- ------ ------ ------ ------ ------ `, rows[2])
132+
assert.Equal(t, `Time SrcAddr SrcPort DstAddr DstPort DropBytes DropPackets DropState DropCause DnsId DnsLatency DnsRCode DnsErrno RTT NetworkEvents `, rows[0])
133+
assert.Equal(t, `17:25:28.703000 10.128.0.29 1234 10.129.0.26 5678 32B 1 TCP_INVALID_STATE SKB_DROP_REASON_TCP_INVALID_SEQUENCE 31319 1ms NoError 0 10µs hello `, rows[1])
134+
assert.Equal(t, `---------------- ---------------------------------------- ------ ---------------------------------------- ------ ------------ ------------ -------------------- ---------------------------------------- ------ ------ ------ ------ ------ ---------------- `, rows[2])
136135
assert.Empty(t, rows[3])
137136

138137
// set display to standard
@@ -170,4 +169,12 @@ func TestFlowTableAdvancedDisplay(t *testing.T) {
170169
assert.Equal(t, `17:25:28.703000 10.128.0.29 1234 10.129.0.26 5678 10µs `, rows[1])
171170
assert.Equal(t, `---------------- ---------------------------------------- ------ ---------------------------------------- ------ ------ `, rows[2])
172171
assert.Empty(t, rows[3])
172+
173+
// set display to NetworkEvents
174+
rows = getRows([]string{networkEventsDisplay}, []string{noEnrichment})
175+
assert.Equal(t, 4, len(rows))
176+
assert.Equal(t, `Time SrcAddr SrcPort DstAddr DstPort NetworkEvents `, rows[0])
177+
assert.Equal(t, `17:25:28.703000 10.128.0.29 1234 10.129.0.26 5678 hello `, rows[1])
178+
assert.Equal(t, `---------------- ---------------------------------------- ------ ---------------------------------------- ------ ---------------- `, rows[2])
179+
assert.Empty(t, rows[3])
173180
}

cmd/root_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ const (
4444
"PktDropLatestFlags":16,
4545
"PktDropLatestState":"TCP_INVALID_STATE",
4646
"PktDropPackets":1,
47+
"NetworkEvents":["hello"],
4748
"Proto":6,
4849
"SrcAddr":"10.128.0.29",
4950
"SrcK8S_HostIP":"10.0.1.1",

e2e/capture_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ func TestFlowCapture(t *testing.T) {
113113
func TestPacketCapture(t *testing.T) {
114114
f1 := features.New("packet capture").Setup(
115115
func(ctx context.Context, t *testing.T, cfg *envconf.Config) context.Context {
116-
output, err := RunCommand(clog, "oc-netobserv", "packets", "--protocol=TCP", "--port=443")
116+
output, err := RunCommand(clog, "oc-netobserv", "packets", "--protocol=TCP", "--port=6443")
117117
// TODO: find a way to avoid error here; this is probably related to SIGTERM instead of CTRL + C call
118118
//assert.Nil(t, err)
119119

go.mod

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -22,24 +22,27 @@ require (
2222
require (
2323
github.com/blang/semver/v4 v4.0.0 // indirect
2424
github.com/evanphx/json-patch/v5 v5.9.0 // indirect
25+
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
26+
github.com/google/go-cmp v0.6.0 // indirect
2527
github.com/gorilla/websocket v1.5.0 // indirect
26-
github.com/moby/spdystream v0.2.0 // indirect
28+
github.com/klauspost/compress v1.17.9 // indirect
29+
github.com/moby/spdystream v0.4.0 // indirect
2730
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
28-
github.com/netobserv/netobserv-ebpf-agent v1.6.1-crc2.0.20240724142153-7acdf8de147f // indirect
29-
github.com/rogpeppe/go-internal v1.11.0 // indirect
30-
k8s.io/component-base v0.30.1 // indirect
31-
sigs.k8s.io/controller-runtime v0.18.2 // indirect
31+
github.com/netobserv/netobserv-ebpf-agent v1.6.1-crc2.0.20240913155426-6ac7c5ccbf59 // indirect
32+
github.com/x448/float16 v0.8.4 // indirect
33+
k8s.io/component-base v0.30.2 // indirect
34+
sigs.k8s.io/controller-runtime v0.18.4 // indirect
3235
)
3336

3437
require (
3538
github.com/beorn7/perks v1.0.1 // indirect
3639
github.com/cespare/xxhash/v2 v2.3.0 // indirect
3740
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
3841
github.com/emicklei/go-restful/v3 v3.11.0 // indirect
39-
github.com/go-logr/logr v1.4.1 // indirect
42+
github.com/go-logr/logr v1.4.2 // indirect
4043
github.com/go-openapi/jsonpointer v0.19.6 // indirect
4144
github.com/go-openapi/jsonreference v0.20.2 // indirect
42-
github.com/go-openapi/swag v0.22.3 // indirect
45+
github.com/go-openapi/swag v0.22.4 // indirect
4346
github.com/gogo/protobuf v1.3.2 // indirect
4447
github.com/golang/protobuf v1.5.4 // indirect
4548
github.com/google/gnostic-models v0.6.8 // indirect
@@ -59,34 +62,34 @@ require (
5962
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect
6063
github.com/pkg/errors v0.9.1 // indirect
6164
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
62-
github.com/prometheus/client_golang v1.19.1 // indirect
63-
github.com/prometheus/client_model v0.5.0 // indirect
64-
github.com/prometheus/common v0.48.0 // indirect
65-
github.com/prometheus/procfs v0.12.0 // indirect
65+
github.com/prometheus/client_golang v1.20.3 // indirect
66+
github.com/prometheus/client_model v0.6.1 // indirect
67+
github.com/prometheus/common v0.55.0 // indirect
68+
github.com/prometheus/procfs v0.15.1 // indirect
6669
github.com/segmentio/kafka-go v0.4.47 // indirect
6770
github.com/spf13/pflag v1.0.5 // indirect
6871
github.com/vladimirvivien/gexe v0.3.0
6972
github.com/xdg-go/pbkdf2 v1.0.0 // indirect
7073
github.com/xdg-go/scram v1.1.2 // indirect
7174
github.com/xdg-go/stringprep v1.0.4 // indirect
72-
golang.org/x/net v0.25.0 // indirect
73-
golang.org/x/oauth2 v0.20.0 // indirect
74-
golang.org/x/sys v0.22.0 // indirect
75-
golang.org/x/term v0.20.0 // indirect
76-
golang.org/x/text v0.15.0 // indirect
75+
golang.org/x/net v0.26.0 // indirect
76+
golang.org/x/oauth2 v0.21.0 // indirect
77+
golang.org/x/sys v0.25.0 // indirect
78+
golang.org/x/term v0.21.0 // indirect
79+
golang.org/x/text v0.16.0 // indirect
7780
golang.org/x/time v0.5.0 // indirect
7881
google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 // indirect
7982
google.golang.org/grpc v1.65.0 // indirect
8083
google.golang.org/protobuf v1.34.2 // indirect
8184
gopkg.in/inf.v0 v0.9.1 // indirect
8285
gopkg.in/yaml.v2 v2.4.0 // indirect
8386
gopkg.in/yaml.v3 v3.0.1 // indirect
84-
k8s.io/api v0.30.3 // indirect
85-
k8s.io/apimachinery v0.30.3 // indirect
86-
k8s.io/client-go v0.30.3 // indirect
87-
k8s.io/klog/v2 v2.120.1 // indirect
87+
k8s.io/api v0.31.1 // indirect
88+
k8s.io/apimachinery v0.31.1 // indirect
89+
k8s.io/client-go v0.31.1 // indirect
90+
k8s.io/klog/v2 v2.130.1 // indirect
8891
k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect
89-
k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect
92+
k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 // indirect
9093
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
9194
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
9295
sigs.k8s.io/yaml v1.4.0 // indirect

0 commit comments

Comments
 (0)