| // Copyright (c) HashiCorp, Inc. | |
| // SPDX-License-Identifier: MPL-2.0 | |
| package tfjson | |
| // CheckKind is a string representation of the type of conditional check | |
| // referenced in a check result. | |
| type CheckKind string | |
| const ( | |
| // CheckKindResource indicates the check result is from a pre- or | |
| // post-condition on a resource or data source. | |
| CheckKindResource CheckKind = "resource" | |
| // CheckKindOutputValue indicates the check result is from an output | |
| // post-condition. | |
| CheckKindOutputValue CheckKind = "output_value" | |
| // CheckKindCheckBlock indicates the check result is from a check block. | |
| CheckKindCheckBlock CheckKind = "check" | |
| ) | |
| // CheckStatus is a string representation of the status of a given conditional | |
| // check. | |
| type CheckStatus string | |
| const ( | |
| // CheckStatusPass indicates the check passed. | |
| CheckStatusPass CheckStatus = "pass" | |
| // CheckStatusFail indicates the check failed. | |
| CheckStatusFail CheckStatus = "fail" | |
| // CheckStatusError indicates the check errored. This is distinct from | |
| // CheckStatusFail in that it represents a logical or configuration error | |
| // within the check block that prevented the check from executing, as | |
| // opposed to the check was attempted and evaluated to false. | |
| CheckStatusError CheckStatus = "error" | |
| // CheckStatusUnknown indicates the result of the check was not known. This | |
| // could be because a value within the check could not be known at plan | |
| // time, or because the overall plan failed for an unrelated reason before | |
| // this check could be executed. | |
| CheckStatusUnknown CheckStatus = "unknown" | |
| ) | |
| // CheckStaticAddress details the address of the object that performed a given | |
| // check. The static address points to the overall resource, as opposed to the | |
| // dynamic address which contains the instance key for any resource that has | |
| // multiple instances. | |
| type CheckStaticAddress struct { | |
| // ToDisplay is a formatted and ready to display representation of the | |
| // address. | |
| ToDisplay string `json:"to_display"` | |
| // Kind represents the CheckKind of this check. | |
| Kind CheckKind `json:"kind"` | |
| // Module is the module part of the address. This will be empty for any | |
| // resources in the root module. | |
| Module string `json:"module,omitempty"` | |
| // Mode is the ResourceMode of the resource that contains this check. This | |
| // field is only set is Kind equals CheckKindResource. | |
| Mode ResourceMode `json:"mode,omitempty"` | |
| // Type is the resource type for the resource that contains this check. This | |
| // field is only set if Kind equals CheckKindResource. | |
| Type string `json:"type,omitempty"` | |
| // Name is the name of the resource, check block, or output that contains | |
| // this check. | |
| Name string `json:"name,omitempty"` | |
| } | |
| // CheckDynamicAddress contains the InstanceKey field for any resources that | |
| // have multiple instances. A complete address can be built by combining the | |
| // CheckStaticAddress with the CheckDynamicAddress. | |
| type CheckDynamicAddress struct { | |
| // ToDisplay is a formatted and ready to display representation of the | |
| // full address, including the additional information from the relevant | |
| // CheckStaticAddress. | |
| ToDisplay string `json:"to_display"` | |
| // Module is the module part of the address. This address will include the | |
| // instance key for any module expansions resulting from foreach or count | |
| // arguments. This field will be empty for any resources within the root | |
| // module. | |
| Module string `json:"module,omitempty"` | |
| // InstanceKey is the instance key for any instances of a given resource. | |
| // | |
| // InstanceKey will be empty if there was no foreach or count argument | |
| // defined on the containing object. | |
| InstanceKey interface{} `json:"instance_key,omitempty"` | |
| } | |
| // CheckResultStatic is the container for a "checkable object". | |
| // | |
| // A "checkable object" is a resource or data source, an output, or a check | |
| // block. | |
| type CheckResultStatic struct { | |
| // Address is the absolute address of the "checkable object" | |
| Address CheckStaticAddress `json:"address"` | |
| // Status is the overall status for all the checks within this object. | |
| Status CheckStatus `json:"status"` | |
| // Instances contains the results for dynamic object that belongs to this | |
| // static object. For example, any instances created from an object using | |
| // the foreach or count meta arguments. | |
| // | |
| // Check blocks and outputs will only contain a single instance, while | |
| // resources can contain 1 to many. | |
| Instances []CheckResultDynamic `json:"instances,omitempty"` | |
| } | |
| // CheckResultDynamic describes the check result for a dynamic object that | |
| // results from the expansion of the containing object. | |
| type CheckResultDynamic struct { | |
| // Address is the relative address of this instance given the Address in the | |
| // parent object. | |
| Address CheckDynamicAddress `json:"address"` | |
| // Status is the overall status for the checks within this dynamic object. | |
| Status CheckStatus `json:"status"` | |
| // Problems describes any additional optional details about this check if | |
| // the check failed. | |
| // | |
| // This will not include the errors resulting from this check block, as they | |
| // will be exposed as diagnostics in the original terraform execution. It | |
| // may contain any failure messages even if the overall status is | |
| // CheckStatusError, however, as the instance could contain multiple checks | |
| // that returned a mix of error and failure statuses. | |
| Problems []CheckResultProblem `json:"problems,omitempty"` | |
| } | |
| // CheckResultProblem describes one of potentially several problems that led to | |
| // a check being classied as CheckStatusFail. | |
| type CheckResultProblem struct { | |
| // Message is the condition error message provided by the original check | |
| // author. | |
| Message string `json:"message"` | |
| } |