Merge pull request #11086 from souleb/registry-cache-optin

Make token caching an opt in feature in OCI registry client
pull/11029/head
Scott Rigby 2 years ago committed by GitHub
commit c52cd40ace
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -154,6 +154,7 @@ func newRootCmd(actionConfig *action.Configuration, out io.Writer, args []string
registryClient, err := registry.NewClient( registryClient, err := registry.NewClient(
registry.ClientOptDebug(settings.Debug), registry.ClientOptDebug(settings.Debug),
registry.ClientOptEnableCache(true),
registry.ClientOptWriter(out), registry.ClientOptWriter(out),
registry.ClientOptCredentialsFile(settings.RegistryConfig), registry.ClientOptCredentialsFile(settings.RegistryConfig),
) )

508
go.sum

File diff suppressed because it is too large Load Diff

@ -63,7 +63,9 @@ func (g *OCIGetter) get(href string) (*bytes.Buffer, error) {
// NewOCIGetter constructs a valid http/https client as a Getter // NewOCIGetter constructs a valid http/https client as a Getter
func NewOCIGetter(ops ...Option) (Getter, error) { func NewOCIGetter(ops ...Option) (Getter, error) {
registryClient, err := registry.NewClient() registryClient, err := registry.NewClient(
registry.ClientOptEnableCache(true),
)
if err != nil { if err != nil {
return nil, err return nil, err
} }

@ -85,7 +85,9 @@ func (pusher *OCIPusher) push(chartRef, href string) error {
// NewOCIPusher constructs a valid OCI client as a Pusher // NewOCIPusher constructs a valid OCI client as a Pusher
func NewOCIPusher(ops ...Option) (Pusher, error) { func NewOCIPusher(ops ...Option) (Pusher, error) {
registryClient, err := registry.NewClient() registryClient, err := registry.NewClient(
registry.ClientOptEnableCache(true),
)
if err != nil { if err != nil {
return nil, err return nil, err
} }

@ -53,7 +53,8 @@ a plus (+) when pulling from a registry.`
type ( type (
// Client works with OCI-compliant registries // Client works with OCI-compliant registries
Client struct { Client struct {
debug bool debug bool
enableCache bool
// path to repository config file e.g. ~/.docker/config.json // path to repository config file e.g. ~/.docker/config.json
credentialsFile string credentialsFile string
out io.Writer out io.Writer
@ -95,12 +96,18 @@ func NewClient(options ...ClientOption) (*Client, error) {
} }
client.resolver = resolver client.resolver = resolver
} }
// allocate a cache if option is set
var cache registryauth.Cache
if client.enableCache {
cache = registryauth.DefaultCache
}
if client.registryAuthorizer == nil { if client.registryAuthorizer == nil {
client.registryAuthorizer = &registryauth.Client{ client.registryAuthorizer = &registryauth.Client{
Header: http.Header{ Header: http.Header{
"User-Agent": {version.GetUserAgent()}, "User-Agent": {version.GetUserAgent()},
}, },
Cache: registryauth.DefaultCache, Cache: cache,
Credential: func(ctx context.Context, reg string) (registryauth.Credential, error) { Credential: func(ctx context.Context, reg string) (registryauth.Credential, error) {
dockerClient, ok := client.authorizer.(*dockerauth.Client) dockerClient, ok := client.authorizer.(*dockerauth.Client)
if !ok { if !ok {
@ -138,6 +145,13 @@ func ClientOptDebug(debug bool) ClientOption {
} }
} }
// ClientOptEnableCache returns a function that sets the enableCache setting on a client options set
func ClientOptEnableCache(enableCache bool) ClientOption {
return func(client *Client) {
client.enableCache = enableCache
}
}
// ClientOptWriter returns a function that sets the writer setting on client options set // ClientOptWriter returns a function that sets the writer setting on client options set
func ClientOptWriter(out io.Writer) ClientOption { func ClientOptWriter(out io.Writer) ClientOption {
return func(client *Client) { return func(client *Client) {

@ -70,6 +70,7 @@ func (suite *RegistryClientTestSuite) SetupSuite() {
var err error var err error
suite.RegistryClient, err = NewClient( suite.RegistryClient, err = NewClient(
ClientOptDebug(true), ClientOptDebug(true),
ClientOptEnableCache(true),
ClientOptWriter(suite.Out), ClientOptWriter(suite.Out),
ClientOptCredentialsFile(credentialsFile), ClientOptCredentialsFile(credentialsFile),
) )

@ -153,6 +153,7 @@ func (srv *OCIServer) Run(t *testing.T, opts ...OCIServerOpt) {
// init test client // init test client
registryClient, err := ociRegistry.NewClient( registryClient, err := ociRegistry.NewClient(
ociRegistry.ClientOptDebug(true), ociRegistry.ClientOptDebug(true),
ociRegistry.ClientOptEnableCache(true),
ociRegistry.ClientOptWriter(os.Stdout), ociRegistry.ClientOptWriter(os.Stdout),
ociRegistry.ClientOptCredentialsFile(credentialsFile), ociRegistry.ClientOptCredentialsFile(credentialsFile),
) )

Loading…
Cancel
Save