146 lines
5.5 KiB
Go
146 lines
5.5 KiB
Go
// 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"`
|
|
}
|