Bumping k8s dependencies to 1.13
This commit is contained in:
2
vendor/k8s.io/kubernetes/pkg/util/ipset/BUILD
generated
vendored
2
vendor/k8s.io/kubernetes/pkg/util/ipset/BUILD
generated
vendored
@@ -19,7 +19,7 @@ go_test(
|
||||
srcs = ["ipset_test.go"],
|
||||
embed = [":go_default_library"],
|
||||
deps = [
|
||||
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
||||
"//vendor/k8s.io/utils/exec:go_default_library",
|
||||
"//vendor/k8s.io/utils/exec/testing:go_default_library",
|
||||
],
|
||||
|
1
vendor/k8s.io/kubernetes/pkg/util/ipset/OWNERS
generated
vendored
1
vendor/k8s.io/kubernetes/pkg/util/ipset/OWNERS
generated
vendored
@@ -2,6 +2,7 @@ reviewers:
|
||||
- thockin
|
||||
- brendandburns
|
||||
- m1093782566
|
||||
- islinwb
|
||||
approvers:
|
||||
- thockin
|
||||
- brendandburns
|
||||
|
121
vendor/k8s.io/kubernetes/pkg/util/ipset/ipset.go
generated
vendored
121
vendor/k8s.io/kubernetes/pkg/util/ipset/ipset.go
generated
vendored
@@ -52,7 +52,7 @@ type Interface interface {
|
||||
GetVersion() (string, error)
|
||||
}
|
||||
|
||||
// IPSetCmd represents the ipset util. We use ipset command for ipset execute.
|
||||
// IPSetCmd represents the ipset util. We use ipset command for ipset execute.
|
||||
const IPSetCmd = "ipset"
|
||||
|
||||
// EntryMemberPattern is the regular expression pattern of ipset member list.
|
||||
@@ -72,7 +72,7 @@ var EntryMemberPattern = "(?m)^(.*\n)*Members:\n"
|
||||
// ipset version output is similar to "v6.10".
|
||||
var VersionPattern = "v[0-9]+\\.[0-9]+"
|
||||
|
||||
// IPSet implements an Interface to an set.
|
||||
// IPSet implements an Interface to a set.
|
||||
type IPSet struct {
|
||||
// Name is the set name.
|
||||
Name string
|
||||
@@ -111,7 +111,7 @@ func (set *IPSet) Validate() bool {
|
||||
}
|
||||
// check hash size value of ipset
|
||||
if set.HashSize <= 0 {
|
||||
|
||||
glog.Errorf("Invalid hashsize value %d, should be >0", set.HashSize)
|
||||
return false
|
||||
}
|
||||
// check max elem value of ipset
|
||||
@@ -123,6 +123,28 @@ func (set *IPSet) Validate() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
//setIPSetDefaults sets some IPSet fields if not present to their default values.
|
||||
func (set *IPSet) setIPSetDefaults() {
|
||||
// Setting default values if not present
|
||||
if set.HashSize == 0 {
|
||||
set.HashSize = 1024
|
||||
}
|
||||
if set.MaxElem == 0 {
|
||||
set.MaxElem = 65536
|
||||
}
|
||||
// Default protocol is IPv4
|
||||
if set.HashFamily == "" {
|
||||
set.HashFamily = ProtocolFamilyIPV4
|
||||
}
|
||||
// Default ipset type is "hash:ip,port"
|
||||
if len(set.SetType) == 0 {
|
||||
set.SetType = HashIPPort
|
||||
}
|
||||
if len(set.PortRange) == 0 {
|
||||
set.PortRange = DefaultPortRange
|
||||
}
|
||||
}
|
||||
|
||||
// Entry represents a ipset entry.
|
||||
type Entry struct {
|
||||
// IP is the entry's IP. The IP address protocol corresponds to the HashFamily of IPSet.
|
||||
@@ -131,7 +153,7 @@ type Entry struct {
|
||||
// Port is the entry's Port.
|
||||
Port int
|
||||
// Protocol is the entry's Protocol. The protocols of entries in the same ip set are all
|
||||
// the same. The accepted protocols are TCP and UDP.
|
||||
// the same. The accepted protocols are TCP, UDP and SCTP.
|
||||
Protocol string
|
||||
// Net is the entry's IP network address. Network address with zero prefix size can NOT
|
||||
// be stored.
|
||||
@@ -150,31 +172,13 @@ func (e *Entry) Validate(set *IPSet) bool {
|
||||
}
|
||||
switch e.SetType {
|
||||
case HashIPPort:
|
||||
// set default protocol to tcp if empty
|
||||
if len(e.Protocol) == 0 {
|
||||
e.Protocol = ProtocolTCP
|
||||
}
|
||||
|
||||
if net.ParseIP(e.IP) == nil {
|
||||
glog.Errorf("Error parsing entry %v ip address %v for ipset %v", e, e.IP, set)
|
||||
return false
|
||||
}
|
||||
|
||||
if valid := validateProtocol(e.Protocol); !valid {
|
||||
//check if IP and Protocol of Entry is valid.
|
||||
if valid := e.checkIPandProtocol(set); !valid {
|
||||
return false
|
||||
}
|
||||
case HashIPPortIP:
|
||||
// set default protocol to tcp if empty
|
||||
if len(e.Protocol) == 0 {
|
||||
e.Protocol = ProtocolTCP
|
||||
}
|
||||
|
||||
if net.ParseIP(e.IP) == nil {
|
||||
glog.Errorf("Error parsing entry %v ip address %v for ipset %v", e, e.IP, set)
|
||||
return false
|
||||
}
|
||||
|
||||
if valid := validateProtocol(e.Protocol); !valid {
|
||||
//check if IP and Protocol of Entry is valid.
|
||||
if valid := e.checkIPandProtocol(set); !valid {
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -184,23 +188,14 @@ func (e *Entry) Validate(set *IPSet) bool {
|
||||
return false
|
||||
}
|
||||
case HashIPPortNet:
|
||||
// set default protocol to tcp if empty
|
||||
if len(e.Protocol) == 0 {
|
||||
e.Protocol = ProtocolTCP
|
||||
}
|
||||
|
||||
if net.ParseIP(e.IP) == nil {
|
||||
glog.Errorf("Error parsing entry %v ip address %v for ipset %v", e, e.IP, set)
|
||||
return false
|
||||
}
|
||||
|
||||
if valid := validateProtocol(e.Protocol); !valid {
|
||||
//check if IP and Protocol of Entry is valid.
|
||||
if valid := e.checkIPandProtocol(set); !valid {
|
||||
return false
|
||||
}
|
||||
|
||||
// Net can not be empty for `hash:ip,port,net` type ip set
|
||||
if _, ipNet, _ := net.ParseCIDR(e.Net); ipNet == nil {
|
||||
glog.Errorf("Error parsing entry %v ip net %v for ipset %v", e, e.Net, set)
|
||||
if _, ipNet, err := net.ParseCIDR(e.Net); ipNet == nil {
|
||||
glog.Errorf("Error parsing entry %v ip net %v for ipset %v, error: %v", e, e.Net, set, err)
|
||||
return false
|
||||
}
|
||||
case BitmapPort:
|
||||
@@ -246,6 +241,23 @@ func (e *Entry) String() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
// checkIPandProtocol checks if IP and Protocol of Entry is valid.
|
||||
func (e *Entry) checkIPandProtocol(set *IPSet) bool {
|
||||
// set default protocol to tcp if empty
|
||||
if len(e.Protocol) == 0 {
|
||||
e.Protocol = ProtocolTCP
|
||||
} else if !validateProtocol(e.Protocol) {
|
||||
return false
|
||||
}
|
||||
|
||||
if net.ParseIP(e.IP) == nil {
|
||||
glog.Errorf("Error parsing entry %v ip address %v for ipset %v", e, e.IP, set)
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
type runner struct {
|
||||
exec utilexec.Interface
|
||||
}
|
||||
@@ -257,26 +269,10 @@ func New(exec utilexec.Interface) Interface {
|
||||
}
|
||||
}
|
||||
|
||||
// CreateSet creates a new set, it will ignore error when the set already exists if ignoreExistErr=true.
|
||||
// CreateSet creates a new set, it will ignore error when the set already exists if ignoreExistErr=true.
|
||||
func (runner *runner) CreateSet(set *IPSet, ignoreExistErr bool) error {
|
||||
// Setting default values if not present
|
||||
if set.HashSize == 0 {
|
||||
set.HashSize = 1024
|
||||
}
|
||||
if set.MaxElem == 0 {
|
||||
set.MaxElem = 65536
|
||||
}
|
||||
// Default protocol is IPv4
|
||||
if set.HashFamily == "" {
|
||||
set.HashFamily = ProtocolFamilyIPV4
|
||||
}
|
||||
// Default ipset type is "hash:ip,port"
|
||||
if len(set.SetType) == 0 {
|
||||
set.SetType = HashIPPort
|
||||
}
|
||||
if len(set.PortRange) == 0 {
|
||||
set.PortRange = DefaultPortRange
|
||||
}
|
||||
// sets some IPSet fields if not present to their default values.
|
||||
set.setIPSetDefaults()
|
||||
|
||||
// Validate ipset before creating
|
||||
valid := set.Validate()
|
||||
@@ -289,7 +285,7 @@ func (runner *runner) CreateSet(set *IPSet, ignoreExistErr bool) error {
|
||||
// If ignoreExistErr is set to true, then the -exist option of ipset will be specified, ipset ignores the error
|
||||
// otherwise raised when the same set (setname and create parameters are identical) already exists.
|
||||
func (runner *runner) createSet(set *IPSet, ignoreExistErr bool) error {
|
||||
args := []string{"create", set.Name, string(set.SetType), "comment"}
|
||||
args := []string{"create", set.Name, string(set.SetType)}
|
||||
if set.SetType == HashIPPortIP || set.SetType == HashIPPort {
|
||||
args = append(args,
|
||||
"family", set.HashFamily,
|
||||
@@ -313,7 +309,7 @@ func (runner *runner) createSet(set *IPSet, ignoreExistErr bool) error {
|
||||
// If the -exist option is specified, ipset ignores the error otherwise raised when
|
||||
// the same set (setname and create parameters are identical) already exists.
|
||||
func (runner *runner) AddEntry(entry string, set *IPSet, ignoreExistErr bool) error {
|
||||
args := []string{"add", set.Name, entry, "comment", set.Comment}
|
||||
args := []string{"add", set.Name, entry}
|
||||
if ignoreExistErr {
|
||||
args = append(args, "-exist")
|
||||
}
|
||||
@@ -325,7 +321,6 @@ func (runner *runner) AddEntry(entry string, set *IPSet, ignoreExistErr bool) er
|
||||
|
||||
// DelEntry is used to delete the specified entry from the set.
|
||||
func (runner *runner) DelEntry(entry string, set string) error {
|
||||
entry = strings.Split(entry, " comment")[0]
|
||||
if _, err := runner.exec.Command(IPSetCmd, "del", set, entry).CombinedOutput(); err != nil {
|
||||
return fmt.Errorf("error deleting entry %s: from set: %s, error: %v", entry, set, err)
|
||||
}
|
||||
@@ -487,10 +482,10 @@ func IsNotFoundError(err error) bool {
|
||||
|
||||
// checks if given protocol is supported in entry
|
||||
func validateProtocol(protocol string) bool {
|
||||
if protocol == ProtocolTCP || protocol == ProtocolUDP {
|
||||
if protocol == ProtocolTCP || protocol == ProtocolUDP || protocol == ProtocolSCTP {
|
||||
return true
|
||||
}
|
||||
glog.Errorf("Invalid entry's protocol: %s, supported protocols are [%s, %s]", protocol, ProtocolTCP, ProtocolUDP)
|
||||
glog.Errorf("Invalid entry's protocol: %s, supported protocols are [%s, %s]", protocol, ProtocolTCP, ProtocolUDP, ProtocolSCTP)
|
||||
return false
|
||||
}
|
||||
|
||||
|
251
vendor/k8s.io/kubernetes/pkg/util/ipset/ipset_test.go
generated
vendored
251
vendor/k8s.io/kubernetes/pkg/util/ipset/ipset_test.go
generated
vendored
@@ -346,6 +346,22 @@ var testCases = []struct {
|
||||
},
|
||||
delCombinedOutputLog: []string{"ipset", "del", "SIX", "80"},
|
||||
},
|
||||
{ // case 7
|
||||
entry: &Entry{
|
||||
IP: "192.168.1.2",
|
||||
Port: 80,
|
||||
Protocol: ProtocolSCTP,
|
||||
SetType: HashIPPort,
|
||||
},
|
||||
set: &IPSet{
|
||||
Name: "SETTE",
|
||||
},
|
||||
addCombinedOutputLog: [][]string{
|
||||
{"ipset", "add", "SETTE", "192.168.1.2,sctp:80"},
|
||||
{"ipset", "add", "SETTE", "192.168.1.2,sctp:80", "-exist"},
|
||||
},
|
||||
delCombinedOutputLog: []string{"ipset", "del", "SETTE", "192.168.1.2,sctp:80"},
|
||||
},
|
||||
}
|
||||
|
||||
func TestAddEntry(t *testing.T) {
|
||||
@@ -755,6 +771,10 @@ func Test_validateFamily(t *testing.T) {
|
||||
family: "",
|
||||
valid: false,
|
||||
},
|
||||
{ // case[8]
|
||||
family: "sctp",
|
||||
valid: false,
|
||||
},
|
||||
}
|
||||
for i := range testCases {
|
||||
valid := validateHashFamily(testCases[i].family)
|
||||
@@ -804,6 +824,10 @@ func Test_validateProtocol(t *testing.T) {
|
||||
protocol: "",
|
||||
valid: false,
|
||||
},
|
||||
{ // case[8]
|
||||
protocol: ProtocolSCTP,
|
||||
valid: true,
|
||||
},
|
||||
}
|
||||
for i := range testCases {
|
||||
valid := validateProtocol(testCases[i].protocol)
|
||||
@@ -904,6 +928,150 @@ func TestValidateIPSet(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func Test_setIPSetDefaults(t *testing.T) {
|
||||
testCases := []struct {
|
||||
name string
|
||||
set *IPSet
|
||||
expect *IPSet
|
||||
}{
|
||||
{
|
||||
name: "test all the IPSet fields not present",
|
||||
set: &IPSet{
|
||||
Name: "test1",
|
||||
},
|
||||
expect: &IPSet{
|
||||
Name: "test1",
|
||||
SetType: HashIPPort,
|
||||
HashFamily: ProtocolFamilyIPV4,
|
||||
HashSize: 1024,
|
||||
MaxElem: 65536,
|
||||
PortRange: DefaultPortRange,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "test all the IPSet fields present",
|
||||
set: &IPSet{
|
||||
Name: "test2",
|
||||
SetType: BitmapPort,
|
||||
HashFamily: ProtocolFamilyIPV6,
|
||||
HashSize: 65535,
|
||||
MaxElem: 2048,
|
||||
PortRange: DefaultPortRange,
|
||||
},
|
||||
expect: &IPSet{
|
||||
Name: "test2",
|
||||
SetType: BitmapPort,
|
||||
HashFamily: ProtocolFamilyIPV6,
|
||||
HashSize: 65535,
|
||||
MaxElem: 2048,
|
||||
PortRange: DefaultPortRange,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "test part of the IPSet fields present",
|
||||
set: &IPSet{
|
||||
Name: "test3",
|
||||
SetType: BitmapPort,
|
||||
HashFamily: ProtocolFamilyIPV6,
|
||||
HashSize: 65535,
|
||||
},
|
||||
expect: &IPSet{
|
||||
Name: "test3",
|
||||
SetType: BitmapPort,
|
||||
HashFamily: ProtocolFamilyIPV6,
|
||||
HashSize: 65535,
|
||||
MaxElem: 65536,
|
||||
PortRange: DefaultPortRange,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range testCases {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
test.set.setIPSetDefaults()
|
||||
if !reflect.DeepEqual(test.set, test.expect) {
|
||||
t.Errorf("expected ipset struct: %v, got ipset struct: %v", test.expect, test.set)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func Test_checkIPandProtocol(t *testing.T) {
|
||||
testset := &IPSet{
|
||||
Name: "test1",
|
||||
SetType: HashIPPort,
|
||||
HashFamily: ProtocolFamilyIPV4,
|
||||
HashSize: 1024,
|
||||
MaxElem: 65536,
|
||||
PortRange: DefaultPortRange,
|
||||
}
|
||||
|
||||
testCases := []struct {
|
||||
name string
|
||||
entry *Entry
|
||||
valid bool
|
||||
}{
|
||||
{
|
||||
name: "valid IP with ProtocolTCP",
|
||||
entry: &Entry{
|
||||
SetType: HashIPPort,
|
||||
IP: "1.2.3.4",
|
||||
Protocol: ProtocolTCP,
|
||||
Port: 8080,
|
||||
},
|
||||
valid: true,
|
||||
},
|
||||
{
|
||||
name: "valid IP with ProtocolUDP",
|
||||
entry: &Entry{
|
||||
SetType: HashIPPort,
|
||||
IP: "1.2.3.4",
|
||||
Protocol: ProtocolUDP,
|
||||
Port: 8080,
|
||||
},
|
||||
valid: true,
|
||||
},
|
||||
{
|
||||
name: "valid IP with nil Protocol",
|
||||
entry: &Entry{
|
||||
SetType: HashIPPort,
|
||||
IP: "1.2.3.4",
|
||||
Port: 8080,
|
||||
},
|
||||
valid: true,
|
||||
},
|
||||
{
|
||||
name: "valid IP with invalid Protocol",
|
||||
entry: &Entry{
|
||||
SetType: HashIPPort,
|
||||
IP: "1.2.3.4",
|
||||
Protocol: "invalidProtocol",
|
||||
Port: 8080,
|
||||
},
|
||||
valid: false,
|
||||
},
|
||||
{
|
||||
name: "invalid IP with ProtocolTCP",
|
||||
entry: &Entry{
|
||||
SetType: HashIPPort,
|
||||
IP: "1.2.3.423",
|
||||
Protocol: ProtocolTCP,
|
||||
Port: 8080,
|
||||
},
|
||||
valid: false,
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range testCases {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
result := test.entry.checkIPandProtocol(testset)
|
||||
if result != test.valid {
|
||||
t.Errorf("expected valid: %v, got valid: %v", test.valid, result)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func Test_parsePortRange(t *testing.T) {
|
||||
testCases := []struct {
|
||||
portRange string
|
||||
@@ -1257,16 +1425,16 @@ func TestValidateEntry(t *testing.T) {
|
||||
},
|
||||
{ // case[19]
|
||||
entry: &Entry{
|
||||
SetType: HashIPPortIP,
|
||||
IP: "10.20.30.40",
|
||||
Protocol: "SCTP ",
|
||||
Port: 8090,
|
||||
IP2: "10.20.30.41",
|
||||
SetType: HashIPPortIP,
|
||||
IP: "10.20.30.40",
|
||||
Protocol: ProtocolSCTP,
|
||||
Port: 8090,
|
||||
IP2: "10.20.30.41",
|
||||
},
|
||||
set: &IPSet{
|
||||
Name: "unsupported-protocol",
|
||||
Name: "sctp",
|
||||
},
|
||||
valid: false,
|
||||
valid: true,
|
||||
},
|
||||
{ // case[20]
|
||||
entry: &Entry{
|
||||
@@ -1408,3 +1576,72 @@ func TestValidateEntry(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestEntryString(t *testing.T) {
|
||||
testCases := []struct {
|
||||
name string
|
||||
entry *Entry
|
||||
expect string
|
||||
}{
|
||||
{
|
||||
name: "test when SetType is HashIPPort",
|
||||
entry: &Entry{
|
||||
SetType: HashIPPort,
|
||||
IP: "1.2.3.4",
|
||||
Protocol: ProtocolTCP,
|
||||
Port: 8080,
|
||||
},
|
||||
expect: "1.2.3.4,tcp:8080",
|
||||
},
|
||||
{
|
||||
name: "test when SetType is HashIPPortIP",
|
||||
entry: &Entry{
|
||||
SetType: HashIPPortIP,
|
||||
IP: "1.2.3.8",
|
||||
Protocol: ProtocolUDP,
|
||||
Port: 8081,
|
||||
IP2: "1.2.3.8",
|
||||
},
|
||||
expect: "1.2.3.8,udp:8081,1.2.3.8",
|
||||
},
|
||||
{
|
||||
name: "test when SetType is HashIPPortNet",
|
||||
entry: &Entry{
|
||||
SetType: HashIPPortNet,
|
||||
IP: "192.168.1.2",
|
||||
Protocol: ProtocolUDP,
|
||||
Port: 80,
|
||||
Net: "10.0.1.0/24",
|
||||
},
|
||||
expect: "192.168.1.2,udp:80,10.0.1.0/24",
|
||||
},
|
||||
{
|
||||
name: "test when SetType is BitmapPort",
|
||||
entry: &Entry{
|
||||
SetType: BitmapPort,
|
||||
Port: 80,
|
||||
},
|
||||
expect: "80",
|
||||
},
|
||||
{
|
||||
name: "test when SetType is unknown",
|
||||
entry: &Entry{
|
||||
SetType: "unknown",
|
||||
IP: "192.168.1.2",
|
||||
Protocol: ProtocolUDP,
|
||||
Port: 80,
|
||||
Net: "10.0.1.0/24",
|
||||
},
|
||||
expect: "",
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range testCases {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
result := test.entry.String()
|
||||
if result != test.expect {
|
||||
t.Errorf("Unexpected mismatch, expected: %s, got: %s", test.expect, result)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
4
vendor/k8s.io/kubernetes/pkg/util/ipset/testing/BUILD
generated
vendored
4
vendor/k8s.io/kubernetes/pkg/util/ipset/testing/BUILD
generated
vendored
@@ -7,7 +7,7 @@ go_library(
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
"//pkg/util/ipset:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
@@ -31,6 +31,6 @@ go_test(
|
||||
embed = [":go_default_library"],
|
||||
deps = [
|
||||
"//pkg/util/ipset:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
||||
],
|
||||
)
|
||||
|
2
vendor/k8s.io/kubernetes/pkg/util/ipset/types.go
generated
vendored
2
vendor/k8s.io/kubernetes/pkg/util/ipset/types.go
generated
vendored
@@ -49,6 +49,8 @@ const (
|
||||
ProtocolTCP = "tcp"
|
||||
// ProtocolUDP represents UDP protocol.
|
||||
ProtocolUDP = "udp"
|
||||
// ProtocolSCTP represents SCTP protocol.
|
||||
ProtocolSCTP = "sctp"
|
||||
)
|
||||
|
||||
// ValidIPSetTypes defines the supported ip set type.
|
||||
|
Reference in New Issue
Block a user