diff --git a/docs/content/docs/install/metrics.md b/docs/content/docs/install/metrics.md
index fb707acac..1761bf7f9 100644
--- a/docs/content/docs/install/metrics.md
+++ b/docs/content/docs/install/metrics.md
@@ -12,6 +12,15 @@ You can configure these exporters by referring to the [observability configurati
| Name | Type | Description |
|------------------------------------------------------|---------|--------------------------------------------------------------------|
+| `pipelines_as_code_git_provider_api_request_count` | Counter | Number of API requests submitted to git providers |
| `pipelines_as_code_pipelinerun_count` | Counter | Number of pipelineruns created by pipelines-as-code |
| `pipelines_as_code_pipelinerun_duration_seconds_sum` | Counter | Number of seconds all pipelineruns have taken in pipelines-as-code |
| `pipelines_as_code_running_pipelineruns_count` | Gauge | Number of running pipelineruns in pipelines-as-code |
+
+**Note:** The metric `pipelines_as_code_git_provider_api_request_count`
+is emitted by both the Controller and the Watcher, since both services
+use Git providers' APIs. When analyzing this metric, you may need to
+combine both services' metrics. For example, using PromQL:
+
+- `sum (pac_controller_pipelines_as_code_git_provider_api_request_count or pac_watcher_pipelines_as_code_git_provider_api_request_count)`
+- `sum (rate(pac_controller_pipelines_as_code_git_provider_api_request_count[1m]) or rate(pac_watcher_pipelines_as_code_git_provider_api_request_count[1m]))`
diff --git a/pkg/matcher/annotation_matcher_test.go b/pkg/matcher/annotation_matcher_test.go
index a1f0c451f..7b465d347 100644
--- a/pkg/matcher/annotation_matcher_test.go
+++ b/pkg/matcher/annotation_matcher_test.go
@@ -1350,9 +1350,9 @@ func TestMatchPipelinerunAnnotationAndRepositories(t *testing.T) {
fakeclient, mux, ghTestServerURL, teardown := ghtesthelper.SetupGH()
defer teardown()
vcx := &ghprovider.Provider{
- Client: fakeclient,
- Token: github.Ptr("None"),
+ Token: github.Ptr("None"),
}
+ vcx.SetGithubClient(fakeclient)
if tt.args.runevent.Request == nil {
tt.args.runevent.Request = &info.Request{Header: http.Header{}, Payload: nil}
}
diff --git a/pkg/metrics/metrics.go b/pkg/metrics/metrics.go
index 805422aae..ee621b315 100644
--- a/pkg/metrics/metrics.go
+++ b/pkg/metrics/metrics.go
@@ -30,6 +30,12 @@ var runningPRCount = stats.Float64("pipelines_as_code_running_pipelineruns_count
"number of running pipelineruns by pipelines as code",
stats.UnitDimensionless)
+var gitProviderAPIRequestCount = stats.Int64(
+ "pipelines_as_code_git_provider_api_request_count",
+ "number of API requests from pipelines as code to git providers",
+ stats.UnitDimensionless,
+)
+
// Recorder holds keys for metrics.
type Recorder struct {
initialized bool
@@ -61,36 +67,42 @@ func NewRecorder() (*Recorder, error) {
provider, errRegistering := tag.NewKey("provider")
if errRegistering != nil {
+ ErrRegistering = errRegistering
return
}
R.provider = provider
eventType, errRegistering := tag.NewKey("event-type")
if errRegistering != nil {
+ ErrRegistering = errRegistering
return
}
R.eventType = eventType
namespace, errRegistering := tag.NewKey("namespace")
if errRegistering != nil {
+ ErrRegistering = errRegistering
return
}
R.namespace = namespace
repository, errRegistering := tag.NewKey("repository")
if errRegistering != nil {
+ ErrRegistering = errRegistering
return
}
R.repository = repository
status, errRegistering := tag.NewKey("status")
if errRegistering != nil {
+ ErrRegistering = errRegistering
return
}
R.status = status
reason, errRegistering := tag.NewKey("reason")
if errRegistering != nil {
+ ErrRegistering = errRegistering
return
}
R.reason = reason
@@ -116,11 +128,18 @@ func NewRecorder() (*Recorder, error) {
Aggregation: view.LastValue(),
TagKeys: []tag.Key{R.namespace, R.repository},
}
+ gitProviderAPIRequestView = &view.View{
+ Description: gitProviderAPIRequestCount.Description(),
+ Measure: gitProviderAPIRequestCount,
+ Aggregation: view.Count(),
+ TagKeys: []tag.Key{R.provider, R.eventType, R.namespace, R.repository},
+ }
)
- view.Unregister(prCountView, prDurationView, runningPRView)
- errRegistering = view.Register(prCountView, prDurationView, runningPRView)
+ view.Unregister(prCountView, prDurationView, runningPRView, gitProviderAPIRequestView)
+ errRegistering = view.Register(prCountView, prDurationView, runningPRView, gitProviderAPIRequestView)
if errRegistering != nil {
+ ErrRegistering = errRegistering
R.initialized = false
return
}
@@ -129,12 +148,19 @@ func NewRecorder() (*Recorder, error) {
return R, ErrRegistering
}
-// Count logs number of times a pipelinerun is ran for a provider.
-func (r *Recorder) Count(provider, event, namespace, repository string) error {
+func (r Recorder) assertInitialized() error {
if !r.initialized {
return fmt.Errorf(
"ignoring the metrics recording for pipelineruns, failed to initialize the metrics recorder")
}
+ return nil
+}
+
+// Count logs number of times a pipelinerun is ran for a provider.
+func (r *Recorder) Count(provider, event, namespace, repository string) error {
+ if err := r.assertInitialized(); err != nil {
+ return err
+ }
ctx, err := tag.New(
context.Background(),
@@ -153,9 +179,8 @@ func (r *Recorder) Count(provider, event, namespace, repository string) error {
// CountPRDuration collects duration taken by a pipelinerun in seconds accumulate them in prDurationCount.
func (r *Recorder) CountPRDuration(namespace, repository, status, reason string, duration time.Duration) error {
- if !r.initialized {
- return fmt.Errorf(
- "ignoring the metrics recording for pipelineruns, failed to initialize the metrics recorder")
+ if err := r.assertInitialized(); err != nil {
+ return err
}
ctx, err := tag.New(
@@ -175,9 +200,8 @@ func (r *Recorder) CountPRDuration(namespace, repository, status, reason string,
// RunningPipelineRuns emits the number of running PipelineRuns for a repository and namespace.
func (r *Recorder) RunningPipelineRuns(namespace, repository string, runningPRs float64) error {
- if !r.initialized {
- return fmt.Errorf(
- "ignoring the metrics recording for pipelineruns, failed to initialize the metrics recorder")
+ if err := r.assertInitialized(); err != nil {
+ return err
}
ctx, err := tag.New(
@@ -266,6 +290,26 @@ func (r *Recorder) ReportRunningPipelineRuns(ctx context.Context, lister listers
}
}
+func (r *Recorder) ReportGitProviderAPIUsage(provider, event, namespace, repository string) error {
+ if err := r.assertInitialized(); err != nil {
+ return err
+ }
+
+ ctx, err := tag.New(
+ context.Background(),
+ tag.Insert(r.provider, provider),
+ tag.Insert(r.eventType, event),
+ tag.Insert(r.namespace, namespace),
+ tag.Insert(r.repository, repository),
+ )
+ if err != nil {
+ return err
+ }
+
+ metrics.Record(ctx, gitProviderAPIRequestCount.M(1))
+ return nil
+}
+
func ResetRecorder() {
Once = sync.Once{}
R = nil
diff --git a/pkg/pipelineascode/match_test.go b/pkg/pipelineascode/match_test.go
index 747eeb801..f34f8f5ef 100644
--- a/pkg/pipelineascode/match_test.go
+++ b/pkg/pipelineascode/match_test.go
@@ -254,10 +254,10 @@ func TestGetPipelineRunsFromRepo(t *testing.T) {
ConsoleURL: "https://console.url",
}
vcx := &ghprovider.Provider{
- Client: fakeclient,
Token: github.Ptr("None"),
Logger: logger,
}
+ vcx.SetGithubClient(fakeclient)
pacInfo := &info.PacOpts{
Settings: settings.Settings{
ApplicationName: "Pipelines as Code CI",
diff --git a/pkg/pipelineascode/pipelineascode_test.go b/pkg/pipelineascode/pipelineascode_test.go
index b2e124041..322d85dd7 100644
--- a/pkg/pipelineascode/pipelineascode_test.go
+++ b/pkg/pipelineascode/pipelineascode_test.go
@@ -606,11 +606,11 @@ func TestRun(t *testing.T) {
},
}
vcx := &ghprovider.Provider{
- Client: fakeclient,
Run: cs,
Token: github.Ptr("None"),
Logger: logger,
}
+ vcx.SetGithubClient(fakeclient)
vcx.SetPacInfo(pacInfo)
p := NewPacs(&tt.runevent, vcx, cs, pacInfo, k8int, logger, nil)
err := p.Run(ctx)
diff --git a/pkg/provider/bitbucketcloud/acl.go b/pkg/provider/bitbucketcloud/acl.go
index 0653d71b1..f6cdbb676 100644
--- a/pkg/provider/bitbucketcloud/acl.go
+++ b/pkg/provider/bitbucketcloud/acl.go
@@ -27,7 +27,7 @@ func (v *Provider) IsAllowed(ctx context.Context, event *info.Event) (bool, erro
}
func (v *Provider) isWorkspaceMember(event *info.Event) (bool, error) {
- members, err := v.Client.Workspaces.Members(event.Organization)
+ members, err := v.Client().Workspaces.Members(event.Organization)
if err != nil {
return false, err
}
@@ -83,7 +83,7 @@ func (v *Provider) checkMember(ctx context.Context, event *info.Event) (bool, er
}
func (v *Provider) checkOkToTestCommentFromApprovedMember(ctx context.Context, event *info.Event) (bool, error) {
- commentsIntf, err := v.Client.Repositories.PullRequests.GetComments(&bitbucket.PullRequestsOptions{
+ commentsIntf, err := v.Client().Repositories.PullRequests.GetComments(&bitbucket.PullRequestsOptions{
Owner: event.Organization,
RepoSlug: event.Repository,
ID: strconv.Itoa(event.PullRequestNumber),
diff --git a/pkg/provider/bitbucketcloud/acl_test.go b/pkg/provider/bitbucketcloud/acl_test.go
index 03f1fcca1..f6285f135 100644
--- a/pkg/provider/bitbucketcloud/acl_test.go
+++ b/pkg/provider/bitbucketcloud/acl_test.go
@@ -179,7 +179,7 @@ func TestIsAllowed(t *testing.T) {
bbcloudtest.MuxComments(t, mux, tt.event, tt.fields.comments)
bbcloudtest.MuxFiles(t, mux, tt.event, tt.fields.filescontents, "")
- v := &Provider{Client: bbclient}
+ v := &Provider{bbClient: bbclient}
got, err := v.IsAllowed(ctx, tt.event)
if (err != nil) != tt.wantErr {
t.Errorf("Provider.IsAllowed() error = %v, wantErr %v", err, tt.wantErr)
diff --git a/pkg/provider/bitbucketcloud/bitbucket.go b/pkg/provider/bitbucketcloud/bitbucket.go
index 6cee655f1..b9db74c23 100644
--- a/pkg/provider/bitbucketcloud/bitbucket.go
+++ b/pkg/provider/bitbucketcloud/bitbucket.go
@@ -11,6 +11,7 @@ import (
"github.com/openshift-pipelines/pipelines-as-code/pkg/apis/pipelinesascode/v1alpha1"
"github.com/openshift-pipelines/pipelines-as-code/pkg/changedfiles"
"github.com/openshift-pipelines/pipelines-as-code/pkg/events"
+ "github.com/openshift-pipelines/pipelines-as-code/pkg/metrics"
"github.com/openshift-pipelines/pipelines-as-code/pkg/params"
"github.com/openshift-pipelines/pipelines-as-code/pkg/params/info"
"github.com/openshift-pipelines/pipelines-as-code/pkg/params/triggertype"
@@ -22,13 +23,43 @@ import (
var _ provider.Interface = (*Provider)(nil)
type Provider struct {
- Client *bitbucket.Client
+ bbClient *bitbucket.Client
Logger *zap.SugaredLogger
+ metrics *metrics.Recorder
run *params.Run
pacInfo *info.PacOpts
Token, APIURL *string
Username *string
provenance string
+ repo *v1alpha1.Repository
+ triggerEvent string
+}
+
+func (v Provider) Client() *bitbucket.Client {
+ v.recordAPIUsageMetrics()
+ return v.bbClient
+}
+
+func (v *Provider) recordAPIUsageMetrics() {
+ if v.metrics == nil {
+ m, err := metrics.NewRecorder()
+ if err != nil {
+ v.Logger.Errorf("Error initializing bitbucketcloud metrics recorder: %v", err)
+ return
+ }
+ v.metrics = m
+ }
+
+ name := ""
+ namespace := ""
+ if v.repo != nil {
+ name = v.repo.Name
+ namespace = v.repo.Namespace
+ }
+
+ if err := v.metrics.ReportGitProviderAPIUsage("bitbucketcloud", v.triggerEvent, namespace, name); err != nil {
+ v.Logger.Errorf("Error reporting git API usage metrics: %v", err)
+ }
}
// CheckPolicyAllowing TODO: Implement ME.
@@ -104,11 +135,11 @@ func (v *Provider) CreateStatus(_ context.Context, event *info.Event, statusopts
Revision: event.SHA,
}
- if v.Client == nil {
+ if v.bbClient == nil {
return fmt.Errorf("no token has been set, cannot set status")
}
- _, err := v.Client.Repositories.Commits.CreateCommitStatus(cmo, cso)
+ _, err := v.Client().Repositories.Commits.CreateCommitStatus(cmo, cso)
if err != nil {
return err
}
@@ -121,7 +152,7 @@ func (v *Provider) CreateStatus(_ context.Context, event *info.Event, statusopts
if statusopts.OriginalPipelineRunName != "" {
onPr = "/" + statusopts.OriginalPipelineRunName
}
- _, err = v.Client.Repositories.PullRequests.AddComment(
+ _, err = v.Client().Repositories.PullRequests.AddComment(
&bitbucket.PullRequestCommentOptions{
Owner: event.Organization,
RepoSlug: event.Repository,
@@ -161,7 +192,7 @@ func (v *Provider) getDir(event *info.Event, path string) ([]bitbucket.Repositor
Path: path,
}
- repositoryFiles, err := v.Client.Repositories.Repository.ListFiles(repoFileOpts)
+ repositoryFiles, err := v.Client().Repositories.Repository.ListFiles(repoFileOpts)
if err != nil {
return nil, err
}
@@ -176,17 +207,19 @@ func (v *Provider) GetFileInsideRepo(_ context.Context, event *info.Event, path,
return v.getBlob(event, revision, path)
}
-func (v *Provider) SetClient(_ context.Context, run *params.Run, event *info.Event, _ *v1alpha1.Repository, _ *events.EventEmitter) error {
+func (v *Provider) SetClient(_ context.Context, run *params.Run, event *info.Event, repo *v1alpha1.Repository, _ *events.EventEmitter) error {
if event.Provider.Token == "" {
return fmt.Errorf("no git_provider.secret has been set in the repo crd")
}
if event.Provider.User == "" {
return fmt.Errorf("no git_provider.user has been in repo crd")
}
- v.Client = bitbucket.NewBasicAuth(event.Provider.User, event.Provider.Token)
+ v.bbClient = bitbucket.NewBasicAuth(event.Provider.User, event.Provider.Token)
v.Token = &event.Provider.Token
v.Username = &event.Provider.User
v.run = run
+ v.repo = repo
+ v.triggerEvent = event.EventType
return nil
}
@@ -195,7 +228,7 @@ func (v *Provider) GetCommitInfo(_ context.Context, event *info.Event) error {
if branchortag == "" {
branchortag = event.HeadBranch
}
- response, err := v.Client.Repositories.Commits.GetCommits(&bitbucket.CommitsOptions{
+ response, err := v.Client().Repositories.Commits.GetCommits(&bitbucket.CommitsOptions{
Owner: event.Organization,
RepoSlug: event.Repository,
Branchortag: branchortag,
@@ -226,7 +259,7 @@ func (v *Provider) GetCommitInfo(_ context.Context, event *info.Event) error {
event.SHA = commitinfo.Hash
// now to get the default branch from repository.Get
- repo, err := v.Client.Repositories.Repository.Get(&bitbucket.RepositoryOptions{
+ repo, err := v.Client().Repositories.Repository.Get(&bitbucket.RepositoryOptions{
Owner: event.Organization,
RepoSlug: event.Repository,
})
@@ -278,7 +311,7 @@ func (v *Provider) concatAllYamlFiles(objects []bitbucket.RepositoryFile, event
}
func (v *Provider) getBlob(runevent *info.Event, ref, path string) (string, error) {
- blob, err := v.Client.Repositories.Repository.GetFileBlob(&bitbucket.RepositoryBlobOptions{
+ blob, err := v.Client().Repositories.Repository.GetFileBlob(&bitbucket.RepositoryBlobOptions{
Owner: runevent.Organization,
RepoSlug: runevent.Repository,
Ref: ref,
diff --git a/pkg/provider/bitbucketcloud/bitbucket_test.go b/pkg/provider/bitbucketcloud/bitbucket_test.go
index 98c4584df..0e0ccafa5 100644
--- a/pkg/provider/bitbucketcloud/bitbucket_test.go
+++ b/pkg/provider/bitbucketcloud/bitbucket_test.go
@@ -75,7 +75,7 @@ func TestGetTektonDir(t *testing.T) {
ctx, _ := rtesting.SetupFakeContext(t)
bbclient, mux, tearDown := bbcloudtest.SetupBBCloudClient(t)
defer tearDown()
- v := &Provider{Logger: fakelogger, Client: bbclient}
+ v := &Provider{Logger: fakelogger, bbClient: bbclient}
bbcloudtest.MuxDirContent(t, mux, tt.event, tt.testDirPath, tt.provenance)
content, err := v.GetTektonDir(ctx, tt.event, ".tekton", tt.provenance)
if tt.wantErr != "" {
@@ -202,7 +202,7 @@ func TestGetCommitInfo(t *testing.T) {
ctx, _ := rtesting.SetupFakeContext(t)
bbclient, mux, tearDown := bbcloudtest.SetupBBCloudClient(t)
defer tearDown()
- v := &Provider{Client: bbclient}
+ v := &Provider{bbClient: bbclient}
bbcloudtest.MuxCommits(t, mux, tt.event, []types.Commit{
tt.commitinfo,
})
@@ -295,8 +295,8 @@ func TestCreateStatus(t *testing.T) {
bbclient, mux, tearDown := bbcloudtest.SetupBBCloudClient(t)
defer tearDown()
v := &Provider{
- Client: bbclient,
- run: params.New(),
+ bbClient: bbclient,
+ run: params.New(),
pacInfo: &info.PacOpts{
Settings: settings.Settings{
ApplicationName: settings.PACApplicationNameDefaultValue,
diff --git a/pkg/provider/bitbucketdatacenter/acl.go b/pkg/provider/bitbucketdatacenter/acl.go
index 80fc676e2..2094ee3ed 100644
--- a/pkg/provider/bitbucketdatacenter/acl.go
+++ b/pkg/provider/bitbucketdatacenter/acl.go
@@ -53,7 +53,7 @@ func (v *Provider) checkOkToTestCommentFromApprovedMember(ctx context.Context, e
if nextPage > 0 {
localVarOptionals["start"] = int(nextPage)
}
- return v.Client.DefaultApi.GetActivities(v.projectKey, event.Repository, v.pullRequestNumber, localVarOptionals)
+ return v.Client().DefaultApi.GetActivities(v.projectKey, event.Repository, v.pullRequestNumber, localVarOptionals)
})
if err != nil {
return false, err
@@ -120,7 +120,7 @@ func (v *Provider) checkMemberShip(ctx context.Context, event *info.Event) (bool
if nextPage > 0 {
localVarOptionals["start"] = int(nextPage)
}
- return v.Client.DefaultApi.GetUsersWithAnyPermission_23(v.projectKey, localVarOptionals)
+ return v.Client().DefaultApi.GetUsersWithAnyPermission_23(v.projectKey, localVarOptionals)
})
if err != nil {
return false, err
@@ -139,7 +139,7 @@ func (v *Provider) checkMemberShip(ctx context.Context, event *info.Event) (bool
if nextPage > 0 {
localVarOptionals["start"] = int(nextPage)
}
- return v.Client.DefaultApi.GetUsersWithAnyPermission_24(v.projectKey, event.Repository, localVarOptionals)
+ return v.Client().DefaultApi.GetUsersWithAnyPermission_24(v.projectKey, event.Repository, localVarOptionals)
})
if err != nil {
return false, err
diff --git a/pkg/provider/bitbucketdatacenter/acl_test.go b/pkg/provider/bitbucketdatacenter/acl_test.go
index 2196b1af7..1fb66793d 100644
--- a/pkg/provider/bitbucketdatacenter/acl_test.go
+++ b/pkg/provider/bitbucketdatacenter/acl_test.go
@@ -212,8 +212,8 @@ func TestIsAllowed(t *testing.T) {
v := &Provider{
baseURL: tURL,
- Client: bbclient,
- ScmClient: scmClient,
+ bbClient: bbclient,
+ scmClient: scmClient,
defaultBranchLatestCommit: tt.fields.defaultBranchLatestCommit,
pullRequestNumber: tt.fields.pullRequestNumber,
projectKey: tt.event.Organization,
diff --git a/pkg/provider/bitbucketdatacenter/bitbucketdatacenter.go b/pkg/provider/bitbucketdatacenter/bitbucketdatacenter.go
index 6a693d951..02a865fb3 100644
--- a/pkg/provider/bitbucketdatacenter/bitbucketdatacenter.go
+++ b/pkg/provider/bitbucketdatacenter/bitbucketdatacenter.go
@@ -16,6 +16,7 @@ import (
"github.com/openshift-pipelines/pipelines-as-code/pkg/apis/pipelinesascode/v1alpha1"
"github.com/openshift-pipelines/pipelines-as-code/pkg/changedfiles"
"github.com/openshift-pipelines/pipelines-as-code/pkg/events"
+ "github.com/openshift-pipelines/pipelines-as-code/pkg/metrics"
"github.com/openshift-pipelines/pipelines-as-code/pkg/params"
"github.com/openshift-pipelines/pipelines-as-code/pkg/params/info"
"github.com/openshift-pipelines/pipelines-as-code/pkg/params/triggertype"
@@ -31,9 +32,10 @@ const apiResponseLimit = 100
var _ provider.Interface = (*Provider)(nil)
type Provider struct {
- Client *bbv1.APIClient // temporarily keeping it after the refactor finishes, will be removed
- ScmClient *scm.Client
+ bbClient *bbv1.APIClient // temporarily keeping it after the refactor finishes, will be removed
+ scmClient *scm.Client
Logger *zap.SugaredLogger
+ metrics *metrics.Recorder
run *params.Run
pacInfo *info.PacOpts
baseURL string
@@ -42,6 +44,48 @@ type Provider struct {
apiURL string
provenance string
projectKey string
+ repo *v1alpha1.Repository
+ triggerEvent string
+}
+
+func (v Provider) Client() *bbv1.APIClient {
+ v.recordAPIUsageMetrics()
+ return v.bbClient
+}
+
+func (v *Provider) SetBitBucketClient(client *bbv1.APIClient) {
+ v.bbClient = client
+}
+
+func (v Provider) ScmClient() *scm.Client {
+ v.recordAPIUsageMetrics()
+ return v.scmClient
+}
+
+func (v *Provider) SetScmClient(client *scm.Client) {
+ v.scmClient = client
+}
+
+func (v *Provider) recordAPIUsageMetrics() {
+ if v.metrics == nil {
+ m, err := metrics.NewRecorder()
+ if err != nil {
+ v.Logger.Errorf("Error initializing bitbucketserver metrics recorder: %v", err)
+ return
+ }
+ v.metrics = m
+ }
+
+ name := ""
+ namespace := ""
+ if v.repo != nil {
+ name = v.repo.Name
+ namespace = v.repo.Namespace
+ }
+
+ if err := v.metrics.ReportGitProviderAPIUsage("bitbucketserver", v.triggerEvent, namespace, name); err != nil {
+ v.Logger.Errorf("Error reporting git API usage metrics: %v", err)
+ }
}
func (v *Provider) SetPacInfo(pacInfo *info.PacOpts) {
@@ -99,7 +143,7 @@ func (v *Provider) CreateStatus(ctx context.Context, event *info.Event, statusOp
if statusOpts.DetailsURL != "" {
detailsURL = statusOpts.DetailsURL
}
- if v.ScmClient == nil {
+ if v.scmClient == nil {
return fmt.Errorf("no token has been set, cannot set status")
}
@@ -119,7 +163,7 @@ func (v *Provider) CreateStatus(ctx context.Context, event *info.Event, statusOp
Desc: statusOpts.Title,
Link: detailsURL,
}
- _, _, err := v.ScmClient.Repositories.CreateStatus(ctx, OrgAndRepo, event.SHA, opts)
+ _, _, err := v.ScmClient().Repositories.CreateStatus(ctx, OrgAndRepo, event.SHA, opts)
if err != nil {
return err
}
@@ -135,7 +179,7 @@ func (v *Provider) CreateStatus(ctx context.Context, event *info.Event, statusOp
input := &scm.CommentInput{
Body: bbComment,
}
- _, _, err := v.ScmClient.PullRequests.CreateComment(ctx, OrgAndRepo, event.PullRequestNumber, input)
+ _, _, err := v.ScmClient().PullRequests.CreateComment(ctx, OrgAndRepo, event.PullRequestNumber, input)
if err != nil {
return err
}
@@ -185,7 +229,7 @@ func (v *Provider) concatAllYamlFiles(ctx context.Context, objects []string, sha
func (v *Provider) getRaw(ctx context.Context, runevent *info.Event, revision, path string) (string, error) {
repo := fmt.Sprintf("%s/%s", runevent.Organization, runevent.Repository)
- content, _, err := v.ScmClient.Contents.Find(ctx, repo, path, revision)
+ content, _, err := v.ScmClient().Contents.Find(ctx, repo, path, revision)
if err != nil {
return "", fmt.Errorf("cannot find %s inside the %s repository: %w", path, runevent.Repository, err)
}
@@ -206,7 +250,7 @@ func (v *Provider) GetTektonDir(ctx context.Context, event *info.Event, path, pr
var fileEntries []*scm.FileEntry
opts := &scm.ListOptions{Page: 1, Size: apiResponseLimit}
for {
- entries, _, err := v.ScmClient.Contents.List(ctx, orgAndRepo, path, at, opts)
+ entries, _, err := v.ScmClient().Contents.List(ctx, orgAndRepo, path, at, opts)
if err != nil {
return "", fmt.Errorf("cannot list content of %s directory: %w", path, err)
}
@@ -257,7 +301,7 @@ func removeLastSegment(urlStr string) string {
return u.String()
}
-func (v *Provider) SetClient(ctx context.Context, run *params.Run, event *info.Event, _ *v1alpha1.Repository, _ *events.EventEmitter) error {
+func (v *Provider) SetClient(ctx context.Context, run *params.Run, event *info.Event, repo *v1alpha1.Repository, _ *events.EventEmitter) error {
if event.Provider.User == "" {
return fmt.Errorf("no spec.git_provider.user has been set in the repo crd")
}
@@ -281,11 +325,11 @@ func (v *Provider) SetClient(ctx context.Context, run *params.Run, event *info.E
ctx = context.WithValue(ctx, bbv1.ContextBasicAuth, basicAuth)
cfg := bbv1.NewConfiguration(event.Provider.URL)
- if v.Client == nil {
- v.Client = bbv1.NewAPIClient(ctx, cfg)
+ if v.bbClient == nil {
+ v.bbClient = bbv1.NewAPIClient(ctx, cfg)
}
- if v.ScmClient == nil {
+ if v.scmClient == nil {
client, err := stash.New(removeLastSegment(event.Provider.URL)) // remove `/rest` from url
if err != nil {
return err
@@ -299,10 +343,12 @@ func (v *Provider) SetClient(ctx context.Context, run *params.Run, event *info.E
),
},
}
- v.ScmClient = client
+ v.scmClient = client
}
v.run = run
- _, resp, err := v.ScmClient.Users.FindLogin(ctx, event.Provider.User)
+ v.repo = repo
+ v.triggerEvent = event.EventType
+ _, resp, err := v.ScmClient().Users.FindLogin(ctx, event.Provider.User)
if resp != nil && resp.Status == http.StatusUnauthorized {
return fmt.Errorf("cannot get user %s with token: %w", event.Provider.User, err)
}
@@ -315,14 +361,14 @@ func (v *Provider) SetClient(ctx context.Context, run *params.Run, event *info.E
func (v *Provider) GetCommitInfo(_ context.Context, event *info.Event) error {
OrgAndRepo := fmt.Sprintf("%s/%s", event.Organization, event.Repository)
- commit, _, err := v.ScmClient.Git.FindCommit(context.Background(), OrgAndRepo, event.SHA)
+ commit, _, err := v.ScmClient().Git.FindCommit(context.Background(), OrgAndRepo, event.SHA)
if err != nil {
return err
}
event.SHATitle = sanitizeTitle(commit.Message)
event.SHAURL = fmt.Sprintf("%s/projects/%s/repos/%s/commits/%s", v.baseURL, v.projectKey, event.Repository, event.SHA)
- ref, _, err := v.ScmClient.Git.GetDefaultBranch(context.Background(), OrgAndRepo)
+ ref, _, err := v.ScmClient().Git.GetDefaultBranch(context.Background(), OrgAndRepo)
if err != nil {
return err
}
@@ -345,7 +391,7 @@ func (v *Provider) GetFiles(ctx context.Context, runevent *info.Event) (changedf
opts := &scm.ListOptions{Page: 1, Size: apiResponseLimit}
changedFiles := changedfiles.ChangedFiles{}
for {
- changes, _, err := v.ScmClient.PullRequests.ListChanges(ctx, OrgAndRepo, runevent.PullRequestNumber, opts)
+ changes, _, err := v.ScmClient().PullRequests.ListChanges(ctx, OrgAndRepo, runevent.PullRequestNumber, opts)
if err != nil {
return changedfiles.ChangedFiles{}, fmt.Errorf("failed to list changes for pull request: %w", err)
}
@@ -383,7 +429,7 @@ func (v *Provider) GetFiles(ctx context.Context, runevent *info.Event) (changedf
opts := &scm.ListOptions{Page: 1, Size: apiResponseLimit}
changedFiles := changedfiles.ChangedFiles{}
for {
- changes, _, err := v.ScmClient.Git.ListChanges(ctx, OrgAndRepo, runevent.SHA, opts)
+ changes, _, err := v.ScmClient().Git.ListChanges(ctx, OrgAndRepo, runevent.SHA, opts)
if err != nil {
return changedfiles.ChangedFiles{}, fmt.Errorf("failed to list changes for commit %s: %w", runevent.SHA, err)
}
diff --git a/pkg/provider/bitbucketdatacenter/bitbucketdatacenter_test.go b/pkg/provider/bitbucketdatacenter/bitbucketdatacenter_test.go
index 9da4db126..b97c7cc93 100644
--- a/pkg/provider/bitbucketdatacenter/bitbucketdatacenter_test.go
+++ b/pkg/provider/bitbucketdatacenter/bitbucketdatacenter_test.go
@@ -85,7 +85,7 @@ func TestGetTektonDir(t *testing.T) {
ctx, _ := rtesting.SetupFakeContext(t)
_, client, mux, tearDown, tURL := bbtest.SetupBBDataCenterClient(ctx)
defer tearDown()
- v := &Provider{Logger: logger, baseURL: tURL, ScmClient: client, projectKey: tt.event.Organization}
+ v := &Provider{Logger: logger, baseURL: tURL, scmClient: client, projectKey: tt.event.Organization}
bbtest.MuxDirContent(t, mux, tt.event, tt.testDirPath, tt.path, tt.wantDirAPIErr, tt.wantFilesAPIErr)
content, err := v.GetTektonDir(ctx, tt.event, tt.path, "")
if tt.wantErr != "" {
@@ -203,7 +203,7 @@ func TestCreateStatus(t *testing.T) {
event.Provider.Token = "token"
v := &Provider{
baseURL: tURL,
- ScmClient: client,
+ scmClient: client,
pullRequestNumber: pullRequestNumber,
projectKey: event.Organization,
run: ¶ms.Run{},
@@ -268,7 +268,7 @@ func TestGetFileInsideRepo(t *testing.T) {
ctx, _ := rtesting.SetupFakeContext(t)
_, client, mux, tearDown, tURL := bbtest.SetupBBDataCenterClient(ctx)
defer tearDown()
- v := &Provider{ScmClient: client, baseURL: tURL, defaultBranchLatestCommit: "1234", projectKey: tt.event.Organization}
+ v := &Provider{scmClient: client, baseURL: tURL, defaultBranchLatestCommit: "1234", projectKey: tt.event.Organization}
bbtest.MuxFiles(t, mux, tt.event, tt.targetbranch, filepath.Dir(tt.path), tt.filescontents, tt.wantErr != "")
fc, err := v.GetFileInsideRepo(ctx, tt.event, tt.path, tt.targetbranch)
if tt.wantErr != "" {
@@ -368,7 +368,7 @@ func TestSetClient(t *testing.T) {
if tt.muxUser != nil {
mux.HandleFunc("/users/foo", tt.muxUser)
}
- v := &Provider{ScmClient: client, baseURL: tURL}
+ v := &Provider{scmClient: client, baseURL: tURL}
err := v.SetClient(ctx, nil, tt.opts, nil, nil)
if tt.wantErrSubstr != "" {
assert.ErrorContains(t, err, tt.wantErrSubstr)
@@ -410,7 +410,7 @@ func TestGetCommitInfo(t *testing.T) {
bbtest.MuxCommitInfo(t, mux, tt.event, tt.commit)
bbtest.MuxDefaultBranch(t, mux, tt.event, tt.defaultBranch, tt.latestCommit)
defer tearDown()
- v := &Provider{ScmClient: scmClient, baseURL: tURL, projectKey: tt.event.Organization}
+ v := &Provider{scmClient: scmClient, baseURL: tURL, projectKey: tt.event.Organization}
err := v.GetCommitInfo(ctx, tt.event)
assert.NilError(t, err)
assert.Equal(t, tt.defaultBranch, tt.event.DefaultBranch)
@@ -710,7 +710,7 @@ func TestGetFiles(t *testing.T) {
}
})
}
- v := &Provider{ScmClient: client, baseURL: tURL}
+ v := &Provider{scmClient: client, baseURL: tURL}
changedFiles, err := v.GetFiles(ctx, tt.event)
if tt.wantError {
assert.Equal(t, err.Error(), tt.errMsg)
diff --git a/pkg/provider/gitea/acl.go b/pkg/provider/gitea/acl.go
index 221be0a34..c7b04ea52 100644
--- a/pkg/provider/gitea/acl.go
+++ b/pkg/provider/gitea/acl.go
@@ -18,7 +18,7 @@ func (v *Provider) CheckPolicyAllowing(_ context.Context, event *info.Event, all
return true, ""
}
// TODO: caching
- orgTeams, resp, err := v.Client.ListOrgTeams(event.Organization, gitea.ListTeamsOptions{})
+ orgTeams, resp, err := v.Client().ListOrgTeams(event.Organization, gitea.ListTeamsOptions{})
if resp.StatusCode == http.StatusNotFound {
// we explicitly disallow the policy when there is no team on org
return false, fmt.Sprintf("no teams on org %s", event.Organization)
@@ -30,7 +30,7 @@ func (v *Provider) CheckPolicyAllowing(_ context.Context, event *info.Event, all
for _, allowedTeam := range allowedTeams {
for _, orgTeam := range orgTeams {
if orgTeam.Name == allowedTeam {
- teamMember, _, err := v.Client.GetTeamMember(orgTeam.ID, event.Sender)
+ teamMember, _, err := v.Client().GetTeamMember(orgTeam.ID, event.Sender)
if err != nil {
v.Logger.Infof("error while getting team member: %s, error: %s", event.Sender, err.Error())
continue
@@ -144,7 +144,7 @@ func (v *Provider) aclAllowedOkToTestFromAnOwner(ctx context.Context, event *inf
// aclAllowedOkToTestCurrentEvent only check if this is issue comment event
// have /ok-to-test regex and sender is allowed.
func (v *Provider) aclAllowedOkToTestCurrentComment(ctx context.Context, revent *info.Event, id int64) (bool, error) {
- comment, _, err := v.Client.GetIssueComment(revent.Organization, revent.Repository, id)
+ comment, _, err := v.Client().GetIssueComment(revent.Organization, revent.Repository, id)
if err != nil {
return false, err
}
@@ -204,7 +204,7 @@ func (v *Provider) IsAllowedOwnersFile(ctx context.Context, rev *info.Event) (bo
}
func (v *Provider) checkSenderRepoMembership(_ context.Context, runevent *info.Event) (bool, error) {
- ret, _, err := v.Client.IsCollaborator(runevent.Organization, runevent.Repository, runevent.Sender)
+ ret, _, err := v.Client().IsCollaborator(runevent.Organization, runevent.Repository, runevent.Sender)
return ret, err
}
@@ -227,7 +227,7 @@ func (v *Provider) GetStringPullRequestComment(_ context.Context, runevent *info
return nil, err
}
- comments, _, err := v.Client.ListIssueComments(runevent.Organization, runevent.Repository, int64(prNumber), gitea.ListIssueCommentOptions{})
+ comments, _, err := v.Client().ListIssueComments(runevent.Organization, runevent.Repository, int64(prNumber), gitea.ListIssueCommentOptions{})
if err != nil {
return nil, err
}
diff --git a/pkg/provider/gitea/acl_test.go b/pkg/provider/gitea/acl_test.go
index 2e52fa302..bc6fa87cc 100644
--- a/pkg/provider/gitea/acl_test.go
+++ b/pkg/provider/gitea/acl_test.go
@@ -86,9 +86,9 @@ func TestCheckPolicyAllowing(t *testing.T) {
},
}
gprovider := Provider{
- Client: fakeclient,
- repo: repo,
- Logger: logger,
+ giteaClient: fakeclient,
+ repo: repo,
+ Logger: logger,
}
gotAllowed, gotReason := gprovider.CheckPolicyAllowing(ctx, event, tt.allowedTeams)
@@ -285,9 +285,9 @@ func TestOkToTestComment(t *testing.T) {
})
ctx, _ := rtesting.SetupFakeContext(t)
gprovider := Provider{
- Client: fakeclient,
- Logger: logger,
- run: ¶ms.Run{},
+ giteaClient: fakeclient,
+ Logger: logger,
+ run: ¶ms.Run{},
pacInfo: &info.PacOpts{
Settings: settings.Settings{
RememberOKToTest: tt.rememberOkToTest,
@@ -361,8 +361,8 @@ func TestAclCheckAll(t *testing.T) {
ctx, _ := rtesting.SetupFakeContext(t)
gprovider := Provider{
- Client: fakeclient,
- Logger: logger,
+ giteaClient: fakeclient,
+ Logger: logger,
}
if tt.allowedRules.collabo {
diff --git a/pkg/provider/gitea/gitea.go b/pkg/provider/gitea/gitea.go
index 8030de9ef..174acb62e 100644
--- a/pkg/provider/gitea/gitea.go
+++ b/pkg/provider/gitea/gitea.go
@@ -14,6 +14,7 @@ import (
"github.com/openshift-pipelines/pipelines-as-code/pkg/apis/pipelinesascode/v1alpha1"
"github.com/openshift-pipelines/pipelines-as-code/pkg/changedfiles"
"github.com/openshift-pipelines/pipelines-as-code/pkg/events"
+ "github.com/openshift-pipelines/pipelines-as-code/pkg/metrics"
"github.com/openshift-pipelines/pipelines-as-code/pkg/opscomments"
"github.com/openshift-pipelines/pipelines-as-code/pkg/params"
"github.com/openshift-pipelines/pipelines-as-code/pkg/params/info"
@@ -43,8 +44,9 @@ const (
var _ provider.Interface = (*Provider)(nil)
type Provider struct {
- Client *gitea.Client
+ giteaClient *gitea.Client
Logger *zap.SugaredLogger
+ metrics *metrics.Recorder
pacInfo *info.PacOpts
Token *string
giteaInstanceURL string
@@ -53,6 +55,38 @@ type Provider struct {
repo *v1alpha1.Repository
eventEmitter *events.EventEmitter
run *params.Run
+ triggerEvent string
+}
+
+func (v Provider) Client() *gitea.Client {
+ v.recordAPIUsageMetrics()
+ return v.giteaClient
+}
+
+func (v *Provider) SetGiteaClient(client *gitea.Client) {
+ v.giteaClient = client
+}
+
+func (v *Provider) recordAPIUsageMetrics() {
+ if v.metrics == nil {
+ m, err := metrics.NewRecorder()
+ if err != nil {
+ v.Logger.Errorf("Error initializing gitea metrics recorder: %v", err)
+ return
+ }
+ v.metrics = m
+ }
+
+ name := ""
+ namespace := ""
+ if v.repo != nil {
+ name = v.repo.Name
+ namespace = v.repo.Namespace
+ }
+
+ if err := v.metrics.ReportGitProviderAPIUsage(v.giteaInstanceURL, v.triggerEvent, namespace, name); err != nil {
+ v.Logger.Errorf("Error reporting git API usage metrics: %v", err)
+ }
}
func (v *Provider) SetPacInfo(pacInfo *info.PacOpts) {
@@ -96,12 +130,12 @@ func (v *Provider) SetClient(_ context.Context, run *params.Run, runevent *info.
apiURL := runevent.Provider.URL
// password is not exposed to CRD, it's only used from the e2e tests
if v.Password != "" && runevent.Provider.User != "" {
- v.Client, err = gitea.NewClient(apiURL, gitea.SetBasicAuth(runevent.Provider.User, v.Password))
+ v.giteaClient, err = gitea.NewClient(apiURL, gitea.SetBasicAuth(runevent.Provider.User, v.Password))
} else {
if runevent.Provider.Token == "" {
return fmt.Errorf("no git_provider.secret has been set in the repo crd")
}
- v.Client, err = gitea.NewClient(apiURL, gitea.SetToken(runevent.Provider.Token))
+ v.giteaClient, err = gitea.NewClient(apiURL, gitea.SetToken(runevent.Provider.Token))
}
if err != nil {
return err
@@ -110,11 +144,12 @@ func (v *Provider) SetClient(_ context.Context, run *params.Run, runevent *info.
v.eventEmitter = emitter
v.repo = repo
v.run = run
+ v.triggerEvent = runevent.EventType
return nil
}
func (v *Provider) CreateStatus(_ context.Context, event *info.Event, statusOpts provider.StatusOpts) error {
- if v.Client == nil {
+ if v.giteaClient == nil {
return fmt.Errorf("cannot set status on gitea no token or url set")
}
switch statusOpts.Conclusion {
@@ -171,7 +206,7 @@ func (v *Provider) createStatusCommit(event *info.Event, pacopts *info.PacOpts,
Description: status.Title,
Context: provider.GetCheckName(status, pacopts),
}
- if _, _, err := v.Client.CreateStatus(event.Organization, event.Repository, event.SHA, gStatus); err != nil {
+ if _, _, err := v.Client().CreateStatus(event.Organization, event.Repository, event.SHA, gStatus); err != nil {
return err
}
@@ -181,7 +216,7 @@ func (v *Provider) createStatusCommit(event *info.Event, pacopts *info.PacOpts,
}
if status.Text != "" && (eventType == triggertype.PullRequest || event.TriggerTarget == triggertype.PullRequest) {
status.Text = strings.ReplaceAll(strings.TrimSpace(status.Text), "
", "\n")
- _, _, err := v.Client.CreateIssueComment(event.Organization, event.Repository,
+ _, _, err := v.Client().CreateIssueComment(event.Organization, event.Repository,
int64(event.PullRequestNumber), gitea.CreateIssueCommentOption{
Body: fmt.Sprintf("%s\n%s", status.Summary, status.Text),
},
@@ -204,7 +239,7 @@ func (v *Provider) GetTektonDir(_ context.Context, event *info.Event, path, prov
}
tektonDirSha := ""
- rootobjects, _, err := v.Client.GetTrees(event.Organization, event.Repository, revision, false)
+ rootobjects, _, err := v.Client().GetTrees(event.Organization, event.Repository, revision, false)
if err != nil {
return "", err
}
@@ -223,7 +258,7 @@ func (v *Provider) GetTektonDir(_ context.Context, event *info.Event, path, prov
}
// Get all files in the .tekton directory recursively
// TODO: figure out if there is a object limit we need to handle here
- tektonDirObjects, _, err := v.Client.GetTrees(event.Organization, event.Repository, tektonDirSha, true)
+ tektonDirObjects, _, err := v.Client().GetTrees(event.Organization, event.Repository, tektonDirSha, true)
if err != nil {
return "", err
}
@@ -255,7 +290,7 @@ func (v *Provider) concatAllYamlFiles(objects []gitea.GitEntry, event *info.Even
}
func (v *Provider) getObject(sha string, event *info.Event) ([]byte, error) {
- blob, _, err := v.Client.GetBlob(event.Organization, event.Repository, sha)
+ blob, _, err := v.Client().GetBlob(event.Organization, event.Repository, sha)
if err != nil {
return nil, err
}
@@ -272,7 +307,7 @@ func (v *Provider) GetFileInsideRepo(_ context.Context, runevent *info.Event, pa
ref = runevent.BaseBranch
}
- content, _, err := v.Client.GetContents(runevent.Organization, runevent.Repository, ref, path)
+ content, _, err := v.Client().GetContents(runevent.Organization, runevent.Repository, ref, path)
if err != nil {
return "", err
}
@@ -285,20 +320,20 @@ func (v *Provider) GetFileInsideRepo(_ context.Context, runevent *info.Event, pa
}
func (v *Provider) GetCommitInfo(_ context.Context, runevent *info.Event) error {
- if v.Client == nil {
+ if v.giteaClient == nil {
return fmt.Errorf("no gitea client has been initialized, " +
"exiting... (hint: did you forget setting a secret on your repo?)")
}
sha := runevent.SHA
if sha == "" && runevent.HeadBranch != "" {
- branchinfo, _, err := v.Client.GetRepoBranch(runevent.Organization, runevent.Repository, runevent.HeadBranch)
+ branchinfo, _, err := v.Client().GetRepoBranch(runevent.Organization, runevent.Repository, runevent.HeadBranch)
if err != nil {
return err
}
sha = branchinfo.Commit.ID
} else if sha == "" && runevent.PullRequestNumber != 0 {
- pr, _, err := v.Client.GetPullRequest(runevent.Organization, runevent.Repository, int64(runevent.PullRequestNumber))
+ pr, _, err := v.Client().GetPullRequest(runevent.Organization, runevent.Repository, int64(runevent.PullRequestNumber))
if err != nil {
return err
}
@@ -307,7 +342,7 @@ func (v *Provider) GetCommitInfo(_ context.Context, runevent *info.Event) error
runevent.BaseBranch = pr.Base.Ref
sha = pr.Head.Sha
}
- commit, _, err := v.Client.GetSingleCommit(runevent.Organization, runevent.Repository, sha)
+ commit, _, err := v.Client().GetSingleCommit(runevent.Organization, runevent.Repository, sha)
if err != nil {
return err
}
@@ -345,7 +380,7 @@ func (v *Provider) GetFiles(_ context.Context, runevent *info.Event) (changedfil
opt := gitea.ListPullRequestFilesOptions{ListOptions: gitea.ListOptions{Page: 1, PageSize: 50}}
shouldGetNextPage := false
for {
- prChangedFiles, resp, err := v.Client.ListPullRequestFiles(runevent.Organization, runevent.Repository, int64(runevent.PullRequestNumber), opt)
+ prChangedFiles, resp, err := v.Client().ListPullRequestFiles(runevent.Organization, runevent.Repository, int64(runevent.PullRequestNumber), opt)
if err != nil {
return changedfiles.ChangedFiles{}, err
}
diff --git a/pkg/provider/gitea/gitea_test.go b/pkg/provider/gitea/gitea_test.go
index 5e0a934d0..d48f772ee 100644
--- a/pkg/provider/gitea/gitea_test.go
+++ b/pkg/provider/gitea/gitea_test.go
@@ -139,8 +139,8 @@ func TestProvider_CreateStatus(t *testing.T) {
defer teardown()
run := params.New()
p := &Provider{
- Client: fakeclient, // Set this to a valid client for the tests where wantErr is false
- run: run,
+ giteaClient: fakeclient, // Set this to a valid client for the tests where wantErr is false
+ run: run,
pacInfo: &info.PacOpts{
Settings: settings.Settings{
ApplicationName: settings.PACApplicationNameDefaultValue,
@@ -247,9 +247,9 @@ func TestProvider_GetFiles(t *testing.T) {
Settings: &v1alpha1.Settings{},
}}
gprovider := Provider{
- Client: fakeclient,
- repo: repo,
- Logger: logger,
+ giteaClient: fakeclient,
+ repo: repo,
+ Logger: logger,
}
got, err := gprovider.GetFiles(ctx, tt.args.runevent)
@@ -464,7 +464,7 @@ func TestProvider_CreateStatusCommit(t *testing.T) {
})
v := &Provider{
- Client: fakeclient,
+ giteaClient: fakeclient,
}
if err := v.createStatusCommit(tt.args.event, tt.args.pacopts, tt.args.status); (err != nil) != tt.wantErr {
@@ -503,8 +503,8 @@ func TestGetTektonDir(t *testing.T) {
fakeclient, mux, teardown := tgitea.Setup(t)
defer teardown()
gvcs := Provider{
- Client: fakeclient,
- Logger: fakelogger,
+ giteaClient: fakeclient,
+ Logger: fakelogger,
}
if tt.provenance == "default_branch" {
tt.event.SHA = tt.event.DefaultBranch
diff --git a/pkg/provider/github/acl.go b/pkg/provider/github/acl.go
index 7dc9e093c..edcf5b006 100644
--- a/pkg/provider/github/acl.go
+++ b/pkg/provider/github/acl.go
@@ -20,7 +20,7 @@ func (v *Provider) CheckPolicyAllowing(ctx context.Context, event *info.Event, a
// TODO: caching
opt := github.ListOptions{PerPage: v.PaginedNumber}
for {
- members, resp, err := v.Client.Teams.ListTeamMembersBySlug(ctx, event.Organization, team, &github.TeamListTeamMembersOptions{ListOptions: opt})
+ members, resp, err := v.Client().Teams.ListTeamMembersBySlug(ctx, event.Organization, team, &github.TeamListTeamMembersOptions{ListOptions: opt})
if resp.StatusCode == http.StatusNotFound {
// we explicitly disallow the policy when the team is not found
// maybe we should ignore it instead? i'd rather keep this explicit
@@ -169,7 +169,7 @@ func (v *Provider) aclAllowedOkToTestFromAnOwner(ctx context.Context, event *inf
// aclAllowedOkToTestCurrentEvent only check if this is issue comment event
// have /ok-to-test regex and sender is allowed.
func (v *Provider) aclAllowedOkToTestCurrentComment(ctx context.Context, revent *info.Event, id int64) (bool, error) {
- comment, _, err := v.Client.Issues.GetComment(ctx, revent.Organization, revent.Repository, id)
+ comment, _, err := v.Client().Issues.GetComment(ctx, revent.Organization, revent.Repository, id)
if err != nil {
return false, err
}
@@ -235,7 +235,7 @@ func (v *Provider) aclCheckAll(ctx context.Context, rev *info.Event) (bool, erro
//
// ex: dependabot, *[bot] etc...
func (v *Provider) checkPullRequestForSameURL(ctx context.Context, runevent *info.Event) (bool, error) {
- pr, resp, err := v.Client.PullRequests.Get(ctx, runevent.Organization, runevent.Repository, runevent.PullRequestNumber)
+ pr, resp, err := v.Client().PullRequests.Get(ctx, runevent.Organization, runevent.Repository, runevent.PullRequestNumber)
if err != nil {
return false, err
}
@@ -258,7 +258,7 @@ func (v *Provider) checkSenderOrgMembership(ctx context.Context, runevent *info.
}
for {
- users, resp, err := v.Client.Organizations.ListMembers(ctx, runevent.Organization, opt)
+ users, resp, err := v.Client().Organizations.ListMembers(ctx, runevent.Organization, opt)
// If we are 404 it means we are checking a repo owner and not a org so let's bail out with grace
if resp != nil && resp.StatusCode == http.StatusNotFound {
return false, nil
@@ -282,7 +282,7 @@ func (v *Provider) checkSenderOrgMembership(ctx context.Context, runevent *info.
// checkSenderRepoMembership check if user is allowed to run CI.
func (v *Provider) checkSenderRepoMembership(ctx context.Context, runevent *info.Event) (bool, error) {
- isCollab, _, err := v.Client.Repositories.IsCollaborator(ctx,
+ isCollab, _, err := v.Client().Repositories.IsCollaborator(ctx,
runevent.Organization,
runevent.Repository,
runevent.Sender)
@@ -313,7 +313,7 @@ func (v *Provider) GetStringPullRequestComment(ctx context.Context, runevent *in
ListOptions: github.ListOptions{PerPage: v.PaginedNumber},
}
for {
- comments, resp, err := v.Client.Issues.ListComments(ctx, runevent.Organization, runevent.Repository,
+ comments, resp, err := v.Client().Issues.ListComments(ctx, runevent.Organization, runevent.Repository,
prNumber, opt)
if err != nil {
return nil, err
diff --git a/pkg/provider/github/acl_test.go b/pkg/provider/github/acl_test.go
index 0f3f78aa0..a61e08011 100644
--- a/pkg/provider/github/acl_test.go
+++ b/pkg/provider/github/acl_test.go
@@ -89,7 +89,7 @@ func TestCheckPolicyAllowing(t *testing.T) {
Settings: &v1alpha1.Settings{},
}}
gprovider := Provider{
- Client: fakeclient,
+ ghClient: fakeclient,
repo: repo,
Logger: logger,
PaginedNumber: 1,
@@ -326,7 +326,7 @@ func TestOkToTestComment(t *testing.T) {
},
}
gprovider := Provider{
- Client: fakeclient,
+ ghClient: fakeclient,
repo: repo,
Logger: logger,
PaginedNumber: 1,
@@ -403,7 +403,7 @@ func TestAclCheckAll(t *testing.T) {
logger := zap.New(observer).Sugar()
ctx, _ := rtesting.SetupFakeContext(t)
gprovider := Provider{
- Client: fakeclient,
+ ghClient: fakeclient,
Logger: logger,
PaginedNumber: 1,
}
@@ -593,8 +593,8 @@ func TestIfPullRequestIsForSameRepoWithoutFork(t *testing.T) {
Settings: &v1alpha1.Settings{},
}}
gprovider := Provider{
- Client: fakeclient,
- repo: repo,
+ ghClient: fakeclient,
+ repo: repo,
}
got, err := gprovider.aclCheckAll(ctx, tt.event)
diff --git a/pkg/provider/github/app/token_test.go b/pkg/provider/github/app/token_test.go
index 7fd39bc12..4c0a51671 100644
--- a/pkg/provider/github/app/token_test.go
+++ b/pkg/provider/github/app/token_test.go
@@ -226,7 +226,8 @@ func Test_GetAndUpdateInstallationID(t *testing.T) {
},
}
- gprovider := &github.Provider{Client: fakeghclient, APIURL: &serverURL, Run: run}
+ gprovider := &github.Provider{APIURL: &serverURL, Run: run}
+ gprovider.SetGithubClient(fakeghclient)
mux.HandleFunc(fmt.Sprintf("/app/installations/%d/access_tokens", wantID), func(w http.ResponseWriter, r *http.Request) {
testMethod(t, r, "POST")
w.Header().Set("Authorization", "Bearer "+jwtToken)
@@ -295,7 +296,8 @@ func Test_ListRepos(t *testing.T) {
}
ctx, _ := rtesting.SetupFakeContext(t)
- gprovider := &github.Provider{Client: fakeclient}
+ gprovider := &github.Provider{}
+ gprovider.SetGithubClient(fakeclient)
ip := NewInstallation(httptest.NewRequest(http.MethodGet, "http://localhost", strings.NewReader("")),
¶ms.Run{}, repo, gprovider, testNamespace.GetName())
exist, err := ip.matchRepos(ctx)
diff --git a/pkg/provider/github/github.go b/pkg/provider/github/github.go
index b89a17b03..cee3159d9 100644
--- a/pkg/provider/github/github.go
+++ b/pkg/provider/github/github.go
@@ -16,6 +16,7 @@ import (
"github.com/openshift-pipelines/pipelines-as-code/pkg/apis/pipelinesascode/v1alpha1"
"github.com/openshift-pipelines/pipelines-as-code/pkg/changedfiles"
"github.com/openshift-pipelines/pipelines-as-code/pkg/events"
+ "github.com/openshift-pipelines/pipelines-as-code/pkg/metrics"
"github.com/openshift-pipelines/pipelines-as-code/pkg/params"
"github.com/openshift-pipelines/pipelines-as-code/pkg/params/info"
"github.com/openshift-pipelines/pipelines-as-code/pkg/params/triggertype"
@@ -40,7 +41,8 @@ const (
var _ provider.Interface = (*Provider)(nil)
type Provider struct {
- Client *github.Client
+ ghClient *github.Client
+ metrics *metrics.Recorder
Logger *zap.SugaredLogger
Run *params.Run
pacInfo *info.PacOpts
@@ -54,6 +56,7 @@ type Provider struct {
PaginedNumber int
userType string // The type of user i.e bot or not
skippedRun
+ triggerEvent string
}
type skippedRun struct {
@@ -71,10 +74,41 @@ func New() *Provider {
}
}
+func (v *Provider) Client() *github.Client {
+ v.recordAPIUsageMetrics()
+ return v.ghClient
+}
+
+func (v *Provider) SetGithubClient(client *github.Client) {
+ v.ghClient = client
+}
+
func (v *Provider) SetPacInfo(pacInfo *info.PacOpts) {
v.pacInfo = pacInfo
}
+func (v *Provider) recordAPIUsageMetrics() {
+ if v.metrics == nil {
+ m, err := metrics.NewRecorder()
+ if err != nil {
+ v.Logger.Errorf("Error initializing github metrics recorder: %v", err)
+ return
+ }
+ v.metrics = m
+ }
+
+ name := ""
+ namespace := ""
+ if v.repo != nil {
+ name = v.repo.Name
+ namespace = v.repo.Namespace
+ }
+
+ if err := v.metrics.ReportGitProviderAPIUsage(v.providerName, v.triggerEvent, namespace, name); err != nil {
+ v.Logger.Errorf("Error reporting git API usage metrics: %v", err)
+ }
+}
+
// detectGHERawURL Detect if we have a raw URL in GHE.
func detectGHERawURL(event *info.Event, taskHost string) bool {
gheURL, err := url.Parse(event.GHEURL)
@@ -240,7 +274,7 @@ func parseTS(headerTS string) (time.Time, error) {
// but this gives a nice hint to the user into their namespace event of where
// the issue was.
func (v *Provider) checkWebhookSecretValidity(ctx context.Context, cw clockwork.Clock) error {
- rl, resp, err := v.Client.RateLimit.Get(ctx)
+ rl, resp, err := v.Client().RateLimit.Get(ctx)
if resp.StatusCode == http.StatusNotFound {
v.Logger.Info("skipping checking if token has expired, rate_limit api is not enabled on token")
return nil
@@ -273,13 +307,14 @@ func (v *Provider) SetClient(ctx context.Context, run *params.Run, event *info.E
v.Run = run
v.repo = repo
v.eventEmitter = eventsEmitter
+ v.triggerEvent = event.EventType
// check that the Client is not already set, so we don't override our fakeclient
// from unittesting.
- if v.Client == nil {
- v.Client = client
+ if v.ghClient == nil {
+ v.ghClient = client
}
- if v.Client == nil {
+ if v.ghClient == nil {
return fmt.Errorf("no github client has been initialized")
}
@@ -309,7 +344,7 @@ func (v *Provider) GetTektonDir(ctx context.Context, runevent *info.Event, path,
v.Logger.Infof("Using PipelineRun definition from source pull request %s/%s#%d SHA on %s", runevent.Organization, runevent.Repository, runevent.PullRequestNumber, runevent.SHA)
}
- rootobjects, _, err := v.Client.Git.GetTree(ctx, runevent.Organization, runevent.Repository, revision, false)
+ rootobjects, _, err := v.Client().Git.GetTree(ctx, runevent.Organization, runevent.Repository, revision, false)
if err != nil {
return "", err
}
@@ -331,7 +366,7 @@ func (v *Provider) GetTektonDir(ctx context.Context, runevent *info.Event, path,
// there is a limit on this recursive calls to 500 entries, as documented here:
// https://docs.github.com/en/rest/reference/git#get-a-tree
// so we may need to address it in the future.
- tektonDirObjects, _, err := v.Client.Git.GetTree(ctx, runevent.Organization, runevent.Repository, tektonDirSha,
+ tektonDirObjects, _, err := v.Client().Git.GetTree(ctx, runevent.Organization, runevent.Repository, tektonDirSha,
true)
if err != nil {
return "", err
@@ -342,7 +377,7 @@ func (v *Provider) GetTektonDir(ctx context.Context, runevent *info.Event, path,
// GetCommitInfo get info (url and title) on a commit in runevent, this needs to
// be run after sewebhook while we already matched a token.
func (v *Provider) GetCommitInfo(ctx context.Context, runevent *info.Event) error {
- if v.Client == nil {
+ if v.ghClient == nil {
return fmt.Errorf("no github client has been initialized, " +
"exiting... (hint: did you forget setting a secret on your repo?)")
}
@@ -352,14 +387,14 @@ func (v *Provider) GetCommitInfo(ctx context.Context, runevent *info.Event) erro
var commit *github.Commit
sha := runevent.SHA
if runevent.SHA == "" && runevent.HeadBranch != "" {
- branchinfo, _, err := v.Client.Repositories.GetBranch(ctx, runevent.Organization, runevent.Repository, runevent.HeadBranch, 1)
+ branchinfo, _, err := v.Client().Repositories.GetBranch(ctx, runevent.Organization, runevent.Repository, runevent.HeadBranch, 1)
if err != nil {
return err
}
sha = branchinfo.Commit.GetSHA()
}
var err error
- commit, _, err = v.Client.Git.GetCommit(ctx, runevent.Organization, runevent.Repository, sha)
+ commit, _, err = v.Client().Git.GetCommit(ctx, runevent.Organization, runevent.Repository, sha)
if err != nil {
return err
}
@@ -382,7 +417,7 @@ func (v *Provider) GetFileInsideRepo(ctx context.Context, runevent *info.Event,
ref = runevent.DefaultBranch
}
- fp, objects, _, err := v.Client.Repositories.GetContents(ctx, runevent.Organization,
+ fp, objects, _, err := v.Client().Repositories.GetContents(ctx, runevent.Organization,
runevent.Repository, path, &github.RepositoryContentGetOptions{Ref: ref})
if err != nil {
return "", err
@@ -424,7 +459,7 @@ func (v *Provider) concatAllYamlFiles(ctx context.Context, objects []*github.Tre
// getPullRequest get a pull request details.
func (v *Provider) getPullRequest(ctx context.Context, runevent *info.Event) (*info.Event, error) {
- pr, _, err := v.Client.PullRequests.Get(ctx, runevent.Organization, runevent.Repository, runevent.PullRequestNumber)
+ pr, _, err := v.Client().PullRequests.Get(ctx, runevent.Organization, runevent.Repository, runevent.PullRequestNumber)
if err != nil {
return runevent, err
}
@@ -463,7 +498,7 @@ func (v *Provider) GetFiles(ctx context.Context, runevent *info.Event) (changedf
opt := &github.ListOptions{PerPage: v.PaginedNumber}
changedFiles := changedfiles.ChangedFiles{}
for {
- repoCommit, resp, err := v.Client.PullRequests.ListFiles(ctx, runevent.Organization, runevent.Repository, runevent.PullRequestNumber, opt)
+ repoCommit, resp, err := v.Client().PullRequests.ListFiles(ctx, runevent.Organization, runevent.Repository, runevent.PullRequestNumber, opt)
if err != nil {
return changedfiles.ChangedFiles{}, err
}
@@ -492,7 +527,7 @@ func (v *Provider) GetFiles(ctx context.Context, runevent *info.Event) (changedf
if runevent.TriggerTarget == "push" {
changedFiles := changedfiles.ChangedFiles{}
- rC, _, err := v.Client.Repositories.GetCommit(ctx, runevent.Organization, runevent.Repository, runevent.SHA, &github.ListOptions{})
+ rC, _, err := v.Client().Repositories.GetCommit(ctx, runevent.Organization, runevent.Repository, runevent.SHA, &github.ListOptions{})
if err != nil {
return changedfiles.ChangedFiles{}, err
}
@@ -518,7 +553,7 @@ func (v *Provider) GetFiles(ctx context.Context, runevent *info.Event) (changedf
// getObject Get an object from a repository.
func (v *Provider) getObject(ctx context.Context, sha string, runevent *info.Event) ([]byte, error) {
- blob, _, err := v.Client.Git.GetBlob(ctx, runevent.Organization, runevent.Repository, sha)
+ blob, _, err := v.Client().Git.GetBlob(ctx, runevent.Organization, runevent.Repository, sha)
if err != nil {
return nil, err
}
@@ -532,7 +567,7 @@ func (v *Provider) getObject(ctx context.Context, sha string, runevent *info.Eve
// ListRepos lists all the repos for a particular token.
func ListRepos(ctx context.Context, v *Provider) ([]string, error) {
- if v.Client == nil {
+ if v.ghClient == nil {
return []string{}, fmt.Errorf("no github client has been initialized, " +
"exiting... (hint: did you forget setting a secret on your repo?)")
}
@@ -540,7 +575,7 @@ func ListRepos(ctx context.Context, v *Provider) ([]string, error) {
opt := &github.ListOptions{PerPage: v.PaginedNumber}
repoURLs := []string{}
for {
- repoList, resp, err := v.Client.Apps.ListRepos(ctx, opt)
+ repoList, resp, err := v.Client().Apps.ListRepos(ctx, opt)
if err != nil {
return []string{}, err
}
@@ -558,7 +593,7 @@ func ListRepos(ctx context.Context, v *Provider) ([]string, error) {
func (v *Provider) CreateToken(ctx context.Context, repository []string, event *info.Event) (string, error) {
for _, r := range repository {
split := strings.Split(r, "/")
- infoData, _, err := v.Client.Repositories.Get(ctx, split[0], split[1])
+ infoData, _, err := v.Client().Repositories.Get(ctx, split[0], split[1])
if err != nil {
v.Logger.Warn("we have an invalid repository: `%s` or no access to it: %v", r, err)
continue
@@ -589,12 +624,12 @@ func uniqueRepositoryID(repoIDs []int64, id int64) []int64 {
// isHeadCommitOfBranch checks whether provided branch is valid or not and SHA is HEAD commit of the branch.
func (v *Provider) isHeadCommitOfBranch(ctx context.Context, runevent *info.Event, branchName string) error {
- if v.Client == nil {
+ if v.ghClient == nil {
return fmt.Errorf("no github client has been initialized, " +
"exiting... (hint: did you forget setting a secret on your repo?)")
}
- branchInfo, _, err := v.Client.Repositories.GetBranch(ctx, runevent.Organization, runevent.Repository, branchName, 1)
+ branchInfo, _, err := v.Client().Repositories.GetBranch(ctx, runevent.Organization, runevent.Repository, branchName, 1)
if err != nil {
return err
}
diff --git a/pkg/provider/github/github_test.go b/pkg/provider/github/github_test.go
index 9ce1a6e49..57fca549d 100644
--- a/pkg/provider/github/github_test.go
+++ b/pkg/provider/github/github_test.go
@@ -20,6 +20,7 @@ import (
"github.com/jonboulle/clockwork"
"github.com/openshift-pipelines/pipelines-as-code/pkg/apis/pipelinesascode/keys"
"github.com/openshift-pipelines/pipelines-as-code/pkg/apis/pipelinesascode/v1alpha1"
+ "github.com/openshift-pipelines/pipelines-as-code/pkg/metrics"
"github.com/openshift-pipelines/pipelines-as-code/pkg/params"
"github.com/openshift-pipelines/pipelines-as-code/pkg/params/clients"
"github.com/openshift-pipelines/pipelines-as-code/pkg/params/info"
@@ -31,6 +32,8 @@ import (
"gotest.tools/v3/assert"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "knative.dev/pkg/metrics/metricstest"
+ _ "knative.dev/pkg/metrics/testing"
"knative.dev/pkg/ptr"
rtesting "knative.dev/pkg/reconciler/testing"
)
@@ -72,7 +75,7 @@ func TestGetTaskURI(t *testing.T) {
ctx, _ := rtesting.SetupFakeContext(t)
fakeclient, mux, _, teardown := ghtesthelper.SetupGH()
defer teardown()
- provider := &Provider{Client: fakeclient}
+ provider := &Provider{ghClient: fakeclient}
event := info.NewEvent()
event.HeadBranch = "main"
event.URL = tt.eventURL
@@ -232,6 +235,7 @@ func TestGetTektonDir(t *testing.T) {
provenance string
filterMessageSnippet string
wantErr string
+ expectedGHApiCalls int64
}{
{
name: "test no subtree",
@@ -243,6 +247,10 @@ func TestGetTektonDir(t *testing.T) {
expectedString: "PipelineRun",
treepath: "testdata/tree/simple",
filterMessageSnippet: "Using PipelineRun definition from source pull request tekton/cat#0",
+ // 1. Get Repo root objects
+ // 2. Get Tekton Dir objects
+ // 3/4. Get object content for each object (pipelinerun.yaml, pipeline.yaml)
+ expectedGHApiCalls: 4,
},
{
name: "test provenance default_branch ",
@@ -255,6 +263,10 @@ func TestGetTektonDir(t *testing.T) {
treepath: "testdata/tree/defaultbranch",
provenance: "default_branch",
filterMessageSnippet: "Using PipelineRun definition from default_branch: main",
+ // 1. Get Repo root objects
+ // 2. Get Tekton Dir objects
+ // 3/4. Get object content for each object (pipelinerun.yaml, pipeline.yaml)
+ expectedGHApiCalls: 4,
},
{
name: "test with subtree",
@@ -265,6 +277,10 @@ func TestGetTektonDir(t *testing.T) {
},
expectedString: "FROMSUBTREE",
treepath: "testdata/tree/subdir",
+ // 1. Get Repo root objects
+ // 2. Get Tekton Dir objects
+ // 3-5. Get object content for each object (foo/bar/pipeline.yaml)
+ expectedGHApiCalls: 3,
},
{
name: "test with badly formatted yaml",
@@ -276,19 +292,64 @@ func TestGetTektonDir(t *testing.T) {
expectedString: "FROMSUBTREE",
treepath: "testdata/tree/badyaml",
wantErr: "error unmarshalling yaml file badyaml.yaml: yaml: line 2: did not find expected key",
+ // 1. Get Repo root objects
+ // 2. Get Tekton Dir objects
+ // 3. Get object content for object (badyaml.yaml)
+ expectedGHApiCalls: 3,
+ },
+ {
+ name: "test no tekton directory",
+ event: &info.Event{
+ Organization: "tekton",
+ Repository: "cat",
+ SHA: "123",
+ },
+ expectedString: "",
+ treepath: "testdata/tree/notektondir",
+ filterMessageSnippet: "Using PipelineRun definition from source pull request tekton/cat#0",
+ // 1. Get Repo root objects
+ // _. No tekton dir to fetch
+ expectedGHApiCalls: 1,
+ },
+ {
+ name: "test tekton directory path is file",
+ event: &info.Event{
+ Organization: "tekton",
+ Repository: "cat",
+ SHA: "123",
+ },
+ treepath: "testdata/tree/tektondirisfile",
+ wantErr: ".tekton has been found but is not a directory",
+ // 1. Get Repo root objects
+ // _. Tekton dir is file, no directory to fetch
+ expectedGHApiCalls: 1,
},
}
for _, tt := range testGetTektonDir {
t.Run(tt.name, func(t *testing.T) {
+ resetMetrics()
observer, exporter := zapobserver.New(zap.InfoLevel)
fakelogger := zap.New(observer).Sugar()
ctx, _ := rtesting.SetupFakeContext(t)
fakeclient, mux, _, teardown := ghtesthelper.SetupGH()
defer teardown()
gvcs := Provider{
- Client: fakeclient,
- Logger: fakelogger,
+ ghClient: fakeclient,
+ providerName: "github",
+ Logger: fakelogger,
}
+
+ defer func() {
+ if !t.Failed() {
+ metricstest.CheckCountData(
+ t,
+ "pipelines_as_code_git_provider_api_request_count",
+ map[string]string{"provider": "github"},
+ tt.expectedGHApiCalls,
+ )
+ }
+ }()
+
if tt.provenance == "default_branch" {
tt.event.SHA = tt.event.DefaultBranch
} else {
@@ -304,7 +365,15 @@ func TestGetTektonDir(t *testing.T) {
return
}
assert.NilError(t, err)
- assert.Assert(t, strings.Contains(got, tt.expectedString), "expected %s, got %s", tt.expectedString, got)
+
+ var gotMatch bool
+ if tt.expectedString == "" {
+ gotMatch = got == tt.expectedString
+ } else {
+ gotMatch = strings.Contains(got, tt.expectedString)
+ }
+
+ assert.Assert(t, gotMatch, "expected %s, got %s", tt.expectedString, got)
if tt.filterMessageSnippet != "" {
gotcha := exporter.FilterMessageSnippet(tt.filterMessageSnippet)
assert.Assert(t, gotcha.Len() > 0, "expected to find %s in logs, found %v", tt.filterMessageSnippet, exporter.All())
@@ -374,7 +443,7 @@ func TestGetFileInsideRepo(t *testing.T) {
fakeclient, mux, _, teardown := ghtesthelper.SetupGH()
defer teardown()
gvcs := Provider{
- Client: fakeclient,
+ ghClient: fakeclient,
}
for s, f := range tt.rets {
mux.HandleFunc(s, f)
@@ -438,7 +507,7 @@ func TestCheckSenderOrgMembership(t *testing.T) {
defer teardown()
ctx, _ := rtesting.SetupFakeContext(t)
gprovider := Provider{
- Client: fakeclient,
+ ghClient: fakeclient,
}
mux.HandleFunc(fmt.Sprintf("/orgs/%s/members", tt.runevent.Organization), func(rw http.ResponseWriter, _ *http.Request) {
fmt.Fprint(rw, tt.apiReturn)
@@ -483,7 +552,7 @@ func TestGetStringPullRequestComment(t *testing.T) {
defer teardown()
ctx, _ := rtesting.SetupFakeContext(t)
gprovider := Provider{
- Client: fakeclient,
+ ghClient: fakeclient,
}
mux.HandleFunc(fmt.Sprintf("/repos/issues/%s/comments", filepath.Base(tt.runevent.URL)), func(rw http.ResponseWriter, _ *http.Request) {
fmt.Fprint(rw, tt.apiReturn)
@@ -551,7 +620,7 @@ func TestGithubGetCommitInfo(t *testing.T) {
fmt.Fprintf(rw, `{"html_url": "%s", "message": "%s"}`, tt.shaurl, tt.shatitle)
})
ctx, _ := rtesting.SetupFakeContext(t)
- provider := &Provider{Client: fakeclient}
+ provider := &Provider{ghClient: fakeclient}
if tt.noclient {
provider = &Provider{}
}
@@ -596,11 +665,11 @@ func TestGithubSetClient(t *testing.T) {
err := v.SetClient(ctx, nil, tt.event, nil, nil)
assert.NilError(t, err)
assert.Equal(t, tt.expectedURL, *v.APIURL)
- assert.Equal(t, "https", v.Client.BaseURL.Scheme)
+ assert.Equal(t, "https", v.Client().BaseURL.Scheme)
if tt.isGHE {
- assert.Equal(t, "/api/v3/", v.Client.BaseURL.Path)
+ assert.Equal(t, "/api/v3/", v.Client().BaseURL.Path)
} else {
- assert.Equal(t, "/", v.Client.BaseURL.Path)
+ assert.Equal(t, "/", v.Client().BaseURL.Path)
}
})
}
@@ -801,7 +870,7 @@ func TestGetFiles(t *testing.T) {
ctx, _ := rtesting.SetupFakeContext(t)
provider := &Provider{
- Client: fakeclient,
+ ghClient: fakeclient,
PaginedNumber: 1,
}
changedFiles, err := provider.GetFiles(ctx, tt.event)
@@ -908,8 +977,8 @@ func TestProvider_checkWebhookSecretValidity(t *testing.T) {
}
defer teardown()
v := &Provider{
- Client: fakeclient,
- Logger: logger,
+ ghClient: fakeclient,
+ Logger: logger,
}
err := v.checkWebhookSecretValidity(ctx, cw)
if tt.wantSubErr != "" {
@@ -983,7 +1052,7 @@ func TestListRepos(t *testing.T) {
})
ctx, _ := rtesting.SetupFakeContext(t)
- provider := &Provider{Client: fakeclient, PaginedNumber: 1}
+ provider := &Provider{ghClient: fakeclient, PaginedNumber: 1}
data, err := ListRepos(ctx, provider)
assert.NilError(t, err)
assert.Equal(t, data[0], "https://matched/by/incoming")
@@ -1078,7 +1147,7 @@ func TestCreateToken(t *testing.T) {
})
}
- provider := &Provider{Client: fakeclient}
+ provider := &Provider{ghClient: fakeclient}
provider.Run = run
_, err := provider.CreateToken(ctx, urlData, info)
assert.Assert(t, len(provider.RepositoryIDs) == 2, "found repositoryIDs are %d which is less than expected", len(provider.RepositoryIDs))
@@ -1124,9 +1193,21 @@ func TestIsHeadCommitOfBranch(t *testing.T) {
})
ctx, _ := rtesting.SetupFakeContext(t)
- provider := &Provider{Client: fakeclient}
+ provider := &Provider{ghClient: fakeclient}
err := provider.isHeadCommitOfBranch(ctx, runEvent, "test1")
assert.Equal(t, err != nil, tt.wantErr)
})
}
}
+
+func resetMetrics() {
+ metricstest.Unregister(
+ "pipelines_as_code_pipelinerun_count",
+ "pipelines_as_code_pipelinerun_duration_seconds_sum",
+ "pipelines_as_code_running_pipelineruns_count",
+ "pipelines_as_code_git_provider_api_request_count",
+ )
+
+ // have to reset sync.Once to allow recreation of Recorder.
+ metrics.ResetRecorder()
+}
diff --git a/pkg/provider/github/parse_payload.go b/pkg/provider/github/parse_payload.go
index 9f2293dd5..f9eb6caf2 100644
--- a/pkg/provider/github/parse_payload.go
+++ b/pkg/provider/github/parse_payload.go
@@ -74,10 +74,10 @@ func (v *Provider) GetAppToken(ctx context.Context, kube kubernetes.Interface, g
gheURL = "https://" + gheURL
}
uploadURL := gheURL + "/api/uploads"
- v.Client, _ = github.NewClient(&http.Client{Transport: itr}).WithEnterpriseURLs(gheURL, uploadURL)
- itr.BaseURL = strings.TrimSuffix(v.Client.BaseURL.String(), "/")
+ v.ghClient, _ = github.NewClient(&http.Client{Transport: itr}).WithEnterpriseURLs(gheURL, uploadURL)
+ itr.BaseURL = strings.TrimSuffix(v.Client().BaseURL.String(), "/")
} else {
- v.Client = github.NewClient(&http.Client{Transport: itr})
+ v.ghClient = github.NewClient(&http.Client{Transport: itr})
}
// Get a token ASAP because we need it for setting private repos
@@ -217,7 +217,7 @@ func (v *Provider) processEvent(ctx context.Context, event *info.Event, eventInt
switch gitEvent := eventInt.(type) {
case *github.CheckRunEvent:
- if v.Client == nil {
+ if v.ghClient == nil {
return nil, fmt.Errorf("check run rerequest is only supported with github apps integration")
}
@@ -226,7 +226,7 @@ func (v *Provider) processEvent(ctx context.Context, event *info.Event, eventInt
}
return v.handleReRequestEvent(ctx, gitEvent)
case *github.CheckSuiteEvent:
- if v.Client == nil {
+ if v.ghClient == nil {
return nil, fmt.Errorf("check suite rerequest is only supported with github apps integration")
}
@@ -235,7 +235,7 @@ func (v *Provider) processEvent(ctx context.Context, event *info.Event, eventInt
}
return v.handleCheckSuites(ctx, gitEvent)
case *github.IssueCommentEvent:
- if v.Client == nil {
+ if v.ghClient == nil {
return nil, fmt.Errorf("no github client has been initialized, " +
"exiting... (hint: did you forget setting a secret on your repo?)")
}
@@ -247,7 +247,7 @@ func (v *Provider) processEvent(ctx context.Context, event *info.Event, eventInt
return nil, err
}
case *github.CommitCommentEvent:
- if v.Client == nil {
+ if v.ghClient == nil {
return nil, fmt.Errorf("no github client has been initialized, " +
"exiting... (hint: did you forget setting a secret on your repo?)")
}
diff --git a/pkg/provider/github/parse_payload_test.go b/pkg/provider/github/parse_payload_test.go
index 5add0e71e..f60f3dc39 100644
--- a/pkg/provider/github/parse_payload_test.go
+++ b/pkg/provider/github/parse_payload_test.go
@@ -617,8 +617,8 @@ func TestParsePayLoad(t *testing.T) {
}
logger, _ := logger.GetLogger()
gprovider := Provider{
- Client: ghClient,
- Logger: logger,
+ ghClient: ghClient,
+ Logger: logger,
pacInfo: &info.PacOpts{
Settings: settings.Settings{},
},
@@ -801,8 +801,8 @@ func TestAppTokenGeneration(t *testing.T) {
jeez, _ := json.Marshal(samplePRevent)
logger, _ := logger.GetLogger()
gprovider := Provider{
- Logger: logger,
- Client: fakeghclient,
+ Logger: logger,
+ ghClient: fakeghclient,
pacInfo: &info.PacOpts{
Settings: settings.Settings{},
},
@@ -856,7 +856,7 @@ func TestAppTokenGeneration(t *testing.T) {
}
assert.NilError(t, err)
if tt.nilClient {
- assert.Assert(t, gprovider.Client == nil)
+ assert.Assert(t, gprovider.Client() == nil)
return
}
@@ -878,9 +878,9 @@ func TestAppTokenGeneration(t *testing.T) {
assert.Assert(t, found, "Could not find %s in %s", extraIDInt, tt.extraRepoInstallIDs)
}
- assert.Assert(t, gprovider.Client != nil)
+ assert.Assert(t, gprovider.Client() != nil)
if tt.resultBaseURL != "" {
- assert.Equal(t, gprovider.Client.BaseURL.String(), tt.resultBaseURL)
+ assert.Equal(t, gprovider.Client().BaseURL.String(), tt.resultBaseURL)
}
})
}
diff --git a/pkg/provider/github/scope_test.go b/pkg/provider/github/scope_test.go
index f370f97cf..6073c4f6a 100644
--- a/pkg/provider/github/scope_test.go
+++ b/pkg/provider/github/scope_test.go
@@ -226,10 +226,10 @@ func TestScopeTokenToListOfRepos(t *testing.T) {
}
gvcs := &Provider{
- Logger: logger,
- Client: fakeghclient,
- Run: run,
- pacInfo: pacInfo,
+ ghClient: fakeghclient,
+ Logger: logger,
+ Run: run,
+ pacInfo: pacInfo,
}
extraRepoInstallIDs := map[string]string{"owner/repo": "789", "owner1/repo1": "10112", "owner2/repo2": "112233"}
diff --git a/pkg/provider/github/status.go b/pkg/provider/github/status.go
index 3345e868c..5c7c8a56f 100644
--- a/pkg/provider/github/status.go
+++ b/pkg/provider/github/status.go
@@ -43,7 +43,7 @@ const taskStatusTemplate = `
func (v *Provider) getExistingCheckRunID(ctx context.Context, runevent *info.Event, status provider.StatusOpts) (*int64, error) {
opt := github.ListOptions{PerPage: v.PaginedNumber}
for {
- res, resp, err := v.Client.Checks.ListCheckRunsForRef(ctx, runevent.Organization, runevent.Repository,
+ res, resp, err := v.Client().Checks.ListCheckRunsForRef(ctx, runevent.Organization, runevent.Repository,
runevent.SHA, &github.ListCheckRunsOptions{
AppID: v.ApplicationID,
ListOptions: opt,
@@ -118,7 +118,7 @@ func (v *Provider) createCheckRunStatus(ctx context.Context, runevent *info.Even
StartedAt: &now,
}
- checkRun, _, err := v.Client.Checks.CreateCheckRun(ctx, runevent.Organization, runevent.Repository, checkrunoption)
+ checkRun, _, err := v.Client().Checks.CreateCheckRun(ctx, runevent.Organization, runevent.Repository, checkrunoption)
if err != nil {
return nil, err
}
@@ -270,7 +270,7 @@ func (v *Provider) getOrUpdateCheckRunStatus(ctx context.Context, runevent *info
opts.Conclusion = github.Ptr("cancelled")
}
- _, _, err = v.Client.Checks.UpdateCheckRun(ctx, runevent.Organization, runevent.Repository, *checkRunID, opts)
+ _, _, err = v.Client().Checks.UpdateCheckRun(ctx, runevent.Organization, runevent.Repository, *checkRunID, opts)
return err
}
@@ -323,7 +323,7 @@ func (v *Provider) createStatusCommit(ctx context.Context, runevent *info.Event,
CreatedAt: &github.Timestamp{Time: now},
}
- if _, _, err := v.Client.Repositories.CreateStatus(ctx,
+ if _, _, err := v.Client().Repositories.CreateStatus(ctx,
runevent.Organization, runevent.Repository, runevent.SHA, ghstatus); err != nil {
return err
}
@@ -334,7 +334,7 @@ func (v *Provider) createStatusCommit(ctx context.Context, runevent *info.Event,
if (status.Status == "completed" || (status.Status == "queued" && status.Title == pendingApproval)) &&
status.Text != "" && eventType == triggertype.PullRequest {
- _, _, err = v.Client.Issues.CreateComment(ctx, runevent.Organization, runevent.Repository,
+ _, _, err = v.Client().Issues.CreateComment(ctx, runevent.Organization, runevent.Repository,
runevent.PullRequestNumber,
&github.IssueComment{
Body: github.Ptr(fmt.Sprintf("%s
%s", status.Summary, status.Text)),
@@ -349,7 +349,7 @@ func (v *Provider) createStatusCommit(ctx context.Context, runevent *info.Event,
}
func (v *Provider) CreateStatus(ctx context.Context, runevent *info.Event, statusOpts provider.StatusOpts) error {
- if v.Client == nil {
+ if v.ghClient == nil {
return fmt.Errorf("cannot set status on github no token or url set")
}
diff --git a/pkg/provider/github/status_test.go b/pkg/provider/github/status_test.go
index c16fa7367..acf0bafab 100644
--- a/pkg/provider/github/status_test.go
+++ b/pkg/provider/github/status_test.go
@@ -30,8 +30,8 @@ func TestGithubProviderCreateCheckRun(t *testing.T) {
ctx, _ := rtesting.SetupFakeContext(t)
fakeclient, mux, _, teardown := ghtesthelper.SetupGH()
cnx := Provider{
- Client: fakeclient,
- Run: params.New(),
+ ghClient: fakeclient,
+ Run: params.New(),
pacInfo: &info.PacOpts{
Settings: settings.Settings{
ApplicationName: settings.PACApplicationNameDefaultValue,
@@ -64,9 +64,9 @@ func TestGetOrUpdateCheckRunStatusForMultipleFailedPipelineRun(t *testing.T) {
ctx, _ := rtesting.SetupFakeContext(t)
fakeclient, mux, _, teardown := ghtesthelper.SetupGH()
cnx := Provider{
- Client: fakeclient,
- Run: params.New(),
- pacInfo: &info.PacOpts{},
+ ghClient: fakeclient,
+ Run: params.New(),
+ pacInfo: &info.PacOpts{},
}
defer teardown()
statusOptionData := []provider.StatusOpts{{
@@ -104,7 +104,7 @@ func TestGetExistingCheckRunIDFromMultiple(t *testing.T) {
defer teardown()
cnx := &Provider{
- Client: client,
+ ghClient: client,
PaginedNumber: 1,
}
event := &info.Event{
@@ -151,7 +151,7 @@ func TestGetExistingPendingApprovalCheckRunID(t *testing.T) {
defer teardown()
cnx := New()
- cnx.Client = client
+ cnx.SetGithubClient(client)
event := &info.Event{
Organization: "owner",
@@ -190,7 +190,7 @@ func TestGetExistingFailedCheckRunID(t *testing.T) {
defer teardown()
cnx := New()
- cnx.Client = client
+ cnx.SetGithubClient(client)
event := &info.Event{
Organization: "owner",
@@ -407,7 +407,7 @@ func TestGithubProviderCreateStatus(t *testing.T) {
ctx, _ := rtesting.SetupFakeContext(t)
gcvs := New()
- gcvs.Client = fakeclient
+ gcvs.SetGithubClient(fakeclient)
gcvs.Logger, _ = logger.GetLogger()
gcvs.Run = params.New()
if tt.args.isBot {
@@ -591,8 +591,8 @@ func TestGithubProvidercreateStatusCommit(t *testing.T) {
ctx, _ := rtesting.SetupFakeContext(t)
provider := &Provider{
- Client: fakeclient,
- Run: params.New(),
+ ghClient: fakeclient,
+ Run: params.New(),
pacInfo: &info.PacOpts{
Settings: settings.Settings{
ApplicationName: settings.PACApplicationNameDefaultValue,
@@ -653,7 +653,7 @@ func TestProviderGetExistingCheckRunID(t *testing.T) {
SHA: "sha",
}
v := &Provider{
- Client: client,
+ ghClient: client,
}
mux.HandleFunc(fmt.Sprintf("/repos/%v/%v/commits/%v/check-runs", event.Organization, event.Repository, event.SHA), func(w http.ResponseWriter, _ *http.Request) {
_, _ = fmt.Fprintf(w, "%s", tt.jsonret)
diff --git a/pkg/provider/github/testdata/tree/notektondir/.gitignore b/pkg/provider/github/testdata/tree/notektondir/.gitignore
new file mode 100644
index 000000000..5e7d2734c
--- /dev/null
+++ b/pkg/provider/github/testdata/tree/notektondir/.gitignore
@@ -0,0 +1,4 @@
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/pkg/provider/github/testdata/tree/tektondirisfile/.tekton b/pkg/provider/github/testdata/tree/tektondirisfile/.tekton
new file mode 100644
index 000000000..e69de29bb
diff --git a/pkg/provider/gitlab/acl.go b/pkg/provider/gitlab/acl.go
index a384e83a7..da70ce5bb 100644
--- a/pkg/provider/gitlab/acl.go
+++ b/pkg/provider/gitlab/acl.go
@@ -27,7 +27,7 @@ func (v *Provider) IsAllowedOwnersFile(_ context.Context, event *info.Event) (bo
}
func (v *Provider) checkMembership(ctx context.Context, event *info.Event, userid int) bool {
- member, _, err := v.Client.ProjectMembers.GetInheritedProjectMember(v.targetProjectID, userid)
+ member, _, err := v.Client().ProjectMembers.GetInheritedProjectMember(v.targetProjectID, userid)
if err == nil && member.ID != 0 && member.ID == userid {
return true
}
@@ -39,7 +39,7 @@ func (v *Provider) checkMembership(ctx context.Context, event *info.Event, useri
func (v *Provider) checkOkToTestCommentFromApprovedMember(ctx context.Context, event *info.Event, page int) (bool, error) {
var nextPage int
opt := &gitlab.ListMergeRequestDiscussionsOptions{Page: page}
- discussions, resp, err := v.Client.Discussions.ListMergeRequestDiscussions(v.targetProjectID, event.PullRequestNumber, opt)
+ discussions, resp, err := v.Client().Discussions.ListMergeRequestDiscussions(v.targetProjectID, event.PullRequestNumber, opt)
if err != nil || len(discussions) == 0 {
return false, err
}
@@ -72,7 +72,7 @@ func (v *Provider) checkOkToTestCommentFromApprovedMember(ctx context.Context, e
}
func (v *Provider) IsAllowed(ctx context.Context, event *info.Event) (bool, error) {
- if v.Client == nil {
+ if v.gitlabClient == nil {
return false, fmt.Errorf("no github client has been initialized, " +
"exiting... (hint: did you forget setting a secret on your repo?)")
}
diff --git a/pkg/provider/gitlab/acl_test.go b/pkg/provider/gitlab/acl_test.go
index 8f0c5fbca..77aa98fe0 100644
--- a/pkg/provider/gitlab/acl_test.go
+++ b/pkg/provider/gitlab/acl_test.go
@@ -101,7 +101,7 @@ func TestIsAllowed(t *testing.T) {
}
if tt.wantClient {
client, mux, tearDown := thelp.Setup(t)
- v.Client = client
+ v.gitlabClient = client
if tt.allowMemberID != 0 {
thelp.MuxAllowUserID(mux, tt.fields.targetProjectID, tt.allowMemberID)
} else {
diff --git a/pkg/provider/gitlab/gitlab.go b/pkg/provider/gitlab/gitlab.go
index cad3b86da..7dfbd5b13 100644
--- a/pkg/provider/gitlab/gitlab.go
+++ b/pkg/provider/gitlab/gitlab.go
@@ -12,6 +12,7 @@ import (
"github.com/openshift-pipelines/pipelines-as-code/pkg/apis/pipelinesascode/v1alpha1"
"github.com/openshift-pipelines/pipelines-as-code/pkg/changedfiles"
"github.com/openshift-pipelines/pipelines-as-code/pkg/events"
+ "github.com/openshift-pipelines/pipelines-as-code/pkg/metrics"
"github.com/openshift-pipelines/pipelines-as-code/pkg/opscomments"
"github.com/openshift-pipelines/pipelines-as-code/pkg/params"
"github.com/openshift-pipelines/pipelines-as-code/pkg/params/info"
@@ -45,8 +46,9 @@ var anyMergeRequestEventType = []string{"Merge Request", "MergeRequest"}
var _ provider.Interface = (*Provider)(nil)
type Provider struct {
- Client *gitlab.Client
+ gitlabClient *gitlab.Client
Logger *zap.SugaredLogger
+ metrics *metrics.Recorder
run *params.Run
pacInfo *info.PacOpts
Token *string
@@ -58,6 +60,38 @@ type Provider struct {
apiURL string
eventEmitter *events.EventEmitter
repo *v1alpha1.Repository
+ triggerEvent string
+}
+
+func (v Provider) Client() *gitlab.Client {
+ v.recordAPIUsageMetrics()
+ return v.gitlabClient
+}
+
+func (v *Provider) SetGitlabClient(client *gitlab.Client) {
+ v.gitlabClient = client
+}
+
+func (v *Provider) recordAPIUsageMetrics() {
+ if v.metrics == nil {
+ m, err := metrics.NewRecorder()
+ if err != nil {
+ v.Logger.Errorf("Error initializing gitlab metrics recorder: %v", err)
+ return
+ }
+ v.metrics = m
+ }
+
+ name := ""
+ namespace := ""
+ if v.repo != nil {
+ name = v.repo.Name
+ namespace = v.repo.Namespace
+ }
+
+ if err := v.metrics.ReportGitProviderAPIUsage(v.apiURL, v.triggerEvent, namespace, name); err != nil {
+ v.Logger.Errorf("Error reporting git API usage metrics: %v", err)
+ }
}
func (v *Provider) SetPacInfo(pacInfo *info.PacOpts) {
@@ -132,7 +166,7 @@ func (v *Provider) SetClient(_ context.Context, run *params.Run, runevent *info.
}
v.apiURL = apiURL
- v.Client, err = gitlab.NewClient(runevent.Provider.Token, gitlab.WithBaseURL(apiURL))
+ v.gitlabClient, err = gitlab.NewClient(runevent.Provider.Token, gitlab.WithBaseURL(apiURL))
if err != nil {
return err
}
@@ -151,7 +185,7 @@ func (v *Provider) SetClient(_ context.Context, run *params.Run, runevent *info.
// it ASAP if we can.
if v.sourceProjectID == 0 && runevent.Organization != "" && runevent.Repository != "" {
projectSlug := filepath.Join(runevent.Organization, runevent.Repository)
- projectinfo, _, err := v.Client.Projects.GetProject(projectSlug, &gitlab.GetProjectOptions{})
+ projectinfo, _, err := v.Client().Projects.GetProject(projectSlug, &gitlab.GetProjectOptions{})
if err != nil {
return err
}
@@ -165,6 +199,7 @@ func (v *Provider) SetClient(_ context.Context, run *params.Run, runevent *info.
v.run = run
v.eventEmitter = eventsEmitter
v.repo = repo
+ v.triggerEvent = runevent.EventType
return nil
}
@@ -172,7 +207,7 @@ func (v *Provider) SetClient(_ context.Context, run *params.Run, runevent *info.
func (v *Provider) CreateStatus(_ context.Context, event *info.Event, statusOpts provider.StatusOpts,
) error {
var detailsURL string
- if v.Client == nil {
+ if v.gitlabClient == nil {
return fmt.Errorf("no gitlab client has been initialized, " +
"exiting... (hint: did you forget setting a secret on your repo?)")
}
@@ -222,7 +257,7 @@ func (v *Provider) CreateStatus(_ context.Context, event *info.Event, statusOpts
// a status comment on it.
// This would work on a push or an MR from a branch within the same repo.
// Ignoring errors because of the write access issues,
- if _, _, err := v.Client.Commits.SetCommitStatus(event.SourceProjectID, event.SHA, opt); err != nil {
+ if _, _, err := v.Client().Commits.SetCommitStatus(event.SourceProjectID, event.SHA, opt); err != nil {
v.eventEmitter.EmitMessage(v.repo, zap.ErrorLevel, "FailedToSetCommitStatus",
"cannot set status with the GitLab token because of: "+err.Error())
}
@@ -236,14 +271,14 @@ func (v *Provider) CreateStatus(_ context.Context, event *info.Event, statusOpts
// only add a note when we are on a MR
if eventType == triggertype.PullRequest || provider.Valid(event.EventType, anyMergeRequestEventType) {
mopt := &gitlab.CreateMergeRequestNoteOptions{Body: gitlab.Ptr(body)}
- _, _, err := v.Client.Notes.CreateMergeRequestNote(event.TargetProjectID, event.PullRequestNumber, mopt)
+ _, _, err := v.Client().Notes.CreateMergeRequestNote(event.TargetProjectID, event.PullRequestNumber, mopt)
return err
}
return nil
}
func (v *Provider) GetTektonDir(_ context.Context, event *info.Event, path, provenance string) (string, error) {
- if v.Client == nil {
+ if v.gitlabClient == nil {
return "", fmt.Errorf("no gitlab client has been initialized, " +
"exiting... (hint: did you forget setting a secret on your repo?)")
}
@@ -272,7 +307,7 @@ func (v *Provider) GetTektonDir(_ context.Context, event *info.Event, path, prov
nodes := []*gitlab.TreeNode{}
for {
- objects, resp, err := v.Client.Repositories.ListTree(v.sourceProjectID, opt, options...)
+ objects, resp, err := v.Client().Repositories.ListTree(v.sourceProjectID, opt, options...)
if err != nil {
return "", fmt.Errorf("failed to list %s dir: %w", path, err)
}
@@ -323,7 +358,7 @@ func (v *Provider) getObject(fname, branch string, pid int) ([]byte, *gitlab.Res
opt := &gitlab.GetRawFileOptions{
Ref: gitlab.Ptr(branch),
}
- file, resp, err := v.Client.RepositoryFiles.GetRawFile(pid, fname, opt)
+ file, resp, err := v.Client().RepositoryFiles.GetRawFile(pid, fname, opt)
if err != nil {
return []byte{}, resp, fmt.Errorf("failed to get filename from api %s dir: %w", fname, err)
}
@@ -342,14 +377,14 @@ func (v *Provider) GetFileInsideRepo(_ context.Context, runevent *info.Event, pa
}
func (v *Provider) GetCommitInfo(_ context.Context, runevent *info.Event) error {
- if v.Client == nil {
+ if v.gitlabClient == nil {
return fmt.Errorf("%s", noClientErrStr)
}
// if we don't have a SHA (ie: incoming-webhook) then get it from the branch
// and populate in the runevent.
if runevent.SHA == "" && runevent.HeadBranch != "" {
- branchinfo, _, err := v.Client.Commits.GetCommit(v.sourceProjectID, runevent.HeadBranch, &gitlab.GetCommitOptions{})
+ branchinfo, _, err := v.Client().Commits.GetCommit(v.sourceProjectID, runevent.HeadBranch, &gitlab.GetCommitOptions{})
if err != nil {
return err
}
@@ -362,7 +397,7 @@ func (v *Provider) GetCommitInfo(_ context.Context, runevent *info.Event) error
}
func (v *Provider) GetFiles(_ context.Context, runevent *info.Event) (changedfiles.ChangedFiles, error) {
- if v.Client == nil {
+ if v.gitlabClient == nil {
return changedfiles.ChangedFiles{}, fmt.Errorf("no gitlab client has been initialized, " +
"exiting... (hint: did you forget setting a secret on your repo?)")
}
@@ -379,7 +414,7 @@ func (v *Provider) GetFiles(_ context.Context, runevent *info.Event) (changedfil
changedFiles := changedfiles.ChangedFiles{}
for {
- mrchanges, resp, err := v.Client.MergeRequests.ListMergeRequestDiffs(v.targetProjectID, runevent.PullRequestNumber, opt, options...)
+ mrchanges, resp, err := v.Client().MergeRequests.ListMergeRequestDiffs(v.targetProjectID, runevent.PullRequestNumber, opt, options...)
if err != nil {
return changedfiles.ChangedFiles{}, err
}
@@ -414,7 +449,7 @@ func (v *Provider) GetFiles(_ context.Context, runevent *info.Event) (changedfil
}
if runevent.TriggerTarget == "push" {
- pushChanges, _, err := v.Client.Commits.GetCommitDiff(v.sourceProjectID, runevent.SHA, &gitlab.GetCommitDiffOptions{})
+ pushChanges, _, err := v.Client().Commits.GetCommitDiff(v.sourceProjectID, runevent.SHA, &gitlab.GetCommitDiffOptions{})
if err != nil {
return changedfiles.ChangedFiles{}, err
}
@@ -445,11 +480,11 @@ func (v *Provider) CreateToken(_ context.Context, _ []string, _ *info.Event) (st
// isHeadCommitOfBranch validates that branch exists and the SHA is HEAD commit of the branch.
func (v *Provider) isHeadCommitOfBranch(runevent *info.Event, branchName string) error {
- if v.Client == nil {
+ if v.gitlabClient == nil {
return fmt.Errorf("no gitlab client has been initialized, " +
"exiting... (hint: did you forget setting a secret on your repo?)")
}
- branch, _, err := v.Client.Branches.GetBranch(v.sourceProjectID, branchName)
+ branch, _, err := v.Client().Branches.GetBranch(v.sourceProjectID, branchName)
if err != nil {
return err
}
diff --git a/pkg/provider/gitlab/gitlab_test.go b/pkg/provider/gitlab/gitlab_test.go
index a5fb2b062..58673f01b 100644
--- a/pkg/provider/gitlab/gitlab_test.go
+++ b/pkg/provider/gitlab/gitlab_test.go
@@ -228,7 +228,7 @@ func TestCreateStatus(t *testing.T) {
if tt.wantClient {
client, mux, tearDown := thelp.Setup(t)
- v.Client = client
+ v.SetGitlabClient(client)
defer tearDown()
thelp.MuxNotePost(t, mux, v.targetProjectID, tt.args.event.PullRequestNumber, tt.args.postStr)
}
@@ -243,7 +243,7 @@ func TestCreateStatus(t *testing.T) {
func TestGetCommitInfo(t *testing.T) {
ctx, _ := rtesting.SetupFakeContext(t)
client, _, tearDown := thelp.Setup(t)
- v := &Provider{Client: client}
+ v := &Provider{gitlabClient: client}
defer tearDown()
assert.NilError(t, v.GetCommitInfo(ctx, info.NewEvent()))
@@ -265,7 +265,7 @@ func TestSetClient(t *testing.T) {
client, _, tearDown := thelp.Setup(t)
defer tearDown()
- vv := &Provider{Client: client}
+ vv := &Provider{gitlabClient: client}
err := vv.SetClient(ctx, nil, &info.Event{
Provider: &info.Provider{
Token: "hello",
@@ -280,7 +280,7 @@ func TestSetClientDetectAPIURL(t *testing.T) {
ctx, _ := rtesting.SetupFakeContext(t)
client, _, tearDown := thelp.Setup(t)
defer tearDown()
- v := &Provider{Client: client}
+ v := &Provider{gitlabClient: client}
event := info.NewEvent()
err := v.SetClient(ctx, nil, event, nil, nil)
assert.ErrorContains(t, err, "no git_provider.secret has been set")
@@ -446,7 +446,7 @@ func TestGetTektonDir(t *testing.T) {
}
if tt.wantClient {
client, mux, tearDown := thelp.Setup(t)
- v.Client = client
+ v.SetGitlabClient(client)
muxbranch := tt.args.event.HeadBranch
if tt.args.provenance == "default_branch" {
muxbranch = tt.args.event.DefaultBranch
@@ -485,7 +485,7 @@ func TestGetFileInsideRepo(t *testing.T) {
}
v := Provider{
sourceProjectID: 10,
- Client: client,
+ gitlabClient: client,
}
thelp.MuxListTektonDir(t, mux, v.sourceProjectID, event.HeadBranch, content, false, false)
got, err := v.GetFileInsideRepo(ctx, event, "pr.yaml", "")
@@ -714,7 +714,7 @@ func TestGetFiles(t *testing.T) {
})
}
- providerInfo := &Provider{Client: fakeclient, sourceProjectID: tt.sourceProjectID, targetProjectID: tt.targetProjectID}
+ providerInfo := &Provider{gitlabClient: fakeclient, sourceProjectID: tt.sourceProjectID, targetProjectID: tt.targetProjectID}
changedFiles, err := providerInfo.GetFiles(ctx, tt.event)
if tt.wantError != true {
assert.NilError(t, err, nil)
@@ -788,7 +788,7 @@ func TestIsHeadCommitOfBranch(t *testing.T) {
defer teardown()
glProvider := &Provider{sourceProjectID: 1}
if tt.wantClient {
- glProvider.Client = fakeclient
+ glProvider.SetGitlabClient(fakeclient)
mux.HandleFunc("/projects/1/repository/branches/cool-branch",
func(rw http.ResponseWriter, _ *http.Request) {
if tt.errStatusCode != 0 {
diff --git a/pkg/provider/gitlab/parse_payload.go b/pkg/provider/gitlab/parse_payload.go
index 0b78ee4a9..4655941a6 100644
--- a/pkg/provider/gitlab/parse_payload.go
+++ b/pkg/provider/gitlab/parse_payload.go
@@ -173,7 +173,7 @@ func (v *Provider) ParsePayload(ctx context.Context, run *params.Run, request *h
func (v *Provider) initGitlabClient(ctx context.Context, event *info.Event) (*info.Event, error) {
// This is to ensure the base URL of the client is not reinitialized during tests.
- if v.Client != nil {
+ if v.gitlabClient != nil {
return event, nil
}
diff --git a/pkg/provider/gitlab/parse_payload_test.go b/pkg/provider/gitlab/parse_payload_test.go
index 9c389eeea..30225e8d7 100644
--- a/pkg/provider/gitlab/parse_payload_test.go
+++ b/pkg/provider/gitlab/parse_payload_test.go
@@ -364,7 +364,7 @@ func TestParsePayload(t *testing.T) {
}
if tt.wantClient {
client, mux, tearDown := thelp.Setup(t)
- v.Client = client
+ v.SetGitlabClient(client)
branchName := "main"
if tt.wantBranch != "" {
branchName = tt.wantBranch
diff --git a/pkg/reconciler/emit_metrics_test.go b/pkg/reconciler/emit_metrics_test.go
index 9b5a23259..d6c0aaa7f 100644
--- a/pkg/reconciler/emit_metrics_test.go
+++ b/pkg/reconciler/emit_metrics_test.go
@@ -102,7 +102,7 @@ func TestCountPipelineRun(t *testing.T) {
metricstest.AssertNoMetric(t, "pipelines_as_code_pipelinerun_count")
if err = r.countPipelineRun(pr); (err != nil) != tt.wantErr {
- t.Errorf("countPipelineRun() error = %v, wantErr %v", err != nil, tt.wantErr)
+ t.Errorf("countPipelineRun() error = %v, wantErr %v. error: %v", err != nil, tt.wantErr, err)
}
if !tt.wantErr {
@@ -308,9 +308,12 @@ func TestCountRunningPRs(t *testing.T) {
}
func unregisterMetrics() {
- metricstest.Unregister("pipelines_as_code_pipelinerun_count",
+ metricstest.Unregister(
+ "pipelines_as_code_pipelinerun_count",
"pipelines_as_code_pipelinerun_duration_seconds_sum",
- "pipelines_as_code_running_pipelineruns_count")
+ "pipelines_as_code_running_pipelineruns_count",
+ "pipelines_as_code_git_provider_api_request_count",
+ )
// have to reset sync.Once to allow recreation of Recorder.
metrics.ResetRecorder()
diff --git a/pkg/reconciler/reconciler_test.go b/pkg/reconciler/reconciler_test.go
index 41dd9b14b..416e53dc9 100644
--- a/pkg/reconciler/reconciler_test.go
+++ b/pkg/reconciler/reconciler_test.go
@@ -66,10 +66,11 @@ func TestReconciler_ReconcileKind(t *testing.T) {
defer teardown()
vcx := &ghprovider.Provider{
- Client: fakeclient,
- Token: github.Ptr("None"),
+ Token: github.Ptr("None"),
}
+ vcx.SetGithubClient(fakeclient)
+
tests := []struct {
name string
finalStatus string
diff --git a/test/bitbucket_cloud_pullrequest_test.go b/test/bitbucket_cloud_pullrequest_test.go
index 776275f19..d86336004 100644
--- a/test/bitbucket_cloud_pullrequest_test.go
+++ b/test/bitbucket_cloud_pullrequest_test.go
@@ -95,7 +95,7 @@ func TestBitbucketCloudPullRequestCancelInProgressMerged(t *testing.T) {
Owner: opts.Organization,
ID: fmt.Sprintf("%d", pr.ID),
}
- _, err = bprovider.Client.Repositories.PullRequests.Decline(po)
+ _, err = bprovider.Client().Repositories.PullRequests.Decline(po)
assert.NilError(t, err)
runcnx.Clients.Log.Info("Waiting 10 seconds to check things has been canceled")
diff --git a/test/gitea_access_control_test.go b/test/gitea_access_control_test.go
index 5c137d392..2ac3fce7e 100644
--- a/test/gitea_access_control_test.go
+++ b/test/gitea_access_control_test.go
@@ -64,7 +64,7 @@ func TestGiteaPolicyPullRequest(t *testing.T) {
normalUserNamePasswd := fmt.Sprintf("normal-%s", topts.TargetRefName)
normalUserCnx, normalUser, err := tgitea.CreateGiteaUserSecondCnx(topts, normalUserNamePasswd, normalUserNamePasswd)
assert.NilError(t, err)
- _, err = topts.GiteaCNX.Client.AddTeamMember(normalTeam.ID, normalUser.UserName)
+ _, err = topts.GiteaCNX.Client().AddTeamMember(normalTeam.ID, normalUser.UserName)
assert.NilError(t, err)
topts.ParamsRun.Clients.Log.Infof("User %s has been added to team %s", normalUser.UserName, normalTeam.Name)
tgitea.CreateForkPullRequest(t, topts, normalUserCnx, "")
@@ -79,7 +79,7 @@ func TestGiteaPolicyPullRequest(t *testing.T) {
pullRequesterUserNamePasswd := fmt.Sprintf("pullRequester-%s", topts.TargetRefName)
pullRequesterUserCnx, pullRequesterUser, err := tgitea.CreateGiteaUserSecondCnx(topts, pullRequesterUserNamePasswd, pullRequesterUserNamePasswd)
assert.NilError(t, err)
- _, err = topts.GiteaCNX.Client.AddTeamMember(pullRequesterTeam.ID, pullRequesterUser.UserName)
+ _, err = topts.GiteaCNX.Client().AddTeamMember(pullRequesterTeam.ID, pullRequesterUser.UserName)
assert.NilError(t, err)
topts.ParamsRun.Clients.Log.Infof("User %s has been added to team %s", pullRequesterUser.UserName, pullRequesterTeam.Name)
tgitea.CreateForkPullRequest(t, topts, pullRequesterUserCnx, "")
@@ -124,7 +124,7 @@ func TestGiteaPolicyOkToTestRetest(t *testing.T) {
okToTestUserNamePasswd := fmt.Sprintf("ok-to-test-%s", topts.TargetRefName)
okToTestUserCnx, okToTestUser, err := tgitea.CreateGiteaUserSecondCnx(topts, okToTestUserNamePasswd, okToTestUserNamePasswd)
assert.NilError(t, err)
- _, err = topts.GiteaCNX.Client.AddTeamMember(oktotestTeam.ID, okToTestUser.UserName)
+ _, err = topts.GiteaCNX.Client().AddTeamMember(oktotestTeam.ID, okToTestUser.UserName)
assert.NilError(t, err)
topts.ParamsRun.Clients.Log.Infof("User %s has been added to team %s", okToTestUser.UserName, oktotestTeam.Name)
@@ -134,7 +134,7 @@ func TestGiteaPolicyOkToTestRetest(t *testing.T) {
normalUserNamePasswd := fmt.Sprintf("normal-%s", topts.TargetRefName)
normalUserCnx, normalUser, err := tgitea.CreateGiteaUserSecondCnx(topts, normalUserNamePasswd, normalUserNamePasswd)
assert.NilError(t, err)
- _, err = topts.GiteaCNX.Client.AddTeamMember(normalTeam.ID, normalUser.UserName)
+ _, err = topts.GiteaCNX.Client().AddTeamMember(normalTeam.ID, normalUser.UserName)
assert.NilError(t, err)
topts.ParamsRun.Clients.Log.Infof("User %s has been added to team %s", normalUser.UserName, normalTeam.Name)
@@ -315,7 +315,7 @@ func TestGiteaACLCommentsAllowingRememberOkToTestFalse(t *testing.T) {
tgitea.PushToPullRequest(t, topts, secondcnx, "echo Hello from user "+topts.TargetRefName)
// get the latest PR for the new sha
- pr, _, err := topts.GiteaCNX.Client.GetPullRequest("pac", topts.PullRequest.Head.Name, topts.PullRequest.Index)
+ pr, _, err := topts.GiteaCNX.Client().GetPullRequest("pac", topts.PullRequest.Head.Name, topts.PullRequest.Index)
assert.NilError(t, err)
// status of CI is pending because pushed to PR and remember-ok-to-test is false
@@ -398,7 +398,7 @@ func TestGiteaPolicyAllowedOwnerFiles(t *testing.T) {
normalUserNamePasswd := fmt.Sprintf("normal-%s", topts.TargetRefName)
_, normalUser, err := tgitea.CreateGiteaUserSecondCnx(topts, normalUserNamePasswd, normalUserNamePasswd)
assert.NilError(t, err)
- _, err = topts.GiteaCNX.Client.AddTeamMember(normalTeam.ID, normalUser.UserName)
+ _, err = topts.GiteaCNX.Client().AddTeamMember(normalTeam.ID, normalUser.UserName)
assert.NilError(t, err)
// create an allowed user w
@@ -481,7 +481,7 @@ func TestGiteaPolicyOnComment(t *testing.T) {
normalUserNamePasswd := fmt.Sprintf("normal-%s", topts.TargetRefName)
normalUserCnx, normalUser, err := tgitea.CreateGiteaUserSecondCnx(topts, normalUserNamePasswd, normalUserNamePasswd)
assert.NilError(t, err)
- _, err = topts.GiteaCNX.Client.AddTeamMember(normalTeam.ID, normalUser.UserName)
+ _, err = topts.GiteaCNX.Client().AddTeamMember(normalTeam.ID, normalUser.UserName)
assert.NilError(t, err)
topts.ParamsRun.Clients.Log.Infof("User %s has been added to team %s", normalUser.UserName, normalTeam.Name)
tgitea.CreateForkPullRequest(t, topts, normalUserCnx, "")
@@ -500,7 +500,7 @@ func TestGiteaPolicyOnComment(t *testing.T) {
pullRequesterUserNamePasswd := fmt.Sprintf("pullRequester-%s", topts.TargetRefName)
pullRequesterUserCnx, pullRequesterUser, err := tgitea.CreateGiteaUserSecondCnx(topts, pullRequesterUserNamePasswd, pullRequesterUserNamePasswd)
assert.NilError(t, err)
- _, err = topts.GiteaCNX.Client.AddTeamMember(pullRequesterTeam.ID, pullRequesterUser.UserName)
+ _, err = topts.GiteaCNX.Client().AddTeamMember(pullRequesterTeam.ID, pullRequesterUser.UserName)
assert.NilError(t, err)
topts.ParamsRun.Clients.Log.Infof("User %s has been added to team %s", pullRequesterUser.UserName, pullRequesterTeam.Name)
topts.GiteaCNX = pullRequesterUserCnx
diff --git a/test/gitea_params_test.go b/test/gitea_params_test.go
index f78aa444e..368914c27 100644
--- a/test/gitea_params_test.go
+++ b/test/gitea_params_test.go
@@ -47,7 +47,7 @@ func TestGiteaParamsStandardCheckForPushAndPullEvent(t *testing.T) {
}
_, f := tgitea.TestPR(t, topts)
defer f()
- merged, resp, err := topts.GiteaCNX.Client.MergePullRequest(topts.Opts.Organization, topts.Opts.Repo, topts.PullRequest.Index,
+ merged, resp, err := topts.GiteaCNX.Client().MergePullRequest(topts.Opts.Organization, topts.Opts.Repo, topts.PullRequest.Index,
gitea.MergePullRequestOption{
Title: "Merged with Panache",
Style: "merge",
@@ -355,7 +355,7 @@ my email is a true beauty and like groot, I AM pac`
assert.NilError(t, err)
// Merge the pull request so we can generate a push event and wait that it is updated
- merged, resp, err := topts.GiteaCNX.Client.MergePullRequest(topts.Opts.Organization, topts.Opts.Repo, topts.PullRequest.Index,
+ merged, resp, err := topts.GiteaCNX.Client().MergePullRequest(topts.Opts.Organization, topts.Opts.Repo, topts.PullRequest.Index,
gitea.MergePullRequestOption{
Title: "Merged with Panache",
Style: "merge",
@@ -439,7 +439,7 @@ func TestGiteaParamsChangedFilesCEL(t *testing.T) {
// ======================================================================================================================
// Merge the pull request so we can generate a push event and wait that it is updated
// ======================================================================================================================
- merged, resp, err := topts.GiteaCNX.Client.MergePullRequest(topts.Opts.Organization, topts.Opts.Repo, topts.PullRequest.Index,
+ merged, resp, err := topts.GiteaCNX.Client().MergePullRequest(topts.Opts.Organization, topts.Opts.Repo, topts.PullRequest.Index,
gitea.MergePullRequestOption{
Title: "Merged with Panache",
Style: "merge",
@@ -486,7 +486,7 @@ func TestGiteaParamsChangedFilesCEL(t *testing.T) {
// ======================================================================================================================
// Merge the pull request so we can generate a second push event and wait that it is updated
// ======================================================================================================================
- merged, resp, err = topts.GiteaCNX.Client.MergePullRequest(topts.Opts.Organization, topts.Opts.Repo, topts.PullRequest.Index,
+ merged, resp, err = topts.GiteaCNX.Client().MergePullRequest(topts.Opts.Organization, topts.Opts.Repo, topts.PullRequest.Index,
gitea.MergePullRequestOption{
Title: "Merged with Panache",
Style: "merge",
diff --git a/test/gitea_test.go b/test/gitea_test.go
index 4b27f25bb..23a3f34e5 100644
--- a/test/gitea_test.go
+++ b/test/gitea_test.go
@@ -445,7 +445,7 @@ func TestGiteaConfigCancelInProgress(t *testing.T) {
}
_ = scm.PushFilesToRefGit(t, scmOpts, entries)
- pr, _, err := topts.GiteaCNX.Client.CreatePullRequest(topts.Opts.Organization, topts.Opts.Repo, gitea.CreatePullRequestOption{
+ pr, _, err := topts.GiteaCNX.Client().CreatePullRequest(topts.Opts.Organization, topts.Opts.Repo, gitea.CreatePullRequestOption{
Title: "Test Pull Request - " + targetRef,
Head: targetRef,
Base: topts.DefaultBranch,
@@ -508,7 +508,7 @@ func TestGiteaConfigCancelInProgressAfterPRClosed(t *testing.T) {
assert.NilError(t, err)
closed := gitea.StateClosed
- _, _, err = topts.GiteaCNX.Client.EditPullRequest(topts.Opts.Organization, topts.Opts.Repo, topts.PullRequest.Index, gitea.EditPullRequestOption{
+ _, _, err = topts.GiteaCNX.Client().EditPullRequest(topts.Opts.Organization, topts.Opts.Repo, topts.PullRequest.Index, gitea.EditPullRequestOption{
State: &closed,
})
assert.NilError(t, err)
@@ -535,7 +535,7 @@ func TestGiteaPush(t *testing.T) {
}
_, f := tgitea.TestPR(t, topts)
defer f()
- merged, resp, err := topts.GiteaCNX.Client.MergePullRequest(topts.Opts.Organization, topts.Opts.Repo, topts.PullRequest.Index,
+ merged, resp, err := topts.GiteaCNX.Client().MergePullRequest(topts.Opts.Organization, topts.Opts.Repo, topts.PullRequest.Index,
gitea.MergePullRequestOption{
Title: "Merged with Panache",
Style: "merge",
@@ -1059,7 +1059,7 @@ func verifyProvenance(t *testing.T, topts *tgitea.TestOpts, expectedOutput, cNam
scmOpts.TargetRefName = targetRef
_ = scm.PushFilesToRefGit(t, scmOpts, entries)
- pr, _, err := topts.GiteaCNX.Client.CreatePullRequest(topts.Opts.Organization, targetRef, gitea.CreatePullRequestOption{
+ pr, _, err := topts.GiteaCNX.Client().CreatePullRequest(topts.Opts.Organization, targetRef, gitea.CreatePullRequestOption{
Title: "Test Pull Request - " + targetRef,
Head: targetRef,
Base: options.MainBranch,
diff --git a/test/github_config_maxkeepruns_test.go b/test/github_config_maxkeepruns_test.go
index 554576d4b..69aa7a9d8 100644
--- a/test/github_config_maxkeepruns_test.go
+++ b/test/github_config_maxkeepruns_test.go
@@ -27,7 +27,7 @@ func TestGithubMaxKeepRuns(t *testing.T) {
defer g.TearDown(ctx, t)
g.Cnx.Clients.Log.Infof("Creating /retest in PullRequest")
- _, _, err := g.Provider.Client.Issues.CreateComment(ctx, g.Options.Organization, g.Options.Repo, g.PRNumber,
+ _, _, err := g.Provider.Client().Issues.CreateComment(ctx, g.Options.Organization, g.Options.Repo, g.PRNumber,
&ghlib.IssueComment{Body: ghlib.Ptr("/retest")})
assert.NilError(t, err)
diff --git a/test/github_incoming_test.go b/test/github_incoming_test.go
index 05866834d..36301862c 100644
--- a/test/github_incoming_test.go
+++ b/test/github_incoming_test.go
@@ -81,7 +81,7 @@ func verifyIncomingWebhook(t *testing.T, randomedString, pipelinerunName string,
logmsg := fmt.Sprintf("Testing %s with Github APPS integration on %s", label, randomedString)
runcnx.Clients.Log.Info(logmsg)
- repoinfo, resp, err := ghprovider.Client.Repositories.Get(ctx, opts.Organization, opts.Repo)
+ repoinfo, resp, err := ghprovider.Client().Repositories.Get(ctx, opts.Organization, opts.Repo)
assert.NilError(t, err)
if resp != nil && resp.StatusCode == http.StatusNotFound {
t.Errorf("Repository %s not found in %s", opts.Organization, opts.Repo)
@@ -110,7 +110,7 @@ func verifyIncomingWebhook(t *testing.T, randomedString, pipelinerunName string,
targetRefName := fmt.Sprintf("refs/heads/%s", randomedString)
title := "TestGithubAppIncoming - " + randomedString
- sha, vref, err := tgithub.PushFilesToRef(ctx, ghprovider.Client, title,
+ sha, vref, err := tgithub.PushFilesToRef(ctx, ghprovider.Client(), title,
repoinfo.GetDefaultBranch(),
targetRefName,
opts.Organization,
diff --git a/test/github_pullrequest_concurrency_multiplepr_test.go b/test/github_pullrequest_concurrency_multiplepr_test.go
index 0054a33f8..37bded287 100644
--- a/test/github_pullrequest_concurrency_multiplepr_test.go
+++ b/test/github_pullrequest_concurrency_multiplepr_test.go
@@ -46,7 +46,7 @@ func TestGithubSecondPullRequestConcurrencyMultiplePR(t *testing.T) {
runcnx.Clients.Log.Infof("Starting %d pipelineruns, (numberOfPullRequest=%d*numberOfPipelineRuns=%d) + (numberOfPullRequest=%d*numberOfRetests=%d*numberOfPipelineRuns=%d) Should end after clean up (maxKeepRun=%d) with %d",
allPipelinesRunsCnt, numberOfPullRequest, numberOfPipelineRuns, numberOfPullRequest, numberOfRetests, numberOfPipelineRuns, maxKeepRun, allPipelinesRunAfterCleanUp)
- repoinfo, resp, err := ghcnx.Client.Repositories.Get(ctx, opts.Organization, opts.Repo)
+ repoinfo, resp, err := ghcnx.Client().Repositories.Get(ctx, opts.Organization, opts.Repo)
assert.NilError(t, err)
if resp != nil && resp.StatusCode == http.StatusNotFound {
t.Errorf("Repository %s not found in %s", opts.Organization, opts.Repo)
@@ -74,7 +74,7 @@ func TestGithubSecondPullRequestConcurrencyMultiplePR(t *testing.T) {
targetRefName := fmt.Sprintf("refs/heads/%s",
names.SimpleNameGenerator.RestrictLengthWithRandomSuffix("pac-e2e-test"))
- sha, vref, err := tgithub.PushFilesToRef(ctx, ghcnx.Client, logmsg, repoinfo.GetDefaultBranch(), targetRefName,
+ sha, vref, err := tgithub.PushFilesToRef(ctx, ghcnx.Client(), logmsg, repoinfo.GetDefaultBranch(), targetRefName,
opts.Organization, opts.Repo, entries)
assert.NilError(t, err)
runcnx.Clients.Log.Infof("Commit %s has been created and pushed to %s", sha, vref.GetURL())
@@ -98,7 +98,7 @@ func TestGithubSecondPullRequestConcurrencyMultiplePR(t *testing.T) {
// send some retest to spice things up on concurrency and test the maxKeepRun
for i := 0; i < numberOfRetests; i++ {
for _, g := range allPullRequests {
- _, _, err := g.Provider.Client.Issues.CreateComment(ctx,
+ _, _, err := g.Provider.Client().Issues.CreateComment(ctx,
g.Options.Organization,
g.Options.Repo, g.PRNumber,
&github.IssueComment{Body: github.Ptr("/retest")})
diff --git a/test/github_pullrequest_concurrency_test.go b/test/github_pullrequest_concurrency_test.go
index a385135d8..bf2b67e7f 100644
--- a/test/github_pullrequest_concurrency_test.go
+++ b/test/github_pullrequest_concurrency_test.go
@@ -154,7 +154,7 @@ func setupGithubConcurrency(ctx context.Context, t *testing.T, maxNumberOfConcur
logmsg := fmt.Sprintf("Testing %s with Github APPS integration on %s", label, targetNS)
runcnx.Clients.Log.Info(logmsg)
- repoinfo, resp, err := ghcnx.Client.Repositories.Get(ctx, opts.Organization, opts.Repo)
+ repoinfo, resp, err := ghcnx.Client().Repositories.Get(ctx, opts.Organization, opts.Repo)
assert.NilError(t, err)
if resp != nil && resp.StatusCode == http.StatusNotFound {
t.Errorf("Repository %s not found in %s", opts.Organization, opts.Repo)
@@ -178,7 +178,7 @@ func setupGithubConcurrency(ctx context.Context, t *testing.T, maxNumberOfConcur
targetRefName := fmt.Sprintf("refs/heads/%s",
names.SimpleNameGenerator.RestrictLengthWithRandomSuffix("pac-e2e-test"))
- sha, vref, err := tgithub.PushFilesToRef(ctx, ghcnx.Client, logmsg, repoinfo.GetDefaultBranch(), targetRefName,
+ sha, vref, err := tgithub.PushFilesToRef(ctx, ghcnx.Client(), logmsg, repoinfo.GetDefaultBranch(), targetRefName,
opts.Organization, opts.Repo, entries)
assert.NilError(t, err)
runcnx.Clients.Log.Infof("Commit %s has been created and pushed to %s", sha, vref.GetURL())
diff --git a/test/github_pullrequest_oktotest_test.go b/test/github_pullrequest_oktotest_test.go
index 4bed744f1..220c79f0b 100644
--- a/test/github_pullrequest_oktotest_test.go
+++ b/test/github_pullrequest_oktotest_test.go
@@ -33,7 +33,7 @@ func TestGithubPullRequestOkToTest(t *testing.T) {
g.RunPullRequest(ctx, t)
defer g.TearDown(ctx, t)
- repoinfo, resp, err := g.Provider.Client.Repositories.Get(ctx, g.Options.Organization, g.Options.Repo)
+ repoinfo, resp, err := g.Provider.Client().Repositories.Get(ctx, g.Options.Organization, g.Options.Repo)
assert.NilError(t, err)
if resp != nil && resp.StatusCode == http.StatusNotFound {
t.Errorf("Repository %s not found in %s", g.Options.Organization, g.Options.Repo)
diff --git a/test/github_pullrequest_rerequest_test.go b/test/github_pullrequest_rerequest_test.go
index 3aaa23472..06f7fca8c 100644
--- a/test/github_pullrequest_rerequest_test.go
+++ b/test/github_pullrequest_rerequest_test.go
@@ -34,7 +34,7 @@ func TestGithubPullRerequest(t *testing.T) {
g.RunPullRequest(ctx, t)
defer g.TearDown(ctx, t)
- repoinfo, resp, err := g.Provider.Client.Repositories.Get(ctx, g.Options.Organization, g.Options.Repo)
+ repoinfo, resp, err := g.Provider.Client().Repositories.Get(ctx, g.Options.Organization, g.Options.Repo)
assert.NilError(t, err)
if resp != nil && resp.StatusCode == http.StatusNotFound {
t.Errorf("Repository %s not found in %s", g.Options.Organization, g.Options.Repo)
diff --git a/test/github_pullrequest_retest_test.go b/test/github_pullrequest_retest_test.go
index 40d80196e..c7c29521c 100644
--- a/test/github_pullrequest_retest_test.go
+++ b/test/github_pullrequest_retest_test.go
@@ -35,7 +35,7 @@ func TestGithubSecondPullRequestGitopsCommentRetest(t *testing.T) {
defer g.TearDown(ctx, t)
g.Cnx.Clients.Log.Infof("Creating /retest in PullRequest")
- _, _, err := g.Provider.Client.Issues.CreateComment(ctx,
+ _, _, err := g.Provider.Client().Issues.CreateComment(ctx,
g.Options.Organization,
g.Options.Repo, g.PRNumber,
&github.IssueComment{Body: github.Ptr("/retest")})
@@ -76,7 +76,7 @@ func TestGithubSecondPullRequestGitopsCommentCancel(t *testing.T) {
assert.Equal(t, len(pruns.Items), 2)
g.Cnx.Clients.Log.Info("/test pr-gitops-comment on Pull Request before canceling")
- _, _, err = g.Provider.Client.Issues.CreateComment(ctx,
+ _, _, err = g.Provider.Client().Issues.CreateComment(ctx,
g.Options.Organization,
g.Options.Repo,
g.PRNumber,
@@ -94,7 +94,7 @@ func TestGithubSecondPullRequestGitopsCommentCancel(t *testing.T) {
assert.NilError(t, err)
g.Cnx.Clients.Log.Infof("/cancel pr-gitops-comment on Pull Request")
- _, _, err = g.Provider.Client.Issues.CreateComment(ctx,
+ _, _, err = g.Provider.Client().Issues.CreateComment(ctx,
g.Options.Organization,
g.Options.Repo, g.PRNumber,
&github.IssueComment{Body: github.Ptr("/cancel pr-gitops-comment")})
diff --git a/test/github_pullrequest_test.go b/test/github_pullrequest_test.go
index 82008fb13..f7eee307c 100644
--- a/test/github_pullrequest_test.go
+++ b/test/github_pullrequest_test.go
@@ -89,7 +89,7 @@ func TestGithubPullRequestOnLabel(t *testing.T) {
time.Sleep(5 * time.Second)
g.Cnx.Clients.Log.Infof("Creating a label bug on PullRequest")
- _, _, err := g.Provider.Client.Issues.AddLabelsToIssue(ctx,
+ _, _, err := g.Provider.Client().Issues.AddLabelsToIssue(ctx,
g.Options.Organization,
g.Options.Repo, g.PRNumber,
[]string{"bug"})
@@ -109,7 +109,7 @@ func TestGithubPullRequestOnLabel(t *testing.T) {
resp := &github.Response{}
counter := 0
for {
- res, resp, err = g.Provider.Client.Checks.ListCheckRunsForRef(ctx, g.Options.Organization, g.Options.Repo, g.SHA, &github.ListCheckRunsOptions{
+ res, resp, err = g.Provider.Client().Checks.ListCheckRunsForRef(ctx, g.Options.Organization, g.Options.Repo, g.SHA, &github.ListCheckRunsOptions{
AppID: g.Provider.ApplicationID,
ListOptions: opt,
})
@@ -177,7 +177,7 @@ func TestGithubPullRequestSecondBadYaml(t *testing.T) {
var err error
counter := 0
for {
- res, resp, err = g.Provider.Client.Checks.ListCheckRunsForRef(ctx, g.Options.Organization, g.Options.Repo, g.SHA, &github.ListCheckRunsOptions{
+ res, resp, err = g.Provider.Client().Checks.ListCheckRunsForRef(ctx, g.Options.Organization, g.Options.Repo, g.SHA, &github.ListCheckRunsOptions{
AppID: g.Provider.ApplicationID,
ListOptions: opt,
})
@@ -222,7 +222,7 @@ func TestGithubPullRequestInvalidSpecValues(t *testing.T) {
var err error
counter := 0
for {
- res, resp, err = g.Provider.Client.Checks.ListCheckRunsForRef(ctx, g.Options.Organization, g.Options.Repo, g.SHA, &github.ListCheckRunsOptions{
+ res, resp, err = g.Provider.Client().Checks.ListCheckRunsForRef(ctx, g.Options.Organization, g.Options.Repo, g.SHA, &github.ListCheckRunsOptions{
AppID: g.Provider.ApplicationID,
Status: github.Ptr("completed"),
ListOptions: opt,
@@ -260,7 +260,7 @@ func TestGithubSecondTestExplicitelyNoMatchedPipelineRun(t *testing.T) {
defer g.TearDown(ctx, t)
g.Cnx.Clients.Log.Infof("Creating /test no-match on PullRequest")
- _, _, err := g.Provider.Client.Issues.CreateComment(ctx,
+ _, _, err := g.Provider.Client().Issues.CreateComment(ctx,
g.Options.Organization,
g.Options.Repo, g.PRNumber,
&github.IssueComment{Body: github.Ptr("/test no-match")})
@@ -298,7 +298,7 @@ func TestGithubSecondCancelInProgress(t *testing.T) {
time.Sleep(10 * time.Second)
g.Cnx.Clients.Log.Infof("Creating /retest on PullRequest")
- _, _, err = g.Provider.Client.Issues.CreateComment(ctx, g.Options.Organization, g.Options.Repo, g.PRNumber,
+ _, _, err = g.Provider.Client().Issues.CreateComment(ctx, g.Options.Organization, g.Options.Repo, g.PRNumber,
&github.IssueComment{Body: github.Ptr("/retest")})
assert.NilError(t, err)
@@ -369,7 +369,7 @@ func TestGithubSecondCancelInProgressPRClosed(t *testing.T) {
assert.NilError(t, err)
g.Cnx.Clients.Log.Infof("Closing the PullRequest")
- _, _, err = g.Provider.Client.PullRequests.Edit(ctx, g.Options.Organization, g.Options.Repo, g.PRNumber, &github.PullRequest{
+ _, _, err = g.Provider.Client().PullRequests.Edit(ctx, g.Options.Organization, g.Options.Repo, g.PRNumber, &github.PullRequest{
State: github.Ptr("closed"),
})
assert.NilError(t, err)
@@ -385,7 +385,7 @@ func TestGithubSecondCancelInProgressPRClosed(t *testing.T) {
assert.Equal(t, prs.Items[0].GetStatusCondition().GetCondition(apis.ConditionSucceeded).GetReason(), "Cancelled", "should have been canceled")
- res, resp, err := g.Provider.Client.Checks.ListCheckRunsForRef(ctx, g.Options.Organization, g.Options.Repo, g.SHA, &github.ListCheckRunsOptions{
+ res, resp, err := g.Provider.Client().Checks.ListCheckRunsForRef(ctx, g.Options.Organization, g.Options.Repo, g.SHA, &github.ListCheckRunsOptions{
AppID: g.Provider.ApplicationID,
ListOptions: github.ListOptions{},
})
diff --git a/test/github_pullrequest_test_comment_test.go b/test/github_pullrequest_test_comment_test.go
index cccac2184..ccb4f52c5 100644
--- a/test/github_pullrequest_test_comment_test.go
+++ b/test/github_pullrequest_test_comment_test.go
@@ -32,7 +32,7 @@ func TestGithubPullRequestTest(t *testing.T) {
defer g.TearDown(ctx, t)
g.Cnx.Clients.Log.Infof("Creating /test in PullRequest")
- _, _, err := g.Provider.Client.Issues.CreateComment(ctx,
+ _, _, err := g.Provider.Client().Issues.CreateComment(ctx,
g.Options.Organization,
g.Options.Repo, g.PRNumber,
&github.IssueComment{Body: github.Ptr("/test pipeline")})
@@ -66,7 +66,7 @@ func TestGithubSecondOnCommentAnnotation(t *testing.T) {
triggerComment := "/hello-world"
g.Cnx.Clients.Log.Infof("Creating %s custom comment on PullRequest", triggerComment)
- _, _, err := g.Provider.Client.Issues.CreateComment(ctx, g.Options.Organization, g.Options.Repo, g.PRNumber,
+ _, _, err := g.Provider.Client().Issues.CreateComment(ctx, g.Options.Organization, g.Options.Repo, g.PRNumber,
&github.IssueComment{Body: github.Ptr(triggerComment)})
assert.NilError(t, err)
sopt := twait.SuccessOpt{
diff --git a/test/github_push_retest_test.go b/test/github_push_retest_test.go
index a345e2540..7ec88bc58 100644
--- a/test/github_push_retest_test.go
+++ b/test/github_push_retest_test.go
@@ -39,7 +39,7 @@ func TestGithubPushRequestGitOpsCommentOnComment(t *testing.T) {
assert.Equal(t, len(pruns.Items), 0)
g.Cnx.Clients.Log.Infof("Running ops comment %s as Push comment", opsComment)
- _, _, err = g.Provider.Client.Repositories.CreateComment(ctx,
+ _, _, err = g.Provider.Client().Repositories.CreateComment(ctx,
g.Options.Organization,
g.Options.Repo, g.SHA,
&github.RepositoryComment{Body: github.Ptr(opsComment)})
@@ -95,7 +95,7 @@ func TestGithubPushRequestGitOpsCommentRetest(t *testing.T) {
assert.Equal(t, len(pruns.Items), 2)
g.Cnx.Clients.Log.Infof("%s on Push Request", comment)
- _, _, err = g.Provider.Client.Repositories.CreateComment(ctx,
+ _, _, err = g.Provider.Client().Repositories.CreateComment(ctx,
g.Options.Organization,
g.Options.Repo, g.SHA,
&github.RepositoryComment{Body: github.Ptr(comment)})
@@ -148,7 +148,7 @@ func TestGithubPushRequestGitOpsCommentCancel(t *testing.T) {
assert.Equal(t, len(pruns.Items), 2)
g.Cnx.Clients.Log.Info("/test pipelinerun-on-push on Push Request before canceling")
- _, _, err = g.Provider.Client.Repositories.CreateComment(ctx,
+ _, _, err = g.Provider.Client().Repositories.CreateComment(ctx,
g.Options.Organization,
g.Options.Repo, g.SHA,
&github.RepositoryComment{Body: github.Ptr("/test pipelinerun-on-push branch:" + g.TargetNamespace)})
@@ -166,7 +166,7 @@ func TestGithubPushRequestGitOpsCommentCancel(t *testing.T) {
comment := "/cancel pipelinerun-on-push branch:" + g.TargetNamespace
g.Cnx.Clients.Log.Infof("%s on Push Request", comment)
- _, _, err = g.Provider.Client.Repositories.CreateComment(ctx,
+ _, _, err = g.Provider.Client().Repositories.CreateComment(ctx,
g.Options.Organization,
g.Options.Repo, g.SHA,
&github.RepositoryComment{Body: github.Ptr(comment)})
diff --git a/test/github_scope_token_to_list_of_private_public_repos_test.go b/test/github_scope_token_to_list_of_private_public_repos_test.go
index 51eef9b89..8ee55a033 100644
--- a/test/github_scope_token_to_list_of_private_public_repos_test.go
+++ b/test/github_scope_token_to_list_of_private_public_repos_test.go
@@ -105,7 +105,7 @@ func verifyGHTokenScope(t *testing.T, remoteTaskURL, remoteTaskName string, data
})
assert.NilError(t, err)
- repoinfo, resp, err := ghcnx.Client.Repositories.Get(ctx, opts.Organization, opts.Repo)
+ repoinfo, resp, err := ghcnx.Client().Repositories.Get(ctx, opts.Organization, opts.Repo)
assert.NilError(t, err)
if resp != nil && resp.StatusCode == http.StatusNotFound {
t.Errorf("Repository %s not found in %s", opts.Organization, opts.Repo)
@@ -150,7 +150,7 @@ func verifyGHTokenScope(t *testing.T, remoteTaskURL, remoteTaskName string, data
targetRefName := fmt.Sprintf("refs/heads/%s",
names.SimpleNameGenerator.RestrictLengthWithRandomSuffix("pac-e2e-test"))
- sha, vref, err := tgithub.PushFilesToRef(ctx, ghcnx.Client, "TestPullRequestRemoteAnnotations - "+targetRefName, repoinfo.GetDefaultBranch(), targetRefName, opts.Organization, opts.Repo, entries)
+ sha, vref, err := tgithub.PushFilesToRef(ctx, ghcnx.Client(), "TestPullRequestRemoteAnnotations - "+targetRefName, repoinfo.GetDefaultBranch(), targetRefName, opts.Organization, opts.Repo, entries)
assert.NilError(t, err)
runcnx.Clients.Log.Infof("Commit %s has been created and pushed to %s", sha, vref.GetURL())
diff --git a/test/github_tkn_pac_cli_test.go b/test/github_tkn_pac_cli_test.go
index 0b0604a4a..9a99bb01e 100644
--- a/test/github_tkn_pac_cli_test.go
+++ b/test/github_tkn_pac_cli_test.go
@@ -53,7 +53,7 @@ spec:
`, targetNS, options.MainBranch, triggertype.PullRequest.String()),
}
- repoinfo, resp, err := ghprovider.Client.Repositories.Get(ctx, opts.Organization, opts.Repo)
+ repoinfo, resp, err := ghprovider.Client().Repositories.Get(ctx, opts.Organization, opts.Repo)
assert.NilError(t, err)
if resp != nil && resp.StatusCode == http.StatusNotFound {
t.Errorf("Repository %s not found in %s", opts.Organization, opts.Repo)
@@ -85,7 +85,7 @@ spec:
targetRefName := fmt.Sprintf("refs/heads/%s",
names.SimpleNameGenerator.RestrictLengthWithRandomSuffix("pac-e2e-test"))
- sha, vref, err := tgithub.PushFilesToRef(ctx, ghprovider.Client, "TestPacCli - "+targetRefName, repoinfo.GetDefaultBranch(), targetRefName, opts.Organization, opts.Repo, entries)
+ sha, vref, err := tgithub.PushFilesToRef(ctx, ghprovider.Client(), "TestPacCli - "+targetRefName, repoinfo.GetDefaultBranch(), targetRefName, opts.Organization, opts.Repo, entries)
assert.NilError(t, err)
runcnx.Clients.Log.Infof("Commit %s has been created and pushed to %s", sha, vref.GetURL())
diff --git a/test/gitlab_delete_tag_event_test.go b/test/gitlab_delete_tag_event_test.go
index 41c35c55c..a21a7c47e 100644
--- a/test/gitlab_delete_tag_event_test.go
+++ b/test/gitlab_delete_tag_event_test.go
@@ -26,7 +26,7 @@ func TestGitlabDeleteTagEvent(t *testing.T) {
assert.NilError(t, err)
runcnx.Clients.Log.Info("Testing with Gitlab")
- projectinfo, resp, err := glprovider.Client.Projects.GetProject(opts.ProjectID, nil)
+ projectinfo, resp, err := glprovider.Client().Projects.GetProject(opts.ProjectID, nil)
assert.NilError(t, err)
if resp != nil && resp.StatusCode == http.StatusNotFound {
t.Errorf("Repository %s not found in %s", opts.Organization, opts.Repo)
@@ -37,14 +37,14 @@ func TestGitlabDeleteTagEvent(t *testing.T) {
assert.NilError(t, err)
tagName := names.SimpleNameGenerator.RestrictLengthWithRandomSuffix("v1.0")
- err = tgitlab.CreateTag(glprovider.Client, projectinfo.ID, tagName)
+ err = tgitlab.CreateTag(glprovider.Client(), projectinfo.ID, tagName)
// if something goes wrong in creating tag and tag remains in
// repository CleanTag will clear that and doesn't throw any error.
- defer tgitlab.CleanTag(glprovider.Client, projectinfo.ID, tagName)
+ defer tgitlab.CleanTag(glprovider.Client(), projectinfo.ID, tagName)
assert.NilError(t, err)
runcnx.Clients.Log.Infof("Created Tag %s in %s repository", tagName, projectinfo.Name)
- err = tgitlab.DeleteTag(glprovider.Client, projectinfo.ID, tagName)
+ err = tgitlab.DeleteTag(glprovider.Client(), projectinfo.ID, tagName)
assert.NilError(t, err)
runcnx.Clients.Log.Infof("Deleted Tag %s in %s repository", tagName, projectinfo.Name)
diff --git a/test/gitlab_incoming_webhook_test.go b/test/gitlab_incoming_webhook_test.go
index bd990fbcd..25a95d2bb 100644
--- a/test/gitlab_incoming_webhook_test.go
+++ b/test/gitlab_incoming_webhook_test.go
@@ -36,7 +36,7 @@ func TestGitlabIncomingWebhook(t *testing.T) {
ctx, err = cctx.GetControllerCtxInfo(ctx, runcnx)
assert.NilError(t, err)
runcnx.Clients.Log.Info("Testing with Gitlab")
- projectinfo, resp, err := glprovider.Client.Projects.GetProject(opts.ProjectID, nil)
+ projectinfo, resp, err := glprovider.Client().Projects.GetProject(opts.ProjectID, nil)
assert.NilError(t, err)
if resp != nil && resp.StatusCode == http.StatusNotFound {
t.Errorf("Repository %s not found in %s", opts.Organization, opts.Repo)
diff --git a/test/gitlab_merge_request_test.go b/test/gitlab_merge_request_test.go
index 0b147a5f8..96f6b4e9e 100644
--- a/test/gitlab_merge_request_test.go
+++ b/test/gitlab_merge_request_test.go
@@ -38,7 +38,7 @@ func TestGitlabMergeRequest(t *testing.T) {
assert.NilError(t, err)
runcnx.Clients.Log.Info("Testing with Gitlab")
- projectinfo, resp, err := glprovider.Client.Projects.GetProject(opts.ProjectID, nil)
+ projectinfo, resp, err := glprovider.Client().Projects.GetProject(opts.ProjectID, nil)
assert.NilError(t, err)
if resp != nil && resp.StatusCode == http.StatusNotFound {
t.Errorf("Repository %s not found in %s", opts.Organization, opts.Repo)
@@ -71,7 +71,7 @@ func TestGitlabMergeRequest(t *testing.T) {
runcnx.Clients.Log.Infof("Branch %s has been created and pushed with files", targetRefName)
mrTitle := "TestMergeRequest - " + targetRefName
- mrID, err := tgitlab.CreateMR(glprovider.Client, opts.ProjectID, targetRefName, projectinfo.DefaultBranch, mrTitle)
+ mrID, err := tgitlab.CreateMR(glprovider.Client(), opts.ProjectID, targetRefName, projectinfo.DefaultBranch, mrTitle)
assert.NilError(t, err)
runcnx.Clients.Log.Infof("MergeRequest %s/-/merge_requests/%d has been created", projectinfo.WebURL, mrID)
defer tgitlab.TearDown(ctx, t, runcnx, glprovider, mrID, targetRefName, targetNS, opts.ProjectID)
@@ -102,7 +102,7 @@ func TestGitlabMergeRequest(t *testing.T) {
}
runcnx.Clients.Log.Infof("Sending /retest comment on MergeRequest %s/-/merge_requests/%d", projectinfo.WebURL, mrID)
- _, _, err = glprovider.Client.Notes.CreateMergeRequestNote(opts.ProjectID, mrID, &clientGitlab.CreateMergeRequestNoteOptions{
+ _, _, err = glprovider.Client().Notes.CreateMergeRequestNote(opts.ProjectID, mrID, &clientGitlab.CreateMergeRequestNoteOptions{
Body: clientGitlab.Ptr("/retest"),
})
assert.NilError(t, err)
@@ -117,7 +117,7 @@ func TestGitlabMergeRequest(t *testing.T) {
runcnx.Clients.Log.Info("Checking that PAC has posted successful comments for all PR that has been tested")
twait.Succeeded(ctx, t, runcnx, opts, sopt)
- notes, _, err := glprovider.Client.Notes.ListMergeRequestNotes(opts.ProjectID, mrID, nil)
+ notes, _, err := glprovider.Client().Notes.ListMergeRequestNotes(opts.ProjectID, mrID, nil)
assert.NilError(t, err)
successCommentsPost := 0
for _, n := range notes {
@@ -139,7 +139,7 @@ func TestGitlabOnLabel(t *testing.T) {
assert.NilError(t, err)
runcnx.Clients.Log.Info("Testing with Gitlab")
- projectinfo, resp, err := glprovider.Client.Projects.GetProject(opts.ProjectID, nil)
+ projectinfo, resp, err := glprovider.Client().Projects.GetProject(opts.ProjectID, nil)
assert.NilError(t, err)
if resp != nil && resp.StatusCode == http.StatusNotFound {
t.Errorf("Repository %s not found in %s", opts.Organization, opts.Repo)
@@ -169,7 +169,7 @@ func TestGitlabOnLabel(t *testing.T) {
runcnx.Clients.Log.Infof("Branch %s has been created and pushed with files", targetRefName)
mrTitle := "TestMergeRequest - " + targetRefName
- mrID, err := tgitlab.CreateMR(glprovider.Client, opts.ProjectID, targetRefName, projectinfo.DefaultBranch, mrTitle)
+ mrID, err := tgitlab.CreateMR(glprovider.Client(), opts.ProjectID, targetRefName, projectinfo.DefaultBranch, mrTitle)
assert.NilError(t, err)
runcnx.Clients.Log.Infof("MergeRequest %s/-/merge_requests/%d has been created", projectinfo.WebURL, mrID)
defer tgitlab.TearDown(ctx, t, runcnx, glprovider, mrID, targetRefName, targetNS, opts.ProjectID)
@@ -181,7 +181,7 @@ func TestGitlabOnLabel(t *testing.T) {
assert.Assert(t, len(prsNew.Items) == 0)
// now add a Label
- mr, _, err := glprovider.Client.MergeRequests.UpdateMergeRequest(opts.ProjectID, mrID, &clientGitlab.UpdateMergeRequestOptions{
+ mr, _, err := glprovider.Client().MergeRequests.UpdateMergeRequest(opts.ProjectID, mrID, &clientGitlab.UpdateMergeRequestOptions{
Labels: &clientGitlab.LabelOptions{"bug"},
})
assert.NilError(t, err)
@@ -209,7 +209,7 @@ func TestGitlabOnComment(t *testing.T) {
assert.NilError(t, err)
runcnx.Clients.Log.Info("Testing Gitlab on Comment matches")
- projectinfo, resp, err := glprovider.Client.Projects.GetProject(opts.ProjectID, nil)
+ projectinfo, resp, err := glprovider.Client().Projects.GetProject(opts.ProjectID, nil)
assert.NilError(t, err)
if resp != nil && resp.StatusCode == http.StatusNotFound {
t.Errorf("Repository %s not found in %s", opts.Organization, opts.Repo)
@@ -238,12 +238,12 @@ func TestGitlabOnComment(t *testing.T) {
runcnx.Clients.Log.Infof("Branch %s has been created and pushed with files", targetRefName)
mrTitle := "TestMergeRequest - " + targetRefName
- mrID, err := tgitlab.CreateMR(glprovider.Client, opts.ProjectID, targetRefName, projectinfo.DefaultBranch, mrTitle)
+ mrID, err := tgitlab.CreateMR(glprovider.Client(), opts.ProjectID, targetRefName, projectinfo.DefaultBranch, mrTitle)
assert.NilError(t, err)
runcnx.Clients.Log.Infof("MergeRequest %s/-/merge_requests/%d has been created", projectinfo.WebURL, mrID)
defer tgitlab.TearDown(ctx, t, runcnx, glprovider, mrID, targetRefName, targetNS, opts.ProjectID)
- note, _, err := glprovider.Client.Notes.CreateMergeRequestNote(opts.ProjectID, mrID, &clientGitlab.CreateMergeRequestNoteOptions{
+ note, _, err := glprovider.Client().Notes.CreateMergeRequestNote(opts.ProjectID, mrID, &clientGitlab.CreateMergeRequestNoteOptions{
Body: github.Ptr(triggerComment),
})
assert.NilError(t, err)
@@ -258,7 +258,7 @@ func TestGitlabOnComment(t *testing.T) {
twait.Succeeded(ctx, t, runcnx, opts, sopt)
// get pull request info
- mr, _, err := glprovider.Client.MergeRequests.GetMergeRequest(opts.ProjectID, mrID, nil)
+ mr, _, err := glprovider.Client().MergeRequests.GetMergeRequest(opts.ProjectID, mrID, nil)
assert.NilError(t, err)
waitOpts := twait.Opts{
@@ -286,7 +286,7 @@ func TestGitlabCancelInProgressOnChange(t *testing.T) {
ctx, err = cctx.GetControllerCtxInfo(ctx, runcnx)
assert.NilError(t, err)
runcnx.Clients.Log.Info("Testing Gitlab cancel in progress on pr close")
- projectinfo, resp, err := glprovider.Client.Projects.GetProject(opts.ProjectID, nil)
+ projectinfo, resp, err := glprovider.Client().Projects.GetProject(opts.ProjectID, nil)
assert.NilError(t, err)
if resp != nil && resp.StatusCode == http.StatusNotFound {
t.Errorf("Repository %s not found in %s", opts.Organization, opts.Repo)
@@ -316,7 +316,7 @@ func TestGitlabCancelInProgressOnChange(t *testing.T) {
oldSha := scm.PushFilesToRefGit(t, scmOpts, entries)
runcnx.Clients.Log.Infof("Branch %s has been created and pushed with files", targetRefName)
- mrID, err := tgitlab.CreateMR(glprovider.Client, opts.ProjectID, targetRefName, projectinfo.DefaultBranch, mrTitle)
+ mrID, err := tgitlab.CreateMR(glprovider.Client(), opts.ProjectID, targetRefName, projectinfo.DefaultBranch, mrTitle)
assert.NilError(t, err)
runcnx.Clients.Log.Infof("MergeRequest %s/-/merge_requests/%d has been created", projectinfo.WebURL, mrID)
defer tgitlab.TearDown(ctx, t, runcnx, glprovider, mrID, targetRefName, targetNS, opts.ProjectID)
@@ -371,7 +371,7 @@ func TestGitlabCancelInProgressOnPRClose(t *testing.T) {
ctx, err = cctx.GetControllerCtxInfo(ctx, runcnx)
assert.NilError(t, err)
runcnx.Clients.Log.Info("Testing Gitlab cancel in progress on pr close")
- projectinfo, resp, err := glprovider.Client.Projects.GetProject(opts.ProjectID, nil)
+ projectinfo, resp, err := glprovider.Client().Projects.GetProject(opts.ProjectID, nil)
assert.NilError(t, err)
if resp != nil && resp.StatusCode == http.StatusNotFound {
t.Errorf("Repository %s not found in %s", opts.Organization, opts.Repo)
@@ -401,7 +401,7 @@ func TestGitlabCancelInProgressOnPRClose(t *testing.T) {
sha := scm.PushFilesToRefGit(t, scmOpts, entries)
runcnx.Clients.Log.Infof("Branch %s has been created and pushed with files", targetRefName)
- mrID, err := tgitlab.CreateMR(glprovider.Client, opts.ProjectID, targetRefName, projectinfo.DefaultBranch, mrTitle)
+ mrID, err := tgitlab.CreateMR(glprovider.Client(), opts.ProjectID, targetRefName, projectinfo.DefaultBranch, mrTitle)
assert.NilError(t, err)
runcnx.Clients.Log.Infof("MergeRequest %s/-/merge_requests/%d has been created", projectinfo.WebURL, mrID)
defer tgitlab.TearDown(ctx, t, runcnx, glprovider, mrID, targetRefName, targetNS, opts.ProjectID)
@@ -416,7 +416,7 @@ func TestGitlabCancelInProgressOnPRClose(t *testing.T) {
}
err = twait.UntilPipelineRunCreated(ctx, runcnx.Clients, waitOpts)
assert.NilError(t, err)
- _, _, err = glprovider.Client.MergeRequests.UpdateMergeRequest(opts.ProjectID, mrID, &clientGitlab.UpdateMergeRequestOptions{
+ _, _, err = glprovider.Client().MergeRequests.UpdateMergeRequest(opts.ProjectID, mrID, &clientGitlab.UpdateMergeRequestOptions{
StateEvent: clientGitlab.Ptr("close"),
})
assert.NilError(t, err)
@@ -444,7 +444,7 @@ func TestGitlabIssueGitopsComment(t *testing.T) {
ctx, err = cctx.GetControllerCtxInfo(ctx, runcnx)
assert.NilError(t, err)
runcnx.Clients.Log.Info("Testing Gitlabs test/retest comments")
- projectinfo, resp, err := glprovider.Client.Projects.GetProject(opts.ProjectID, nil)
+ projectinfo, resp, err := glprovider.Client().Projects.GetProject(opts.ProjectID, nil)
assert.NilError(t, err)
if resp != nil && resp.StatusCode == http.StatusNotFound {
t.Errorf("Repository %s not found in %s", opts.Organization, opts.Repo)
@@ -475,12 +475,12 @@ func TestGitlabIssueGitopsComment(t *testing.T) {
_ = scm.PushFilesToRefGit(t, scmOpts, entries)
runcnx.Clients.Log.Infof("Branch %s has been created and pushed with files", targetRefName)
- mrID, err := tgitlab.CreateMR(glprovider.Client, opts.ProjectID, targetRefName, projectinfo.DefaultBranch, mrTitle)
+ mrID, err := tgitlab.CreateMR(glprovider.Client(), opts.ProjectID, targetRefName, projectinfo.DefaultBranch, mrTitle)
assert.NilError(t, err)
runcnx.Clients.Log.Infof("MergeRequest %s/-/merge_requests/%d has been created", projectinfo.WebURL, mrID)
defer tgitlab.TearDown(ctx, t, runcnx, glprovider, mrID, targetRefName, targetNS, opts.ProjectID)
- _, _, err = glprovider.Client.Notes.CreateMergeRequestNote(opts.ProjectID, mrID, &clientGitlab.CreateMergeRequestNoteOptions{
+ _, _, err = glprovider.Client().Notes.CreateMergeRequestNote(opts.ProjectID, mrID, &clientGitlab.CreateMergeRequestNoteOptions{
Body: clientGitlab.Ptr("/test no-match"),
})
assert.NilError(t, err)
diff --git a/test/gitlab_push_gitops_command_test.go b/test/gitlab_push_gitops_command_test.go
index 8bdc8bc20..7c52bcfab 100644
--- a/test/gitlab_push_gitops_command_test.go
+++ b/test/gitlab_push_gitops_command_test.go
@@ -31,7 +31,7 @@ func TestGitlabGitOpsCommandTestOnPush(t *testing.T) {
ctx, err = cctx.GetControllerCtxInfo(ctx, runcnx)
assert.NilError(t, err)
runcnx.Clients.Log.Info("Testing with Gitlab")
- projectinfo, resp, err := glprovider.Client.Projects.GetProject(opts.ProjectID, nil)
+ projectinfo, resp, err := glprovider.Client().Projects.GetProject(opts.ProjectID, nil)
assert.NilError(t, err)
if resp != nil && resp.StatusCode == http.StatusNotFound {
t.Errorf("Repository %s not found in %s", opts.Organization, opts.Repo)
@@ -60,7 +60,7 @@ func TestGitlabGitOpsCommandTestOnPush(t *testing.T) {
runcnx.Clients.Log.Infof("Branch %s has been created and pushed with files", targetNs)
defer tgitlab.TearDown(ctx, t, runcnx, glprovider, -1, targetNs, targetNs, opts.ProjectID)
- branch, _, err := glprovider.Client.Branches.GetBranch(opts.ProjectID, targetNs)
+ branch, _, err := glprovider.Client().Branches.GetBranch(opts.ProjectID, targetNs)
assert.NilError(t, err)
waitOpts := wait.Opts{
@@ -77,7 +77,7 @@ func TestGitlabGitOpsCommandTestOnPush(t *testing.T) {
commentOpts := &gitlab.PostCommitCommentOptions{
Note: gitlab.Ptr("/test branch:" + targetNs),
}
- cc, _, err := glprovider.Client.Commits.PostCommitComment(opts.ProjectID, branch.Commit.ID, commentOpts)
+ cc, _, err := glprovider.Client().Commits.PostCommitComment(opts.ProjectID, branch.Commit.ID, commentOpts)
assert.NilError(t, err)
runcnx.Clients.Log.Infof("Commit comment %s has been created", cc.Note)
@@ -101,7 +101,7 @@ func TestGitlabGitOpsCommandCancelOnPush(t *testing.T) {
ctx, err = cctx.GetControllerCtxInfo(ctx, runcnx)
assert.NilError(t, err)
runcnx.Clients.Log.Info("Testing with Gitlab")
- projectinfo, resp, err := glprovider.Client.Projects.GetProject(opts.ProjectID, nil)
+ projectinfo, resp, err := glprovider.Client().Projects.GetProject(opts.ProjectID, nil)
assert.NilError(t, err)
if resp != nil && resp.StatusCode == http.StatusNotFound {
t.Errorf("Repository %s not found in %s", opts.Organization, opts.Repo)
@@ -130,13 +130,13 @@ func TestGitlabGitOpsCommandCancelOnPush(t *testing.T) {
runcnx.Clients.Log.Infof("Branch %s has been created and pushed with files", targetNs)
defer tgitlab.TearDown(ctx, t, runcnx, glprovider, -1, targetNs, targetNs, opts.ProjectID)
- branch, _, err := glprovider.Client.Branches.GetBranch(opts.ProjectID, targetNs)
+ branch, _, err := glprovider.Client().Branches.GetBranch(opts.ProjectID, targetNs)
assert.NilError(t, err)
commentOpts := &gitlab.PostCommitCommentOptions{
Note: gitlab.Ptr("/test branch:" + targetNs),
}
- cc, _, err := glprovider.Client.Commits.PostCommitComment(opts.ProjectID, branch.Commit.ID, commentOpts)
+ cc, _, err := glprovider.Client().Commits.PostCommitComment(opts.ProjectID, branch.Commit.ID, commentOpts)
assert.NilError(t, err)
runcnx.Clients.Log.Infof("Commit comment %s has been created", cc.Note)
@@ -159,7 +159,7 @@ func TestGitlabGitOpsCommandCancelOnPush(t *testing.T) {
commentOpts = &gitlab.PostCommitCommentOptions{
Note: gitlab.Ptr("/cancel pipelinerun-on-push branch:" + targetNs),
}
- cc, _, err = glprovider.Client.Commits.PostCommitComment(opts.ProjectID, branch.Commit.ID, commentOpts)
+ cc, _, err = glprovider.Client().Commits.PostCommitComment(opts.ProjectID, branch.Commit.ID, commentOpts)
assert.NilError(t, err)
runcnx.Clients.Log.Infof("Commit comment %s has been created", cc.Note)
diff --git a/test/pkg/bitbucketcloud/crd.go b/test/pkg/bitbucketcloud/crd.go
index abe27388f..12ed3f9d6 100644
--- a/test/pkg/bitbucketcloud/crd.go
+++ b/test/pkg/bitbucketcloud/crd.go
@@ -19,7 +19,7 @@ import (
)
func CreateCRD(ctx context.Context, t *testing.T, bprovider bitbucketcloud.Provider, run *params.Run, opts options.E2E, targetNS string) *bitbucket.Repository {
- repo, err := bprovider.Client.Workspaces.Repositories.Repository.Get(
+ repo, err := bprovider.Client().Workspaces.Repositories.Repository.Get(
&bitbucket.RepositoryOptions{
Owner: opts.Organization,
RepoSlug: opts.Repo,
diff --git a/test/pkg/bitbucketcloud/pr.go b/test/pkg/bitbucketcloud/pr.go
index 1ff06d3e9..f38bd822a 100644
--- a/test/pkg/bitbucketcloud/pr.go
+++ b/test/pkg/bitbucketcloud/pr.go
@@ -30,7 +30,7 @@ func MakePR(t *testing.T, bprovider bitbucketcloud.Provider, runcnx *params.Run,
})
}
- err := bprovider.Client.Workspaces.Repositories.Repository.WriteFileBlob(&bitbucket.RepositoryBlobWriteOptions{
+ err := bprovider.Client().Workspaces.Repositories.Repository.WriteFileBlob(&bitbucket.RepositoryBlobWriteOptions{
Owner: opts.Organization,
RepoSlug: opts.Repo,
Files: bbfiles,
@@ -41,14 +41,14 @@ func MakePR(t *testing.T, bprovider bitbucketcloud.Provider, runcnx *params.Run,
assert.NilError(t, err)
runcnx.Clients.Log.Infof("Using repo %s branch %s", bcrepo.Full_name, targetRefName)
- repobranch, err := bprovider.Client.Repositories.Repository.GetBranch(&bitbucket.RepositoryBranchOptions{
+ repobranch, err := bprovider.Client().Repositories.Repository.GetBranch(&bitbucket.RepositoryBranchOptions{
Owner: opts.Organization,
RepoSlug: opts.Repo,
BranchName: targetRefName,
})
assert.NilError(t, err)
- intf, err := bprovider.Client.Repositories.PullRequests.Create(&bitbucket.PullRequestsOptions{
+ intf, err := bprovider.Client().Repositories.PullRequests.Create(&bitbucket.PullRequestsOptions{
Owner: opts.Organization,
RepoSlug: opts.Repo,
Title: title,
diff --git a/test/pkg/bitbucketcloud/setup.go b/test/pkg/bitbucketcloud/setup.go
index d6bf2223f..b97670855 100644
--- a/test/pkg/bitbucketcloud/setup.go
+++ b/test/pkg/bitbucketcloud/setup.go
@@ -61,7 +61,7 @@ func TearDown(ctx context.Context, t *testing.T, runcnx *params.Run, bprovider b
return
}
runcnx.Clients.Log.Infof("Closing PR #%d", prNumber)
- _, err := bprovider.Client.Repositories.PullRequests.Decline(&bitbucket.PullRequestsOptions{
+ _, err := bprovider.Client().Repositories.PullRequests.Decline(&bitbucket.PullRequestsOptions{
ID: fmt.Sprintf("%d", prNumber),
Owner: opts.Organization,
RepoSlug: opts.Repo,
@@ -72,7 +72,7 @@ func TearDown(ctx context.Context, t *testing.T, runcnx *params.Run, bprovider b
assert.NilError(t, err)
}
runcnx.Clients.Log.Infof("Deleting ref %s", ref)
- err = bprovider.Client.Repositories.Repository.DeleteBranch(
+ err = bprovider.Client().Repositories.Repository.DeleteBranch(
&bitbucket.RepositoryBranchDeleteOptions{
Owner: opts.Organization,
RepoSlug: opts.Repo,
diff --git a/test/pkg/gitea/crd.go b/test/pkg/gitea/crd.go
index 1a1d4abe0..06d336bf5 100644
--- a/test/pkg/gitea/crd.go
+++ b/test/pkg/gitea/crd.go
@@ -13,7 +13,7 @@ import (
// CreateToken creates gitea token with all scopes.
func CreateToken(topts *TestOpts) (string, error) {
- token, _, err := topts.GiteaCNX.Client.CreateAccessToken(gitea.CreateAccessTokenOption{
+ token, _, err := topts.GiteaCNX.Client().CreateAccessToken(gitea.CreateAccessTokenOption{
Name: topts.TargetNS,
Scopes: []gitea.AccessTokenScope{gitea.AccessTokenScopeAll},
})
diff --git a/test/pkg/gitea/scm.go b/test/pkg/gitea/scm.go
index 9f79b5f6d..72f3c728d 100644
--- a/test/pkg/gitea/scm.go
+++ b/test/pkg/gitea/scm.go
@@ -62,7 +62,7 @@ func PushFilesToRefAPI(t *testing.T, topts *TestOpts, entries map[string]string)
Author: gitea.Identity{Name: commitAuthor, Email: commitEmail},
},
}
- fr, _, err := topts.GiteaCNX.Client.CreateFile(topts.Opts.Organization, topts.Opts.Repo, filename, fOpts)
+ fr, _, err := topts.GiteaCNX.Client().CreateFile(topts.Opts.Organization, topts.Opts.Repo, filename, fOpts)
sha = fr.Commit.SHA
assert.NilError(t, err)
}
@@ -166,7 +166,7 @@ func GetGiteaRepo(giteaClient *gitea.Client, user, name string, _ *zap.SugaredLo
}
func CreateTeam(topts *TestOpts, orgName, teamName string) (*gitea.Team, error) {
- team, _, err := topts.GiteaCNX.Client.CreateTeam(orgName, gitea.CreateTeamOption{
+ team, _, err := topts.GiteaCNX.Client().CreateTeam(orgName, gitea.CreateTeamOption{
Permission: gitea.AccessModeWrite,
Units: []gitea.RepoUnitType{
gitea.RepoUnitPulls,
@@ -178,14 +178,14 @@ func CreateTeam(topts *TestOpts, orgName, teamName string) (*gitea.Team, error)
}
func RemoveCommentMatching(topts *TestOpts, commentString *regexp.Regexp) error {
- comments, _, err := topts.GiteaCNX.Client.ListIssueComments(topts.Opts.Organization, topts.Opts.Repo, topts.PullRequest.Index, gitea.ListIssueCommentOptions{})
+ comments, _, err := topts.GiteaCNX.Client().ListIssueComments(topts.Opts.Organization, topts.Opts.Repo, topts.PullRequest.Index, gitea.ListIssueCommentOptions{})
if err != nil {
return err
}
for _, c := range comments {
if commentString.MatchString(c.Body) {
topts.ParamsRun.Clients.Log.Infof("Removing comment %d matching %s", c.ID, commentString.String())
- _, err := topts.GiteaCNX.Client.DeleteIssueComment(topts.Opts.Organization, topts.Opts.Repo, c.ID)
+ _, err := topts.GiteaCNX.Client().DeleteIssueComment(topts.Opts.Organization, topts.Opts.Repo, c.ID)
return err
}
}
@@ -211,7 +211,7 @@ func CreateGiteaUser(giteaClient *gitea.Client, username, password string) (*git
// CreateGiteaUserSecondCnx creates a new user and a new provider for this user.
func CreateGiteaUserSecondCnx(topts *TestOpts, username, password string) (pgitea.Provider, *gitea.User, error) {
- newuser, err := CreateGiteaUser(topts.GiteaCNX.Client, username, password)
+ newuser, err := CreateGiteaUser(topts.GiteaCNX.Client(), username, password)
if err != nil {
return pgitea.Provider{}, newuser, fmt.Errorf("failed to create user: %w", err)
}
@@ -223,7 +223,7 @@ func CreateGiteaUserSecondCnx(topts *TestOpts, username, password string) (pgite
}
func CreateForkPullRequest(t *testing.T, topts *TestOpts, secondcnx pgitea.Provider, accessMode string) *gitea.PullRequest {
- forkrepo, _, err := secondcnx.Client.CreateFork(topts.Opts.Organization, topts.TargetRefName,
+ forkrepo, _, err := secondcnx.Client().CreateFork(topts.Opts.Organization, topts.TargetRefName,
gitea.CreateForkOption{})
assert.NilError(t, err)
topts.ParamsRun.Clients.Log.Infof("Forked repository %s has been created", forkrepo.CloneURL)
@@ -232,7 +232,7 @@ func CreateForkPullRequest(t *testing.T, topts *TestOpts, secondcnx pgitea.Provi
assert.NilError(t, CreateAccess(topts, topts.TargetRefName, accessMode))
}
- pr, _, err := secondcnx.Client.CreatePullRequest(topts.Opts.Organization, topts.TargetRefName,
+ pr, _, err := secondcnx.Client().CreatePullRequest(topts.Opts.Organization, topts.TargetRefName,
gitea.CreatePullRequestOption{
Base: topts.DefaultBranch,
Head: fmt.Sprintf("%s:%s", forkrepo.Owner.UserName, topts.TargetRefName),
@@ -244,7 +244,7 @@ func CreateForkPullRequest(t *testing.T, topts *TestOpts, secondcnx pgitea.Provi
}
func PushToPullRequest(t *testing.T, topts *TestOpts, secondcnx pgitea.Provider, command string) {
- forkuserinfo, _, err := secondcnx.Client.GetMyUserInfo()
+ forkuserinfo, _, err := secondcnx.Client().GetMyUserInfo()
assert.NilError(t, err)
cloneURL, err := scm.MakeGitCloneURL(topts.PullRequest.Head.Repository.HTMLURL, forkuserinfo.UserName, secondcnx.Password)
assert.NilError(t, err)
@@ -269,7 +269,7 @@ func PushToPullRequest(t *testing.T, topts *TestOpts, secondcnx pgitea.Provider,
func CreateAccess(topts *TestOpts, touser, accessMode string) error {
accessmode := gitea.AccessMode(accessMode)
- _, err := topts.GiteaCNX.Client.AddCollaborator(topts.Opts.Organization, topts.Opts.Repo, touser,
+ _, err := topts.GiteaCNX.Client().AddCollaborator(topts.Opts.Organization, topts.Opts.Repo, touser,
gitea.AddCollaboratorOption{
Permission: &accessmode,
})
diff --git a/test/pkg/gitea/setup.go b/test/pkg/gitea/setup.go
index f2aaac0ec..6f22e6fb2 100644
--- a/test/pkg/gitea/setup.go
+++ b/test/pkg/gitea/setup.go
@@ -80,7 +80,7 @@ func TearDown(ctx context.Context, t *testing.T, topts *TestOpts) {
return
}
repository.NSTearDown(ctx, t, topts.ParamsRun, topts.TargetNS)
- _, err := topts.GiteaCNX.Client.DeleteRepo(topts.Opts.Organization, topts.TargetNS)
+ _, err := topts.GiteaCNX.Client().DeleteRepo(topts.Opts.Organization, topts.TargetNS)
if err != nil {
t.Logf("Error deleting gitea repo %s/%s: %s", topts.Opts.Organization, topts.TargetNS, err)
} else {
diff --git a/test/pkg/gitea/test.go b/test/pkg/gitea/test.go
index f9a4ae9eb..e83ffca7d 100644
--- a/test/pkg/gitea/test.go
+++ b/test/pkg/gitea/test.go
@@ -65,7 +65,7 @@ type TestOpts struct {
}
func PostCommentOnPullRequest(t *testing.T, topt *TestOpts, body string) {
- _, _, err := topt.GiteaCNX.Client.CreateIssueComment(topt.Opts.Organization,
+ _, _, err := topt.GiteaCNX.Client().CreateIssueComment(topt.Opts.Organization,
topt.Opts.Repo, topt.PullRequest.Index,
gitea.CreateIssueCommentOption{Body: body})
topt.ParamsRun.Clients.Log.Infof("Posted comment \"%s\" in %s", body, topt.PullRequest.HTMLURL)
@@ -74,7 +74,7 @@ func PostCommentOnPullRequest(t *testing.T, topt *TestOpts, body string) {
func AddLabelToIssue(t *testing.T, topt *TestOpts, label string) {
var targetID int64
- allLabels, _, err := topt.GiteaCNX.Client.ListRepoLabels(topt.Opts.Organization, topt.Opts.Repo, gitea.ListLabelsOptions{})
+ allLabels, _, err := topt.GiteaCNX.Client().ListRepoLabels(topt.Opts.Organization, topt.Opts.Repo, gitea.ListLabelsOptions{})
assert.NilError(t, err)
for _, l := range allLabels {
if l.Name == label {
@@ -83,7 +83,7 @@ func AddLabelToIssue(t *testing.T, topt *TestOpts, label string) {
}
opt := gitea.IssueLabelsOption{Labels: []int64{targetID}}
- _, _, err = topt.GiteaCNX.Client.AddIssueLabels(topt.Opts.Organization, topt.Opts.Repo, topt.PullRequest.Index, opt)
+ _, _, err = topt.GiteaCNX.Client().AddIssueLabels(topt.Opts.Organization, topt.Opts.Repo, topt.PullRequest.Index, opt)
assert.NilError(t, err)
topt.ParamsRun.Clients.Log.Infof("Added label \"%s\" to %s", label, topt.PullRequest.HTMLURL)
}
@@ -132,7 +132,7 @@ func TestPR(t *testing.T, topts *TestOpts) (context.Context, func()) {
topts.DefaultBranch = options.MainBranch
}
- repoInfo, err := CreateGiteaRepo(topts.GiteaCNX.Client, topts.Opts.Organization, topts.TargetRepoName, topts.DefaultBranch, hookURL, topts.OnOrg, topts.ParamsRun.Clients.Log)
+ repoInfo, err := CreateGiteaRepo(topts.GiteaCNX.Client(), topts.Opts.Organization, topts.TargetRepoName, topts.DefaultBranch, hookURL, topts.OnOrg, topts.ParamsRun.Clients.Log)
assert.NilError(t, err)
topts.Opts.Repo = repoInfo.Name
topts.Opts.Organization = repoInfo.Owner.UserName
@@ -203,7 +203,7 @@ func TestPR(t *testing.T, topts *TestOpts) (context.Context, func()) {
topts.ParamsRun.Clients.Log.Infof("Creating PullRequest")
for i := 0; i < 5; i++ {
- if topts.PullRequest, _, err = topts.GiteaCNX.Client.CreatePullRequest(topts.Opts.Organization, repoInfo.Name, gitea.CreatePullRequestOption{
+ if topts.PullRequest, _, err = topts.GiteaCNX.Client().CreatePullRequest(topts.Opts.Organization, repoInfo.Name, gitea.CreatePullRequestOption{
Title: "Test Pull Request - " + topts.TargetRefName,
Head: topts.TargetRefName,
Base: topts.DefaultBranch,
@@ -287,7 +287,7 @@ func NewPR(t *testing.T, topts *TestOpts) func() {
topts.TargetRepoName = topts.TargetRefName
}
- repoInfo, err := GetGiteaRepo(topts.GiteaCNX.Client, topts.Opts.Organization, topts.TargetRepoName, topts.ParamsRun.Clients.Log)
+ repoInfo, err := GetGiteaRepo(topts.GiteaCNX.Client(), topts.Opts.Organization, topts.TargetRepoName, topts.ParamsRun.Clients.Log)
assert.NilError(t, err)
topts.Opts.Repo = repoInfo.Name
topts.Opts.Organization = repoInfo.Owner.UserName
@@ -323,7 +323,7 @@ func NewPR(t *testing.T, topts *TestOpts) func() {
topts.ParamsRun.Clients.Log.Infof("Creating PullRequest")
for i := 0; i < 5; i++ {
- if topts.PullRequest, _, err = topts.GiteaCNX.Client.CreatePullRequest(topts.Opts.Organization, repoInfo.Name, gitea.CreatePullRequestOption{
+ if topts.PullRequest, _, err = topts.GiteaCNX.Client().CreatePullRequest(topts.Opts.Organization, repoInfo.Name, gitea.CreatePullRequestOption{
Title: "Test Pull Request - " + topts.TargetRefName,
Head: topts.TargetRefName,
Base: options.MainBranch,
@@ -377,7 +377,7 @@ func NewPR(t *testing.T, topts *TestOpts) func() {
func WaitForStatus(t *testing.T, topts *TestOpts, ref, forcontext string, onlylatest bool) {
i := 0
if strings.HasPrefix(ref, "heads/") {
- refo, _, err := topts.GiteaCNX.Client.GetRepoRefs(topts.Opts.Organization, topts.Opts.Repo, ref)
+ refo, _, err := topts.GiteaCNX.Client().GetRepoRefs(topts.Opts.Organization, topts.Opts.Repo, ref)
assert.NilError(t, err)
ref = refo[0].Object.SHA
}
@@ -388,7 +388,7 @@ func WaitForStatus(t *testing.T, topts *TestOpts, ref, forcontext string, onlyla
for {
numstatus := 0
// get first sha of tree ref
- statuses, _, err := topts.GiteaCNX.Client.ListStatuses(topts.Opts.Organization, topts.Opts.Repo, ref, gitea.ListStatusesOption{})
+ statuses, _, err := topts.GiteaCNX.Client().ListStatuses(topts.Opts.Organization, topts.Opts.Repo, ref, gitea.ListStatusesOption{})
assert.NilError(t, err)
// sort statuses by id
sort.Slice(statuses, func(i, j int) bool {
@@ -491,7 +491,7 @@ func WaitForPullRequestCommentMatch(t *testing.T, topts *TestOpts) {
i := 0
topts.ParamsRun.Clients.Log.Infof("Looking for regexp \"%s\" in PR comments", topts.Regexp.String())
for {
- comments, _, err := topts.GiteaCNX.Client.ListRepoIssueComments(topts.PullRequest.Base.Repository.Owner.UserName, topts.PullRequest.Base.Repository.Name, gitea.ListIssueCommentOptions{})
+ comments, _, err := topts.GiteaCNX.Client().ListRepoIssueComments(topts.PullRequest.Base.Repository.Owner.UserName, topts.PullRequest.Base.Repository.Name, gitea.ListIssueCommentOptions{})
assert.NilError(t, err)
for _, v := range comments {
if topts.Regexp.MatchString(v.Body) {
diff --git a/test/pkg/github/pr.go b/test/pkg/github/pr.go
index 93867c4fe..1c5380540 100644
--- a/test/pkg/github/pr.go
+++ b/test/pkg/github/pr.go
@@ -90,7 +90,7 @@ func PushFilesToRef(ctx context.Context, client *ghlib.Client, commitMessage, ba
}
func PRCreate(ctx context.Context, cs *params.Run, ghcnx *ghprovider.Provider, owner, repo, targetRef, defaultBranch, title string) (int, error) {
- pr, _, err := ghcnx.Client.PullRequests.Create(ctx, owner, repo, &ghlib.NewPullRequest{
+ pr, _, err := ghcnx.Client().PullRequests.Create(ctx, owner, repo, &ghlib.NewPullRequest{
Title: &title,
Head: &targetRef,
Base: &defaultBranch,
@@ -131,7 +131,7 @@ func (g *PRTest) RunPullRequest(ctx context.Context, t *testing.T) {
g.CommitTitle = fmt.Sprintf("Testing %s with Github APPS integration on %s", g.Label, targetNS)
g.Logger.Info(g.CommitTitle)
- repoinfo, resp, err := ghcnx.Client.Repositories.Get(ctx, opts.Organization, opts.Repo)
+ repoinfo, resp, err := ghcnx.Client().Repositories.Get(ctx, opts.Organization, opts.Repo)
assert.NilError(t, err)
if resp != nil && resp.StatusCode == http.StatusNotFound {
t.Errorf("Repository %s not found in %s", opts.Organization, opts.Repo)
@@ -152,7 +152,7 @@ func (g *PRTest) RunPullRequest(ctx context.Context, t *testing.T) {
targetRefName := fmt.Sprintf("refs/heads/%s",
names.SimpleNameGenerator.RestrictLengthWithRandomSuffix("pac-e2e-test"))
- sha, vref, err := PushFilesToRef(ctx, ghcnx.Client, g.CommitTitle, repoinfo.GetDefaultBranch(), targetRefName,
+ sha, vref, err := PushFilesToRef(ctx, ghcnx.Client(), g.CommitTitle, repoinfo.GetDefaultBranch(), targetRefName,
opts.Organization, opts.Repo, entries)
assert.NilError(t, err)
@@ -188,7 +188,7 @@ func (g *PRTest) TearDown(ctx context.Context, t *testing.T) {
g.Logger.Infof("Closing PR %d", g.PRNumber)
if g.PRNumber != -1 {
state := "closed"
- _, _, err := g.Provider.Client.PullRequests.Edit(ctx,
+ _, _, err := g.Provider.Client().PullRequests.Edit(ctx,
g.Options.Organization, g.Options.Repo, g.PRNumber,
&ghlib.PullRequest{State: &state})
if err != nil {
@@ -201,7 +201,7 @@ func (g *PRTest) TearDown(ctx context.Context, t *testing.T) {
if g.TargetRefName != options.MainBranch {
branch := fmt.Sprintf("heads/%s", filepath.Base(g.TargetRefName))
g.Logger.Infof("Deleting Ref %s", branch)
- _, err := g.Provider.Client.Git.DeleteRef(ctx, g.Options.Organization, g.Options.Repo, branch)
+ _, err := g.Provider.Client().Git.DeleteRef(ctx, g.Options.Organization, g.Options.Repo, branch)
assert.NilError(t, err)
}
}
@@ -226,7 +226,7 @@ func (g *PRTest) RunPushRequest(ctx context.Context, t *testing.T) {
logmsg = fmt.Sprintf("Testing %s with Github APPS integration on %s", g.Label, targetNS)
g.Logger.Info(logmsg)
}
- repoinfo, resp, err := ghcnx.Client.Repositories.Get(ctx, opts.Organization, opts.Repo)
+ repoinfo, resp, err := ghcnx.Client().Repositories.Get(ctx, opts.Organization, opts.Repo)
assert.NilError(t, err)
if resp != nil && resp.StatusCode == http.StatusNotFound {
t.Errorf("Repository %s not found in %s", opts.Organization, opts.Repo)
@@ -255,7 +255,7 @@ func (g *PRTest) RunPushRequest(ctx context.Context, t *testing.T) {
CommitTitle: logmsg,
}
scm.PushFilesToRefGit(t, &scmOpts, entries)
- branch, _, err := ghcnx.Client.Repositories.GetBranch(ctx, opts.Organization, opts.Repo, targetBranch, 1)
+ branch, _, err := ghcnx.Client().Repositories.GetBranch(ctx, opts.Organization, opts.Repo, targetBranch, 1)
assert.NilError(t, err)
sha := branch.GetCommit().GetSHA()
g.Logger.Infof("Commit %s has been created and pushed to %s in branch %s", sha, branch.GetCommit().GetHTMLURL(), branch.GetName())
diff --git a/test/pkg/gitlab/setup.go b/test/pkg/gitlab/setup.go
index 404272f63..28e836488 100644
--- a/test/pkg/gitlab/setup.go
+++ b/test/pkg/gitlab/setup.go
@@ -69,7 +69,7 @@ func TearDown(ctx context.Context, t *testing.T, runcnx *params.Run, glprovider
if mrNumber != -1 {
runcnx.Clients.Log.Infof("Closing PR %d", mrNumber)
- _, _, err := glprovider.Client.MergeRequests.UpdateMergeRequest(projectid, mrNumber,
+ _, _, err := glprovider.Client().MergeRequests.UpdateMergeRequest(projectid, mrNumber,
&gitlab2.UpdateMergeRequestOptions{StateEvent: gitlab2.Ptr("close")})
if err != nil {
t.Fatal(err)
@@ -78,7 +78,7 @@ func TearDown(ctx context.Context, t *testing.T, runcnx *params.Run, glprovider
repository.NSTearDown(ctx, t, runcnx, targetNS)
if ref != "" {
runcnx.Clients.Log.Infof("Deleting Ref %s", ref)
- _, err := glprovider.Client.Branches.DeleteBranch(projectid, ref)
+ _, err := glprovider.Client().Branches.DeleteBranch(projectid, ref)
assert.NilError(t, err)
}
}