cloudapi: Simplify the bp.Customizations code
There is a lot of repeated checks for bp.Customization != nil, this simplifies that by creating an empty blueprint.Customizations at the top, and checking to see if it is still empty at the bottom and setting it back to nil. Includes a new test for calling with an empty (not nil) v2.Customizations set on the request.
This commit is contained in:
parent
d4af58c9f5
commit
ab56a625c4
2 changed files with 35 additions and 112 deletions
|
|
@ -3,6 +3,7 @@ package v2
|
||||||
// ComposeRequest methods to make it easier to use and test
|
// ComposeRequest methods to make it easier to use and test
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"reflect"
|
||||||
|
|
||||||
"github.com/osbuild/images/pkg/subscription"
|
"github.com/osbuild/images/pkg/subscription"
|
||||||
"github.com/osbuild/osbuild-composer/internal/blueprint"
|
"github.com/osbuild/osbuild-composer/internal/blueprint"
|
||||||
|
|
@ -21,6 +22,9 @@ func (request *ComposeRequest) GetBlueprintWithCustomizations() (blueprint.Bluep
|
||||||
return bp, nil
|
return bp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Assume there is going to be one or more customization
|
||||||
|
bp.Customizations = &blueprint.Customizations{}
|
||||||
|
|
||||||
// Set the blueprint customisation to take care of the user
|
// Set the blueprint customisation to take care of the user
|
||||||
if request.Customizations.Users != nil {
|
if request.Customizations.Users != nil {
|
||||||
var userCustomizations []blueprint.UserCustomization
|
var userCustomizations []blueprint.UserCustomization
|
||||||
|
|
@ -39,13 +43,7 @@ func (request *ComposeRequest) GetBlueprintWithCustomizations() (blueprint.Bluep
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
if bp.Customizations == nil {
|
bp.Customizations.User = userCustomizations
|
||||||
bp.Customizations = &blueprint.Customizations{
|
|
||||||
User: userCustomizations,
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
bp.Customizations.User = userCustomizations
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if request.Customizations.Packages != nil {
|
if request.Customizations.Packages != nil {
|
||||||
|
|
@ -110,13 +108,7 @@ func (request *ComposeRequest) GetBlueprintWithCustomizations() (blueprint.Bluep
|
||||||
return bp, HTTPErrorWithInternal(ErrorInvalidCustomization, err)
|
return bp, HTTPErrorWithInternal(ErrorInvalidCustomization, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if bp.Customizations == nil {
|
bp.Customizations.Directories = dirCustomizations
|
||||||
bp.Customizations = &blueprint.Customizations{
|
|
||||||
Directories: dirCustomizations,
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
bp.Customizations.Directories = dirCustomizations
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if request.Customizations.Files != nil {
|
if request.Customizations.Files != nil {
|
||||||
|
|
@ -160,13 +152,7 @@ func (request *ComposeRequest) GetBlueprintWithCustomizations() (blueprint.Bluep
|
||||||
return bp, HTTPErrorWithInternal(ErrorInvalidCustomization, err)
|
return bp, HTTPErrorWithInternal(ErrorInvalidCustomization, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if bp.Customizations == nil {
|
bp.Customizations.Files = fileCustomizations
|
||||||
bp.Customizations = &blueprint.Customizations{
|
|
||||||
Files: fileCustomizations,
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
bp.Customizations.Files = fileCustomizations
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if request.Customizations.Filesystem != nil {
|
if request.Customizations.Filesystem != nil {
|
||||||
|
|
@ -180,13 +166,7 @@ func (request *ComposeRequest) GetBlueprintWithCustomizations() (blueprint.Bluep
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
if bp.Customizations == nil {
|
bp.Customizations.Filesystem = fsCustomizations
|
||||||
bp.Customizations = &blueprint.Customizations{
|
|
||||||
Filesystem: fsCustomizations,
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
bp.Customizations.Filesystem = fsCustomizations
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if request.Customizations.Services != nil {
|
if request.Customizations.Services != nil {
|
||||||
|
|
@ -199,13 +179,7 @@ func (request *ComposeRequest) GetBlueprintWithCustomizations() (blueprint.Bluep
|
||||||
servicesCustomization.Disabled = make([]string, len(*request.Customizations.Services.Disabled))
|
servicesCustomization.Disabled = make([]string, len(*request.Customizations.Services.Disabled))
|
||||||
copy(servicesCustomization.Disabled, *request.Customizations.Services.Disabled)
|
copy(servicesCustomization.Disabled, *request.Customizations.Services.Disabled)
|
||||||
}
|
}
|
||||||
if bp.Customizations == nil {
|
bp.Customizations.Services = servicesCustomization
|
||||||
bp.Customizations = &blueprint.Customizations{
|
|
||||||
Services: servicesCustomization,
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
bp.Customizations.Services = servicesCustomization
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if request.Customizations.Openscap != nil {
|
if request.Customizations.Openscap != nil {
|
||||||
|
|
@ -222,13 +196,7 @@ func (request *ComposeRequest) GetBlueprintWithCustomizations() (blueprint.Bluep
|
||||||
}
|
}
|
||||||
openSCAPCustomization.Tailoring = &tailoringCustomizations
|
openSCAPCustomization.Tailoring = &tailoringCustomizations
|
||||||
}
|
}
|
||||||
if bp.Customizations == nil {
|
bp.Customizations.OpenSCAP = openSCAPCustomization
|
||||||
bp.Customizations = &blueprint.Customizations{
|
|
||||||
OpenSCAP: openSCAPCustomization,
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
bp.Customizations.OpenSCAP = openSCAPCustomization
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if request.Customizations.CustomRepositories != nil {
|
if request.Customizations.CustomRepositories != nil {
|
||||||
|
|
@ -284,23 +252,11 @@ func (request *ComposeRequest) GetBlueprintWithCustomizations() (blueprint.Bluep
|
||||||
|
|
||||||
repoCustomizations = append(repoCustomizations, repoCustomization)
|
repoCustomizations = append(repoCustomizations, repoCustomization)
|
||||||
}
|
}
|
||||||
if bp.Customizations == nil {
|
bp.Customizations.Repositories = repoCustomizations
|
||||||
bp.Customizations = &blueprint.Customizations{
|
|
||||||
Repositories: repoCustomizations,
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
bp.Customizations.Repositories = repoCustomizations
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if request.Customizations.Hostname != nil {
|
if request.Customizations.Hostname != nil {
|
||||||
if bp.Customizations == nil {
|
bp.Customizations.Hostname = request.Customizations.Hostname
|
||||||
bp.Customizations = &blueprint.Customizations{
|
|
||||||
Hostname: request.Customizations.Hostname,
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
bp.Customizations.Hostname = request.Customizations.Hostname
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if request.Customizations.Kernel != nil {
|
if request.Customizations.Kernel != nil {
|
||||||
|
|
@ -312,13 +268,7 @@ func (request *ComposeRequest) GetBlueprintWithCustomizations() (blueprint.Bluep
|
||||||
kernel.Append = *request.Customizations.Kernel.Append
|
kernel.Append = *request.Customizations.Kernel.Append
|
||||||
}
|
}
|
||||||
|
|
||||||
if bp.Customizations == nil {
|
bp.Customizations.Kernel = kernel
|
||||||
bp.Customizations = &blueprint.Customizations{
|
|
||||||
Kernel: kernel,
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
bp.Customizations.Kernel = kernel
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if request.Customizations.Sshkey != nil {
|
if request.Customizations.Sshkey != nil {
|
||||||
|
|
@ -329,13 +279,7 @@ func (request *ComposeRequest) GetBlueprintWithCustomizations() (blueprint.Bluep
|
||||||
Key: key.Key,
|
Key: key.Key,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
if bp.Customizations == nil {
|
bp.Customizations.SSHKey = keys
|
||||||
bp.Customizations = &blueprint.Customizations{
|
|
||||||
SSHKey: keys,
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
bp.Customizations.SSHKey = keys
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if request.Customizations.Group != nil {
|
if request.Customizations.Group != nil {
|
||||||
|
|
@ -347,13 +291,7 @@ func (request *ComposeRequest) GetBlueprintWithCustomizations() (blueprint.Bluep
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if bp.Customizations == nil {
|
bp.Customizations.Group = groups
|
||||||
bp.Customizations = &blueprint.Customizations{
|
|
||||||
Group: groups,
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
bp.Customizations.Group = groups
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if request.Customizations.Timezone != nil {
|
if request.Customizations.Timezone != nil {
|
||||||
|
|
@ -365,13 +303,7 @@ func (request *ComposeRequest) GetBlueprintWithCustomizations() (blueprint.Bluep
|
||||||
tz.NTPServers = append(tz.NTPServers, *request.Customizations.Timezone.Ntpservers...)
|
tz.NTPServers = append(tz.NTPServers, *request.Customizations.Timezone.Ntpservers...)
|
||||||
}
|
}
|
||||||
|
|
||||||
if bp.Customizations == nil {
|
bp.Customizations.Timezone = tz
|
||||||
bp.Customizations = &blueprint.Customizations{
|
|
||||||
Timezone: tz,
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
bp.Customizations.Timezone = tz
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if request.Customizations.Locale != nil {
|
if request.Customizations.Locale != nil {
|
||||||
|
|
@ -383,13 +315,7 @@ func (request *ComposeRequest) GetBlueprintWithCustomizations() (blueprint.Bluep
|
||||||
locale.Languages = append(locale.Languages, *request.Customizations.Locale.Languages...)
|
locale.Languages = append(locale.Languages, *request.Customizations.Locale.Languages...)
|
||||||
}
|
}
|
||||||
|
|
||||||
if bp.Customizations == nil {
|
bp.Customizations.Locale = locale
|
||||||
bp.Customizations = &blueprint.Customizations{
|
|
||||||
Locale: locale,
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
bp.Customizations.Locale = locale
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if request.Customizations.Firewall != nil {
|
if request.Customizations.Firewall != nil {
|
||||||
|
|
@ -413,13 +339,7 @@ func (request *ComposeRequest) GetBlueprintWithCustomizations() (blueprint.Bluep
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if bp.Customizations == nil {
|
bp.Customizations.Firewall = firewall
|
||||||
bp.Customizations = &blueprint.Customizations{
|
|
||||||
Firewall: firewall,
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
bp.Customizations.Firewall = firewall
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if request.Customizations.InstallationDevice != nil {
|
if request.Customizations.InstallationDevice != nil {
|
||||||
|
|
@ -447,13 +367,7 @@ func (request *ComposeRequest) GetBlueprintWithCustomizations() (blueprint.Bluep
|
||||||
fdo.ManufacturingServerURL = *request.Customizations.Fdo.ManufacturingServerUrl
|
fdo.ManufacturingServerURL = *request.Customizations.Fdo.ManufacturingServerUrl
|
||||||
}
|
}
|
||||||
|
|
||||||
if bp.Customizations == nil {
|
bp.Customizations.FDO = fdo
|
||||||
bp.Customizations = &blueprint.Customizations{
|
|
||||||
FDO: fdo,
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
bp.Customizations.FDO = fdo
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if request.Customizations.Ignition != nil {
|
if request.Customizations.Ignition != nil {
|
||||||
|
|
@ -468,13 +382,12 @@ func (request *ComposeRequest) GetBlueprintWithCustomizations() (blueprint.Bluep
|
||||||
ProvisioningURL: request.Customizations.Ignition.Firstboot.Url,
|
ProvisioningURL: request.Customizations.Ignition.Firstboot.Url,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if bp.Customizations == nil {
|
bp.Customizations.Ignition = ignition
|
||||||
bp.Customizations = &blueprint.Customizations{
|
}
|
||||||
Ignition: ignition,
|
|
||||||
}
|
// Did bp.Customizations get set at all? If not, set it back to nil
|
||||||
} else {
|
if reflect.DeepEqual(*bp.Customizations, blueprint.Customizations{}) {
|
||||||
bp.Customizations.Ignition = ignition
|
bp.Customizations = nil
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return bp, nil
|
return bp, nil
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,16 @@ func TestGetBlueprintWithCustomizations(t *testing.T) {
|
||||||
assert.Equal(t, "0.0.0", bp.Version)
|
assert.Equal(t, "0.0.0", bp.Version)
|
||||||
assert.Nil(t, bp.Customizations)
|
assert.Nil(t, bp.Customizations)
|
||||||
|
|
||||||
|
// Empty request should return empty blueprint
|
||||||
|
cr = ComposeRequest{
|
||||||
|
Customizations: &Customizations{},
|
||||||
|
}
|
||||||
|
bp, err = cr.GetBlueprintWithCustomizations()
|
||||||
|
require.Nil(t, err)
|
||||||
|
assert.Equal(t, "empty blueprint", bp.Name)
|
||||||
|
assert.Equal(t, "0.0.0", bp.Version)
|
||||||
|
assert.Nil(t, bp.Customizations)
|
||||||
|
|
||||||
// Test with customizations
|
// Test with customizations
|
||||||
expected := blueprint.Blueprint{Name: "empty blueprint"}
|
expected := blueprint.Blueprint{Name: "empty blueprint"}
|
||||||
err = expected.Initialize()
|
err = expected.Initialize()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue