Documentation
¶
Index ¶
- Constants
- Variables
- func ExtractFields(resource any, fieldMapping func(any) map[string]any) map[string]any
- func LabelsEqual(current, desired map[string]string) bool
- func LabelsEqualPtr(current map[string]*string, desired map[string]string) bool
- type APIPlanner
- type ActionType
- type AuthStrategyPlanner
- type BasePlanner
- func (b *BasePlanner) GetClient() *state.Client
- func (b *BasePlanner) GetDesiredAPIDocuments(namespace string) []resources.APIDocumentResource
- func (b *BasePlanner) GetDesiredAPIImplementations(namespace string) []resources.APIImplementationResource
- func (b *BasePlanner) GetDesiredAPIPublications(namespace string) []resources.APIPublicationResource
- func (b *BasePlanner) GetDesiredAPIVersions(namespace string) []resources.APIVersionResource
- func (b *BasePlanner) GetDesiredAPIs(namespace string) []resources.APIResource
- func (b *BasePlanner) GetDesiredAuthStrategies(namespace string) []resources.ApplicationAuthStrategyResource
- func (b *BasePlanner) GetDesiredCatalogServices(namespace string) []resources.CatalogServiceResource
- func (b *BasePlanner) GetDesiredControlPlanes(namespace string) []resources.ControlPlaneResource
- func (b *BasePlanner) GetDesiredDCRProviders(namespace string) []resources.DCRProviderResource
- func (b *BasePlanner) GetDesiredEventGatewayControlPlanes(namespace string) []resources.EventGatewayControlPlaneResource
- func (b *BasePlanner) GetDesiredOrganizationTeams(namespace string) []resources.OrganizationTeamResource
- func (b *BasePlanner) GetDesiredPortalAuthSettings(namespace string) []resources.PortalAuthSettingsResource
- func (b *BasePlanner) GetDesiredPortalCustomDomains(namespace string) []resources.PortalCustomDomainResource
- func (b *BasePlanner) GetDesiredPortalCustomizations(namespace string) []resources.PortalCustomizationResource
- func (b *BasePlanner) GetDesiredPortalEmailConfigs(namespace string) []resources.PortalEmailConfigResource
- func (b *BasePlanner) GetDesiredPortalPages(namespace string) []resources.PortalPageResource
- func (b *BasePlanner) GetDesiredPortalSnippets(namespace string) []resources.PortalSnippetResource
- func (b *BasePlanner) GetDesiredPortals(namespace string) []resources.PortalResource
- func (b *BasePlanner) GetGenericPlanner() *GenericPlanner
- func (b *BasePlanner) GetString(s *string) string
- func (b *BasePlanner) NextChangeID(action ActionType, resourceType string, resourceRef string) string
- func (b *BasePlanner) ValidateProtection(resourceType, resourceName string, isProtected bool, action ActionType) error
- func (b *BasePlanner) ValidateProtectionWithChange(resourceType, resourceName string, isProtected bool, action ActionType, ...) error
- type CatalogServicePlanner
- type ComponentProvider
- type Config
- type ControlPlanePlanner
- type CreateConfig
- type DCRProviderPlanner
- type DeckOptions
- type DeleteConfig
- type DependencyResolver
- type EGWControlPlanePlanner
- type EGWControlPlanePlannerImpl
- type ExternalToolDependency
- type ExternalToolGatewayTarget
- type ExternalToolSelector
- type FieldChange
- type GenericPlanner
- func (g *GenericPlanner) PlanCreate(_ context.Context, config CreateConfig) (PlannedChange, error)
- func (g *GenericPlanner) PlanDelete(_ context.Context, config DeleteConfig) PlannedChange
- func (g *GenericPlanner) PlanProtectionChange(_ context.Context, config ProtectionChangeConfig) PlannedChange
- func (g *GenericPlanner) PlanUpdate(_ context.Context, config UpdateConfig) (PlannedChange, error)
- func (g *GenericPlanner) ShouldUpdate(config UpdateConfig) bool
- type Options
- type OrganizationTeamPlanner
- type OrganizationTeamPlannerImpl
- type ParentInfo
- type Plan
- func (p *Plan) AddChange(change PlannedChange)
- func (p *Plan) AddWarning(changeID, message string)
- func (p *Plan) ContainsDeletes() bool
- func (p *Plan) HasChange(resourceType, resourceRef string) bool
- func (p *Plan) IsEmpty() bool
- func (p *Plan) SetExecutionOrder(order []string)
- func (p *Plan) UpdateSummary()
- type PlanMetadata
- type PlanMode
- type PlanSummary
- type PlanWarning
- type PlannedChange
- type Planner
- func (p *Planner) GeneratePlan(ctx context.Context, rs *resources.ResourceSet, opts Options) (*Plan, error)
- func (p *Planner) GetDesiredAPIs() []resources.APIResource
- func (p *Planner) GetDesiredPortalCustomDomains() []resources.PortalCustomDomainResource
- func (p *Planner) GetDesiredPortalCustomizations() []resources.PortalCustomizationResource
- func (p *Planner) GetDesiredPortalPages() []resources.PortalPageResource
- func (p *Planner) GetDesiredPortalSnippets() []resources.PortalSnippetResource
- type PortalPlanner
- type PostResolutionTarget
- type ProtectingParentInfo
- type ProtectionChange
- type ProtectionChangeConfig
- type ProtectionErrorCollector
- type ProtectionSummary
- type ReferenceInfo
- type ReferenceResolver
- type ResolveResult
- type ResolvedReference
- type ResourcePlanner
- type UpdateConfig
Constants ¶
const ( // FieldName contains a resource name FieldName = "name" // FieldCurrentLabels contains the current labels of a resource // Used during updates to determine which labels should be removed FieldCurrentLabels = "_current_labels" // FieldStrategyType contains the current strategy type for auth strategies // Used during updates since strategy type cannot be changed FieldStrategyType = "_strategy_type" // FieldDCRProviderUpdateType contains the current provider type for DCR providers // Used during updates since provider type cannot be changed and update config is a union type FieldDCRProviderUpdateType = "_provider_type" // FieldDCRProviderID contains the DCR provider reference or resolved ID for OIDC auth strategies FieldDCRProviderID = "dcr_provider_id" // FieldDCRProviderProviderType contains the DCR provider type FieldDCRProviderProviderType = "provider_type" // FieldDCRProviderIssuer contains the DCR provider issuer URL FieldDCRProviderIssuer = "issuer" // FieldDCRProviderConfig contains provider-specific DCR configuration FieldDCRProviderConfig = "dcr_config" // FieldDisplayName contains a resource display name FieldDisplayName = "display_name" // FieldLabels contains user-managed labels FieldLabels = "labels" // FieldError contains validation errors that should be reported // Used when the planner detects an invalid operation FieldError = "_error" )
Field names used for communication between planner and executor. Internal fields are prefixed with underscore to avoid confusion with resource fields.
const ( // ResourceTypePortal is the resource type for portals ResourceTypePortal = "portal" // ResourceTypePortalPage is the resource type for portal pages ResourceTypePortalPage = "portal_page" // ResourceTypePortalSnippet is the resource type for portal snippets ResourceTypePortalSnippet = "portal_snippet" // ResourceTypePortalTeam is the resource type for portal teams ResourceTypePortalTeam = "portal_team" // ResourceTypePortalTeamRole is the resource type for portal team roles ResourceTypePortalTeamRole = "portal_team_role" // ResourceTypePortalCustomization is the resource type for portal customizations ResourceTypePortalCustomization = "portal_customization" // ResourceTypePortalAuthSettings is the resource type for portal auth settings ResourceTypePortalAuthSettings = "portal_auth_settings" // ResourceTypePortalCustomDomain is the resource type for portal custom domains ResourceTypePortalCustomDomain = "portal_custom_domain" // ResourceTypePortalAssetLogo is the resource type for portal logo assets ResourceTypePortalAssetLogo = "portal_asset_logo" // ResourceTypePortalAssetFavicon is the resource type for portal favicon assets ResourceTypePortalAssetFavicon = "portal_asset_favicon" // ResourceTypePortalEmailConfig is the resource type for portal email configs ResourceTypePortalEmailConfig = "portal_email_config" // ResourceTypePortalEmailTemplate is the resource type for portal email templates ResourceTypePortalEmailTemplate = "portal_email_template" // ResourceTypeEventGatewayControlPlane is the resource type for event gateway control planes ResourceTypeEventGatewayControlPlane = "event_gateway" // ResourceTypeEventGatewayBackendCluster is the resource type for event gateway backend clusters ResourceTypeEventGatewayBackendCluster = "event_gateway_backend_cluster" // ResourceTypeEventGatewayVirtualCluster is the resource type for event gateway virtual clusters ResourceTypeEventGatewayVirtualCluster = "event_gateway_virtual_cluster" // ResourceTypeEventGatewayListener is the resource type for event gateway listeners ResourceTypeEventGatewayListener = "event_gateway_listener" // ResourceTypeEventGatewayListenerPolicy is the resource type for event gateway listener policies ResourceTypeEventGatewayListenerPolicy = "event_gateway_listener_policy" // ResourceTypeEventGatewayDataPlaneCertificate is the resource type for event gateway data plane certificates ResourceTypeEventGatewayDataPlaneCertificate = "event_gateway_data_plane_certificate" // ResourceTypeEventGatewayClusterPolicy is the resource type for event gateway cluster-level policies ResourceTypeEventGatewayClusterPolicy = "event_gateway_virtual_cluster_cluster_policy" // ResourceTypeEventGatewayProducePolicy is the resource type for event gateway produce policies ResourceTypeEventGatewayProducePolicy = "event_gateway_virtual_cluster_produce_policy" // ResourceTypeEventGatewayConsumePolicy is the resource type for event gateway virtual cluster consume policies ResourceTypeEventGatewayConsumePolicy = "event_gateway_virtual_cluster_consume_policy" // ResourceTypeEventGatewaySchemaRegistry is the resource type for event gateway schema registries ResourceTypeEventGatewaySchemaRegistry = "event_gateway_schema_registry" // ResourceTypeEventGatewayStaticKey is the resource type for event gateway static keys. // Static keys do not support update – changes are applied as delete + create. ResourceTypeEventGatewayStaticKey = "event_gateway_static_key" // ResourceTypeEventGatewayTLSTrustBundle is the resource type for event gateway TLS trust bundles. ResourceTypeEventGatewayTLSTrustBundle = "event_gateway_tls_trust_bundle" // ResourceTypeDeck represents an internal deck execution step. ResourceTypeDeck = "_deck" )
Resource type constants
const (
// DefaultNamespace is the default namespace when none is specified
DefaultNamespace = "default"
)
Default values
Variables ¶
var NoRequiredFields = []string{}
NoRequiredFields is an explicitly empty slice for operations that don't require field validation
Functions ¶
func ExtractFields ¶
ExtractFields is a helper to create field extractors for resources with SDK types
func LabelsEqual ¶
LabelsEqual compares two label maps for equality
Types ¶
type APIPlanner ¶
type APIPlanner interface {
ResourcePlanner
}
APIPlanner handles planning for API resources and their child resources
func NewAPIPlanner ¶
func NewAPIPlanner(base *BasePlanner) APIPlanner
NewAPIPlanner creates a new API planner
type ActionType ¶
type ActionType string
ActionType represents the type of change
const ( ActionCreate ActionType = "CREATE" ActionUpdate ActionType = "UPDATE" ActionDelete ActionType = "DELETE" ActionExternalTool ActionType = "EXTERNAL_TOOL" )
type AuthStrategyPlanner ¶
type AuthStrategyPlanner interface {
ResourcePlanner
}
AuthStrategyPlanner handles planning for auth strategy resources
func NewAuthStrategyPlanner ¶
func NewAuthStrategyPlanner(base *BasePlanner) AuthStrategyPlanner
NewAuthStrategyPlanner creates a new auth strategy planner
type BasePlanner ¶
type BasePlanner struct {
// contains filtered or unexported fields
}
BasePlanner provides common functionality for all resource planners
func NewBasePlanner ¶
func NewBasePlanner(p *Planner) *BasePlanner
NewBasePlanner creates a new base planner instance
func (*BasePlanner) GetClient ¶
func (b *BasePlanner) GetClient() *state.Client
GetClient returns the state client
func (*BasePlanner) GetDesiredAPIDocuments ¶
func (b *BasePlanner) GetDesiredAPIDocuments(namespace string) []resources.APIDocumentResource
GetDesiredAPIDocuments returns desired API document resources from the specified namespace
func (*BasePlanner) GetDesiredAPIImplementations ¶
func (b *BasePlanner) GetDesiredAPIImplementations(namespace string) []resources.APIImplementationResource
GetDesiredAPIImplementations returns desired API implementation resources from the specified namespace
func (*BasePlanner) GetDesiredAPIPublications ¶
func (b *BasePlanner) GetDesiredAPIPublications(namespace string) []resources.APIPublicationResource
GetDesiredAPIPublications returns desired API publication resources from the specified namespace
func (*BasePlanner) GetDesiredAPIVersions ¶
func (b *BasePlanner) GetDesiredAPIVersions(namespace string) []resources.APIVersionResource
GetDesiredAPIVersions returns desired API version resources from the specified namespace
func (*BasePlanner) GetDesiredAPIs ¶
func (b *BasePlanner) GetDesiredAPIs(namespace string) []resources.APIResource
GetDesiredAPIs returns desired API resources from the specified namespace
func (*BasePlanner) GetDesiredAuthStrategies ¶
func (b *BasePlanner) GetDesiredAuthStrategies(namespace string) []resources.ApplicationAuthStrategyResource
GetDesiredAuthStrategies returns desired auth strategy resources from the specified namespace
func (*BasePlanner) GetDesiredCatalogServices ¶ added in v0.3.6
func (b *BasePlanner) GetDesiredCatalogServices(namespace string) []resources.CatalogServiceResource
GetDesiredCatalogServices returns desired catalog service resources from the specified namespace
func (*BasePlanner) GetDesiredControlPlanes ¶ added in v0.1.6
func (b *BasePlanner) GetDesiredControlPlanes(namespace string) []resources.ControlPlaneResource
GetDesiredControlPlanes returns desired control plane resources from the specified namespace
func (*BasePlanner) GetDesiredDCRProviders ¶ added in v0.8.0
func (b *BasePlanner) GetDesiredDCRProviders(namespace string) []resources.DCRProviderResource
GetDesiredDCRProviders returns desired DCR provider resources from the specified namespace
func (*BasePlanner) GetDesiredEventGatewayControlPlanes ¶ added in v0.3.7
func (b *BasePlanner) GetDesiredEventGatewayControlPlanes( namespace string, ) []resources.EventGatewayControlPlaneResource
GetDesiredEventGatewayControlPlanes returns desired EGW CP resources from the specified namespace
func (*BasePlanner) GetDesiredOrganizationTeams ¶ added in v0.4.0
func (b *BasePlanner) GetDesiredOrganizationTeams(namespace string) []resources.OrganizationTeamResource
GetDesiredOrganizationTeams returns desired organization_team resources from the specified namespace
func (*BasePlanner) GetDesiredPortalAuthSettings ¶ added in v0.3.4
func (b *BasePlanner) GetDesiredPortalAuthSettings(namespace string) []resources.PortalAuthSettingsResource
GetDesiredPortalAuthSettings returns desired portal auth settings resources from the specified namespace
func (*BasePlanner) GetDesiredPortalCustomDomains ¶
func (b *BasePlanner) GetDesiredPortalCustomDomains(namespace string) []resources.PortalCustomDomainResource
GetDesiredPortalCustomDomains returns desired portal custom domain resources from the specified namespace
func (*BasePlanner) GetDesiredPortalCustomizations ¶
func (b *BasePlanner) GetDesiredPortalCustomizations(namespace string) []resources.PortalCustomizationResource
GetDesiredPortalCustomizations returns desired portal customization resources from the specified namespace
func (*BasePlanner) GetDesiredPortalEmailConfigs ¶ added in v0.3.5
func (b *BasePlanner) GetDesiredPortalEmailConfigs(namespace string) []resources.PortalEmailConfigResource
GetDesiredPortalEmailConfigs returns desired portal email config resources from the specified namespace
func (*BasePlanner) GetDesiredPortalPages ¶
func (b *BasePlanner) GetDesiredPortalPages(namespace string) []resources.PortalPageResource
GetDesiredPortalPages returns desired portal page resources from the specified namespace
func (*BasePlanner) GetDesiredPortalSnippets ¶
func (b *BasePlanner) GetDesiredPortalSnippets(namespace string) []resources.PortalSnippetResource
GetDesiredPortalSnippets returns desired portal snippet resources from the specified namespace
func (*BasePlanner) GetDesiredPortals ¶
func (b *BasePlanner) GetDesiredPortals(namespace string) []resources.PortalResource
GetDesiredPortals returns desired portal resources from the specified namespace
func (*BasePlanner) GetGenericPlanner ¶
func (b *BasePlanner) GetGenericPlanner() *GenericPlanner
GetGenericPlanner returns the generic planner instance
func (*BasePlanner) GetString ¶
func (b *BasePlanner) GetString(s *string) string
GetString safely dereferences a string pointer
func (*BasePlanner) NextChangeID ¶
func (b *BasePlanner) NextChangeID(action ActionType, resourceType string, resourceRef string) string
NextChangeID generates a unique change ID
func (*BasePlanner) ValidateProtection ¶
func (b *BasePlanner) ValidateProtection(resourceType, resourceName string, isProtected bool, action ActionType) error
ValidateProtection validates protection status for an operation
func (*BasePlanner) ValidateProtectionWithChange ¶
func (b *BasePlanner) ValidateProtectionWithChange( resourceType, resourceName string, isProtected bool, action ActionType, protectionChange *ProtectionChange, hasOtherFieldChanges bool, ) error
ValidateProtectionWithChange validates protection status for an operation with protection change info
type CatalogServicePlanner ¶ added in v0.3.6
type CatalogServicePlanner interface {
ResourcePlanner
}
CatalogServicePlanner handles planning for catalog service resources
func NewCatalogServicePlanner ¶ added in v0.3.6
func NewCatalogServicePlanner(base *BasePlanner) CatalogServicePlanner
NewCatalogServicePlanner creates a new catalog service planner.
type ComponentProvider ¶ added in v0.5.0
type ComponentProvider interface {
PlannerComponent() string
}
ComponentProvider optionally exposes the workflow component name to use in HTTP logging. Implementations should return the canonical resource-style identifier (for example: "portal").
type Config ¶ added in v0.1.3
type Config struct {
// Namespace specifies the target namespace for planning operations
Namespace string
}
Config contains configuration data needed during planning operations. This replaces the anti-pattern of passing data through context.WithValue.
type ControlPlanePlanner ¶ added in v0.1.6
type ControlPlanePlanner interface {
ResourcePlanner
}
ControlPlanePlanner handles planning for control plane resources
func NewControlPlanePlanner ¶ added in v0.1.6
func NewControlPlanePlanner(base *BasePlanner) ControlPlanePlanner
NewControlPlanePlanner creates a new control plane planner
type CreateConfig ¶
type CreateConfig struct {
ResourceType string
ResourceName string
ResourceRef string
RequiredFields []string
FieldExtractor func(resource any) map[string]any
Namespace string
DependsOn []string
References map[string]ReferenceInfo
Parent *ParentInfo
}
CreateConfig defines configuration for generic create operations
type DCRProviderPlanner ¶ added in v0.8.0
type DCRProviderPlanner interface {
ResourcePlanner
}
DCRProviderPlanner handles planning for DCR provider resources.
func NewDCRProviderPlanner ¶ added in v0.8.0
func NewDCRProviderPlanner(base *BasePlanner) DCRProviderPlanner
type DeckOptions ¶ added in v0.3.8
DeckOptions provides configuration for deck-based planning.
type DeleteConfig ¶
type DeleteConfig struct {
ResourceType string
ResourceName string
ResourceRef string
ResourceID string
Namespace string
}
DeleteConfig defines configuration for generic delete operations
type DependencyResolver ¶
type DependencyResolver struct{}
DependencyResolver calculates execution order for plan changes
func NewDependencyResolver ¶
func NewDependencyResolver() *DependencyResolver
NewDependencyResolver creates a new resolver
func (*DependencyResolver) ResolveDependencies ¶
func (d *DependencyResolver) ResolveDependencies(changes []PlannedChange) ([]string, error)
ResolveDependencies builds dependency graph and calculates execution order
type EGWControlPlanePlanner ¶ added in v0.3.7
type EGWControlPlanePlanner interface {
ResourcePlanner
}
EGWControlPlanePlanner handles planning for Event Gateway Control Plane resources
type EGWControlPlanePlannerImpl ¶ added in v0.3.7
type EGWControlPlanePlannerImpl struct {
*BasePlanner
// contains filtered or unexported fields
}
func NewEGWControlPlanePlanner ¶ added in v0.3.7
func NewEGWControlPlanePlanner(planner *BasePlanner, resources *resources.ResourceSet) *EGWControlPlanePlannerImpl
func (*EGWControlPlanePlannerImpl) GetDesiredEGWControlPlanes ¶ added in v0.3.7
func (p *EGWControlPlanePlannerImpl) GetDesiredEGWControlPlanes( namespace string, ) []resources.EventGatewayControlPlaneResource
func (*EGWControlPlanePlannerImpl) PlanChanges ¶ added in v0.3.7
func (*EGWControlPlanePlannerImpl) PlannerComponent ¶ added in v0.5.0
func (p *EGWControlPlanePlannerImpl) PlannerComponent() string
type ExternalToolDependency ¶ added in v0.3.8
type ExternalToolDependency struct {
ControlPlaneRef string `json:"control_plane_ref,omitempty"`
ControlPlaneID string `json:"control_plane_id,omitempty"`
ControlPlaneName string `json:"control_plane_name,omitempty"`
GatewayServices []ExternalToolGatewayTarget `json:"gateway_services,omitempty"`
Files []string `json:"files,omitempty"`
Flags []string `json:"flags,omitempty"`
DeckBaseDir string `json:"deck_base_dir,omitempty"`
}
ExternalToolDependency captures external tool execution requirements for summary output.
type ExternalToolGatewayTarget ¶ added in v0.3.8
type ExternalToolGatewayTarget struct {
Ref string `json:"ref"`
Selector *ExternalToolSelector `json:"selector,omitempty"`
}
ExternalToolGatewayTarget represents a gateway service selector tied to a deck run.
type ExternalToolSelector ¶ added in v0.3.8
ExternalToolSelector represents selector match fields for external tool dependencies.
type FieldChange ¶
FieldChange represents a single field modification (for UPDATE)
type GenericPlanner ¶
type GenericPlanner struct {
// contains filtered or unexported fields
}
GenericPlanner provides common planning operations for all resource types
func NewGenericPlanner ¶
func NewGenericPlanner(p *Planner) *GenericPlanner
NewGenericPlanner creates a new generic planner instance
func (*GenericPlanner) PlanCreate ¶
func (g *GenericPlanner) PlanCreate(_ context.Context, config CreateConfig) (PlannedChange, error)
PlanCreate creates a planned change for resource creation
func (*GenericPlanner) PlanDelete ¶
func (g *GenericPlanner) PlanDelete(_ context.Context, config DeleteConfig) PlannedChange
PlanDelete creates a planned change for resource deletion
func (*GenericPlanner) PlanProtectionChange ¶
func (g *GenericPlanner) PlanProtectionChange(_ context.Context, config ProtectionChangeConfig) PlannedChange
PlanProtectionChange creates a planned change for protection status update
func (*GenericPlanner) PlanUpdate ¶
func (g *GenericPlanner) PlanUpdate(_ context.Context, config UpdateConfig) (PlannedChange, error)
PlanUpdate creates a planned change for resource update
func (*GenericPlanner) ShouldUpdate ¶
func (g *GenericPlanner) ShouldUpdate(config UpdateConfig) bool
ShouldUpdate determines if an update is needed by comparing current and desired state
type Options ¶
type Options struct {
Mode PlanMode
Generator string
Deck DeckOptions
}
Options configures plan generation behavior
type OrganizationTeamPlanner ¶ added in v0.4.0
type OrganizationTeamPlanner interface {
ResourcePlanner
}
TeamPlanner handles planning for team resources
func NewOrganizationTeamPlanner ¶ added in v0.4.0
func NewOrganizationTeamPlanner(base *BasePlanner) OrganizationTeamPlanner
NewOrganizationTeamPlanner creates a new organization team planner
type OrganizationTeamPlannerImpl ¶ added in v0.4.0
type OrganizationTeamPlannerImpl struct {
*BasePlanner
}
OrganizationTeamPlannerImpl implements planning logic for organization teams
func (*OrganizationTeamPlannerImpl) PlanChanges ¶ added in v0.4.0
func (t *OrganizationTeamPlannerImpl) PlanChanges(ctx context.Context, plannerCtx *Config, plan *Plan) error
PlanChanges generates changes for organization_team resources
func (*OrganizationTeamPlannerImpl) PlannerComponent ¶ added in v0.5.0
func (t *OrganizationTeamPlannerImpl) PlannerComponent() string
type ParentInfo ¶
type ParentInfo struct {
Ref string `json:"ref"`
ID string `json:"id"` // May be "[unknown]" for parents in same plan
}
ParentInfo tracks parent relationships
type Plan ¶
type Plan struct {
Metadata PlanMetadata `json:"metadata"`
Changes []PlannedChange `json:"changes"`
ExecutionOrder []string `json:"execution_order"`
Summary PlanSummary `json:"summary"`
Warnings []PlanWarning `json:"warnings,omitempty"`
}
Plan represents a declarative configuration plan
func (*Plan) AddChange ¶
func (p *Plan) AddChange(change PlannedChange)
AddChange adds a change to the plan
func (*Plan) AddWarning ¶
AddWarning adds a warning to the plan
func (*Plan) ContainsDeletes ¶
ContainsDeletes returns true if plan contains any DELETE operations
func (*Plan) HasChange ¶ added in v0.2.0
HasChange returns true if the plan already contains a change for the given resource type and ref.
func (*Plan) SetExecutionOrder ¶
SetExecutionOrder sets the calculated execution order
func (*Plan) UpdateSummary ¶
func (p *Plan) UpdateSummary()
UpdateSummary recalculates plan statistics
type PlanMetadata ¶
type PlanMetadata struct {
Version string `json:"version"`
GeneratedAt time.Time `json:"generated_at"`
Generator string `json:"generator"`
Mode PlanMode `json:"mode"`
}
PlanMetadata contains plan generation information
type PlanSummary ¶
type PlanSummary struct {
TotalChanges int `json:"total_changes"`
ByAction map[ActionType]int `json:"by_action"`
ByResource map[string]int `json:"by_resource"`
ByExternalTools map[string][]ExternalToolDependency `json:"by_external_tools,omitempty"`
ProtectionChanges *ProtectionSummary `json:"protection_changes,omitempty"`
}
PlanSummary provides overview statistics
type PlanWarning ¶
PlanWarning represents a warning about the plan
type PlannedChange ¶
type PlannedChange struct {
ID string `json:"id"`
ResourceType string `json:"resource_type"`
ResourceRef string `json:"resource_ref"`
ResourceID string `json:"resource_id,omitempty"` // Only for UPDATE/DELETE
// Human-readable identifiers for resources without config refs
ResourceMonikers map[string]string `json:"resource_monikers,omitempty"`
Action ActionType `json:"action"`
Fields map[string]any `json:"fields"`
ChangedFields map[string]FieldChange `json:"changed_fields,omitempty"`
PostResolutionTargets []PostResolutionTarget `json:"post_resolution_targets,omitempty"`
References map[string]ReferenceInfo `json:"references,omitempty"`
Parent *ParentInfo `json:"parent,omitempty"`
ProtectingParent *ProtectingParentInfo `json:"protecting_parent,omitempty"`
Protection any `json:"protection,omitempty"` // bool or ProtectionChange
Namespace string `json:"namespace"`
DependsOn []string `json:"depends_on,omitempty"`
}
PlannedChange represents a single resource change
type Planner ¶
type Planner struct {
// contains filtered or unexported fields
}
Planner generates execution plans
func NewPlanner ¶
NewPlanner creates a new planner
func (*Planner) GeneratePlan ¶
func (p *Planner) GeneratePlan(ctx context.Context, rs *resources.ResourceSet, opts Options) (*Plan, error)
GeneratePlan creates a plan from declarative configuration
func (*Planner) GetDesiredAPIs ¶
func (p *Planner) GetDesiredAPIs() []resources.APIResource
GetDesiredAPIs returns all desired API resources (across all namespaces)
func (*Planner) GetDesiredPortalCustomDomains ¶
func (p *Planner) GetDesiredPortalCustomDomains() []resources.PortalCustomDomainResource
GetDesiredPortalCustomDomains returns all desired portal custom domain resources (across all namespaces)
func (*Planner) GetDesiredPortalCustomizations ¶
func (p *Planner) GetDesiredPortalCustomizations() []resources.PortalCustomizationResource
GetDesiredPortalCustomizations returns all desired portal customization resources (across all namespaces)
func (*Planner) GetDesiredPortalPages ¶
func (p *Planner) GetDesiredPortalPages() []resources.PortalPageResource
GetDesiredPortalPages returns all desired portal page resources (across all namespaces)
func (*Planner) GetDesiredPortalSnippets ¶
func (p *Planner) GetDesiredPortalSnippets() []resources.PortalSnippetResource
GetDesiredPortalSnippets returns all desired portal snippet resources (across all namespaces)
type PortalPlanner ¶
type PortalPlanner interface {
ResourcePlanner
}
PortalPlanner handles planning for portal resources
func NewPortalPlanner ¶
func NewPortalPlanner(base *BasePlanner) PortalPlanner
NewPortalPlanner creates a new portal planner
type PostResolutionTarget ¶ added in v0.3.8
type PostResolutionTarget struct {
ResourceType string `json:"resource_type"`
ResourceRef string `json:"resource_ref"`
ControlPlaneRef string `json:"control_plane_ref,omitempty"`
ControlPlaneID string `json:"control_plane_id,omitempty"`
ControlPlaneName string `json:"control_plane_name,omitempty"`
Selector *ExternalToolSelector `json:"selector,omitempty"`
}
PostResolutionTarget represents a resource that must be resolved after a change executes.
type ProtectingParentInfo ¶ added in v0.8.0
type ProtectingParentInfo struct {
ResourceType string `json:"resource_type,omitempty"`
ResourceRef string `json:"resource_ref,omitempty"`
ResourceID string `json:"resource_id,omitempty"`
ResourceName string `json:"resource_name,omitempty"`
}
ProtectingParentInfo identifies the top-level managed resource whose protection applies to a child change.
type ProtectionChange ¶
ProtectionChange tracks protection status changes
type ProtectionChangeConfig ¶
type ProtectionChangeConfig struct {
ResourceType string
ResourceName string
ResourceRef string
ResourceID string
OldProtected bool
NewProtected bool
Namespace string
}
ProtectionChangeConfig defines configuration for protection change operations
type ProtectionErrorCollector ¶
type ProtectionErrorCollector struct {
// contains filtered or unexported fields
}
CollectProtectionErrors collects protection validation errors for batch reporting
func (*ProtectionErrorCollector) Add ¶
func (c *ProtectionErrorCollector) Add(err error)
Add adds a protection error to the collector
func (*ProtectionErrorCollector) Error ¶
func (c *ProtectionErrorCollector) Error() error
Error returns a combined error message
func (*ProtectionErrorCollector) HasErrors ¶
func (c *ProtectionErrorCollector) HasErrors() bool
HasErrors returns true if any errors were collected
type ProtectionSummary ¶
type ProtectionSummary struct {
Protecting int `json:"protecting"`
Unprotecting int `json:"unprotecting"`
}
ProtectionSummary tracks protection changes
type ReferenceInfo ¶
type ReferenceInfo struct {
// Existing fields for single references
Ref string `json:"ref,omitempty"`
ID string `json:"id,omitempty"` // May be "[unknown]" for resources in same plan
LookupFields map[string]string `json:"lookup_fields,omitempty"` // Resource-specific identifying fields
// New fields for array references
Refs []string `json:"refs,omitempty"` // Array of reference strings
ResolvedIDs []string `json:"resolved_ids,omitempty"` // Array of resolved UUIDs
LookupArrays map[string][]string `json:"lookup_arrays,omitempty"` // Array lookup fields
IsArray bool `json:"is_array,omitempty"` // Flag to indicate array reference
}
ReferenceInfo tracks reference resolution
type ReferenceResolver ¶
type ReferenceResolver struct {
// contains filtered or unexported fields
}
ReferenceResolver resolves declarative refs to Konnect IDs
func NewReferenceResolver ¶
func NewReferenceResolver(client *state.Client, rs *resources.ResourceSet) *ReferenceResolver
NewReferenceResolver creates a new resolver
func (*ReferenceResolver) ResolveReferences ¶
func (r *ReferenceResolver) ResolveReferences(ctx context.Context, changes []PlannedChange) (*ResolveResult, error)
ResolveReferences resolves all references in planned changes
type ResolveResult ¶
type ResolveResult struct {
// Map of change_id -> field -> resolved reference
ChangeReferences map[string]map[string]ResolvedReference
// Errors encountered during resolution
Errors []error
}
ResolveResult contains resolved reference information
type ResolvedReference ¶
ResolvedReference contains ref and resolved ID
type ResourcePlanner ¶
type ResourcePlanner interface {
// PlanChanges is the main entry point for planning changes for a resource type
PlanChanges(ctx context.Context, plannerCtx *Config, plan *Plan) error
}
ResourcePlanner defines the interface that all resource type planners must implement
type UpdateConfig ¶
type UpdateConfig struct {
ResourceType string
ResourceName string
ResourceRef string
ResourceID string
CurrentFields map[string]any
DesiredFields map[string]any
ChangedFields map[string]FieldChange
CurrentLabels map[string]string
DesiredLabels map[string]string
RequiredFields []string
FieldComparator func(current, desired map[string]any) bool
Namespace string
References map[string]ReferenceInfo
}
UpdateConfig defines configuration for generic update operations
Source Files
¶
- api_planner.go
- auth_strategy_planner.go
- base_planner.go
- catalog_service_planner.go
- constants.go
- control_plane_planner.go
- dcr_provider_planner.go
- deck_requirements.go
- dependencies.go
- egw_control_plane_planner.go
- env_placeholders.go
- event_gateway_backend_cluster_planner.go
- event_gateway_cluster_policy_planner.go
- event_gateway_consume_policy_planner.go
- event_gateway_data_plane_certificate_planner.go
- event_gateway_listener_planner.go
- event_gateway_listener_policy_planner.go
- event_gateway_produce_policy_planner.go
- event_gateway_schema_registry_planner.go
- event_gateway_static_key_planner.go
- event_gateway_tls_trust_bundle_planner.go
- event_gateway_virtual_cluster_planner.go
- generic_operations.go
- helpers.go
- interfaces.go
- organization_team_planner.go
- planner.go
- planner_context.go
- portal_child_planner.go
- portal_planner.go
- portal_team_role_dependencies.go
- protection_inheritance.go
- resolver.go
- resource_cache.go
- types.go