image: introduce image kinds for Fedora
Implement all of Fedora in terms of this new abstraction. What used to be the manifest functions (and before that the pipeline functions) are now the image functions, whose purpose is to instantiate the right image kind structs from the image type definitions we currently have in the distro definition.
This commit is contained in:
parent
5a15608c89
commit
0f5846326c
8 changed files with 654 additions and 497 deletions
47
internal/image/container.go
Normal file
47
internal/image/container.go
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
package image
|
||||
|
||||
import (
|
||||
"math/rand"
|
||||
|
||||
"github.com/osbuild/osbuild-composer/internal/artifact"
|
||||
"github.com/osbuild/osbuild-composer/internal/environment"
|
||||
"github.com/osbuild/osbuild-composer/internal/manifest"
|
||||
"github.com/osbuild/osbuild-composer/internal/platform"
|
||||
"github.com/osbuild/osbuild-composer/internal/rpmmd"
|
||||
"github.com/osbuild/osbuild-composer/internal/runner"
|
||||
"github.com/osbuild/osbuild-composer/internal/workload"
|
||||
)
|
||||
|
||||
type BaseContainer struct {
|
||||
Base
|
||||
Platform platform.Platform
|
||||
OSCustomizations manifest.OSCustomizations
|
||||
Environment environment.Environment
|
||||
Workload workload.Workload
|
||||
Filename string
|
||||
}
|
||||
|
||||
func NewBaseContainer() *BaseContainer {
|
||||
return &BaseContainer{
|
||||
Base: NewBase("base-container"),
|
||||
}
|
||||
}
|
||||
|
||||
func (img *BaseContainer) InstantiateManifest(m *manifest.Manifest,
|
||||
repos []rpmmd.RepoConfig,
|
||||
runner runner.Runner,
|
||||
rng *rand.Rand) (*artifact.Artifact, error) {
|
||||
buildPipeline := manifest.NewBuild(m, runner, repos)
|
||||
buildPipeline.Checkpoint()
|
||||
|
||||
osPipeline := manifest.NewOS(m, buildPipeline, img.Platform, repos)
|
||||
osPipeline.OSCustomizations = img.OSCustomizations
|
||||
osPipeline.Environment = img.Environment
|
||||
osPipeline.Workload = img.Workload
|
||||
|
||||
ociPipeline := manifest.NewOCIContainer(m, buildPipeline, osPipeline)
|
||||
ociPipeline.Filename = img.Filename
|
||||
artifact := ociPipeline.Export()
|
||||
|
||||
return artifact, nil
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue