From a282df789f7ea41afd2a44f222196cb6bdfc509f Mon Sep 17 00:00:00 2001 From: Jon Ayers Date: Fri, 2 Feb 2024 01:05:00 +0000 Subject: [PATCH] fix: use correct URL --- jfrog/client.go | 2 +- reporter/reporter.go | 18 +++++++++++++++--- reporter/reporter_test.go | 2 +- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/jfrog/client.go b/jfrog/client.go index 5ccb267..ef86636 100644 --- a/jfrog/client.go +++ b/jfrog/client.go @@ -101,7 +101,7 @@ type Image struct { } func (c *client) ResultsURL(img Image, packageID string) string { - return fmt.Sprintf("%s/ui/scans-list/packages-scans/%s/%s/scan-descendants/%s?package_id=%s&version=%s", c.baseURL, img.Repo, img.Package, img.Version, packageID, img.Version) + return fmt.Sprintf("%s/ui/scans-list/packages-scans/%s/scan-descendants/%s?package_id=%s&version=%s", c.baseURL, img.Package, img.Version, packageID, img.Version) } func ParseImage(image string) (Image, error) { diff --git a/reporter/reporter.go b/reporter/reporter.go index ece0d92..d0604d9 100644 --- a/reporter/reporter.go +++ b/reporter/reporter.go @@ -3,6 +3,7 @@ package reporter import ( "context" "fmt" + "time" "golang.org/x/xerrors" @@ -10,6 +11,8 @@ import ( "github.com/coder/coder-xray/jfrog" "github.com/coder/coder/v2/codersdk" + "github.com/coder/coder/v2/codersdk/agentsdk" + "github.com/coder/retry" corev1 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -82,9 +85,18 @@ func (k *K8sReporter) Init(ctx context.Context) error { return codersdk.JFrogXrayScan{}, xerrors.Errorf("fetch scan results: %w", err) } - manifest, err := k.CoderClient.AgentManifest(ctx, agentToken) - if err != nil { - return codersdk.JFrogXrayScan{}, xerrors.Errorf("agent manifest: %w", err) + var manifest agentsdk.Manifest + retryCtx, cancel := context.WithTimeout(ctx, time.Minute*10) + defer cancel() + for r := retry.New(time.Second, 5*time.Second); r.Wait(retryCtx); { + manifest, err = k.CoderClient.AgentManifest(retryCtx, agentToken) + if err == nil { + break + } + if xerrors.Is(err, context.Canceled) { + break + } + log.Warn(ctx, "failed to fetch agent manifest", slog.Error(err)) } log = log.With( diff --git a/reporter/reporter_test.go b/reporter/reporter_test.go index 9f707e1..14a98e0 100644 --- a/reporter/reporter_test.go +++ b/reporter/reporter_test.go @@ -66,7 +66,7 @@ func TestK8SReporter(t *testing.T) { jfrogClient.EXPECT().ResultsURL(img, xrayResult.PackageID) - coderClient.EXPECT().AgentManifest(ctx, expectedAgentToken).Return(agentsdk.Manifest{ + coderClient.EXPECT().AgentManifest(gomock.Any(), expectedAgentToken).Return(agentsdk.Manifest{ WorkspaceID: expectedWorkspaceID, AgentID: expectedAgentID, }, nil)