Add validation when PodCidr is set in the Azure CNI case. (#3562)

This commit is contained in:
Jun Sun 2018-07-26 13:26:37 -07:00 коммит произвёл Jack Francis
Родитель ed2b9595fc
Коммит 13210037db
3 изменённых файлов: 37 добавлений и 0 удалений

Просмотреть файл

@ -5,6 +5,9 @@ import "github.com/pkg/errors"
// ErrorInvalidNetworkProfile error // ErrorInvalidNetworkProfile error
var ErrorInvalidNetworkProfile = errors.New("ServiceCidr, DNSServiceIP, DockerBridgeCidr should all be empty or neither should be empty") var ErrorInvalidNetworkProfile = errors.New("ServiceCidr, DNSServiceIP, DockerBridgeCidr should all be empty or neither should be empty")
// ErrorPodCidrNotSetableInAzureCNI error
var ErrorPodCidrNotSetableInAzureCNI = errors.New("PodCidr should not be set when network plugin is set to Azure")
// ErrorInvalidNetworkPlugin error // ErrorInvalidNetworkPlugin error
var ErrorInvalidNetworkPlugin = errors.New("Network plugin should be either Azure or Kubenet") var ErrorInvalidNetworkPlugin = errors.New("Network plugin should be either Azure or Kubenet")

Просмотреть файл

@ -211,6 +211,11 @@ func validateVNET(a *Properties) error {
} else { } else {
return ErrorInvalidNetworkProfile return ErrorInvalidNetworkProfile
} }
// PodCidr should not be set for Azure CNI
if n.NetworkPlugin == Azure && n.PodCidr != "" {
return ErrorPodCidrNotSetableInAzureCNI
}
default: default:
return ErrorInvalidNetworkPlugin return ErrorInvalidNetworkPlugin
} }

Просмотреть файл

@ -129,6 +129,35 @@ func TestValidateVNET(t *testing.T) {
t.Errorf("Failed to test validate VNET: expected %s but got %s", ErrorInvalidNetworkProfile, err.Error()) t.Errorf("Failed to test validate VNET: expected %s but got %s", ErrorInvalidNetworkProfile, err.Error())
} }
// network profile has NetworkPlugin set to azure and PodCidr set, should fail
n = &NetworkProfile{
NetworkPlugin: NetworkPlugin("azure"),
PodCidr: "a.b.c.d",
}
p = []*AgentPoolProfile{
{
VnetSubnetID: vnetSubnetID1,
MaxPods: &maxPods1,
},
{
VnetSubnetID: vnetSubnetID2,
MaxPods: &maxPods2,
},
}
a = &Properties{
NetworkProfile: n,
AgentPoolProfiles: p,
}
if err := validateVNET(a); err != ErrorPodCidrNotSetableInAzureCNI {
if err == nil {
t.Errorf("Failed to test validate VNET: expected %s but got no error", ErrorPodCidrNotSetableInAzureCNI)
}
t.Errorf("Failed to test validate VNET: expected %s but got %s", ErrorPodCidrNotSetableInAzureCNI, err.Error())
}
// NetworkPlugin is not azure or kubenet // NetworkPlugin is not azure or kubenet
n = &NetworkProfile{ n = &NetworkProfile{
NetworkPlugin: NetworkPlugin("none"), NetworkPlugin: NetworkPlugin("none"),