Skip to content

Commit

Permalink
single field for firewall-controller version in shoot spec (#143)
Browse files Browse the repository at this point in the history
  • Loading branch information
mwindower authored Jan 15, 2021
1 parent 7338ddc commit e743de6
Show file tree
Hide file tree
Showing 11 changed files with 59 additions and 100 deletions.
4 changes: 2 additions & 2 deletions example/controller-registration.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ spec:
deployment:
type: helm
providerConfig:
chart: H4sIAAAAAAAAA+0ca4/bNjKf9SsI5wq0h7P8XKcQkMNtk712ccmusbtNcTgcAlqibcWyqJLS7vrS/PcbPiRRsmTZ+2xaDQJEJjnDITkczgyHGzF67XuEddckxkHvxWNAH+DV0ZH8H6D8v/wejMaD4dFwMhHl8NU/eoGOHoWbEiQ8xgyhF4zSeFe7pvqvFKLi+r9ZYhbbG7wOHrCPpvUfDo5K6z8ej0YvUP8BeaiFP/n648j/QBj3aeig64GFoyj/2bcHY7tveYS7zI9iWXiMfiLBGrlCTtCcMhQvCfoRM4+EhKH3QojQVMsUIrcxCQUxK8Rr4qCisFnX5Z6eezL+hFDa/x517QV94D6a9v/RsKz/R5P+oN3/TwG93oI6C7F5cUyQbffg3zUJPcp6Cz9eJjPbpeveQm/w/GOJ3VUvxeu6NIwZDQKQI0YWPo+hFHa2zZelPY9s3ceHk4vL0/Mz/Yvc4nUUkF4dHXEgoTeqchrgkDiK2mk4ZxhaJW6csLTwF8pWhKkfltXroSnwihdEKy0S4llAODLHzZMoolqh6UI/XEjd5lLGiBujnDVUYM2KTOpfnQor7f+YwDrAjPCHtAQPt//GR/1Ra/89BdSu/8clCSI4oO04uq8t2LD+g+GwbP+96o/6rf5/Cvj8uYs8MvdDgjrCSOug7pcvVqrmu5kF1y3ZbgIPjgnZ2jKJBHhGAm6DIWmvyEaRkz+SGWEhAdGyfdoTXRVo1JC4xkGiefr8GfmhGyRexqmNNOIORrZxywwKKg6qaaH7lz1tj8IPQXhCl0h0+4IEBHNinwFzlZxlrPlrODAUZwiJGn+OlphPGdTfog5f4uHRxIFuP4juoSvR3o7xAmUYEfPDeI463/B/fMPLLRmJKPdjyja7SMAYSRVB584EYbDGuMsL4pEooJs1CWNt+GfCwXvgehjT9dyb4k8Etfof7J25v1jjqCtX+hpsIMq6FJbuhvkxOSRG0HT+jyejov4fjiaTV63+fwrQ2qewqz/ItT5Pl1rpvkKYYOWHniMMchCR9ziyhPB4OMYOaALl6ldr62pZ0kgcLOkKVSqLlZJRitmpUOeC/G9QCKdWjMaidcqO7JF/LAqug34TRHaOukjOUGrPvWQPCs37//7RwIb9fzQajsr232jc2n9PAg+1sTNxedTNrHrJtjAC6Ha78n9zIFKW7VS07cyI5bYmkNq3thvQxAPrAwfREg8koWwKtLuvJiNR7r5V0peanhv4wCu0DEGJQDM1QuC3VO7IUmDWdUkkyoGx+GoTES6nipFfE58RD3Ua6NvbBJDPM/xOE39V+JplOclp6YFcGZiHsWMiZnz8Gh06K4BxWL8CIetvljAeH9ijxDmsT4VSPFKqpWqN3SVYzqfyBEv5LBTK3RPTf4vw2E7k2sNMkCSx66WSyeEMBIz0pxBhzPlZuvVLnQhMW6PYWct8SgEdw473400ztm5orAd2V0mUc8LdJfGSoJ4RhWCn7Uw2PBLE+DLEEV/SeEqYT70mMhUoKUWcxMuULxVOrKQmmtm6vn6Vy60U2VR5XUFNGNdSLzarWFseBUm4Ok48P96DY6N1M+M1jVUnS+L+fPGuqQ/VqoB1RVck3ANPtqsYMGg2moQifHtyK2K6hO2zUltIe6zbThzVZUjiG8pWVwzP576bi/JhrBSpbPcCRi6oTxbi4Ey13KUXmumXieXKY9A3TolUrwHRfGBLyuOwRllU9GwSsVNcc2Ci3V1oyWh+QQ2VTP496bi4evRAkQjO7kQTMHdR/RfZ3J3wimzKtMsaoajhvYRRvpdkpppaYuyhHuqaZ/qcEC+Vn1pxLVLJUYxBDv/I/tljQ63/l0fr7u0ANvh/k/FkXPb/jqCo9f+eAEy3KY3EKg/obSYAe3uBj+L78YjIk5ORa1/w+ZMvdMLmnb8Gkwb1ZU0U+C7mBaWlC98Ijak65cCLCPE42o6O3eW7/fiYKALp5tAEjEmRhkcY0lg6iYY63TO8lql/MGxWPFkb0Ve5L6vjZoVl+FYG8NFf7CvNpf0DTPwUx0vU2SuY2/lODlldPgAPJl+lI6SG1Z2hgTsw28DWnkL0fW4Kk8wEEw4nBveIZWvVbZJsbWmJ+XNQpxw9NK9IvnxxtqrVRUmnSGeaBMGUgpgW3SOFEWWVhWmn6zUOvVzCuqhXcVunpGYJ/jQzWhaVvZm1ATShT7NtV69bd+4H5HUPPKNe9dTo9eoZsZkyGdFLJNI2oJ9bUeAmjMHadBkRP6AD/rpob2i+sm+JbeeYl5vQ5ea8iJ78QjbI4X0V8Rt7W4QUeqERUaGhbq4AajuQKOcpxnGGUKZ9I1NYDh+Bwmvi/IbMlpSu0gXOVPbrHRq7FpsTBmqkK+xRkyvdSlumqtG0ZJQLap7PhWFoyGJhcLo6j8YJb+QT9UPU+Vunjpbuu4rQL7qqhgoJr82dpTTCu5PjtycXH0/enby5Oj0/+3h2/P7kcnr85iRriZC8J/4no2vHKERo7pPAuyDzYqkuF+rOyY4RO1uGux4eKb+n749/PPkAzJ5ffDz/cHLxy8Xp1RavDurJhCXjZqRXeVWy6wwQi863JyyVELXqRs+Z1p2W3bp9xEUGRWLq0sBBV2+mZbeDEU4T5pKCuGeFVS5GjvEbCne5THLWaJCsyXthTlQMWW0Gg9W1aKhWuFl33nfF627VqpjZWnWjHSPYOw8DOI1ACZL6lRfr47vkWPmjZ83n5kskQguhiANmJUJ8vGNwZ48rqlAWUH2bgKmwuFQxPfg6lTpUF5/cEjcxA+sv9bxIO+CyYPCllXJChPEHTjRIADcNtrxFF63IpjYtJEsc2cJDSB0I0Cs6DSuq5e6r6FB0uUcSShEtphEN6GIjQwadYnJKGk5JbQ4lwFv2TkkC3fTqx1RZe9/8pOCROU6C+D31AG887Ouqg8R7P+E+nN+mzbKD9z9ggKHW/4fNCWcmS2Te/yzxFuTOgYDG/O/xq1L+x2D8atL6/08BeksuYvSt8MiqvOfv0KCcAhJJv6R3PZiB1KQBgyn13mYS84OUmN9H5ADM6J9DfI39QJiAkjxPZo0DvnfE4GtQGbX7n82w+0APwRr2/2h8VM7/mIz67f5/EhDpE+bOlssurhYp8/+nXjisvpf2RJ4dEsCcEXZBA3LI/j5k57IkEJZKV2R1/MhoEkmzpYuMTI5iCodVMPVFU1dxyeWPomdfWdYDOYgTVWUGHSpKzKbK4y5859VgXcw0O0IZSsPU5+rjRmgT+RVlX0kEc0m2h50NrXHUKo7jZaVFJjp/7WwT73QqJi+16bhRJzWxqi8FkkBTix9SW4okmcqR35SHmY+9mqeuDEjLj1mGWyufCsFb+9KiLzzRMRtEviFDRoW+AwWfIi8tTUp2QCmewIYEV1B+cuIyEvPtqZP6P6J+2jC/VEkRpSNV+KFv+bgpxSB6ZKtgBjsG+FXleYutqk90pj7ApMs/euA3KJFJYvnaSbvgrpnupPuELuk6nQ2Zzu3ntXrmpEng7yVxOjXF5jiSYlw52wKzmRRIAuUuDnatG9CI4WgPYNRpc7VjG/mUwg272V1VEp6Df3qDg6CwMje+2KCHTkl6zdnUpbwGraB3Ly3+g5KWR1Pm0IWOgaWj3sGhlWXgGcdMAz9gzX0C1SNPDIV8WYhQPIzx+dxH9aNArf2ntdFDmICN/l9/uPX+a9jm/z8JVOb/6t3z+/DeYpmHqrXB6bTglu13b5uFqbs6n2g8HkmPrhhPlgE1zMBeOSg8/dwreD9o2v/aGrmXGmja/8PxoBT/6Y/7bf7Hk8Cu/Z+ens+qBp57gv7gUNr/6nbigf8AUFP8p791/o8nkzb+8ySg8lmko5HmrzhosXSZcBYMb6QqyaT0JFycngsHyeNDmNyRkd1yHNzgDbcsM8zqoIGVuzfo8xfLMrIA9HOfLOqiYrClzAYHHVmoFMnZ0VAFaHZRqkvQcNAcB5xY1nZCgoP+81+rlF4gy6yXqOqGS+T2ivs7X7/geGncdUU44SoXQl6TW+qeT03RhblA+Z9myS/9zM9ZQGe9NRYmU2+W+IHXk6R7b6kLMyBSeqz0mtWgqlZ9QekiIB/zFCmF28VrbzLWaHKlOyO739EF2d9yGtiDgX37dY9qsDWqzt9fi5ENVYVt25ZVsAkdS92Kp6kNwsK03Kyq+h1Y1SswHMkNIhr1PnEaprKav8iqbCHfSg366rJSP2QajPpW+b2QkEvzwU8pGTx/7JMWpM93FOHCi5zsPY6VXpxuv7Gx6h9kZJnmamfJe9vK5xIVDStePKiRVb9LyF4l6N/SC8hGmH0Ro1Sl0kv+s8c+FYyUn+lkKjGWBVbFA5wKKvqxTPqtnsBYpdUpJOpXzomRUC+1aaqylXASveQpi/qZZGtgtdBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgstfJXwf7VRPYUAeAAA
chart: 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
values:
image:
tag: v0.14.0
tag: v0.15.0
13 changes: 6 additions & 7 deletions pkg/apis/metal/types_infrastructure.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,12 @@ type InfrastructureConfig struct {
}

type Firewall struct {
Size string
Image string
Networks []string
RateLimits []RateLimit
EgressRules []EgressRule
ControllerVersion *string
ControllerVersionAutoUpdate bool
Size string
Image string
Networks []string
RateLimits []RateLimit
EgressRules []EgressRule
ControllerVersion string
}

type RateLimit struct {
Expand Down
13 changes: 6 additions & 7 deletions pkg/apis/metal/v1alpha1/types_infrastructure.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,12 @@ type InfrastructureConfig struct {
}

type Firewall struct {
Size string `json:"size"`
Image string `json:"image"`
Networks []string `json:"networks"`
RateLimits []RateLimit `json:"rateLimits"`
EgressRules []EgressRule `json:"egressRules"`
ControllerVersion *string `json:"controllerVersion"`
ControllerVersionAutoUpdate bool `json:"controllerVersionAutoUpdate"`
Size string `json:"size"`
Image string `json:"image"`
Networks []string `json:"networks"`
RateLimits []RateLimit `json:"rateLimits"`
EgressRules []EgressRule `json:"egressRules"`
ControllerVersion string `json:"controllerVersion"`
}

type RateLimit struct {
Expand Down
6 changes: 2 additions & 4 deletions pkg/apis/metal/v1alpha1/zz_generated.conversion.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 0 additions & 5 deletions pkg/apis/metal/v1alpha1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

55 changes: 22 additions & 33 deletions pkg/apis/metal/validation/firewall_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,48 +9,42 @@ import (
"github.com/metal-stack/firewall-controller/pkg/updater"
)

const (
FirewallControllerVersionAuto = "auto"
)

var (
ErrSpecVersionUndefined = fmt.Errorf("firewall-controller version was not specified in the spec")
ErrSpecVersionEmpty = fmt.Errorf("firewall-controller version must not be empty")
ErrNoSemver = fmt.Errorf("firewall-controller versions must adhere to semver spec")
ErrControllerTooOld = fmt.Errorf("firewall-controller on machine is too old")
)

func ValidateFirewallControllerVersion(iv imagevector.ImageVector, specVersion *string, autoUpdate bool) (*string, error) {
versionTag, err := validateFirewallControllerVersionWithoutGithub(iv, specVersion, autoUpdate)
func ValidateFirewallControllerVersion(iv imagevector.ImageVector, specVersion string) (string, error) {
versionTag, err := validateFirewallControllerVersionWithoutGithub(iv, specVersion)
if err != nil {
return nil, err
}

if versionTag == nil {
return nil, nil
return "", err
}

_, err = updater.DetermineGithubAsset(*versionTag)
_, err = updater.DetermineGithubAsset(versionTag)
if err != nil {
return nil, fmt.Errorf("firewall-controller version must be a github release but version %v was not found", *versionTag)
return "", fmt.Errorf("firewall-controller version must be a github release but version %v was not found", versionTag)
}

return versionTag, nil
}

func validateFirewallControllerVersionWithoutGithub(iv imagevector.ImageVector, specVersion *string, autoUpdate bool) (*string, error) {
func validateFirewallControllerVersionWithoutGithub(iv imagevector.ImageVector, specVersion string) (string, error) {
imageVectorVersion, err := getImageVectorVersion(iv)
if err != nil {
return nil, err
return "", err
}

wantedVersion, err := determineWantedVersion(specVersion, imageVectorVersion, autoUpdate)
wantedVersion, err := determineWantedVersion(specVersion, imageVectorVersion)
if err != nil {
return nil, err
}

if wantedVersion == nil {
return nil, nil
return "", err
}

versionTag := fmt.Sprintf("v%s", wantedVersion.String())
return &versionTag, nil
return fmt.Sprintf("v%s", wantedVersion.String()), nil
}

func getImageVectorVersion(imageVector imagevector.ImageVector) (*semver.Version, error) {
Expand All @@ -67,28 +61,23 @@ func getImageVectorVersion(imageVector imagevector.ImageVector) (*semver.Version
return &semv, nil
}

func determineWantedVersion(specVersion *string, ivSemv *semver.Version, autoUpdate bool) (*semver.Version, error) {
if specVersion == nil {
func determineWantedVersion(specVersion string, ivSemv *semver.Version) (*semver.Version, error) {
if specVersion == "" {
return nil, ErrSpecVersionUndefined
}

if specVersion != nil && *specVersion == "" {
return nil, ErrSpecVersionEmpty
}

var wantedSemv *semver.Version
specSemv, err := semver.Make(strings.TrimPrefix(*specVersion, "v"))
if err != nil {
return nil, ErrNoSemver
}

if autoUpdate {
if specVersion == FirewallControllerVersionAuto {
wantedSemv = ivSemv
} else {
specSemv, err := semver.Make(strings.TrimPrefix(specVersion, "v"))
if err != nil {
return nil, ErrNoSemver
}
wantedSemv = &specSemv
}

if specSemv.Major != ivSemv.Major {
if wantedSemv.Major != ivSemv.Major {
return nil, ErrControllerTooOld
}

Expand Down
39 changes: 14 additions & 25 deletions pkg/apis/metal/validation/firewall_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,8 @@ func Test_validateFirewallControllerVersionWithoutGithub(t *testing.T) {
tests := []struct {
name string
iv imagevector.ImageVector
specVersion *string
autoUpdate bool
want *string
specVersion string
want string
wantErr error
}{
{
Expand All @@ -27,9 +26,8 @@ func Test_validateFirewallControllerVersionWithoutGithub(t *testing.T) {
Tag: &v0_2_0,
},
},
specVersion: nil,
autoUpdate: false,
want: nil,
specVersion: "",
want: "",
wantErr: ErrSpecVersionUndefined,
},
{
Expand All @@ -40,9 +38,8 @@ func Test_validateFirewallControllerVersionWithoutGithub(t *testing.T) {
Tag: &v0_2_0,
},
},
specVersion: &v0_1_0,
autoUpdate: true,
want: &v0_2_0,
specVersion: FirewallControllerVersionAuto,
want: v0_2_0,
},
{
name: "downgrade to older minor version given in image vector",
Expand All @@ -52,9 +49,8 @@ func Test_validateFirewallControllerVersionWithoutGithub(t *testing.T) {
Tag: &v0_1_0,
},
},
specVersion: &v0_2_0,
autoUpdate: true,
want: &v0_1_0,
specVersion: FirewallControllerVersionAuto,
want: v0_1_0,
},
{
name: "major version updates may contain api changes btw. gepm and firewall-controller and are not supported",
Expand All @@ -64,8 +60,7 @@ func Test_validateFirewallControllerVersionWithoutGithub(t *testing.T) {
Tag: &v1_0_0,
},
},
specVersion: &v0_1_0,
autoUpdate: true,
specVersion: v0_1_0,
wantErr: ErrControllerTooOld,
},
{
Expand All @@ -76,8 +71,7 @@ func Test_validateFirewallControllerVersionWithoutGithub(t *testing.T) {
Tag: &v0_1_0,
},
},
specVersion: &abc,
autoUpdate: true,
specVersion: abc,
wantErr: ErrNoSemver,
},
{
Expand All @@ -88,24 +82,19 @@ func Test_validateFirewallControllerVersionWithoutGithub(t *testing.T) {
Tag: &abc,
},
},
specVersion: &v0_1_0,
autoUpdate: true,
specVersion: v0_1_0,
wantErr: ErrNoSemver,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := validateFirewallControllerVersionWithoutGithub(tt.iv, tt.specVersion, tt.autoUpdate)
got, err := validateFirewallControllerVersionWithoutGithub(tt.iv, tt.specVersion)
if err != tt.wantErr {
t.Errorf("validateFirewallControllerVersionWithoutGithub() error = %v, wantErr %v", err, tt.wantErr)
return
}
if tt.want == nil || got == nil {
if tt.want != nil || got != nil {
t.Errorf("error")
}
} else if *got != *tt.want {
t.Errorf("validateFirewallControllerVersionWithoutGithub() = %v, want %v", *got, *tt.want)
if got != tt.want {
t.Errorf("validateFirewallControllerVersionWithoutGithub() = %v, want %v", got, tt.want)
}
})
}
Expand Down
8 changes: 3 additions & 5 deletions pkg/apis/metal/validation/infrastructure.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,11 +96,9 @@ func ValidateInfrastructureConfig(infra *apismetal.InfrastructureConfig) field.E
allErrs = append(allErrs, field.Required(firewallPath.Child("size"), "firewall size must be specified"))
}

if infra.Firewall.ControllerVersion != nil {
_, err := ValidateFirewallControllerVersion(imagevector.ImageVector(), infra.Firewall.ControllerVersion, infra.Firewall.ControllerVersionAutoUpdate)
if err != nil {
allErrs = append(allErrs, field.Required(field.NewPath("controllerVersion"), err.Error()))
}
_, err := ValidateFirewallControllerVersion(imagevector.ImageVector(), infra.Firewall.ControllerVersion)
if err != nil && err != ErrSpecVersionUndefined {
allErrs = append(allErrs, field.Required(field.NewPath("controllerVersion"), err.Error()))
}

availableNetworks := sets.NewString()
Expand Down
5 changes: 0 additions & 5 deletions pkg/apis/metal/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 2 additions & 5 deletions pkg/controller/controlplane/valuesprovider.go
Original file line number Diff line number Diff line change
Expand Up @@ -725,15 +725,12 @@ func (vp *valuesProvider) getFirewallSpec(ctx context.Context, cp *extensionsv1a
},
}

fwcv, err := validation.ValidateFirewallControllerVersion(imagevector.ImageVector(), infrastructureConfig.Firewall.ControllerVersion, infrastructureConfig.Firewall.ControllerVersionAutoUpdate)
fwcv, err := validation.ValidateFirewallControllerVersion(imagevector.ImageVector(), infrastructureConfig.Firewall.ControllerVersion)
if err != nil && err != validation.ErrSpecVersionUndefined {
return nil, fmt.Errorf("could not validate firewall controller version: %w", err)
}

if fwcv != nil {
spec.ControllerVersion = *fwcv
}

spec.ControllerVersion = fwcv
return &spec, nil
}

Expand Down
Loading

0 comments on commit e743de6

Please sign in to comment.