Skip to content

Commit 56573f4

Browse files
FedeDPpoiana
authored andcommitted
cleanup(cmd,pkg): properly manage ubuntu flavors at builders level.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
1 parent c40e6ce commit 56573f4

29 files changed

+48
-51
lines changed

cmd/cli_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,7 @@ type flagsTemplateData struct {
394394
}
395395

396396
func initFlagsTemplateData(args []string) flagsTemplateData {
397-
targets := builder.BuilderByTarget.Targets()
397+
targets := builder.Targets()
398398
sort.Strings(targets)
399399

400400
cmd := "driverkit"

cmd/root.go

+1-6
Original file line numberDiff line numberDiff line change
@@ -88,11 +88,6 @@ func persistentValidateFunc(rootCommand *RootCmd, rootOpts *RootOptions) func(c
8888
// Avoid sensitive info into default values help line
8989
rootCommand.StripSensitive()
9090

91-
// We just use ubuntu internally
92-
if strings.HasPrefix(rootOpts.Target, "ubuntu") {
93-
rootOpts.Target = "ubuntu"
94-
}
95-
9691
// Do not block root or help command to exec disregarding the root flags validity
9792
if c.Root() != c && c.Name() != "help" && c.Name() != "__complete" && c.Name() != "__completeNoDesc" && c.Name() != "completion" {
9893
if errs := rootOpts.Validate(); errs != nil {
@@ -141,7 +136,7 @@ func NewRootCmd() *RootCmd {
141136

142137
flags := rootCmd.Flags()
143138

144-
targets := builder.BuilderByTarget.Targets()
139+
targets := builder.Targets()
145140
sort.Strings(targets)
146141

147142
flags.StringVarP(&configOptions.ConfigFile, "config", "c", configOptions.ConfigFile, "config file path (default $HOME/.driverkit.yaml if exists)")
+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
level=INFO msg="using config file" file=testdata/configs/1.yaml
2-
level=DEBUG msg="running with options" output-module=/tmp/falco-ubuntu-aws.ko output-probe="" driverversion=master kernelrelease=4.15.0-1057-aws kernelversion=59 target=ubuntu arch={{ .CurrentArch }} kernelurls=[] repo-org=falcosecurity repo-name=libs
2+
level=DEBUG msg="running with options" output-module=/tmp/falco-ubuntu-aws.ko output-probe="" driverversion=master kernelrelease=4.15.0-1057-aws kernelversion=59 target=ubuntu-aws arch={{ .CurrentArch }} kernelurls=[] repo-org=falcosecurity repo-name=libs
33
level=INFO msg="driver building, it will take a few seconds" processor=docker
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
level=INFO msg="using config file" file=testdata/configs/1.yaml
2-
level=DEBUG msg="running with options" output-module=/tmp/override.ko output-probe="" driverversion=master kernelrelease=4.15.0-1057-aws kernelversion=229 target=ubuntu arch={{ .CurrentArch }} kernelurls=[] repo-org=falcosecurity repo-name=libs
2+
level=DEBUG msg="running with options" output-module=/tmp/override.ko output-probe="" driverversion=master kernelrelease=4.15.0-1057-aws kernelversion=229 target=ubuntu-aws arch={{ .CurrentArch }} kernelurls=[] repo-org=falcosecurity repo-name=libs
33
level=INFO msg="driver building, it will take a few seconds" processor=docker
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
level=INFO msg="using config file" file=testdata/configs/2.yaml
2-
level=DEBUG msg="running with options" output-module=/tmp/falco-ubuntu-aws.ko output-probe="" driverversion=master kernelrelease=4.15.0-1057-aws kernelversion=59 target=ubuntu arch={{ .CurrentArch }} kernelurls="[https://mirrors.edge.kernel.org/ubuntu/pool/main/l/linux-aws/linux-aws-headers-4.15.0-1057_4.15.0-1057.59_all.deb https://mirrors.edge.kernel.org/ubuntu/pool/main/l/linux-aws/linux-headers-4.15.0-1057-aws_4.15.0-1057.59_amd64.deb]" repo-org=falcosecurity repo-name=libs
2+
level=DEBUG msg="running with options" output-module=/tmp/falco-ubuntu-aws.ko output-probe="" driverversion=master kernelrelease=4.15.0-1057-aws kernelversion=59 target=ubuntu-aws arch={{ .CurrentArch }} kernelurls="[https://mirrors.edge.kernel.org/ubuntu/pool/main/l/linux-aws/linux-aws-headers-4.15.0-1057_4.15.0-1057.59_all.deb https://mirrors.edge.kernel.org/ubuntu/pool/main/l/linux-aws/linux-headers-4.15.0-1057-aws_4.15.0-1057.59_amd64.deb]" repo-org=falcosecurity repo-name=libs
33
level=INFO msg="driver building, it will take a few seconds" processor=docker
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
level=DEBUG msg="running without a configuration file"
2-
level=DEBUG msg="running with options" output-module=/tmp/falco-ubuntu-azure.ko output-probe="" driverversion=master kernelrelease=4.15.0-1057-azure kernelversion=62 target=ubuntu arch={{ .CurrentArch }} kernelurls="[http://mirrors.edge.kernel.org/ubuntu/pool/main/l/linux-azure/linux-azure-headers-4.15.0-1057_4.15.0-1057.62_all.deb http://mirrors.edge.kernel.org/ubuntu/pool/main/l/linux-azure/linux-headers-4.15.0-1057-azure_4.15.0-1057.62_amd64.deb]" repo-org=falcosecurity repo-name=libs
2+
level=DEBUG msg="running with options" output-module=/tmp/falco-ubuntu-azure.ko output-probe="" driverversion=master kernelrelease=4.15.0-1057-azure kernelversion=62 target=ubuntu-azure arch={{ .CurrentArch }} kernelurls="[http://mirrors.edge.kernel.org/ubuntu/pool/main/l/linux-azure/linux-azure-headers-4.15.0-1057_4.15.0-1057.62_all.deb http://mirrors.edge.kernel.org/ubuntu/pool/main/l/linux-azure/linux-headers-4.15.0-1057-azure_4.15.0-1057.62_amd64.deb]" repo-org=falcosecurity repo-name=libs
33
level=INFO msg="driver building, it will take a few seconds" processor=docker
+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
level=DEBUG msg="running without a configuration file"
2-
level=DEBUG msg="running with options" output-module=/tmp/falco-ubuntu-aws.ko output-probe="" driverversion=master kernelrelease=4.15.0-1057-aws kernelversion=59 target=ubuntu arch={{ .CurrentArch }} kernelurls="[https://mirrors.edge.kernel.org/ubuntu/pool/main/l/linux-aws/linux-aws-headers-4.15.0-1057_4.15.0-1057.59_all.deb https://mirrors.edge.kernel.org/ubuntu/pool/main/l/linux-aws/linux-headers-4.15.0-1057-aws_4.15.0-1057.59_amd64.deb]" repo-org=falcosecurity repo-name=libs
2+
level=DEBUG msg="running with options" output-module=/tmp/falco-ubuntu-aws.ko output-probe="" driverversion=master kernelrelease=4.15.0-1057-aws kernelversion=59 target=ubuntu-aws arch={{ .CurrentArch }} kernelurls="[https://mirrors.edge.kernel.org/ubuntu/pool/main/l/linux-aws/linux-aws-headers-4.15.0-1057_4.15.0-1057.59_all.deb https://mirrors.edge.kernel.org/ubuntu/pool/main/l/linux-aws/linux-headers-4.15.0-1057-aws_4.15.0-1057.59_amd64.deb]" repo-org=falcosecurity repo-name=libs
33
level=INFO msg="driver building, it will take a few seconds" processor=docker

pkg/driverbuilder/builder/aliyunlinux.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ var alinuxTemplate string
2828
const TargetTypeAlinux Type = "alinux"
2929

3030
func init() {
31-
BuilderByTarget[TargetTypeAlinux] = &alinux{}
31+
byTarget[TargetTypeAlinux] = &alinux{}
3232
}
3333

3434
type alinuxTemplateData struct {

pkg/driverbuilder/builder/almalinux.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ var almaTemplate string
2828
const TargetTypeAlma Type = "almalinux"
2929

3030
func init() {
31-
BuilderByTarget[TargetTypeAlma] = &alma{}
31+
byTarget[TargetTypeAlma] = &alma{}
3232
}
3333

3434
type almaTemplateData struct {

pkg/driverbuilder/builder/amazonlinux.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,10 @@ const TargetTypeAmazonLinux2 Type = "amazonlinux2"
7373
const TargetTypeAmazonLinux Type = "amazonlinux"
7474

7575
func init() {
76-
BuilderByTarget[TargetTypeAmazonLinux2023] = &amazonlinux2023{}
77-
BuilderByTarget[TargetTypeAmazonLinux2022] = &amazonlinux2022{}
78-
BuilderByTarget[TargetTypeAmazonLinux2] = &amazonlinux2{}
79-
BuilderByTarget[TargetTypeAmazonLinux] = &amazonlinux{}
76+
byTarget[TargetTypeAmazonLinux2023] = &amazonlinux2023{}
77+
byTarget[TargetTypeAmazonLinux2022] = &amazonlinux2022{}
78+
byTarget[TargetTypeAmazonLinux2] = &amazonlinux2{}
79+
byTarget[TargetTypeAmazonLinux] = &amazonlinux{}
8080
}
8181

8282
type amazonlinuxTemplateData struct {

pkg/driverbuilder/builder/archlinux.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ var archlinuxTemplate string
2929
const TargetTypeArchlinux Type = "arch"
3030

3131
func init() {
32-
BuilderByTarget[TargetTypeArchlinux] = &archlinux{}
32+
byTarget[TargetTypeArchlinux] = &archlinux{}
3333
}
3434

3535
// archlinux is a driverkit target.

pkg/driverbuilder/builder/bottlerocket.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import (
2222
const TargetTypeBottlerocket Type = "bottlerocket"
2323

2424
func init() {
25-
BuilderByTarget[TargetTypeBottlerocket] = &bottlerocket{
25+
byTarget[TargetTypeBottlerocket] = &bottlerocket{
2626
vanilla{},
2727
}
2828
}

pkg/driverbuilder/builder/builders.go

+15-1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"net/url"
2424
"os"
2525
"path"
26+
"strings"
2627
"text/template"
2728

2829
"github.com/blang/semver"
@@ -249,13 +250,26 @@ func (b *Build) GetBuilderImage() string {
249250

250251
// Factory returns a builder for the given target.
251252
func Factory(target Type) (Builder, error) {
252-
b, ok := BuilderByTarget[target]
253+
// Driverkit builder is named "ubuntu"; there is no ubuntu-foo
254+
if strings.HasPrefix(target.String(), "ubuntu") {
255+
target = Type("ubuntu")
256+
}
257+
b, ok := byTarget[target]
253258
if !ok {
254259
return nil, fmt.Errorf("no builder found for target: %s", target)
255260
}
256261
return b, nil
257262
}
258263

264+
// Targets returns the list of all the supported targets.
265+
func Targets() []string {
266+
res := []string{}
267+
for k := range byTarget {
268+
res = append(res, k.String())
269+
}
270+
return res
271+
}
272+
259273
func (c Config) toTemplateData(b Builder, kr kernelrelease.KernelRelease) commonTemplateData {
260274
c.setGCCVersion(b, kr)
261275
return commonTemplateData{

pkg/driverbuilder/builder/centos.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ var centosTemplate string
2929
const TargetTypeCentos Type = "centos"
3030

3131
func init() {
32-
BuilderByTarget[TargetTypeCentos] = &centos{}
32+
byTarget[TargetTypeCentos] = &centos{}
3333
}
3434

3535
// centos is a driverkit target.

pkg/driverbuilder/builder/debian.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ const TargetTypeDebian Type = "debian"
3838
const debianRequiredURLs = 3
3939

4040
func init() {
41-
BuilderByTarget[TargetTypeDebian] = &debian{}
41+
byTarget[TargetTypeDebian] = &debian{}
4242
}
4343

4444
type debianTemplateData struct {

pkg/driverbuilder/builder/fedora.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ var fedoraTemplate string
2929
const TargetTypeFedora Type = "fedora"
3030

3131
func init() {
32-
BuilderByTarget[TargetTypeFedora] = &fedora{}
32+
byTarget[TargetTypeFedora] = &fedora{}
3333
}
3434

3535
// fedora is a driverkit target.

pkg/driverbuilder/builder/flatcar.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ var flatcarTemplate string
3232
const TargetTypeFlatcar Type = "flatcar"
3333

3434
func init() {
35-
BuilderByTarget[TargetTypeFlatcar] = &flatcar{}
35+
byTarget[TargetTypeFlatcar] = &flatcar{}
3636
}
3737

3838
type flatcarTemplateData struct {

pkg/driverbuilder/builder/minikube.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import (
2323
const TargetTypeMinikube Type = "minikube"
2424

2525
func init() {
26-
BuilderByTarget[TargetTypeMinikube] = &minikube{
26+
byTarget[TargetTypeMinikube] = &minikube{
2727
vanilla{},
2828
}
2929
}

pkg/driverbuilder/builder/opensuse.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ var releases []string = []string{
6161
}
6262

6363
func init() {
64-
BuilderByTarget[TargetTypeOpenSUSE] = &opensuse{}
64+
byTarget[TargetTypeOpenSUSE] = &opensuse{}
6565
}
6666

6767
// opensuse is a driverkit target.

pkg/driverbuilder/builder/oracle.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ var oracleTemplate string
2929
const TargetTypeoracle Type = "ol"
3030

3131
func init() {
32-
BuilderByTarget[TargetTypeoracle] = &oracle{}
32+
byTarget[TargetTypeoracle] = &oracle{}
3333
}
3434

3535
// oracle is a driverkit target.

pkg/driverbuilder/builder/photon.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ const TargetTypePhoton Type = "photon"
2828
var photonTemplate string
2929

3030
func init() {
31-
BuilderByTarget[TargetTypePhoton] = &photon{}
31+
byTarget[TargetTypePhoton] = &photon{}
3232
}
3333

3434
// photon is a driverkit target.

pkg/driverbuilder/builder/redhat.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ type redhat struct {
3131
}
3232

3333
func init() {
34-
BuilderByTarget[TargetTypeRedhat] = &redhat{}
34+
byTarget[TargetTypeRedhat] = &redhat{}
3535
}
3636

3737
type redhatTemplateData struct {

pkg/driverbuilder/builder/rocky.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ var rockyTemplate string
2828
const TargetTypeRocky Type = "rocky"
2929

3030
func init() {
31-
BuilderByTarget[TargetTypeRocky] = &rocky{}
31+
byTarget[TargetTypeRocky] = &rocky{}
3232
}
3333

3434
type rockyTemplateData struct {

pkg/driverbuilder/builder/talos.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import (
2222
const TargetTypeTalos Type = "talos"
2323

2424
func init() {
25-
BuilderByTarget[TargetTypeTalos] = &talos{
25+
byTarget[TargetTypeTalos] = &talos{
2626
vanilla{},
2727
}
2828
}

pkg/driverbuilder/builder/target.go

+2-14
Original file line numberDiff line numberDiff line change
@@ -14,24 +14,12 @@ limitations under the License.
1414

1515
package builder
1616

17-
// BuilderByTarget maps targets to their builder.
18-
var BuilderByTarget = Targets{}
17+
// byTarget maps targets to their builder.
18+
var byTarget = map[Type]Builder{}
1919

2020
// Type is a type representing targets.
2121
type Type string
2222

2323
func (t Type) String() string {
2424
return string(t)
2525
}
26-
27-
// Targets is a type representing the list of the supported targets.
28-
type Targets map[Type]Builder
29-
30-
// Targets returns the list of all the supported targets.
31-
func (t Targets) Targets() []string {
32-
res := []string{}
33-
for k := range t {
34-
res = append(res, k.String())
35-
}
36-
return res
37-
}

pkg/driverbuilder/builder/ubuntu.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ type ubuntuTemplateData struct {
4343
}
4444

4545
func init() {
46-
BuilderByTarget[TargetTypeUbuntu] = &ubuntu{}
46+
byTarget[TargetTypeUbuntu] = &ubuntu{}
4747
}
4848

4949
// ubuntu is a driverkit target.

pkg/driverbuilder/builder/vanilla.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ type vanilla struct {
3333
const TargetTypeVanilla Type = "vanilla"
3434

3535
func init() {
36-
BuilderByTarget[TargetTypeVanilla] = &vanilla{}
36+
byTarget[TargetTypeVanilla] = &vanilla{}
3737
}
3838

3939
type vanillaTemplateData struct {

validate/target.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ func isTargetSupported(fl validator.FieldLevel) bool {
2727

2828
switch field.Kind() {
2929
case reflect.String:
30-
_, ok := builder.BuilderByTarget[builder.Type(field.String())]
31-
return ok
30+
_, err := builder.Factory(builder.Type(field.String()))
31+
return err == nil
3232
}
3333

3434
panic(fmt.Sprintf("Bad field type %T", field.Interface()))

validate/validate.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ func init() {
8080
"target",
8181
T,
8282
func(ut ut.Translator) error {
83-
return ut.Add("target", fmt.Sprintf("{0} must be a valid target (%s)", builder.BuilderByTarget.Targets()), true)
83+
return ut.Add("target", fmt.Sprintf("{0} must be a valid target (%s)", builder.Targets()), true)
8484
},
8585
func(ut ut.Translator, fe validator.FieldError) string {
8686
t, _ := ut.T(fe.Tag(), fe.Field())

0 commit comments

Comments
 (0)