Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Single field for firewall-controller version in shoot spec #143

Merged
merged 1 commit into from
Jan 15, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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: 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
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