OpsLevel / terraform-provider-opslevel

Terraform provider for OpsLevel.com
https://registry.terraform.io/providers/OpsLevel/opslevel/latest/docs
MIT License
8 stars 5 forks source link

add categories field to scorecard data sources #375

Closed davidbloss closed 1 month ago

davidbloss commented 1 month ago

Issues

Add Categories field to Scorecard datasource

Changelog

Add categories field to both opslevel_scorecard and opslevel_scorecards datasources. Add this field to relevant tests.

Tophatting

With this Terraform config

data "opslevel_scorecards" "all" {}

data "opslevel_scorecard" "one" {
  identifier = "Z2lkOi8vb3BzbGV2ZWwvUnVicmljLzEzMTg"
}

resource "opslevel_check_has_documentation" "has_docs" {
  name             = "foobarbaz"
  enabled          = true
  category         = data.opslevel_scorecard.one.categories[0].id
  level            = "Z2lkOi8vb3BzbGV2ZWwvTGV2ZWwvMzcxMA"
  owner            = "Z2lkOi8vb3BzbGV2ZWwvVGVhbS8xNzQzNA"
  filter           = "Z2lkOi8vb3BzbGV2ZWwvRmlsdGVyLzM1NzA"
  notes            = "Optional additional info on why this check is run or how to fix it"
  document_type    = "api"
  document_subtype = "openapi"
}

output "all_categories" {
  value = data.opslevel_scorecards.all.scorecards[*].categories
}

output "one_categories" {
  value = data.opslevel_scorecard.one.categories
}

output "one_category_ids" {
  value = flatten(data.opslevel_scorecard.one.categories[*].id)
}

output "all_category_ids" {
  value = flatten(data.opslevel_scorecards.all.scorecards[*].categories[*].id)
}

output "one" {
  value = data.opslevel_scorecard.one
}

Run terraform plan

data.opslevel_scorecards.all: Reading...
data.opslevel_scorecard.one: Reading...
data.opslevel_scorecard.one: Read complete after 1s [id=Z2lkOi8vb3BzbGV2ZWwvUnVicmljLzEzMTg]
data.opslevel_scorecards.all: Read complete after 1s

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # opslevel_check_has_documentation.has_docs will be created
  + resource "opslevel_check_has_documentation" "has_docs" {
      + category         = "Z2lkOi8vb3BzbGV2ZWwvQ2F0ZWdvcnkvODMyMQ"
      + description      = (known after apply)
      + document_subtype = "openapi"
      + document_type    = "api"
      + enabled          = true
      + filter           = "Z2lkOi8vb3BzbGV2ZWwvRmlsdGVyLzM1NzA"
      + id               = (known after apply)
      + level            = "Z2lkOi8vb3BzbGV2ZWwvTGV2ZWwvMzcxMA"
      + name             = "foobarbaz"
      + notes            = "Optional additional info on why this check is run or how to fix it"
      + owner            = "Z2lkOi8vb3BzbGV2ZWwvVGVhbS8xNzQzNA"
    }

Plan: 1 to add, 0 to change, 0 to destroy.

Changes to Outputs:
  + all_categories   = [
      + [
          + {
              + id   = "Z2lkOi8vb3BzbGV2ZWwvQ2F0ZWdvcnkvODMyMQ"
              + name = "Test Scorecard"
            },
        ],
    ]
  + all_category_ids = [
      + "Z2lkOi8vb3BzbGV2ZWwvQ2F0ZWdvcnkvODMyMQ",
    ]
  + one              = {
      + affects_overall_service_levels = false
      + aliases                        = [
          + "test_scorecard",
        ]
      + categories                     = [
          + {
              + id   = "Z2lkOi8vb3BzbGV2ZWwvQ2F0ZWdvcnkvODMyMQ"
              + name = "Test Scorecard"
            },
        ]
      + description                    = "example_description"
      + filter_id                      = "Z2lkOi8vb3BzbGV2ZWwvRmlsdGVyLzM1NzA"
      + id                             = "Z2lkOi8vb3BzbGV2ZWwvUnVicmljLzEzMTg"
      + identifier                     = "Z2lkOi8vb3BzbGV2ZWwvUnVicmljLzEzMTg"
      + name                           = "Test Scorecard"
      + owner_id                       = "Z2lkOi8vb3BzbGV2ZWwvVGVhbS8xNzQzNA"
      + passing_checks                 = 0
      + service_count                  = 2
      + total_checks                   = 0
    }
  + one_categories   = [
      + {
          + id   = "Z2lkOi8vb3BzbGV2ZWwvQ2F0ZWdvcnkvODMyMQ"
          + name = "Test Scorecard"
        },
    ]
  + one_category_ids = [
      + "Z2lkOi8vb3BzbGV2ZWwvQ2F0ZWdvcnkvODMyMQ",
    ]
rocktavious commented 1 month ago

@davidbloss can you do 1 tophat test to ensure its easy and intuitive to pipe a given category into a new check for that scorecard.

I worry that data.opslevel_scorecards.all.scorecards[0].id is not intuitive enough