You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
terraformDummyRepo2/vendor/github.com/hashicorp/terraform-json/checks.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"`
}