main: add experimental --use-librepo to support librepo downloads
This commit switches to the librepo enabled `images` library via: ``` go mod -replace github.com/osbuild/iamges=github.com/mvo5/images@librepo-sources-osbuild1974 ``` which in turn needs osbuild PR#1974. With that it then adds a new `--use-librepo` switch that will enable librepo based downloading so that people can play with the new backend.
This commit is contained in:
parent
78f62e21e2
commit
f8ffa8a258
5 changed files with 96 additions and 46 deletions
|
|
@ -11,6 +11,7 @@ import (
|
|||
|
||||
"github.com/osbuild/images/pkg/arch"
|
||||
"github.com/osbuild/images/pkg/imagefilter"
|
||||
"github.com/osbuild/images/pkg/osbuild"
|
||||
"github.com/osbuild/images/pkg/ostree"
|
||||
|
||||
"github.com/osbuild/image-builder-cli/internal/blueprintload"
|
||||
|
|
@ -83,6 +84,14 @@ func cmdManifestWrapper(cmd *cobra.Command, args []string, w io.Writer, archChec
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
useLibrepo, err := cmd.Flags().GetBool("use-librepo")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var rpmDownloader osbuild.RpmDownloader
|
||||
if useLibrepo {
|
||||
rpmDownloader = osbuild.RpmDownloaderLibrepo
|
||||
}
|
||||
|
||||
blueprintPath, err := cmd.Flags().GetString("blueprint")
|
||||
if err != nil {
|
||||
|
|
@ -111,7 +120,7 @@ func cmdManifestWrapper(cmd *cobra.Command, args []string, w io.Writer, archChec
|
|||
}
|
||||
}
|
||||
|
||||
err = generateManifest(dataDir, blueprintPath, res, w, ostreeImgOpts)
|
||||
err = generateManifest(dataDir, blueprintPath, res, w, ostreeImgOpts, rpmDownloader)
|
||||
return res, err
|
||||
}
|
||||
|
||||
|
|
@ -185,6 +194,7 @@ operating sytsems like centos and RHEL with easy customizations support.`,
|
|||
manifestCmd.Flags().String("ostree-ref", "", `OSTREE reference`)
|
||||
manifestCmd.Flags().String("ostree-parent", "", `OSTREE parent`)
|
||||
manifestCmd.Flags().String("ostree-url", "", `OSTREE url`)
|
||||
manifestCmd.Flags().Bool("use-librepo", false, `(experimental) use librepo to download packages, needs new osbuild`)
|
||||
rootCmd.AddCommand(manifestCmd)
|
||||
|
||||
buildCmd := &cobra.Command{
|
||||
|
|
|
|||
|
|
@ -162,29 +162,36 @@ func TestManifestIntegrationSmoke(t *testing.T) {
|
|||
restore := main.MockNewRepoRegistry(testrepos.New)
|
||||
defer restore()
|
||||
|
||||
restore = main.MockOsArgs([]string{
|
||||
"manifest",
|
||||
"qcow2",
|
||||
"--arch=x86_64",
|
||||
"--distro=centos-9",
|
||||
fmt.Sprintf("--blueprint=%s", makeTestBlueprint(t, testBlueprint)),
|
||||
})
|
||||
defer restore()
|
||||
for _, useLibrepo := range []bool{false, true} {
|
||||
t.Run(fmt.Sprintf("use-librepo: %v", useLibrepo), func(t *testing.T) {
|
||||
restore = main.MockOsArgs([]string{
|
||||
"manifest",
|
||||
"qcow2",
|
||||
"--arch=x86_64",
|
||||
"--distro=centos-9",
|
||||
fmt.Sprintf("--blueprint=%s", makeTestBlueprint(t, testBlueprint)),
|
||||
fmt.Sprintf("--use-librepo=%v", useLibrepo),
|
||||
})
|
||||
defer restore()
|
||||
|
||||
var fakeStdout bytes.Buffer
|
||||
restore = main.MockOsStdout(&fakeStdout)
|
||||
defer restore()
|
||||
var fakeStdout bytes.Buffer
|
||||
restore = main.MockOsStdout(&fakeStdout)
|
||||
defer restore()
|
||||
|
||||
err := main.Run()
|
||||
assert.NoError(t, err)
|
||||
err := main.Run()
|
||||
assert.NoError(t, err)
|
||||
|
||||
pipelineNames, err := manifesttest.PipelineNamesFrom(fakeStdout.Bytes())
|
||||
assert.NoError(t, err)
|
||||
assert.Contains(t, pipelineNames, "qcow2")
|
||||
pipelineNames, err := manifesttest.PipelineNamesFrom(fakeStdout.Bytes())
|
||||
assert.NoError(t, err)
|
||||
assert.Contains(t, pipelineNames, "qcow2")
|
||||
|
||||
// XXX: provide helpers in manifesttest to extract this in a nicer way
|
||||
assert.Contains(t, fakeStdout.String(), `{"type":"org.osbuild.users","options":{"users":{"alice":{}}}}`)
|
||||
assert.Contains(t, fakeStdout.String(), `"image":{"name":"registry.gitlab.com/redhat/services/products/image-builder/ci/osbuild-composer/fedora-minimal"`)
|
||||
// XXX: provide helpers in manifesttest to extract this in a nicer way
|
||||
assert.Contains(t, fakeStdout.String(), `{"type":"org.osbuild.users","options":{"users":{"alice":{}}}}`)
|
||||
assert.Contains(t, fakeStdout.String(), `"image":{"name":"registry.gitlab.com/redhat/services/products/image-builder/ci/osbuild-composer/fedora-minimal"`)
|
||||
|
||||
assert.Equal(t, strings.Contains(fakeStdout.String(), "org.osbuild.librepo"), useLibrepo)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestManifestIntegrationCrossArch(t *testing.T) {
|
||||
|
|
|
|||
|
|
@ -5,20 +5,22 @@ import (
|
|||
|
||||
"github.com/osbuild/images/pkg/distro"
|
||||
"github.com/osbuild/images/pkg/imagefilter"
|
||||
"github.com/osbuild/images/pkg/osbuild"
|
||||
"github.com/osbuild/images/pkg/ostree"
|
||||
|
||||
"github.com/osbuild/image-builder-cli/internal/blueprintload"
|
||||
"github.com/osbuild/image-builder-cli/internal/manifestgen"
|
||||
)
|
||||
|
||||
func generateManifest(dataDir, blueprintPath string, res *imagefilter.Result, output io.Writer, ostreeOpts *ostree.ImageOptions) error {
|
||||
func generateManifest(dataDir, blueprintPath string, res *imagefilter.Result, output io.Writer, ostreeOpts *ostree.ImageOptions, rpmDownloader osbuild.RpmDownloader) error {
|
||||
repos, err := newRepoRegistry(dataDir)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// XXX: add --rpmmd/cachedir option like bib
|
||||
mg, err := manifestgen.New(repos, &manifestgen.Options{
|
||||
Output: output,
|
||||
Output: output,
|
||||
RpmDownloader: rpmDownloader,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue