@@ -5,13 +5,13 @@ import (
55 "fmt"
66 "time"
77
8+ "workspace-engine/pkg/oapi"
9+ "workspace-engine/svc/controllers/jobdispatch/verification"
10+
811 "github.com/google/uuid"
912 "go.opentelemetry.io/otel/attribute"
1013 "go.opentelemetry.io/otel/codes"
1114 "go.opentelemetry.io/otel/trace"
12- "workspace-engine/pkg/oapi"
13- "workspace-engine/pkg/selector"
14- "workspace-engine/svc/controllers/jobdispatch/verification"
1515)
1616
1717type ReconcileResult struct {
@@ -35,110 +35,13 @@ func getRelease(ctx context.Context, getter Getter, job *oapi.Job) (*oapi.Releas
3535 return release , nil
3636}
3737
38- func getDeployment (
39- ctx context.Context ,
40- getter Getter ,
41- release * oapi.Release ,
42- ) (* oapi.Deployment , error ) {
43- ctx , span := tracer .Start (ctx , "jobdispatch.getDeployment" )
44- defer span .End ()
45-
46- deploymentID := uuid .MustParse (release .Version .DeploymentId )
47- deployment , err := getter .GetDeployment (ctx , deploymentID )
48- if err != nil {
49- return nil , recordErr (span , "get deployment" , err )
50- }
51- return deployment , nil
52- }
53-
54- func getJobAgents (
55- ctx context.Context ,
56- getter Getter ,
57- workspaceID uuid.UUID ,
58- release * oapi.Release ,
59- ) ([]oapi.JobAgent , error ) {
60- ctx , span := tracer .Start (ctx , "jobdispatch.getJobAgents" )
61- defer span .End ()
62-
63- deployment , err := getDeployment (ctx , getter , release )
64- if err != nil {
65- return nil , err
66- }
67-
68- if deployment .JobAgentSelector == "" {
69- return nil , fmt .Errorf ("deployment job agent selector is empty" )
70- }
71-
72- resourceID , err := uuid .Parse (release .ReleaseTarget .ResourceId )
73- if err != nil {
74- return nil , fmt .Errorf ("parse resource id: %w" , err )
75- }
76-
77- resource , err := getter .GetResource (ctx , resourceID )
78- if err != nil {
79- return nil , fmt .Errorf ("get resource: %w" , err )
80- }
81-
82- allAgents , err := getter .ListJobAgentsByWorkspaceID (ctx , workspaceID )
83- if err != nil {
84- return nil , fmt .Errorf ("list job agents: %w" , err )
85- }
86-
87- matched , err := selector .MatchJobAgentsWithResource (
88- ctx ,
89- deployment .JobAgentSelector ,
90- allAgents ,
91- resource ,
92- )
93- if err != nil {
94- return nil , fmt .Errorf ("match job agents: %w" , err )
95- }
96-
97- return matched , nil
98- }
99-
100- func getAgentSpecs (
101- ctx context.Context ,
102- verifier AgentVerifier ,
103- getter Getter ,
104- workspaceID uuid.UUID ,
105- release * oapi.Release ,
106- ) ([]oapi.VerificationMetricSpec , error ) {
107- ctx , span := tracer .Start (ctx , "jobdispatch.getAgentSpecs" )
108- defer span .End ()
109-
110- if verifier == nil {
111- return nil , nil
112- }
113-
114- agents , err := getJobAgents (ctx , getter , workspaceID , release )
115- if err != nil {
116- return nil , err
117- }
118-
119- specs := make ([]oapi.VerificationMetricSpec , 0 )
120- for _ , agent := range agents {
121- agentSpecs , err := verifier .AgentVerifications (agent .Type , agent .Config )
122- if err != nil {
123- return nil , recordErr (
124- span ,
125- fmt .Sprintf ("get agent verifications for agent %s" , agent .Id ),
126- err ,
127- )
128- }
129- specs = append (specs , agentSpecs ... )
130- }
131- return specs , nil
132- }
133-
13438// Reconcile dispatches a job and enqueues verifications for the job.
13539func Reconcile (
13640 ctx context.Context ,
13741 getter Getter ,
13842 setter Setter ,
13943 verifier AgentVerifier ,
14044 dispatcher Dispatcher ,
141- workspaceID uuid.UUID ,
14245 job * oapi.Job ,
14346) (* ReconcileResult , error ) {
14447 ctx , span := tracer .Start (ctx , "jobdispatch.Reconcile" )
@@ -149,29 +52,31 @@ func Reconcile(
14952 return nil , err
15053 }
15154
152- agents , err := getJobAgents (ctx , getter , workspaceID , release )
153- if err != nil {
154- span .RecordError (err )
155- span .SetStatus (codes .Error , err .Error ())
156- return nil , err
157- }
158- if len (agents ) == 0 {
159- span .AddEvent ("no job agents matched selector for deployment" )
160- return & ReconcileResult {}, nil
161- }
162-
16355 releaseTarget := & ReleaseTarget {
16456 DeploymentID : uuid .MustParse (release .ReleaseTarget .DeploymentId ),
16557 EnvironmentID : uuid .MustParse (release .ReleaseTarget .EnvironmentId ),
16658 ResourceID : uuid .MustParse (release .ReleaseTarget .ResourceId ),
16759 }
16860
169- policySpecs , err := getter . GetVerificationPolicies ( ctx , releaseTarget )
61+ agentUUID , err := uuid . Parse ( job . JobAgentId )
17062 if err != nil {
17163 return nil , err
17264 }
17365
174- agentSpecs , err := getAgentSpecs (ctx , verifier , getter , workspaceID , release )
66+ agent , err := getter .GetJobAgent (ctx , agentUUID )
67+ if err != nil {
68+ return nil , err
69+ }
70+
71+ var agentSpecs []oapi.VerificationMetricSpec
72+ if verifier != nil {
73+ agentSpecs , err = verifier .AgentVerifications (agent .Type , agent .Config )
74+ if err != nil {
75+ return nil , err
76+ }
77+ }
78+
79+ policySpecs , err := getter .GetVerificationPolicies (ctx , releaseTarget )
17580 if err != nil {
17681 return nil , err
17782 }
0 commit comments