mirror of
https://github.com/helm/helm.git
synced 2026-05-28 04:35:48 -04:00
Merge pull request #11129 from antgamdia/10623-allow-setting-oci-resolver-2
Allow setting a resolver in the OCI registry client
This commit is contained in:
commit
b3c35c0aea
2 changed files with 31 additions and 11 deletions
|
|
@ -87,7 +87,16 @@ func NewClient(options ...ClientOption) (*Client, error) {
|
|||
}
|
||||
client.authorizer = authClient
|
||||
}
|
||||
|
||||
resolverFn := client.resolver // copy for avoiding recursive call
|
||||
client.resolver = func(ref registry.Reference) (remotes.Resolver, error) {
|
||||
if resolverFn != nil {
|
||||
// validate if the resolverFn returns a valid resolver
|
||||
if resolver, err := resolverFn(ref); resolver != nil && err == nil {
|
||||
return resolver, nil
|
||||
}
|
||||
}
|
||||
|
||||
headers := http.Header{}
|
||||
headers.Set("User-Agent", version.GetUserAgent())
|
||||
dockerClient, ok := client.authorizer.(*dockerauth.Client)
|
||||
|
|
@ -117,6 +126,7 @@ func NewClient(options ...ClientOption) (*Client, error) {
|
|||
}
|
||||
return resolver, nil
|
||||
}
|
||||
|
||||
// allocate a cache if option is set
|
||||
var cache registryauth.Cache
|
||||
if client.enableCache {
|
||||
|
|
@ -199,6 +209,15 @@ func ClientOptPlainHTTP() ClientOption {
|
|||
}
|
||||
}
|
||||
|
||||
// ClientOptResolver returns a function that sets the resolver setting on a client options set
|
||||
func ClientOptResolver(resolver remotes.Resolver) ClientOption {
|
||||
return func(client *Client) {
|
||||
client.resolver = func(ref registry.Reference) (remotes.Resolver, error) {
|
||||
return resolver, nil
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
type (
|
||||
// LoginOption allows specifying various settings on login
|
||||
LoginOption func(*loginOperation)
|
||||
|
|
@ -287,21 +306,21 @@ type (
|
|||
|
||||
// PullResult is the result returned upon successful pull.
|
||||
PullResult struct {
|
||||
Manifest *descriptorPullSummary `json:"manifest"`
|
||||
Config *descriptorPullSummary `json:"config"`
|
||||
Chart *descriptorPullSummaryWithMeta `json:"chart"`
|
||||
Prov *descriptorPullSummary `json:"prov"`
|
||||
Manifest *DescriptorPullSummary `json:"manifest"`
|
||||
Config *DescriptorPullSummary `json:"config"`
|
||||
Chart *DescriptorPullSummaryWithMeta `json:"chart"`
|
||||
Prov *DescriptorPullSummary `json:"prov"`
|
||||
Ref string `json:"ref"`
|
||||
}
|
||||
|
||||
descriptorPullSummary struct {
|
||||
DescriptorPullSummary struct {
|
||||
Data []byte `json:"-"`
|
||||
Digest string `json:"digest"`
|
||||
Size int64 `json:"size"`
|
||||
}
|
||||
|
||||
descriptorPullSummaryWithMeta struct {
|
||||
descriptorPullSummary
|
||||
DescriptorPullSummaryWithMeta struct {
|
||||
DescriptorPullSummary
|
||||
Meta *chart.Metadata `json:"meta"`
|
||||
}
|
||||
|
||||
|
|
@ -404,16 +423,16 @@ func (c *Client) Pull(ref string, options ...PullOption) (*PullResult, error) {
|
|||
}
|
||||
}
|
||||
result := &PullResult{
|
||||
Manifest: &descriptorPullSummary{
|
||||
Manifest: &DescriptorPullSummary{
|
||||
Digest: manifest.Digest.String(),
|
||||
Size: manifest.Size,
|
||||
},
|
||||
Config: &descriptorPullSummary{
|
||||
Config: &DescriptorPullSummary{
|
||||
Digest: configDescriptor.Digest.String(),
|
||||
Size: configDescriptor.Size,
|
||||
},
|
||||
Chart: &descriptorPullSummaryWithMeta{},
|
||||
Prov: &descriptorPullSummary{},
|
||||
Chart: &DescriptorPullSummaryWithMeta{},
|
||||
Prov: &DescriptorPullSummary{},
|
||||
Ref: parsedRef.String(),
|
||||
}
|
||||
var getManifestErr error
|
||||
|
|
|
|||
|
|
@ -88,6 +88,7 @@ func setup(suite *TestSuite, tlsEnabled, insecure bool) *registry.Registry {
|
|||
ClientOptEnableCache(true),
|
||||
ClientOptWriter(suite.Out),
|
||||
ClientOptCredentialsFile(credentialsFile),
|
||||
ClientOptResolver(nil),
|
||||
}
|
||||
|
||||
if tlsEnabled {
|
||||
|
|
|
|||
Loading…
Reference in a new issue