Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

introduce a recheck for the VF interface name #720

Merged

Conversation

SchSeba
Copy link
Collaborator

@SchSeba SchSeba commented Jun 20, 2024

It's possible to have a race in the VFIsReady function. vf netdevice can have a default eth0 device name and be the time we call the netlink syscall to get the device information eth0 can be a different device.

this cause duplicate mac allocation on vf admin mac address

Copy link

Thanks for your PR,
To run vendors CIs use one of:

  • /test-all: To run all tests for all vendors.
  • /test-e2e-all: To run all E2E tests for all vendors.
  • /test-e2e-nvidia-all: To run all E2E tests for NVIDIA vendor.

To skip the vendors CIs use one of:

  • /skip-all: To skip all tests for all vendors.
  • /skip-e2e-all: To skip all E2E tests for all vendors.
  • /skip-e2e-nvidia-all: To skip all E2E tests for NVIDIA vendor.
    Best regards.

@SchSeba
Copy link
Collaborator Author

SchSeba commented Jun 20, 2024

cc @zeeke @adrianchiris
please take a look on this race condition

Copy link

Thanks for your PR,
To run vendors CIs use one of:

  • /test-all: To run all tests for all vendors.
  • /test-e2e-all: To run all E2E tests for all vendors.
  • /test-e2e-nvidia-all: To run all E2E tests for NVIDIA vendor.

To skip the vendors CIs use one of:

  • /skip-all: To skip all tests for all vendors.
  • /skip-e2e-all: To skip all E2E tests for all vendors.
  • /skip-e2e-nvidia-all: To skip all E2E tests for NVIDIA vendor.
    Best regards.

@coveralls
Copy link

coveralls commented Jun 21, 2024

Pull Request Test Coverage Report for Build 9613496848

Details

  • 5 of 6 (83.33%) changed or added relevant lines in 1 file are covered.
  • 1 unchanged line in 1 file lost coverage.
  • Overall coverage increased (+0.05%) to 38.665%

Changes Missing Coverage Covered Lines Changed/Added Lines %
pkg/host/internal/sriov/sriov.go 5 6 83.33%
Files with Coverage Reduction New Missed Lines %
pkg/host/internal/sriov/sriov.go 1 44.09%
Totals Coverage Status
Change from base Build 9549902217: 0.05%
Covered Lines: 5185
Relevant Lines: 13410

💛 - Coveralls

return err == nil, nil

// try to get the interface name again and check if the name changed
vfName = s.networkHelper.TryGetInterfaceName(pciAddr)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The problem is that TryGetInterfaceName(pciAddr) might return eth0 value that is not unique for the system, and LinkByName('eth0') might return a different VF.

I'm not sure this would solve the problem 🤔

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

so the idea here was

  1. getInterface name
  2. vfLink object
  3. getInterface name again

and we have two options here:
if the second time it's still eth0 this means the vfLink object we did before contains the right mac address(even if the VF will change name).
if the vf change is name we will try again

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the problem is this:
suppose in the system there are two different VFs named eth0 (0000:19:00.5 and 0000:19:00.6) and we are calling VFIsReady("0000:19:00.5")

vfName = s.networkHelper.TryGetInterfaceName("0000:19:00.5") -> eth0
vfLink, err = s.netlinkLib.LinkByName(vfName) -> might return 0000:19:00.6

then
vfName = s.networkHelper.TryGetInterfaceName(pciAddr) still returns eth0

and the function will return the .6 netlink reference, instead of the .5 one. WDYT?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oh ok now I get your point the thing is that is not possible on a given time we can only have one interface with the same name that from the kernel lock system. some more info about that from our kernel developer

The interface name is assigned by the kernel during netdevice_register(). It is while holding the lock (rtnl_lock) and the kernel performs a name collision check.
It is not possible to have two interfaces with the same name, but when eth0 is renamed to e.g. enp12s23, another device can use eth0 again, but not at the same time (rtnl_lock). The name of the device can be changed later (e.g. with the help of udev and this is also easily done, but again there is rtnl_lock which prevents collisions in names).

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, now it's much more clear, thanks.
So the scenario we are hitting here is a timeline like this:

  1. Kernel create VF for 0000:d8:00.2 and call it eth0
  2. udev rule change the name of 0000:d8:00.2 as eth0 -> eno1vf0
  3. kernel create VF for 0000:d8:00.3 and call it eth0

So, before your changes it may happens the race condition:

  1. Kernel create VF for 0000:d8:00.2 and call it eth0
    a. VFIsReady(0000:d8:00.2)
    b. TryGetInterfaceName(0000:d8:00.2) -> eth0
  2. udev rule change the name of 0000:d8:00.2 as eth0 -> eno1vf0
  3. kernel create VF for 0000:d8:00.3 and call it eth0
    c. LinkByName(eth0) -> link for VF .3

And your proposing changes correctly address this case by

d. TryGetInterfaceName(0000:d8:00.2) -> eno1vf0
e. eth0 != eno1vf0
f. repeat the PollImmediate loop

is that correct?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right!

@adrianchiris
Copy link
Collaborator

discussed in community meeting. we should modify the way we get the Link device by relying on interface index instead of name.

interface index is found under sysfs
/sys/bus/pci/deivces/<address>/net/<ifaceName/ifindex
if path does not exist we should retry (udev rule renamed interface)

Copy link

Thanks for your PR,
To run vendors CIs use one of:

  • /test-all: To run all tests for all vendors.
  • /test-e2e-all: To run all E2E tests for all vendors.
  • /test-e2e-nvidia-all: To run all E2E tests for NVIDIA vendor.

To skip the vendors CIs use one of:

  • /skip-all: To skip all tests for all vendors.
  • /skip-e2e-all: To skip all E2E tests for all vendors.
  • /skip-e2e-nvidia-all: To skip all E2E tests for NVIDIA vendor.
    Best regards.

@SchSeba
Copy link
Collaborator Author

SchSeba commented Jun 26, 2024

/hold

waiting for k8snetworkplumbingwg/sriov-network-device-plugin#569

THIS PR CONTAINS A REPLACE IN GO MODS!

Copy link

Thanks for your PR,
To run vendors CIs use one of:

  • /test-all: To run all tests for all vendors.
  • /test-e2e-all: To run all E2E tests for all vendors.
  • /test-e2e-nvidia-all: To run all E2E tests for NVIDIA vendor.

To skip the vendors CIs use one of:

  • /skip-all: To skip all tests for all vendors.
  • /skip-e2e-all: To skip all E2E tests for all vendors.
  • /skip-e2e-nvidia-all: To skip all E2E tests for NVIDIA vendor.
    Best regards.

Copy link

Thanks for your PR,
To run vendors CIs use one of:

  • /test-all: To run all tests for all vendors.
  • /test-e2e-all: To run all E2E tests for all vendors.
  • /test-e2e-nvidia-all: To run all E2E tests for NVIDIA vendor.

To skip the vendors CIs use one of:

  • /skip-all: To skip all tests for all vendors.
  • /skip-e2e-all: To skip all E2E tests for all vendors.
  • /skip-e2e-nvidia-all: To skip all E2E tests for NVIDIA vendor.
    Best regards.

return netDevName
}

