container: create a SourceSpec for the resolve parameters
Create a struct to conveniently hold the source parameters for a container resolve request and use it in the Add() function of the resolver.
This commit is contained in:
parent
30dc8cb87a
commit
00d473c802
5 changed files with 17 additions and 11 deletions
|
|
@ -248,7 +248,7 @@ func resolveContainers(containers []blueprint.Container, archName string) ([]con
|
|||
resolver := container.NewResolver(archName)
|
||||
|
||||
for _, c := range containers {
|
||||
resolver.Add(c.Source, c.Name, c.TLSVerify)
|
||||
resolver.Add(container.SourceSpec(c))
|
||||
}
|
||||
|
||||
return resolver.Finish()
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ func resolveContainers(bp blueprint.Blueprint, archName string) ([]container.Spe
|
|||
resolver := container.NewResolver(archName)
|
||||
|
||||
for _, c := range bp.Containers {
|
||||
resolver.Add(c.Source, c.Name, c.TLSVerify)
|
||||
resolver.Add(container.SourceSpec(c))
|
||||
}
|
||||
|
||||
return resolver.Finish()
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ func (impl *ContainerResolveJobImpl) Run(job worker.Job) error {
|
|||
resolver.AuthFilePath = impl.AuthFilePath
|
||||
|
||||
for _, s := range args.Specs {
|
||||
resolver.Add(s.Source, s.Name, s.TLSVerify)
|
||||
resolver.Add(container.SourceSpec{s.Source, s.Name, s.TLSVerify})
|
||||
}
|
||||
|
||||
specs, err := resolver.Finish()
|
||||
|
|
|
|||
|
|
@ -21,6 +21,12 @@ type Resolver struct {
|
|||
AuthFilePath string
|
||||
}
|
||||
|
||||
type SourceSpec struct {
|
||||
Source string
|
||||
Name string
|
||||
TLSVerify *bool
|
||||
}
|
||||
|
||||
func NewResolver(arch string) Resolver {
|
||||
return Resolver{
|
||||
ctx: context.Background(),
|
||||
|
|
@ -29,8 +35,8 @@ func NewResolver(arch string) Resolver {
|
|||
}
|
||||
}
|
||||
|
||||
func (r *Resolver) Add(source, name string, TLSVerify *bool) {
|
||||
client, err := NewClient(source)
|
||||
func (r *Resolver) Add(spec SourceSpec) {
|
||||
client, err := NewClient(spec.Source)
|
||||
r.jobs += 1
|
||||
|
||||
if err != nil {
|
||||
|
|
@ -38,16 +44,16 @@ func (r *Resolver) Add(source, name string, TLSVerify *bool) {
|
|||
return
|
||||
}
|
||||
|
||||
client.SetTLSVerify(TLSVerify)
|
||||
client.SetTLSVerify(spec.TLSVerify)
|
||||
client.SetArchitectureChoice(r.Arch)
|
||||
if r.AuthFilePath != "" {
|
||||
client.SetAuthFilePath(r.AuthFilePath)
|
||||
}
|
||||
|
||||
go func() {
|
||||
spec, err := client.Resolve(r.ctx, name)
|
||||
spec, err := client.Resolve(r.ctx, spec.Name)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("'%s': %w", source, err)
|
||||
err = fmt.Errorf("'%s': %w", spec.Source, err)
|
||||
}
|
||||
r.queue <- resolveResult{spec: spec, err: err}
|
||||
}()
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ func TestResolver(t *testing.T) {
|
|||
resolver := container.NewResolver("amd64")
|
||||
|
||||
for _, r := range refs {
|
||||
resolver.Add(r, "", common.ToPtr(false))
|
||||
resolver.Add(container.SourceSpec{r, "", common.ToPtr(false)})
|
||||
}
|
||||
|
||||
have, err := resolver.Finish()
|
||||
|
|
@ -69,7 +69,7 @@ func TestResolver(t *testing.T) {
|
|||
func TestResolverFail(t *testing.T) {
|
||||
resolver := container.NewResolver("amd64")
|
||||
|
||||
resolver.Add("invalid-reference@${IMAGE_DIGEST}", "", common.ToPtr(false))
|
||||
resolver.Add(container.SourceSpec{"invalid-reference@${IMAGE_DIGEST}", "", common.ToPtr(false)})
|
||||
|
||||
specs, err := resolver.Finish()
|
||||
assert.Error(t, err)
|
||||
|
|
@ -78,7 +78,7 @@ func TestResolverFail(t *testing.T) {
|
|||
registry := NewTestRegistry()
|
||||
defer registry.Close()
|
||||
|
||||
resolver.Add(registry.GetRef("repo"), "", common.ToPtr(false))
|
||||
resolver.Add(container.SourceSpec{registry.GetRef("repo"), "", common.ToPtr(false)})
|
||||
specs, err = resolver.Finish()
|
||||
assert.Error(t, err)
|
||||
assert.Len(t, specs, 0)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue