Merge pull request #76442 from viegasdom/fix-golint-utils-bandwith

Fix golint failures of util/bandwith/*.go
This commit is contained in:
Kubernetes Prow Robot 2019-05-15 22:56:08 -07:00 committed by GitHub
commit 37281a400d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 20 additions and 10 deletions

View File

@ -287,7 +287,6 @@ pkg/security/podsecuritypolicy/user
pkg/security/podsecuritypolicy/util pkg/security/podsecuritypolicy/util
pkg/serviceaccount pkg/serviceaccount
pkg/ssh pkg/ssh
pkg/util/bandwidth
pkg/util/config pkg/util/config
pkg/util/ebtables pkg/util/ebtables
pkg/util/env pkg/util/env

View File

@ -74,7 +74,7 @@ type kubenetNetworkPlugin struct {
netConfig *libcni.NetworkConfig netConfig *libcni.NetworkConfig
loConfig *libcni.NetworkConfig loConfig *libcni.NetworkConfig
cniConfig libcni.CNI cniConfig libcni.CNI
bandwidthShaper bandwidth.BandwidthShaper bandwidthShaper bandwidth.Shaper
mu sync.Mutex //Mutex for protecting podIPs map, netConfig, and shaper initialization mu sync.Mutex //Mutex for protecting podIPs map, netConfig, and shaper initialization
podIPs map[kubecontainer.ContainerID]string podIPs map[kubecontainer.ContainerID]string
mtu int mtu int
@ -597,7 +597,7 @@ func (plugin *kubenetNetworkPlugin) delContainerFromNetwork(config *libcni.Netwo
// shaper retrieves the bandwidth shaper and, if it hasn't been fetched before, // shaper retrieves the bandwidth shaper and, if it hasn't been fetched before,
// initializes it and ensures the bridge is appropriately configured // initializes it and ensures the bridge is appropriately configured
// This function should only be called while holding the `plugin.mu` lock // This function should only be called while holding the `plugin.mu` lock
func (plugin *kubenetNetworkPlugin) shaper() bandwidth.BandwidthShaper { func (plugin *kubenetNetworkPlugin) shaper() bandwidth.Shaper {
if plugin.bandwidthShaper == nil { if plugin.bandwidthShaper == nil {
plugin.bandwidthShaper = bandwidth.NewTCShaper(BridgeName) plugin.bandwidthShaper = bandwidth.NewTCShaper(BridgeName)
plugin.bandwidthShaper.ReconcileInterface() plugin.bandwidthShaper.ReconcileInterface()

View File

@ -22,28 +22,35 @@ import (
"k8s.io/apimachinery/pkg/api/resource" "k8s.io/apimachinery/pkg/api/resource"
) )
// FakeShaper provides an implementation of the bandwith.Shaper.
// Beware this is implementation has no features besides Reset and GetCIDRs.
type FakeShaper struct { type FakeShaper struct {
CIDRs []string CIDRs []string
ResetCIDRs []string ResetCIDRs []string
} }
// Limit is not implemented
func (f *FakeShaper) Limit(cidr string, egress, ingress *resource.Quantity) error { func (f *FakeShaper) Limit(cidr string, egress, ingress *resource.Quantity) error {
return errors.New("unimplemented") return errors.New("unimplemented")
} }
// Reset appends a particular CIDR to the set of ResetCIDRs being managed by this shaper
func (f *FakeShaper) Reset(cidr string) error { func (f *FakeShaper) Reset(cidr string) error {
f.ResetCIDRs = append(f.ResetCIDRs, cidr) f.ResetCIDRs = append(f.ResetCIDRs, cidr)
return nil return nil
} }
// ReconcileInterface is not implemented
func (f *FakeShaper) ReconcileInterface() error { func (f *FakeShaper) ReconcileInterface() error {
return errors.New("unimplemented") return errors.New("unimplemented")
} }
// ReconcileCIDR is not implemented
func (f *FakeShaper) ReconcileCIDR(cidr string, egress, ingress *resource.Quantity) error { func (f *FakeShaper) ReconcileCIDR(cidr string, egress, ingress *resource.Quantity) error {
return errors.New("unimplemented") return errors.New("unimplemented")
} }
// GetCIDRs returns the set of CIDRs that are being managed by this shaper
func (f *FakeShaper) GetCIDRs() ([]string, error) { func (f *FakeShaper) GetCIDRs() ([]string, error) {
return f.CIDRs, nil return f.CIDRs, nil
} }

View File

@ -18,7 +18,9 @@ package bandwidth
import "k8s.io/apimachinery/pkg/api/resource" import "k8s.io/apimachinery/pkg/api/resource"
type BandwidthShaper interface { // Shaper is designed so that the shaper structs created
// satisfy the Shaper interface.
type Shaper interface {
// Limit the bandwidth for a particular CIDR on a particular interface // Limit the bandwidth for a particular CIDR on a particular interface
// * ingress and egress are in bits/second // * ingress and egress are in bits/second
// * cidr is expected to be a valid network CIDR (e.g. '1.2.3.4/32' or '10.20.0.1/16') // * cidr is expected to be a valid network CIDR (e.g. '1.2.3.4/32' or '10.20.0.1/16')

View File

@ -33,7 +33,7 @@ import (
"k8s.io/klog" "k8s.io/klog"
) )
// tcShaper provides an implementation of the BandwidthShaper interface on Linux using the 'tc' tool. // tcShaper provides an implementation of the Shaper interface on Linux using the 'tc' tool.
// In general, using this requires that the caller posses the NET_CAP_ADMIN capability, though if you // In general, using this requires that the caller posses the NET_CAP_ADMIN capability, though if you
// do this within an container, it only requires the NS_CAPABLE capability for manipulations to that // do this within an container, it only requires the NS_CAPABLE capability for manipulations to that
// container's network namespace. // container's network namespace.
@ -44,7 +44,8 @@ type tcShaper struct {
iface string iface string
} }
func NewTCShaper(iface string) BandwidthShaper { // NewTCShaper makes a new tcShaper for the given interface
func NewTCShaper(iface string) Shaper {
shaper := &tcShaper{ shaper := &tcShaper{
e: exec.New(), e: exec.New(),
iface: iface, iface: iface,
@ -157,12 +158,11 @@ func (t *tcShaper) findCIDRClass(cidr string) (classAndHandleList [][]string, fo
// filter parent 1: protocol ip pref 1 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:1 // filter parent 1: protocol ip pref 1 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:1
if len(parts) != 19 { if len(parts) != 19 {
return classAndHandleList, false, fmt.Errorf("unexpected output from tc: %s %d (%v)", filter, len(parts), parts) return classAndHandleList, false, fmt.Errorf("unexpected output from tc: %s %d (%v)", filter, len(parts), parts)
} else { }
resultTmp := []string{parts[18], parts[9]} resultTmp := []string{parts[18], parts[9]}
classAndHandleList = append(classAndHandleList, resultTmp) classAndHandleList = append(classAndHandleList, resultTmp)
} }
} }
}
if len(classAndHandleList) > 0 { if len(classAndHandleList) > 0 {
return classAndHandleList, true, nil return classAndHandleList, true, nil
} }

View File

@ -27,7 +27,8 @@ import (
type unsupportedShaper struct { type unsupportedShaper struct {
} }
func NewTCShaper(iface string) BandwidthShaper { // NewTCShaper makes a new unsupportedShapper for the given interface
func NewTCShaper(iface string) Shaper {
return &unsupportedShaper{} return &unsupportedShaper{}
} }

View File

@ -35,6 +35,7 @@ func validateBandwidthIsReasonable(rsrc *resource.Quantity) error {
return nil return nil
} }
// ExtractPodBandwidthResources extracts the ingress and egress from the given pod annotations
func ExtractPodBandwidthResources(podAnnotations map[string]string) (ingress, egress *resource.Quantity, err error) { func ExtractPodBandwidthResources(podAnnotations map[string]string) (ingress, egress *resource.Quantity, err error) {
if podAnnotations == nil { if podAnnotations == nil {
return nil, nil, nil return nil, nil, nil