// TryGetInterfaceName tries to find the SR-IOV virtual interface index base on pci address
func (n *network) TryGetInterfaceIndex(pciAddr string) int {
ifIndex, err := n.dputilsLib.GetNetIndex(pciAddr)
Copy link
Collaborator

@adrianchiris adrianchiris Jun 27, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you may get the wrong index in case of switched since implementation returns the first netdev interface index found.

in TryGetInterfaceNames , if in switchdev we return the "uplink representor" netdev. since in switchdev all representors (VF representors and uplink representor )will be found under the PF /net folder.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link

Thanks for your PR,
To run vendors CIs use one of:

  • /test-all: To run all tests for all vendors.
  • /test-e2e-all: To run all E2E tests for all vendors.
  • /test-e2e-nvidia-all: To run all E2E tests for NVIDIA vendor.

To skip the vendors CIs use one of:

  • /skip-all: To skip all tests for all vendors.
  • /skip-e2e-all: To skip all E2E tests for all vendors.
  • /skip-e2e-nvidia-all: To skip all E2E tests for NVIDIA vendor.
    Best regards.

@coveralls
Copy link

coveralls commented Jun 27, 2024

Pull Request Test Coverage Report for Build 9700937218

Details

  • 25 of 62 (40.32%) changed or added relevant lines in 6 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage increased (+0.003%) to 40.58%

Changes Missing Coverage Covered Lines Changed/Added Lines %
pkg/host/internal/lib/netlink/netlink.go 0 3 0.0%
pkg/helper/mock/mock_helper.go 0 10 0.0%
pkg/host/internal/network/network.go 0 24 0.0%
Totals Coverage Status
Change from base Build 9700329314: 0.003%
Covered Lines: 5538
Relevant Lines: 13647

💛 - Coveralls

@coveralls
Copy link

coveralls commented Jun 27, 2024

Pull Request Test Coverage Report for Build 9699009559

Details

  • 25 of 64 (39.06%) changed or added relevant lines in 6 files are covered.
  • 62 unchanged lines in 3 files lost coverage.
  • Overall coverage increased (+0.01%) to 40.389%

Changes Missing Coverage Covered Lines Changed/Added Lines %
pkg/host/internal/lib/netlink/netlink.go 0 3 0.0%
pkg/helper/mock/mock_helper.go 0 10 0.0%
pkg/host/internal/network/network.go 0 26 0.0%
Files with Coverage Reduction New Missed Lines %
pkg/host/internal/lib/dputils/mock/mock_dputils.go 11 80.53%
pkg/host/internal/lib/dputils/dputils.go 13 9.09%
pkg/host/internal/network/network.go 38 44.44%
Totals Coverage Status
Change from base Build 9691456203: 0.01%
Covered Lines: 5480
Relevant Lines: 13568

💛 - Coveralls

@coveralls
Copy link

coveralls commented Jun 28, 2024

Pull Request Test Coverage Report for Build 9682784028

Details

  • 25 of 64 (39.06%) changed or added relevant lines in 6 files are covered.
  • 62 unchanged lines in 3 files lost coverage.
  • Overall coverage increased (+0.01%) to 40.389%

Changes Missing Coverage Covered Lines Changed/Added Lines %
pkg/host/internal/lib/netlink/netlink.go 0 3 0.0%
pkg/helper/mock/mock_helper.go 0 10 0.0%
pkg/host/internal/network/network.go 0 26 0.0%
Files with Coverage Reduction New Missed Lines %
pkg/host/internal/lib/dputils/mock/mock_dputils.go 11 80.53%
pkg/host/internal/lib/dputils/dputils.go 13 9.09%
pkg/host/internal/network/network.go 38 44.44%
Totals Coverage Status
Change from base Build 9667839529: 0.01%
Covered Lines: 5480
Relevant Lines: 13568

💛 - Coveralls

@SchSeba
Copy link
Collaborator Author

SchSeba commented Jun 28, 2024

/hold cancel

@github-actions github-actions bot removed the hold label Jun 28, 2024
@SchSeba
Copy link
Collaborator Author

SchSeba commented Jun 28, 2024

I switched the implementation to call the tryGetInterfaceName in the new function that way we don't need any new function in the sriov network device plugin.

@@ -189,12 +189,13 @@ func (s *sriov) VFIsReady(pciAddr string) (netlink.Link, error) {
var err error
var vfLink netlink.Link
err = wait.PollImmediate(time.Second, 10*time.Second, func() (bool, error) {
vfName := s.networkHelper.TryGetInterfaceName(pciAddr)
vfLink, err = s.netlinkLib.LinkByName(vfName)
vfIndex := s.networkHelper.TryGetInterfaceIndex(pciAddr)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we want to explicitly handle -1 result?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we didn't handle the empty interface name on TryGetInterfaceName so I was thinking it could be the same but I don't really care :)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

return netDevName
}

// TryGetInterfaceName tries to find the SR-IOV virtual interface index base on pci address
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: TryGetInterfaceIndex

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

return netDevName
}

// TryGetInterfaceName tries to find the SR-IOV virtual interface index base on pci address
func (n *network) TryGetInterfaceIndex(pciAddr string) int {
ifName := n.TryToGetVirtualInterfaceName(pciAddr)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not related to this PR but shouldnt we merge the added logic in TryToGetVirtualInterfaceName into TryGetInterfaceName ?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sorry I used the wrong function here

}

netDir := filepath.Join(consts.SysBusPciDevices, pciAddr, "net", ifName)
if _, err := os.Lstat(netDir); err != nil {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we really need this check ?

between here and L118 the path may no longer be valid when netdev name changes via udev right after this spot.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sounds right :)

return netDevName
}

// TryGetInterfaceName tries to find the SR-IOV virtual interface index base on pci address
func (n *network) TryGetInterfaceIndex(pciAddr string) int {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

any chance to add UT for this one ?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done both for this function and the vfIsReady function

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ATM we dont use this method in a "Try" manner but rather fail on error (-1 returned)

WDYT about changing this one to: GetInterfaceIndex(pciAddr string) (int, error) ?
i think its better checking error obj than checking for -1.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sure done :)

