plan

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 25, 2026 License: Apache-2.0 Imports: 22 Imported by: 0

Documentation

Overview

Package plan computes deterministic desired-state changes and approval artifacts without performing API operations.

The plan package is part of Ramen's supported v0.1 core API.

Index

Constants

View Source
const MappingMetadataVersion = "ramen.mapping-metadata.v1"
View Source
const Version = "ramen.plan.v1"

Variables

This section is empty.

Functions

func DesiredHash

func DesiredHash(input DesiredHashInput) string

func VerifyApproval

func VerifyApproval(doc Document) error

Types

type APISourceInput

type APISourceInput struct {
	Kind string
	ID   string
	Path string
}

type APISourceRef

type APISourceRef struct {
	Kind   string `json:"kind"`
	ID     string `json:"id"`
	Path   string `json:"path,omitempty"`
	Digest string `json:"digest,omitempty"`
}

type Approval

type Approval struct {
	Version       string                `json:"version"`
	Digest        string                `json:"digest"`
	Rationale     string                `json:"rationale,omitempty"`
	ProjectDigest string                `json:"project_digest,omitempty"`
	StateDigest   string                `json:"state_digest,omitempty"`
	Controls      Controls              `json:"controls,omitempty"`
	APISources    []APISourceRef        `json:"api_sources,omitempty"`
	Approvers     []governance.Approver `json:"approvers,omitempty"`
}

type Controls

type Controls struct {
	Targets  []string `json:"targets,omitempty"`
	Excludes []string `json:"excludes,omitempty"`
	Replaces []string `json:"replaces,omitempty"`
	Destroy  bool     `json:"destroy,omitempty"`
}

type DesiredHashInput

type DesiredHashInput struct {
	Address         string
	Type            string
	Provider        string
	Attributes      map[string]string
	Lifecycle       map[string]any
	Mapping         *MappingHashInput
	APISourceDigest string
	InputsDigest    string
}

type Diagnostic

type Diagnostic struct {
	Code          string `json:"code"`
	Severity      string `json:"severity"`
	Message       string `json:"message"`
	Address       string `json:"address,omitempty"`
	ModuleAddress string `json:"module_address,omitempty"`
	APISourceKind string `json:"api_source_kind,omitempty"`
	APISourceID   string `json:"api_source_id,omitempty"`
}

type Document

type Document struct {
	Version     string                 `json:"version"`
	ConfigDir   string                 `json:"config_dir"`
	ProjectPath string                 `json:"project_path,omitempty"`
	StatePath   string                 `json:"state_path"`
	Workspace   string                 `json:"workspace,omitempty"`
	Action      string                 `json:"action"`
	Inputs      project.ResolvedInputs `json:"inputs,omitempty"`
	Governance  governance.Result      `json:"governance,omitempty"`
	Rationale   string                 `json:"rationale,omitempty"`
	Controls    Controls               `json:"controls,omitempty"`
	APISources  []APISourceRef         `json:"api_sources,omitempty"`
	Approval    *Approval              `json:"approval,omitempty"`
	Errored     bool                   `json:"errored,omitempty"`
	Summary     Summary                `json:"summary"`
	Resources   []ResourcePlan         `json:"resources"`
	Diagnostics []Diagnostic           `json:"diagnostics,omitempty"`
}

type MappingHashInput

type MappingHashInput struct {
	MetadataVersion    string
	Purpose            string
	SourceKind         string
	SourceID           string
	OperationID        string
	IdentityAttributes []tfmapping.IdentityAttribute
	Schema             []project.SchemaPath
	RequestBindings    []project.RequestBinding
	ResponseBindings   []project.ResponseBinding
	Normalizers        []project.Normalizer
	MappingLifecycle   *project.MappingLifecycle
	RequiredOperations []string
}

type MappingPlan

type MappingPlan struct {
	Purpose            string                        `json:"purpose"`
	Method             string                        `json:"method,omitempty"`
	SourceKind         string                        `json:"source_kind,omitempty"`
	SourceID           string                        `json:"source_id,omitempty"`
	SourcePath         string                        `json:"source_path,omitempty"`
	OperationID        string                        `json:"operation_id,omitempty"`
	IdentityAttributes []tfmapping.IdentityAttribute `json:"identity_attributes,omitempty"`
	Schema             []project.SchemaPath          `json:"schema,omitempty"`
	RequestBindings    []project.RequestBinding      `json:"request_bindings,omitempty"`
	ResponseBindings   []project.ResponseBinding     `json:"response_bindings,omitempty"`
	Normalizers        []project.Normalizer          `json:"normalizers,omitempty"`
	MappingLifecycle   *project.MappingLifecycle     `json:"mapping_lifecycle,omitempty"`
	RequiredOperations []string                      `json:"required_operations,omitempty"`
	AI                 *project.AIMetadata           `json:"ai,omitempty"`
}

type Options

type Options struct {
	ConfigDir   string
	ProjectPath string
	StatePath   string
	APISources  []APISourceInput
	VarFiles    []string
	Vars        []string
	PolicyFiles []string
	Approvers   []governance.Approver
	Workspace   string
	Action      string
	OutPath     string
	HCLPath     string
	Targets     []string
	Excludes    []string
	Replaces    []string
	Destroy     bool
}

type ResourcePlan

type ResourcePlan struct {
	Address      string                `json:"address"`
	Kind         string                `json:"kind"`
	Type         string                `json:"type"`
	Name         string                `json:"name"`
	Provider     string                `json:"provider,omitempty"`
	Action       string                `json:"action"`
	Reason       string                `json:"reason"`
	DesiredHash  string                `json:"desired_hash,omitempty"`
	Dependencies []string              `json:"dependencies,omitempty"`
	Mapping      *MappingPlan          `json:"mapping,omitempty"`
	RuntimeHints *project.RuntimeHints `json:"runtime_hints,omitempty"`
	AI           *project.AIMetadata   `json:"ai,omitempty"`
}

type Result

type Result struct {
	StatePath   string
	OutPath     string
	HCLPath     string
	Plan        Document
	Diagnostics []Diagnostic
}

func Build

func Build(ctx context.Context, opts Options) (*Result, error)

type Summary

type Summary struct {
	Create      int `json:"create"`
	Update      int `json:"update"`
	Delete      int `json:"delete"`
	Post        int `json:"post,omitempty"`
	Put         int `json:"put,omitempty"`
	Patch       int `json:"patch,omitempty"`
	Replace     int `json:"replace"`
	NoOp        int `json:"no_op"`
	Read        int `json:"read"`
	Diagnostics int `json:"diagnostics"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL