@@ -1851,3 +1851,83 @@ func Test_Validate_NriConfig(t *testing.T) {
18511851 testErrors (t , g .Input .Containerd , errs , g .ExpectedErrors )
18521852 }
18531853}
1854+
1855+ func newLinodeClusterForNetworkingValidation (networking kops.NetworkingSpec ) * kops.Cluster {
1856+ return & kops.Cluster {
1857+ Spec : kops.ClusterSpec {
1858+ CloudProvider : kops.CloudProviderSpec {
1859+ Linode : & kops.LinodeSpec {},
1860+ },
1861+ Networking : networking ,
1862+ },
1863+ }
1864+ }
1865+
1866+ func validLinodeNetworkingSpec () kops.NetworkingSpec {
1867+ return kops.NetworkingSpec {
1868+ NetworkCIDR : "10.0.0.0/8" ,
1869+ NonMasqueradeCIDR : "100.64.0.0/10" ,
1870+ PodCIDR : "100.96.0.0/11" ,
1871+ ServiceClusterIPRange : "100.64.0.0/13" ,
1872+ Subnets : []kops.ClusterSubnetSpec {
1873+ {
1874+ Name : "subnet-us-east" ,
1875+ CIDR : "10.11.0.0/16" ,
1876+ Type : kops .SubnetTypePublic ,
1877+ Region : "us-east" ,
1878+ },
1879+ },
1880+ }
1881+ }
1882+
1883+ func TestValidateNetworkingLinode (t * testing.T ) {
1884+ tests := []struct {
1885+ name string
1886+ network kops.NetworkingSpec
1887+ expected []* field.Error
1888+ }{
1889+ {
1890+ name : "accepts private network CIDR" ,
1891+ network : validLinodeNetworkingSpec (),
1892+ },
1893+ {
1894+ name : "rejects public network CIDR" ,
1895+ network : func () kops.NetworkingSpec {
1896+ n := validLinodeNetworkingSpec ()
1897+ n .NetworkCIDR = "8.8.8.0/24"
1898+ n .Subnets [0 ].CIDR = "8.8.8.0/25"
1899+ return n
1900+ }(),
1901+ expected : []* field.Error {
1902+ {
1903+ Type : field .ErrorTypeInvalid ,
1904+ Field : "networking.networkCIDR" ,
1905+ Detail : "networkCIDR must be within a private IP range" ,
1906+ },
1907+ },
1908+ },
1909+ {
1910+ name : "rejects networkID with networkCIDR" ,
1911+ network : func () kops.NetworkingSpec {
1912+ n := validLinodeNetworkingSpec ()
1913+ n .NetworkID = "123456"
1914+ return n
1915+ }(),
1916+ expected : []* field.Error {
1917+ {
1918+ Type : field .ErrorTypeForbidden ,
1919+ Field : "networking.networkCIDR" ,
1920+ Detail : "Linode (Akamai) doesn't support specifying both NetworkID and NetworkCIDR" ,
1921+ },
1922+ },
1923+ },
1924+ }
1925+
1926+ for _ , tt := range tests {
1927+ t .Run (tt .name , func (t * testing.T ) {
1928+ cluster := newLinodeClusterForNetworkingValidation (tt .network )
1929+ errList := validateNetworking (cluster , & cluster .Spec .Networking , field .NewPath ("networking" ), true , & cloudProviderConstraints {})
1930+ testFieldErrors (t , errList , tt .expected )
1931+ })
1932+ }
1933+ }
0 commit comments