osbuild2: use source-array-ref for rpm stage inputs
The (new) source-array-ref object is an array of objects, which allows for input references to have options (metadata) but still maintain their order when (de)serialised. Fixes https://github.com/osbuild/osbuild-composer/issues/2577 Related to https://github.com/osbuild/osbuild/pull/1003
This commit is contained in:
parent
26a83262a8
commit
2b2181867f
219 changed files with 803999 additions and 280252 deletions
|
|
@ -49,7 +49,7 @@ type RPMStageInput struct {
|
|||
|
||||
// Collection of references. Each reference defines a package to be
|
||||
// installed, with optional metadata.
|
||||
References RPMStageReferences `json:"references"`
|
||||
References RPMStageSourceArrayRefs `json:"references"`
|
||||
}
|
||||
|
||||
func (RPMStageInput) isStageInput() {}
|
||||
|
|
@ -181,13 +181,17 @@ func NewRpmStageSourceFilesInputs(specs []rpmmd.PackageSpec) *RPMStageInputs {
|
|||
return &RPMStageInputs{Packages: stageInput}
|
||||
}
|
||||
|
||||
func pkgRefs(specs []rpmmd.PackageSpec) RPMStageReferences {
|
||||
refs := make(RPMStageReferences, len(specs))
|
||||
for _, pkg := range specs {
|
||||
refs[pkg.Checksum] = &RPMStageSourceOptions{}
|
||||
func pkgRefs(specs []rpmmd.PackageSpec) RPMStageSourceArrayRefs {
|
||||
refs := make(RPMStageSourceArrayRefs, len(specs))
|
||||
for idx, pkg := range specs {
|
||||
refs[idx] = &RPMStageSourceArrayRef{
|
||||
ID: pkg.Checksum,
|
||||
}
|
||||
if pkg.CheckGPG {
|
||||
refs[pkg.Checksum].Metadata = &RPMStageReferenceMetadata{
|
||||
CheckGPG: pkg.CheckGPG,
|
||||
refs[idx].Options = &RPMStageSourceOptions{
|
||||
Metadata: &RPMStageReferenceMetadata{
|
||||
CheckGPG: pkg.CheckGPG,
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -817,11 +817,16 @@ func TestStageV2_UnmarshalJSON(t *testing.T) {
|
|||
Type: "org.osbuild.rpm",
|
||||
Inputs: &RPMStageInputs{
|
||||
Packages: &RPMStageInput{
|
||||
References: RPMStageReferences{
|
||||
"checksum1": &RPMStageSourceOptions{},
|
||||
"checksum2": &RPMStageSourceOptions{
|
||||
Metadata: &RPMStageReferenceMetadata{
|
||||
CheckGPG: true,
|
||||
References: RPMStageSourceArrayRefs{
|
||||
&RPMStageSourceArrayRef{
|
||||
ID: "checksum1",
|
||||
},
|
||||
&RPMStageSourceArrayRef{
|
||||
ID: "checksum2",
|
||||
Options: &RPMStageSourceOptions{
|
||||
Metadata: &RPMStageReferenceMetadata{
|
||||
CheckGPG: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
@ -832,7 +837,7 @@ func TestStageV2_UnmarshalJSON(t *testing.T) {
|
|||
},
|
||||
},
|
||||
args: args{
|
||||
data: []byte(`{"type":"org.osbuild.rpm","inputs":{"packages":{"type":"","origin":"","references":{"checksum1":{},"checksum2":{"metadata":{"rpm.check_gpg":true}}}}},"options":{"gpgkeys":["key1","key2"]}}`),
|
||||
data: []byte(`{"type":"org.osbuild.rpm","inputs":{"packages":{"type":"","origin":"","references":[{"id":"checksum1"},{"id":"checksum2","options":{"metadata":{"rpm.check_gpg":true}}}]}},"options":{"gpgkeys":["key1","key2"]}}`),
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -11231,7 +11231,6 @@
|
|||
"/proc": ".M.......",
|
||||
"/run/cockpit": ".M.......",
|
||||
"/sys": ".M.......",
|
||||
"/var/lib/powerpc-utils/smt.state": "..5....T.",
|
||||
"/var/log/lastlog": ".M....G..",
|
||||
"/var/spool/anacron/cron.daily": ".M.......",
|
||||
"/var/spool/anacron/cron.monthly": ".M.......",
|
||||
|
|
|
|||
|
|
@ -11350,7 +11350,6 @@
|
|||
"/proc": ".M.......",
|
||||
"/run/cockpit": ".M.......",
|
||||
"/sys": ".M.......",
|
||||
"/var/lib/powerpc-utils/smt.state": "..5....T.",
|
||||
"/var/log/lastlog": ".M....G..",
|
||||
"/var/spool/anacron/cron.daily": ".M.......",
|
||||
"/var/spool/anacron/cron.monthly": ".M.......",
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue