blueprint: make Convert respect nils
Previously, nil values in the conversion source were in some cases converted
to empty arrays or empty objects. This is undesirable, because it can be in
certain cases changing the semantics of the blueprint. See e.g.
f317064da5/pkg/distro/rhel7/imagetype.go (L239C7-L239C7)
This commit modifies the conversion process so nil values are converted
without any changes. Also, the `Convert` function was covered with a unit
test.
This commit is contained in:
parent
336842d7bb
commit
1a6dac1cfa
2 changed files with 360 additions and 15 deletions
|
|
@ -185,29 +185,42 @@ func (b *Blueprint) CryptPasswords() error {
|
|||
}
|
||||
|
||||
func Convert(bp Blueprint) iblueprint.Blueprint {
|
||||
pkgs := make([]iblueprint.Package, len(bp.Packages))
|
||||
for idx := range bp.Packages {
|
||||
pkgs[idx] = iblueprint.Package(bp.Packages[idx])
|
||||
var pkgs []iblueprint.Package
|
||||
if len(bp.Packages) > 0 {
|
||||
pkgs = make([]iblueprint.Package, len(bp.Packages))
|
||||
for idx := range bp.Packages {
|
||||
pkgs[idx] = iblueprint.Package(bp.Packages[idx])
|
||||
}
|
||||
}
|
||||
|
||||
modules := make([]iblueprint.Package, len(bp.Modules))
|
||||
for idx := range bp.Modules {
|
||||
modules[idx] = iblueprint.Package(bp.Modules[idx])
|
||||
var modules []iblueprint.Package
|
||||
if len(bp.Modules) > 0 {
|
||||
modules = make([]iblueprint.Package, len(bp.Modules))
|
||||
for idx := range bp.Modules {
|
||||
modules[idx] = iblueprint.Package(bp.Modules[idx])
|
||||
}
|
||||
}
|
||||
|
||||
groups := make([]iblueprint.Group, len(bp.Groups))
|
||||
for idx := range bp.Groups {
|
||||
groups[idx] = iblueprint.Group(bp.Groups[idx])
|
||||
var groups []iblueprint.Group
|
||||
if len(bp.Groups) > 0 {
|
||||
groups = make([]iblueprint.Group, len(bp.Groups))
|
||||
for idx := range bp.Groups {
|
||||
groups[idx] = iblueprint.Group(bp.Groups[idx])
|
||||
}
|
||||
}
|
||||
|
||||
containers := make([]iblueprint.Container, len(bp.Containers))
|
||||
for idx := range bp.Containers {
|
||||
containers[idx] = iblueprint.Container(bp.Containers[idx])
|
||||
var containers []iblueprint.Container
|
||||
|
||||
if len(bp.Containers) > 0 {
|
||||
containers = make([]iblueprint.Container, len(bp.Containers))
|
||||
for idx := range bp.Containers {
|
||||
containers[idx] = iblueprint.Container(bp.Containers[idx])
|
||||
}
|
||||
}
|
||||
|
||||
customizations := iblueprint.Customizations{}
|
||||
var customizations *iblueprint.Customizations
|
||||
if c := bp.Customizations; c != nil {
|
||||
customizations = iblueprint.Customizations{
|
||||
customizations = &iblueprint.Customizations{
|
||||
Hostname: c.Hostname,
|
||||
InstallationDevice: c.InstallationDevice,
|
||||
}
|
||||
|
|
@ -331,7 +344,7 @@ func Convert(bp Blueprint) iblueprint.Blueprint {
|
|||
Modules: modules,
|
||||
Groups: groups,
|
||||
Containers: containers,
|
||||
Customizations: &customizations,
|
||||
Customizations: customizations,
|
||||
Distro: bp.Distro,
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue