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)
|
resolver := container.NewResolver(archName)
|
||||||
|
|
||||||
for _, c := range containers {
|
for _, c := range containers {
|
||||||
resolver.Add(c.Source, c.Name, c.TLSVerify)
|
resolver.Add(container.SourceSpec(c))
|
||||||
}
|
}
|
||||||
|
|
||||||
return resolver.Finish()
|
return resolver.Finish()
|
||||||
|
|
|
||||||
|
|
@ -72,7 +72,7 @@ func resolveContainers(bp blueprint.Blueprint, archName string) ([]container.Spe
|
||||||
resolver := container.NewResolver(archName)
|
resolver := container.NewResolver(archName)
|
||||||
|
|
||||||
for _, c := range bp.Containers {
|
for _, c := range bp.Containers {
|
||||||
resolver.Add(c.Source, c.Name, c.TLSVerify)
|
resolver.Add(container.SourceSpec(c))
|
||||||
}
|
}
|
||||||
|
|
||||||
return resolver.Finish()
|
return resolver.Finish()
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ func (impl *ContainerResolveJobImpl) Run(job worker.Job) error {
|
||||||
resolver.AuthFilePath = impl.AuthFilePath
|
resolver.AuthFilePath = impl.AuthFilePath
|
||||||
|
|
||||||
for _, s := range args.Specs {
|
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()
|
specs, err := resolver.Finish()
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,12 @@ type Resolver struct {
|
||||||
AuthFilePath string
|
AuthFilePath string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type SourceSpec struct {
|
||||||
|
Source string
|
||||||
|
Name string
|
||||||
|
TLSVerify *bool
|
||||||
|
}
|
||||||
|
|
||||||
func NewResolver(arch string) Resolver {
|
func NewResolver(arch string) Resolver {
|
||||||
return Resolver{
|
return Resolver{
|
||||||
ctx: context.Background(),
|
ctx: context.Background(),
|
||||||
|
|
@ -29,8 +35,8 @@ func NewResolver(arch string) Resolver {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Resolver) Add(source, name string, TLSVerify *bool) {
|
func (r *Resolver) Add(spec SourceSpec) {
|
||||||
client, err := NewClient(source)
|
client, err := NewClient(spec.Source)
|
||||||
r.jobs += 1
|
r.jobs += 1
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -38,16 +44,16 @@ func (r *Resolver) Add(source, name string, TLSVerify *bool) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
client.SetTLSVerify(TLSVerify)
|
client.SetTLSVerify(spec.TLSVerify)
|
||||||
client.SetArchitectureChoice(r.Arch)
|
client.SetArchitectureChoice(r.Arch)
|
||||||
if r.AuthFilePath != "" {
|
if r.AuthFilePath != "" {
|
||||||
client.SetAuthFilePath(r.AuthFilePath)
|
client.SetAuthFilePath(r.AuthFilePath)
|
||||||
}
|
}
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
spec, err := client.Resolve(r.ctx, name)
|
spec, err := client.Resolve(r.ctx, spec.Name)
|
||||||
if err != nil {
|
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}
|
r.queue <- resolveResult{spec: spec, err: err}
|
||||||
}()
|
}()
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ func TestResolver(t *testing.T) {
|
||||||
resolver := container.NewResolver("amd64")
|
resolver := container.NewResolver("amd64")
|
||||||
|
|
||||||
for _, r := range refs {
|
for _, r := range refs {
|
||||||
resolver.Add(r, "", common.ToPtr(false))
|
resolver.Add(container.SourceSpec{r, "", common.ToPtr(false)})
|
||||||
}
|
}
|
||||||
|
|
||||||
have, err := resolver.Finish()
|
have, err := resolver.Finish()
|
||||||
|
|
@ -69,7 +69,7 @@ func TestResolver(t *testing.T) {
|
||||||
func TestResolverFail(t *testing.T) {
|
func TestResolverFail(t *testing.T) {
|
||||||
resolver := container.NewResolver("amd64")
|
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()
|
specs, err := resolver.Finish()
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
|
|
@ -78,7 +78,7 @@ func TestResolverFail(t *testing.T) {
|
||||||
registry := NewTestRegistry()
|
registry := NewTestRegistry()
|
||||||
defer registry.Close()
|
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()
|
specs, err = resolver.Finish()
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
assert.Len(t, specs, 0)
|
assert.Len(t, specs, 0)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue