Skip to content

Commit 2c8e72a

Browse files
authored
fix: Correct repo vulnerability alert logic (#3144)
Signed-off-by: Steve Hipwell <[email protected]>
1 parent 41e7acd commit 2c8e72a

5 files changed

Lines changed: 51 additions & 130 deletions

github/resource_github_organization_ruleset_test.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ resource "github_repository" "test" {
2222
name = "%s"
2323
visibility = "private"
2424
auto_init = true
25-
ignore_vulnerability_alerts_during_read = true
2625
}
2726
2827
resource "github_repository_file" "workflow_file" {

github/resource_github_repository.go

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -402,10 +402,10 @@ func resourceGithubRepository() *schema.Resource {
402402
Description: "Set to 'true' to enable security alerts for vulnerable dependencies. Enabling requires alerts to be enabled on the owner level. (Note for importing: GitHub enables the alerts on all repos by default). Note that vulnerability alerts have not been successfully tested on any GitHub Enterprise instance and may be unavailable in those settings.",
403403
},
404404
"ignore_vulnerability_alerts_during_read": {
405-
Type: schema.TypeBool,
406-
Optional: true,
407-
Default: false,
408-
Description: "Set to true to not call the vulnerability alerts endpoint so the resource can also be used without admin permissions during read.",
405+
Type: schema.TypeBool,
406+
Optional: true,
407+
Default: false,
408+
Deprecated: "This is ignored as the provider now handles lack of permissions automatically.",
409409
},
410410
"full_name": {
411411
Type: schema.TypeString,
@@ -831,6 +831,7 @@ func resourceGithubRepositoryRead(ctx context.Context, d *schema.ResourceData, m
831831
_ = d.Set("node_id", repo.GetNodeID())
832832
_ = d.Set("repo_id", repo.GetID())
833833

834+
// TODO: Validate this behavior as I can see these fields being returned even when archived
834835
// GitHub API doesn't respond following parameters when repository is archived
835836
if !d.Get("archived").(bool) {
836837
_ = d.Set("allow_auto_merge", repo.GetAllowAutoMerge())
@@ -888,18 +889,18 @@ func resourceGithubRepositoryRead(ctx context.Context, d *schema.ResourceData, m
888889
}
889890
}
890891

891-
if !d.Get("ignore_vulnerability_alerts_during_read").(bool) {
892+
if repo.GetSecurityAndAnalysis() != nil {
892893
vulnerabilityAlerts, _, err := client.Repositories.GetVulnerabilityAlerts(ctx, owner, repoName)
893894
if err != nil {
894895
return diag.Errorf("error reading repository vulnerability alerts: %s", err.Error())
895896
}
896897
if err = d.Set("vulnerability_alerts", vulnerabilityAlerts); err != nil {
897898
return diag.FromErr(err)
898899
}
899-
}
900900

901-
if err = d.Set("security_and_analysis", flattenSecurityAndAnalysis(repo.GetSecurityAndAnalysis())); err != nil {
902-
return diag.FromErr(err)
901+
if err = d.Set("security_and_analysis", flattenSecurityAndAnalysis(repo.SecurityAndAnalysis)); err != nil {
902+
return diag.FromErr(err)
903+
}
903904
}
904905

905906
return nil
@@ -1005,11 +1006,13 @@ func resourceGithubRepositoryUpdate(ctx context.Context, d *schema.ResourceData,
10051006
}
10061007
}
10071008

1008-
if v, ok := d.GetOkExists("vulnerability_alerts"); ok { //nolint:staticcheck,SA1019 // We sometimes need to use GetOkExists for booleans
1009-
if val, ok := v.(bool); ok {
1010-
err := updateVulnerabilityAlerts(ctx, client, owner, repoName, val)
1011-
if err != nil {
1012-
return diag.FromErr(err)
1009+
if d.IsNewResource() || d.HasChange("vulnerability_alerts") {
1010+
if v, ok := d.GetOkExists("vulnerability_alerts"); ok { //nolint:staticcheck,SA1019 // We sometimes need to use GetOkExists for booleans
1011+
if val, ok := v.(bool); ok {
1012+
err := updateVulnerabilityAlerts(ctx, client, owner, repoName, val)
1013+
if err != nil {
1014+
return diag.FromErr(err)
1015+
}
10131016
}
10141017
}
10151018
}
@@ -1063,9 +1066,6 @@ func resourceGithubRepositoryImport(ctx context.Context, d *schema.ResourceData,
10631066
if err := d.Set("auto_init", false); err != nil {
10641067
return nil, err
10651068
}
1066-
if err := d.Set("ignore_vulnerability_alerts_during_read", true); err != nil {
1067-
return nil, err
1068-
}
10691069
return []*schema.ResourceData{d}, nil
10701070
}
10711071

github/resource_github_repository_environment_deployment_policy_test.go

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ func TestAccGithubRepositoryEnvironmentDeploymentPolicy(t *testing.T) {
2323
2424
resource "github_repository" "test" {
2525
name = "%s"
26-
ignore_vulnerability_alerts_during_read = true
2726
}
2827
2928
resource "github_repository_environment" "test" {
@@ -90,7 +89,6 @@ func TestAccGithubRepositoryEnvironmentDeploymentPolicy(t *testing.T) {
9089
9190
resource "github_repository" "test" {
9291
name = "%s"
93-
ignore_vulnerability_alerts_during_read = true
9492
}
9593
9694
resource "github_repository_environment" "test" {
@@ -141,7 +139,6 @@ func TestAccGithubRepositoryEnvironmentDeploymentPolicy(t *testing.T) {
141139
142140
resource "github_repository" "test" {
143141
name = "%s"
144-
ignore_vulnerability_alerts_during_read = true
145142
}
146143
147144
resource "github_repository_environment" "test" {
@@ -203,7 +200,6 @@ func TestAccGithubRepositoryEnvironmentDeploymentPolicy(t *testing.T) {
203200
204201
resource "github_repository" "test" {
205202
name = "%s"
206-
ignore_vulnerability_alerts_during_read = true
207203
}
208204
209205
resource "github_repository_environment" "test" {
@@ -270,7 +266,6 @@ func TestAccGithubRepositoryEnvironmentDeploymentPolicy(t *testing.T) {
270266
271267
resource "github_repository" "test" {
272268
name = "%s"
273-
ignore_vulnerability_alerts_during_read = true
274269
}
275270
276271
resource "github_repository_environment" "test" {
@@ -321,7 +316,6 @@ func TestAccGithubRepositoryEnvironmentDeploymentPolicy(t *testing.T) {
321316
322317
resource "github_repository" "test" {
323318
name = "%s"
324-
ignore_vulnerability_alerts_during_read = true
325319
}
326320
327321
resource "github_repository_environment" "test" {
@@ -396,7 +390,6 @@ func TestAccGithubRepositoryEnvironmentDeploymentPolicy(t *testing.T) {
396390
397391
resource "github_repository" "test" {
398392
name = "%s"
399-
ignore_vulnerability_alerts_during_read = true
400393
}
401394
402395
resource "github_repository_environment" "test" {
@@ -447,7 +440,6 @@ func TestAccGithubRepositoryEnvironmentDeploymentPolicy(t *testing.T) {
447440
448441
resource "github_repository" "test" {
449442
name = "%s"
450-
ignore_vulnerability_alerts_during_read = true
451443
}
452444
453445
resource "github_repository_environment" "test" {
@@ -522,7 +514,6 @@ func TestAccGithubRepositoryEnvironmentDeploymentPolicy(t *testing.T) {
522514
523515
resource "github_repository" "test" {
524516
name = "%s"
525-
ignore_vulnerability_alerts_during_read = true
526517
}
527518
528519
resource "github_repository_environment" "test" {
@@ -573,7 +564,6 @@ func TestAccGithubRepositoryEnvironmentDeploymentPolicy(t *testing.T) {
573564
574565
resource "github_repository" "test" {
575566
name = "%s"
576-
ignore_vulnerability_alerts_during_read = true
577567
}
578568
579569
resource "github_repository_environment" "test" {
@@ -691,7 +681,6 @@ resource "github_repository_environment_deployment_policy" "test" {
691681
config := fmt.Sprintf(`
692682
resource "github_repository" "test" {
693683
name = "%s"
694-
ignore_vulnerability_alerts_during_read = true
695684
}
696685
697686
resource "github_repository_environment" "test" {
@@ -727,7 +716,6 @@ resource "github_repository_environment_deployment_policy" "test" {
727716
config := fmt.Sprintf(`
728717
resource "github_repository" "test" {
729718
name = "%s"
730-
ignore_vulnerability_alerts_during_read = true
731719
}
732720
733721
resource "github_repository_environment" "test" {
@@ -765,7 +753,6 @@ resource "github_repository_environment_deployment_policy" "test" {
765753
config := fmt.Sprintf(`
766754
resource "github_repository" "test" {
767755
name = "%s"
768-
ignore_vulnerability_alerts_during_read = true
769756
}
770757
771758
resource "github_repository_environment" "test" {
@@ -802,7 +789,6 @@ resource "github_repository_environment_deployment_policy" "test" {
802789
config := fmt.Sprintf(`
803790
resource "github_repository" "test" {
804791
name = "%s"
805-
ignore_vulnerability_alerts_during_read = true
806792
}
807793
808794
resource "github_repository_environment" "test" {

0 commit comments

Comments
 (0)