Copy link

github-actions bot commented Jul 2, 2024

Thanks for your PR,
To run vendors CIs use one of:

  • /test-all: To run all tests for all vendors.
  • /test-e2e-all: To run all E2E tests for all vendors.
  • /test-e2e-nvidia-all: To run all E2E tests for NVIDIA vendor.

To skip the vendors CIs use one of:

  • /skip-all: To skip all tests for all vendors.
  • /skip-e2e-all: To skip all E2E tests for all vendors.
  • /skip-e2e-nvidia-all: To skip all E2E tests for NVIDIA vendor.
    Best regards.

@coveralls
Copy link

coveralls commented Jul 2, 2024

Pull Request Test Coverage Report for Build 9760276703

Details

  • 41 of 61 (67.21%) changed or added relevant lines in 6 files are covered.
  • 7 unchanged lines in 3 files lost coverage.
  • Overall coverage increased (+0.3%) to 40.939%

Changes Missing Coverage Covered Lines Changed/Added Lines %
pkg/host/internal/sriov/sriov.go 7 8 87.5%
pkg/host/internal/lib/netlink/netlink.go 0 3 0.0%
pkg/host/internal/network/network.go 13 19 68.42%
pkg/helper/mock/mock_helper.go 0 10 0.0%
Files with Coverage Reduction New Missed Lines %
controllers/drain_controller.go 1 68.06%
pkg/host/internal/sriov/sriov.go 1 55.4%
controllers/generic_network_controller.go 5 74.53%
Totals Coverage Status
Change from base Build 9745388570: 0.3%
Covered Lines: 5582
Relevant Lines: 13635

💛 - Coveralls

Copy link
Collaborator

@adrianchiris adrianchiris left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

final comment from my side otherwise LGTM

Copy link

github-actions bot commented Jul 2, 2024

Thanks for your PR,
To run vendors CIs use one of:

  • /test-all: To run all tests for all vendors.
  • /test-e2e-all: To run all E2E tests for all vendors.
  • /test-e2e-nvidia-all: To run all E2E tests for NVIDIA vendor.

To skip the vendors CIs use one of:

  • /skip-all: To skip all tests for all vendors.
  • /skip-e2e-all: To skip all E2E tests for all vendors.
  • /skip-e2e-nvidia-all: To skip all E2E tests for NVIDIA vendor.
    Best regards.

@coveralls
Copy link

coveralls commented Jul 2, 2024

Pull Request Test Coverage Report for Build 9761609394

Details

  • 42 of 63 (66.67%) changed or added relevant lines in 6 files are covered.
  • 1 unchanged line in 1 file lost coverage.
  • Overall coverage increased (+0.4%) to 40.984%

Changes Missing Coverage Covered Lines Changed/Added Lines %
pkg/host/internal/sriov/sriov.go 7 8 87.5%
pkg/host/internal/lib/netlink/netlink.go 0 3 0.0%
pkg/host/internal/network/network.go 13 19 68.42%
pkg/helper/mock/mock_helper.go 0 11 0.0%
Files with Coverage Reduction New Missed Lines %
pkg/host/internal/sriov/sriov.go 1 55.4%
Totals Coverage Status
Change from base Build 9745388570: 0.4%
Covered Lines: 5589
Relevant Lines: 13637

💛 - Coveralls

Copy link
Member

@zeeke zeeke left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

return netDevName
}

// TryGetInterfaceIndex tries to find the SR-IOV virtual interface index base on pci address
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: please update comment :)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done :)

indexFile := filepath.Join(vars.FilesystemRoot, consts.SysBusPciDevices, pciAddr, "net", ifName, "ifindex")
ifIndex, err := os.ReadFile(indexFile)
if err != nil {
log.Log.Error(err, "TryGetInterfaceIndex(): failed to read ifindex file", "indexFile", indexFile)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: please update log msg

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done :)


intIfIndex, err := strconv.Atoi(strings.TrimSpace(string(ifIndex)))
if err != nil {
log.Log.Error(err, "TryGetInterfaceIndex(): failed to parse ifindex file content", "ifIndex", string(ifIndex))
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: please update log msg

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done :)

@@ -238,4 +238,37 @@ var _ = Describe("Network", func() {
Expect(n.GetNetDevNodeGUID("0000:4b:00.3")).To(Equal("1122:3344:5566:7788"))
})
})
Context("TryGetInterfaceIndex", func() {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: please update name

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done :)

Copy link

github-actions bot commented Jul 2, 2024

Thanks for your PR,
To run vendors CIs use one of:

  • /test-all: To run all tests for all vendors.
  • /test-e2e-all: To run all E2E tests for all vendors.
  • /test-e2e-nvidia-all: To run all E2E tests for NVIDIA vendor.

To skip the vendors CIs use one of:

  • /skip-all: To skip all tests for all vendors.
  • /skip-e2e-all: To skip all E2E tests for all vendors.
  • /skip-e2e-nvidia-all: To skip all E2E tests for NVIDIA vendor.
    Best regards.

@coveralls
Copy link

coveralls commented Jul 2, 2024

Pull Request Test Coverage Report for Build 9766049420

Details

  • 42 of 63 (66.67%) changed or added relevant lines in 6 files are covered.
  • 6 unchanged lines in 2 files lost coverage.
  • Overall coverage increased (+0.3%) to 40.947%

Changes Missing Coverage Covered Lines Changed/Added Lines %
pkg/host/internal/sriov/sriov.go 7 8 87.5%
pkg/host/internal/lib/netlink/netlink.go 0 3 0.0%
pkg/host/internal/network/network.go 13 19 68.42%
pkg/helper/mock/mock_helper.go 0 11 0.0%
Files with Coverage Reduction New Missed Lines %
pkg/host/internal/sriov/sriov.go 1 55.4%
controllers/generic_network_controller.go 5 74.53%
Totals Coverage Status
Change from base Build 9745388570: 0.3%
Covered Lines: 5584
Relevant Lines: 13637

💛 - Coveralls

@@ -24,6 +24,8 @@ type NetlinkLib interface {
LinkSetVfPortGUID(link Link, vf int, portguid net.HardwareAddr) error
// LinkByName finds a link by name and returns a pointer to the object.
LinkByName(name string) (Link, error)
// LinkByName finds a link by index and returns a pointer to the object.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just noticed this one :(. can you fix the typo

return netDevName
}

// GetInterfaceIndex tries to find the SR-IOV virtual interface index base on pci address
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this function is not limited to SRIOV virtual interfaces as far as i can tell.

how about:
// GetInterfaceIndex returns network interface index base on pci address or error if occurred

It's possible to have a race in the VFIsReady function. vf netdevice can
have a default eth0 device name and be the time we call the netlink
syscall to get the device information eth0 can be a different device.

this cause duplicate mac allocation on vf admin mac address

Signed-off-by: Sebastian Sch <sebassch@gmail.com>
Copy link

github-actions bot commented Jul 3, 2024

Thanks for your PR,
To run vendors CIs use one of:

  • /test-all: To run all tests for all vendors.
  • /test-e2e-all: To run all E2E tests for all vendors.
  • /test-e2e-nvidia-all: To run all E2E tests for NVIDIA vendor.

To skip the vendors CIs use one of:

  • /skip-all: To skip all tests for all vendors.
  • /skip-e2e-all: To skip all E2E tests for all vendors.
  • /skip-e2e-nvidia-all: To skip all E2E tests for NVIDIA vendor.
    Best regards.

@coveralls
Copy link

coveralls commented Jul 3, 2024

Pull Request Test Coverage Report for Build 9774215462

Details

  • 42 of 63 (66.67%) changed or added relevant lines in 6 files are covered.
  • 7 unchanged lines in 3 files lost coverage.
  • Overall coverage increased (+0.3%) to 40.94%

Changes Missing Coverage Covered Lines Changed/Added Lines %
pkg/host/internal/sriov/sriov.go 7 8 87.5%
pkg/host/internal/lib/netlink/netlink.go 0 3 0.0%
pkg/host/internal/network/network.go 13 19 68.42%
pkg/helper/mock/mock_helper.go 0 11 0.0%
Files with Coverage Reduction New Missed Lines %
controllers/drain_controller.go 1 68.06%
pkg/host/internal/sriov/sriov.go 1 55.4%
controllers/generic_network_controller.go 5 74.53%
Totals Coverage Status
Change from base Build 9774112825: 0.3%
Covered Lines: 5583
Relevant Lines: 13637

💛 - Coveralls

@SchSeba
Copy link
Collaborator Author

SchSeba commented Jul 3, 2024

done with all the function names :P

can you please take another look?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants