Supply User-Agent string to the Venafi controllers
Signed-off-by: Richard Wall <richard.wall@venafi.com>
This commit is contained in:
parent
04ee7fe0e9
commit
cca333d1db
@ -54,6 +54,9 @@ type Venafi struct {
|
||||
clientBuilder venaficlient.VenafiClientBuilder
|
||||
|
||||
metrics *metrics.Metrics
|
||||
|
||||
// userAgent is the string used as the UserAgent when making HTTP calls.
|
||||
userAgent string
|
||||
}
|
||||
|
||||
func init() {
|
||||
@ -73,6 +76,7 @@ func NewVenafi(ctx *controllerpkg.Context) certificaterequests.Issuer {
|
||||
clientBuilder: venaficlient.New,
|
||||
metrics: ctx.Metrics,
|
||||
cmClient: ctx.CMClient,
|
||||
userAgent: ctx.RESTConfig.UserAgent,
|
||||
}
|
||||
}
|
||||
|
||||
@ -80,7 +84,7 @@ func (v *Venafi) Sign(ctx context.Context, cr *cmapi.CertificateRequest, issuerO
|
||||
log := logf.FromContext(ctx, "sign")
|
||||
log = logf.WithRelatedResource(log, issuerObj)
|
||||
|
||||
client, err := v.clientBuilder(v.issuerOptions.ResourceNamespace(issuerObj), v.secretsLister, issuerObj, v.metrics, log)
|
||||
client, err := v.clientBuilder(v.issuerOptions.ResourceNamespace(issuerObj), v.secretsLister, issuerObj, v.metrics, log, v.userAgent)
|
||||
if k8sErrors.IsNotFound(err) {
|
||||
message := "Required secret resource not found"
|
||||
|
||||
|
||||
@ -824,7 +824,7 @@ func runTest(t *testing.T, test testT) {
|
||||
|
||||
if test.fakeClient != nil {
|
||||
v.clientBuilder = func(namespace string, secretsLister internalinformers.SecretLister,
|
||||
issuer cmapi.GenericIssuer, _ *metrics.Metrics, _ logr.Logger) (client.Interface, error) {
|
||||
issuer cmapi.GenericIssuer, _ *metrics.Metrics, _ logr.Logger, _ string) (client.Interface, error) {
|
||||
return test.fakeClient, nil
|
||||
}
|
||||
}
|
||||
|
||||
@ -63,6 +63,9 @@ type Venafi struct {
|
||||
|
||||
// fieldManager is the manager name used for the Apply operations.
|
||||
fieldManager string
|
||||
|
||||
// userAgent is the string used as the UserAgent when making HTTP calls.
|
||||
userAgent string
|
||||
}
|
||||
|
||||
func init() {
|
||||
@ -82,6 +85,7 @@ func NewVenafi(ctx *controllerpkg.Context) certificatesigningrequests.Signer {
|
||||
clientBuilder: venaficlient.New,
|
||||
fieldManager: ctx.FieldManager,
|
||||
metrics: ctx.Metrics,
|
||||
userAgent: ctx.RESTConfig.UserAgent,
|
||||
}
|
||||
}
|
||||
|
||||
@ -99,7 +103,7 @@ func (v *Venafi) Sign(ctx context.Context, csr *certificatesv1.CertificateSignin
|
||||
|
||||
resourceNamespace := v.issuerOptions.ResourceNamespace(issuerObj)
|
||||
|
||||
client, err := v.clientBuilder(resourceNamespace, v.secretsLister, issuerObj, v.metrics, log)
|
||||
client, err := v.clientBuilder(resourceNamespace, v.secretsLister, issuerObj, v.metrics, log, v.userAgent)
|
||||
if apierrors.IsNotFound(err) {
|
||||
message := "Required secret resource not found"
|
||||
v.recorder.Event(csr, corev1.EventTypeWarning, "SecretNotFound", message)
|
||||
|
||||
@ -164,7 +164,7 @@ func TestProcessItem(t *testing.T) {
|
||||
Status: corev1.ConditionTrue,
|
||||
}),
|
||||
),
|
||||
clientBuilder: func(_ string, _ internalinformers.SecretLister, _ cmapi.GenericIssuer, _ *metrics.Metrics, _ logr.Logger) (venaficlient.Interface, error) {
|
||||
clientBuilder: func(_ string, _ internalinformers.SecretLister, _ cmapi.GenericIssuer, _ *metrics.Metrics, _ logr.Logger, _ string) (venaficlient.Interface, error) {
|
||||
return nil, apierrors.NewNotFound(schema.GroupResource{}, "test-secret")
|
||||
},
|
||||
builder: &testpkg.Builder{
|
||||
@ -206,7 +206,7 @@ func TestProcessItem(t *testing.T) {
|
||||
Status: corev1.ConditionTrue,
|
||||
}),
|
||||
),
|
||||
clientBuilder: func(_ string, _ internalinformers.SecretLister, _ cmapi.GenericIssuer, _ *metrics.Metrics, _ logr.Logger) (venaficlient.Interface, error) {
|
||||
clientBuilder: func(_ string, _ internalinformers.SecretLister, _ cmapi.GenericIssuer, _ *metrics.Metrics, _ logr.Logger, _ string) (venaficlient.Interface, error) {
|
||||
return nil, errors.New("generic error")
|
||||
},
|
||||
expectedErr: true,
|
||||
@ -252,7 +252,7 @@ func TestProcessItem(t *testing.T) {
|
||||
Status: corev1.ConditionTrue,
|
||||
}),
|
||||
),
|
||||
clientBuilder: func(_ string, _ internalinformers.SecretLister, _ cmapi.GenericIssuer, _ *metrics.Metrics, _ logr.Logger) (venaficlient.Interface, error) {
|
||||
clientBuilder: func(_ string, _ internalinformers.SecretLister, _ cmapi.GenericIssuer, _ *metrics.Metrics, _ logr.Logger, _ string) (venaficlient.Interface, error) {
|
||||
return &fakevenaficlient.Venafi{}, nil
|
||||
},
|
||||
builder: &testpkg.Builder{
|
||||
@ -320,7 +320,7 @@ func TestProcessItem(t *testing.T) {
|
||||
Status: corev1.ConditionTrue,
|
||||
}),
|
||||
),
|
||||
clientBuilder: func(_ string, _ internalinformers.SecretLister, _ cmapi.GenericIssuer, _ *metrics.Metrics, _ logr.Logger) (venaficlient.Interface, error) {
|
||||
clientBuilder: func(_ string, _ internalinformers.SecretLister, _ cmapi.GenericIssuer, _ *metrics.Metrics, _ logr.Logger, _ string) (venaficlient.Interface, error) {
|
||||
return &fakevenaficlient.Venafi{}, nil
|
||||
},
|
||||
builder: &testpkg.Builder{
|
||||
@ -388,7 +388,7 @@ func TestProcessItem(t *testing.T) {
|
||||
Status: corev1.ConditionTrue,
|
||||
}),
|
||||
),
|
||||
clientBuilder: func(_ string, _ internalinformers.SecretLister, _ cmapi.GenericIssuer, _ *metrics.Metrics, _ logr.Logger) (venaficlient.Interface, error) {
|
||||
clientBuilder: func(_ string, _ internalinformers.SecretLister, _ cmapi.GenericIssuer, _ *metrics.Metrics, _ logr.Logger, _ string) (venaficlient.Interface, error) {
|
||||
return &fakevenaficlient.Venafi{
|
||||
RequestCertificateFn: func(_ []byte, _ time.Duration, _ []venafiapi.CustomField) (string, error) {
|
||||
return "", venaficlient.ErrCustomFieldsType{Type: "test-type"}
|
||||
@ -459,7 +459,7 @@ func TestProcessItem(t *testing.T) {
|
||||
Status: corev1.ConditionTrue,
|
||||
}),
|
||||
),
|
||||
clientBuilder: func(_ string, _ internalinformers.SecretLister, _ cmapi.GenericIssuer, _ *metrics.Metrics, _ logr.Logger) (venaficlient.Interface, error) {
|
||||
clientBuilder: func(_ string, _ internalinformers.SecretLister, _ cmapi.GenericIssuer, _ *metrics.Metrics, _ logr.Logger, _ string) (venaficlient.Interface, error) {
|
||||
return &fakevenaficlient.Venafi{
|
||||
RequestCertificateFn: func(_ []byte, _ time.Duration, _ []venafiapi.CustomField) (string, error) {
|
||||
return "", errors.New("generic error")
|
||||
@ -530,7 +530,7 @@ func TestProcessItem(t *testing.T) {
|
||||
Status: corev1.ConditionTrue,
|
||||
}),
|
||||
),
|
||||
clientBuilder: func(_ string, _ internalinformers.SecretLister, _ cmapi.GenericIssuer, _ *metrics.Metrics, _ logr.Logger) (venaficlient.Interface, error) {
|
||||
clientBuilder: func(_ string, _ internalinformers.SecretLister, _ cmapi.GenericIssuer, _ *metrics.Metrics, _ logr.Logger, _ string) (venaficlient.Interface, error) {
|
||||
return &fakevenaficlient.Venafi{
|
||||
RequestCertificateFn: func(_ []byte, _ time.Duration, _ []venafiapi.CustomField) (string, error) {
|
||||
return "test-pickup-id", nil
|
||||
@ -592,7 +592,7 @@ func TestProcessItem(t *testing.T) {
|
||||
Status: corev1.ConditionTrue,
|
||||
}),
|
||||
),
|
||||
clientBuilder: func(_ string, _ internalinformers.SecretLister, _ cmapi.GenericIssuer, _ *metrics.Metrics, _ logr.Logger) (venaficlient.Interface, error) {
|
||||
clientBuilder: func(_ string, _ internalinformers.SecretLister, _ cmapi.GenericIssuer, _ *metrics.Metrics, _ logr.Logger, _ string) (venaficlient.Interface, error) {
|
||||
return &fakevenaficlient.Venafi{
|
||||
RetrieveCertificateFn: func(_ string, _ []byte, _ time.Duration, _ []venafiapi.CustomField) ([]byte, error) {
|
||||
return nil, endpoint.ErrCertificatePending{}
|
||||
@ -643,7 +643,7 @@ func TestProcessItem(t *testing.T) {
|
||||
Status: corev1.ConditionTrue,
|
||||
}),
|
||||
),
|
||||
clientBuilder: func(_ string, _ internalinformers.SecretLister, _ cmapi.GenericIssuer, _ *metrics.Metrics, _ logr.Logger) (venaficlient.Interface, error) {
|
||||
clientBuilder: func(_ string, _ internalinformers.SecretLister, _ cmapi.GenericIssuer, _ *metrics.Metrics, _ logr.Logger, _ string) (venaficlient.Interface, error) {
|
||||
return &fakevenaficlient.Venafi{
|
||||
RetrieveCertificateFn: func(_ string, _ []byte, _ time.Duration, _ []venafiapi.CustomField) ([]byte, error) {
|
||||
return nil, endpoint.ErrRetrieveCertificateTimeout{}
|
||||
@ -694,7 +694,7 @@ func TestProcessItem(t *testing.T) {
|
||||
Status: corev1.ConditionTrue,
|
||||
}),
|
||||
),
|
||||
clientBuilder: func(_ string, _ internalinformers.SecretLister, _ cmapi.GenericIssuer, _ *metrics.Metrics, _ logr.Logger) (venaficlient.Interface, error) {
|
||||
clientBuilder: func(_ string, _ internalinformers.SecretLister, _ cmapi.GenericIssuer, _ *metrics.Metrics, _ logr.Logger, _ string) (venaficlient.Interface, error) {
|
||||
return &fakevenaficlient.Venafi{
|
||||
RetrieveCertificateFn: func(_ string, _ []byte, _ time.Duration, _ []venafiapi.CustomField) ([]byte, error) {
|
||||
return nil, errors.New("generic error")
|
||||
@ -745,7 +745,7 @@ func TestProcessItem(t *testing.T) {
|
||||
Status: corev1.ConditionTrue,
|
||||
}),
|
||||
),
|
||||
clientBuilder: func(_ string, _ internalinformers.SecretLister, _ cmapi.GenericIssuer, _ *metrics.Metrics, _ logr.Logger) (venaficlient.Interface, error) {
|
||||
clientBuilder: func(_ string, _ internalinformers.SecretLister, _ cmapi.GenericIssuer, _ *metrics.Metrics, _ logr.Logger, _ string) (venaficlient.Interface, error) {
|
||||
return &fakevenaficlient.Venafi{
|
||||
RetrieveCertificateFn: func(_ string, _ []byte, _ time.Duration, _ []venafiapi.CustomField) ([]byte, error) {
|
||||
return []byte("garbage"), nil
|
||||
@ -818,7 +818,7 @@ func TestProcessItem(t *testing.T) {
|
||||
Status: corev1.ConditionTrue,
|
||||
}),
|
||||
),
|
||||
clientBuilder: func(_ string, _ internalinformers.SecretLister, _ cmapi.GenericIssuer, _ *metrics.Metrics, _ logr.Logger) (venaficlient.Interface, error) {
|
||||
clientBuilder: func(_ string, _ internalinformers.SecretLister, _ cmapi.GenericIssuer, _ *metrics.Metrics, _ logr.Logger, _ string) (venaficlient.Interface, error) {
|
||||
return &fakevenaficlient.Venafi{
|
||||
RetrieveCertificateFn: func(_ string, _ []byte, _ time.Duration, _ []venafiapi.CustomField) ([]byte, error) {
|
||||
return []byte(fmt.Sprintf("%s%s", certBundle.ChainPEM, certBundle.CAPEM)), nil
|
||||
|
||||
@ -47,7 +47,7 @@ const (
|
||||
)
|
||||
|
||||
type VenafiClientBuilder func(namespace string, secretsLister internalinformers.SecretLister,
|
||||
issuer cmapi.GenericIssuer, metrics *metrics.Metrics, logger logr.Logger) (Interface, error)
|
||||
issuer cmapi.GenericIssuer, metrics *metrics.Metrics, logger logr.Logger, userAgent string) (Interface, error)
|
||||
|
||||
// Interface implements a Venafi client
|
||||
type Interface interface {
|
||||
@ -86,8 +86,8 @@ type connector interface {
|
||||
|
||||
// New constructs a Venafi client Interface. Errors may be network errors and
|
||||
// should be considered for retrying.
|
||||
func New(namespace string, secretsLister internalinformers.SecretLister, issuer cmapi.GenericIssuer, metrics *metrics.Metrics, logger logr.Logger) (Interface, error) {
|
||||
cfg, err := configForIssuer(issuer, secretsLister, namespace)
|
||||
func New(namespace string, secretsLister internalinformers.SecretLister, issuer cmapi.GenericIssuer, metrics *metrics.Metrics, logger logr.Logger, userAgent string) (Interface, error) {
|
||||
cfg, err := configForIssuer(issuer, secretsLister, namespace, userAgent)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -127,7 +127,7 @@ func New(namespace string, secretsLister internalinformers.SecretLister, issuer
|
||||
|
||||
// configForIssuer will convert a cert-manager Venafi issuer into a vcert.Config
|
||||
// that can be used to instantiate an API client.
|
||||
func configForIssuer(iss cmapi.GenericIssuer, secretsLister internalinformers.SecretLister, namespace string) (*vcert.Config, error) {
|
||||
func configForIssuer(iss cmapi.GenericIssuer, secretsLister internalinformers.SecretLister, namespace string, userAgent string) (*vcert.Config, error) {
|
||||
venCfg := iss.GetSpec().Venafi
|
||||
var vcertConfig *vcert.Config
|
||||
|
||||
@ -195,7 +195,7 @@ func configForIssuer(iss cmapi.GenericIssuer, secretsLister internalinformers.Se
|
||||
}
|
||||
|
||||
// Set the user-agent header
|
||||
vcertConfig.Client.Transport = util.UserAgentRoundTripper(vcertConfig.Client.Transport, "cert-manager/v0.0.0")
|
||||
vcertConfig.Client.Transport = util.UserAgentRoundTripper(vcertConfig.Client.Transport, userAgent)
|
||||
|
||||
return vcertConfig, nil
|
||||
|
||||
|
||||
@ -223,7 +223,7 @@ type testConfigForIssuerT struct {
|
||||
}
|
||||
|
||||
func (c *testConfigForIssuerT) runTest(t *testing.T) {
|
||||
resp, err := configForIssuer(c.iss, c.secretsLister, "test-namespace")
|
||||
resp, err := configForIssuer(c.iss, c.secretsLister, "test-namespace", "cert-manager/v0.0.0")
|
||||
if err != nil && !c.expectedErr {
|
||||
t.Errorf("expected to not get an error, but got: %v", err)
|
||||
}
|
||||
|
||||
@ -38,7 +38,7 @@ func (v *Venafi) Setup(ctx context.Context) (err error) {
|
||||
}
|
||||
}()
|
||||
|
||||
client, err := v.clientBuilder(v.resourceNamespace, v.secretsLister, v.issuer, v.Metrics, v.log)
|
||||
client, err := v.clientBuilder(v.resourceNamespace, v.secretsLister, v.issuer, v.Metrics, v.log, v.userAgent)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error building client: %v", err)
|
||||
}
|
||||
|
||||
@ -41,12 +41,12 @@ func TestSetup(t *testing.T) {
|
||||
baseIssuer := gen.Issuer("test-issuer")
|
||||
|
||||
failingClientBuilder := func(string, internalinformers.SecretLister,
|
||||
cmapi.GenericIssuer, *metrics.Metrics, logr.Logger) (client.Interface, error) {
|
||||
cmapi.GenericIssuer, *metrics.Metrics, logr.Logger, string) (client.Interface, error) {
|
||||
return nil, errors.New("this is an error")
|
||||
}
|
||||
|
||||
failingPingClient := func(string, internalinformers.SecretLister,
|
||||
cmapi.GenericIssuer, *metrics.Metrics, logr.Logger) (client.Interface, error) {
|
||||
cmapi.GenericIssuer, *metrics.Metrics, logr.Logger, string) (client.Interface, error) {
|
||||
return &internalvenafifake.Venafi{
|
||||
PingFn: func() error {
|
||||
return errors.New("this is a ping error")
|
||||
@ -55,7 +55,7 @@ func TestSetup(t *testing.T) {
|
||||
}
|
||||
|
||||
pingClient := func(string, internalinformers.SecretLister,
|
||||
cmapi.GenericIssuer, *metrics.Metrics, logr.Logger) (client.Interface, error) {
|
||||
cmapi.GenericIssuer, *metrics.Metrics, logr.Logger, string) (client.Interface, error) {
|
||||
return &internalvenafifake.Venafi{
|
||||
PingFn: func() error {
|
||||
return nil
|
||||
@ -63,7 +63,7 @@ func TestSetup(t *testing.T) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
verifyCredentialsClient := func(string, internalinformers.SecretLister, cmapi.GenericIssuer, *metrics.Metrics, logr.Logger) (client.Interface, error) {
|
||||
verifyCredentialsClient := func(string, internalinformers.SecretLister, cmapi.GenericIssuer, *metrics.Metrics, logr.Logger, string) (client.Interface, error) {
|
||||
return &internalvenafifake.Venafi{
|
||||
PingFn: func() error {
|
||||
return nil
|
||||
@ -74,7 +74,7 @@ func TestSetup(t *testing.T) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
failingVerifyCredentialsClient := func(string, internalinformers.SecretLister, cmapi.GenericIssuer, *metrics.Metrics, logr.Logger) (client.Interface, error) {
|
||||
failingVerifyCredentialsClient := func(string, internalinformers.SecretLister, cmapi.GenericIssuer, *metrics.Metrics, logr.Logger, string) (client.Interface, error) {
|
||||
return &internalvenafifake.Venafi{
|
||||
PingFn: func() error {
|
||||
return nil
|
||||
|
||||
@ -43,6 +43,9 @@ type Venafi struct {
|
||||
clientBuilder client.VenafiClientBuilder
|
||||
|
||||
log logr.Logger
|
||||
|
||||
// userAgent is the string used as the UserAgent when making HTTP calls.
|
||||
userAgent string
|
||||
}
|
||||
|
||||
func NewVenafi(ctx *controller.Context, issuer cmapi.GenericIssuer) (issuer.Interface, error) {
|
||||
@ -53,6 +56,7 @@ func NewVenafi(ctx *controller.Context, issuer cmapi.GenericIssuer) (issuer.Inte
|
||||
clientBuilder: client.New,
|
||||
Context: ctx,
|
||||
log: logf.Log.WithName("venafi"),
|
||||
userAgent: ctx.RESTConfig.UserAgent,
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user