Sentinel import inside Terraform Cloud confusion: key "find_resources" doesn't support function calls

226 Views Asked by At

I'm using a Sentinel policy inside a Terraform Cloud workspace. My policy is rather simple:

import "tfplan/v2" as tfplan

allBDs = tfplan.find_resources("aci_bridge_domain")
violatingBDs = tfplan.filter_attribute_does_not_match_regex(allBDs,
                      "description", "^demo(.+)", true)                      


main = rule {
  length(violatingBDs["messages"]) is 0
}

Unfortunately, it fails when invoked with this message:

An error occurred: 1 error occurred:
    * ./allowed-terraform-version.sentinel:3:10: key "find_resources" doesn't support function calls

The documentation and source for find_resources (doc) expects a string, yet the Sentinel interpreter seems to think I'm invoking a method of tfplan? It's quite unclear why that is, and the documentation doesn't really help.

Any ideas?

1

There are 1 best solutions below

0
Christopher Paggen On

OK I found the issue. If I paste the code for find_resources and its dependencies (to_string, evaluate_attribute) then everything works as expected.

So I have a simple import problem and need to figure out how to properly import https://raw.githubusercontent.com/hashicorp/terraform-guides/master/governance/third-generation/common-functions/tfplan-functions/tfplan-functions.sentinel