Skip to content

Commit

Permalink
Add the release_phase to RuleEvaluationStatus
Browse files Browse the repository at this point in the history
Signed-off-by: Radoslav Dimitrov <[email protected]>
  • Loading branch information
rdimitrov committed Aug 26, 2024
1 parent cd8f746 commit 4258e55
Show file tree
Hide file tree
Showing 9 changed files with 2,034 additions and 1,979 deletions.
3 changes: 2 additions & 1 deletion database/query/profile_status.sql
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,8 @@ SELECT
WHEN ere.entity_type = 'artifact'::entities THEN ere.artifact_id
WHEN ere.entity_type = 'repository'::entities THEN ere.repository_id
WHEN ere.entity_type = 'pull_request'::entities THEN ere.pull_request_id
END::uuid as entity_id
END::uuid as entity_id,
rt.release_phase as rule_type_release_phase
FROM latest_evaluation_statuses les
INNER JOIN evaluation_rule_entities ere ON ere.id = les.rule_entity_id
INNER JOIN eval_details ed ON ed.id = les.evaluation_history_id
Expand Down
1 change: 1 addition & 0 deletions docs/docs/ref/proto.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions internal/controlplane/handlers_evalstatus.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import (
"github.com/stacklok/minder/internal/db"
"github.com/stacklok/minder/internal/engine/engcontext"
"github.com/stacklok/minder/internal/history"
"github.com/stacklok/minder/internal/ruletypes"
"github.com/stacklok/minder/internal/util"
minderv1 "github.com/stacklok/minder/pkg/api/protobuf/go/minder/v1"
)
Expand Down Expand Up @@ -596,6 +597,11 @@ func buildRuleEvaluationStatusFromDBEvaluation(
nString = eval.RuleTypeName
}

rp, err := ruletypes.GetPBReleasePhaseFromDBReleaseStatus(&eval.RuleTypeReleasePhase)
if err != nil {
return nil, fmt.Errorf("converting release phase: %w", err)
}

return &minderv1.RuleEvaluationStatus{
RuleEvaluationId: eval.RuleEvaluationID.String(),
RuleId: eval.RuleTypeID.String(),
Expand All @@ -615,6 +621,7 @@ func buildRuleEvaluationStatusFromDBEvaluation(
RuleTypeName: eval.RuleTypeName,
Alert: buildEvalResultAlertFromLRERow(&eval),
Severity: sev,
ReleasePhase: rp,
}, nil
}

Expand Down
7 changes: 7 additions & 0 deletions internal/controlplane/handlers_profile.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import (
"github.com/stacklok/minder/internal/engine/entities"
"github.com/stacklok/minder/internal/logger"
prof "github.com/stacklok/minder/internal/profiles"
"github.com/stacklok/minder/internal/ruletypes"
"github.com/stacklok/minder/internal/util"
minderv1 "github.com/stacklok/minder/pkg/api/protobuf/go/minder/v1"
)
Expand Down Expand Up @@ -470,6 +471,11 @@ func (s *Server) getRuleEvalStatus(
}
}

releasePhase, err := ruletypes.GetPBReleasePhaseFromDBReleaseStatus(&dbRuleEvalStat.RuleTypeReleasePhase)
if err != nil {
l.Err(err).Msg("error getting release phase")
}

st := &minderv1.RuleEvaluationStatus{
ProfileId: profileID,
RuleId: dbRuleEvalStat.RuleTypeID.String(),
Expand All @@ -491,6 +497,7 @@ func (s *Server) getRuleEvalStatus(
LastUpdated: timestamppb.New(dbRuleEvalStat.AlertLastUpdated),
},
RemediationLastUpdated: timestamppb.New(dbRuleEvalStat.RemLastUpdated),
ReleasePhase: releasePhase,
}

// If the alert is on and its metadata is valid, parse it and set the URL
Expand Down
5 changes: 4 additions & 1 deletion internal/db/profile_status.sql.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 18 additions & 3 deletions internal/ruletypes/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ func (_ *ruleTypeService) CreateRuleType(
return nil, err
}

releasePhase, err := getRuleTypeReleasePhase(ruleType.GetReleasePhase())
releasePhase, err := GetDBReleaseStatusFromPBReleasePhase(ruleType.GetReleasePhase())
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -220,7 +220,7 @@ func (_ *ruleTypeService) UpdateRuleType(
return nil, err
}

releasePhase, err := getRuleTypeReleasePhase(ruleType.GetReleasePhase())
releasePhase, err := GetDBReleaseStatusFromPBReleasePhase(ruleType.GetReleasePhase())
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -310,7 +310,8 @@ func validateRuleUpdate(existingRecord *db.RuleType, newRuleType *pb.RuleType) e
return nil
}

func getRuleTypeReleasePhase(in pb.RuleTypeReleasePhase) (*db.ReleaseStatus, error) {
// GetDBReleaseStatusFromPBReleasePhase converts a protobuf release phase to a database release status
func GetDBReleaseStatusFromPBReleasePhase(in pb.RuleTypeReleasePhase) (*db.ReleaseStatus, error) {
sev, err := in.InitializedStringValue()
if err != nil {
return nil, errors.Join(ErrRuleTypeInvalid, err)
Expand All @@ -325,3 +326,17 @@ func getRuleTypeReleasePhase(in pb.RuleTypeReleasePhase) (*db.ReleaseStatus, err

return &rel, nil
}

// GetPBReleasePhaseFromDBReleaseStatus converts a database release status to a protobuf release phase
func GetPBReleasePhaseFromDBReleaseStatus(s *db.ReleaseStatus) (pb.RuleTypeReleasePhase, error) {
if s == nil {
return pb.RuleTypeReleasePhase_RULE_TYPE_RELEASE_PHASE_UNSPECIFIED, nil
}

var rel pb.RuleTypeReleasePhase
if err := rel.FromString(string(*s)); err != nil {
return pb.RuleTypeReleasePhase_RULE_TYPE_RELEASE_PHASE_UNSPECIFIED, err
}

return rel, nil
}
4 changes: 4 additions & 0 deletions pkg/api/openapi/minder/v1/minder.swagger.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 4258e55

Please sign in to comment.