Skip to content

Commit

Permalink
add flag to limit by number of projects to number of changed files (#…
Browse files Browse the repository at this point in the history
…1846)

* add flag to limit by number of projects to number of changed files

* fix build
  • Loading branch information
motatoes authored Nov 28, 2024
1 parent 59caccc commit c36e2f7
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 26 deletions.
17 changes: 4 additions & 13 deletions backend/config/envgetters.go
Original file line number Diff line number Diff line change
@@ -1,20 +1,11 @@
package config

import (
"fmt"
"os"
"strconv"
)

func GetMaxProjectsCreated() int {
// the maximum number of impacted projects possible for a change
// digger will fail when this number exceeds it
// default value of 0 or negative means unlimited allowed
maxProjects := os.Getenv("DIGGER_MAX_PROJECTS_IMPACTED")
maxProjectsNum, err := strconv.Atoi(maxProjects)
if err != nil {
fmt.Printf("Error converting env var to number: %v\n", err)
return 0
}
return maxProjectsNum
func LimitByNumOfFilesChanged() bool {
// if this flag is set then it will fail if there are more projects impacted than the
// number of files changed
return os.Getenv("DIGGER_LIMIT_MAX_PROJECTS_TO_FILES_CHANGED") == "1"
}
23 changes: 10 additions & 13 deletions backend/controllers/github.go
Original file line number Diff line number Diff line change
Expand Up @@ -402,12 +402,11 @@ func handlePullRequestEvent(gh utils.GithubClientProvider, payload *github.PullR
return nil
}

// ratio of impacted projects to changed files should be less than MAX_RATIO
maxProjects := config2.GetMaxProjectsCreated()
if maxProjects > 0 {
if len(impactedProjects) > maxProjects {
log.Printf("Error the number impacted projects %v exceeds maximum allowed: %v", len(impactedProjects), maxProjects)
commentReporterManager.UpdateComment(fmt.Sprintf(":x: Error the number impacted projects %v exceeds maximum allowed: %v", len(impactedProjects), maxProjects))
// if flag set we dont allow more projects impacted than the number of changed files in PR (safety check)
if config2.LimitByNumOfFilesChanged() {
if len(impactedProjects) > len(changedFiles) {
log.Printf("Error the number impacted projects %v exceeds number of changed files: %v", len(impactedProjects), len(changedFiles))
commentReporterManager.UpdateComment(fmt.Sprintf(":x: Error the number impacted projects %v exceeds number of changed files: %v", len(impactedProjects), len(changedFiles)))
log.Printf("Information about the event:")
log.Printf("GH payload: %v", payload)
log.Printf("PR changed files: %v", changedFiles)
Expand All @@ -420,7 +419,6 @@ func handlePullRequestEvent(gh utils.GithubClientProvider, payload *github.PullR
return fmt.Errorf("error processing event")
}
}

diggerCommand, err := orchestrator_scheduler.GetCommandFromJob(jobsForImpactedProjects[0])
if err != nil {
log.Printf("could not determine digger command from job: %v", jobsForImpactedProjects[0].Commands)
Expand Down Expand Up @@ -792,12 +790,11 @@ func handleIssueCommentEvent(gh utils.GithubClientProvider, payload *github.Issu
}
log.Printf("GitHub IssueComment event converted to Jobs successfully\n")

// ratio of impacted projects to changed files should be less than MAX_RATIO
maxProjects := config2.GetMaxProjectsCreated()
if maxProjects > 0 {
if len(impactedProjects) > maxProjects {
log.Printf("Error the number impacted projects %v exceeds maximum allowed: %v", len(impactedProjects), maxProjects)
commentReporterManager.UpdateComment(fmt.Sprintf(":x: Error the number impacted projects %v exceeds maximum allowed: %v", len(impactedProjects), maxProjects))
// if flag set we dont allow more projects impacted than the number of changed files in PR (safety check)
if config2.LimitByNumOfFilesChanged() {
if len(impactedProjects) > len(changedFiles) {
log.Printf("Error the number impacted projects %v exceeds number of changed files: %v", len(impactedProjects), len(changedFiles))
commentReporterManager.UpdateComment(fmt.Sprintf(":x: Error the number impacted projects %v exceeds number of changed files: %v", len(impactedProjects), len(changedFiles)))
log.Printf("Information about the event:")
log.Printf("GH payload: %v", payload)
log.Printf("PR changed files: %v", changedFiles)
Expand Down

0 comments on commit c36e2f7

Please sign in to comment.