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) GetDesiredPortalAuditLogWebhooks(namespace string) []resources.PortalAuditLogWebhookResource
- 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) GetDesiredPortalIPAllowLists(namespace string) []resources.PortalIPAllowListResource
- func (b *BasePlanner) GetDesiredPortalIdentityProviders(namespace string) []resources.PortalIdentityProviderResource
- func (b *BasePlanner) GetDesiredPortalIntegrations(namespace string) []resources.PortalIntegrationResource
- 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 ( // FieldID contains a resource ID FieldID = "id" // FieldName contains a resource name FieldName = "name" // FieldDescription contains a resource description FieldDescription = "description" // 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" // FieldPreservedLabels contains labels preserved during resource recreation FieldPreservedLabels = "preserved_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 ( FieldNamespace = "namespace" FieldContent = "content" FieldTitle = "title" FieldStatus = "status" FieldAttributes = "attributes" FieldType = "type" FieldConfig = "config" FieldConfigs = "configs" FieldEnabled = "enabled" FieldVersion = "version" FieldSpec = "spec" FieldSlug = "slug" FieldValue = "value" FieldMetadata = "metadata" FieldDataURL = "data_url" FieldDeckBaseDir = "deck_base_dir" FieldFlags = "flags" FieldFiles = "files" )
Common plan field identifiers.
const ( FieldAPI = "api" FieldAPIID = "api_id" FieldAuthStrategyIDs = "auth_strategy_ids" FieldAuthStrategyType = "strategy_type" FieldAuditLogDestinationID = "audit_log_destination_id" FieldControlPlaneID = "control_plane_id" FieldControlPlaneName = "control_plane_name" FieldControlPlaneRef = "control_plane_ref" FieldDefaultApplicationStrategyID = "default_application_auth_strategy_id" FieldDCRProvider = "dcr_provider" FieldEntityID = "entity_id" FieldEntityRegion = "entity_region" FieldEntityTypeName = "entity_type_name" FieldEventGatewayID = "event_gateway_id" FieldEventGatewayBackendClusterID = "event_gateway_backend_cluster_id" FieldEventGatewayListenerID = "event_gateway_listener_id" FieldEventGatewayVirtualClusterID = "event_gateway_virtual_cluster_id" FieldGatewayServices = "gateway_services" FieldParentDocumentID = "parent_document_id" FieldParentPageID = "parent_page_id" FieldParentPath = "parent_path" FieldPortalID = "portal_id" FieldRoleName = "role_name" FieldService = "service" FieldSlugPath = "slug_path" FieldTeamID = "team_id" )
Common relationship and reference field identifiers.
const ( FieldAuthenticationEnabled = "authentication_enabled" FieldAllowedIPs = "allowed_ips" FieldAutoApproveApplications = "auto_approve_applications" FieldAutoApproveDevelopers = "auto_approve_developers" FieldAutoApproveRegistrations = "auto_approve_registrations" FieldBasicAuthEnabled = "basic_auth_enabled" FieldCanOwnApplications = "can_own_applications" FieldCSS = "css" FieldConfigData = "config_data" FieldAuthReferrerPolicy = "auth_referrer_policy" FieldCookiesWin = "cookies_win" FieldDataLayer = "data_layer" FieldDefaultAPIVisibility = "default_api_visibility" FieldDefaultPageVisibility = "default_page_visibility" FieldDomainName = "domain_name" FieldDebug = "debug" FieldEnvName = "env_name" FieldFromEmail = "from_email" FieldFromName = "from_name" FieldGoogleAnalytics4 = "google_analytics_4" FieldGoogleTagManager = "google_tag_manager" FieldHostname = "hostname" FieldIDPMappingEnabled = "idp_mapping_enabled" FieldKonnectMappingEnabled = "konnect_mapping_enabled" FieldL = "l" FieldLayout = "layout" FieldLoginPath = "login_path" FieldMenu = "menu" FieldNPA = "npa" FieldPreview = "preview" FieldReplyToEmail = "reply_to_email" FieldRBACEnabled = "rbac_enabled" FieldSSL = "ssl" FieldTheme = "theme" FieldVisibility = "visibility" FieldCustomFields = "custom_fields" FieldAuthenticationStrategyUpdate = "authentication_strategy_update" )
Common portal plan field identifiers.
const ( FieldACLMode = "acl_mode" FieldAddresses = "addresses" FieldAuthentication = "authentication" FieldAuthType = "auth_type" FieldBootstrapServers = "bootstrap_servers" FieldCertificate = "certificate" FieldCert = "cert" FieldCloudGateway = "cloud_gateway" FieldClusterType = "cluster_type" FieldDestination = "destination" FieldDNSLabel = "dns_label" FieldInsecureAllowAnonymousVirtualClusterAuth = "insecure_allow_anonymous_virtual_cluster_auth" FieldMembers = "members" FieldMetadataUpdateIntervalSeconds = "metadata_update_interval_seconds" FieldPorts = "ports" FieldProxyURLs = "proxy_urls" FieldTLS = "tls" FieldDefaultVirtualClusterTarget = "default_virtual_cluster_target" FieldGatewayControlPlaneMembershipControlPlanes = "control_planes" )
Common gateway and event-gateway plan field identifiers.
const ( ResourceTypePortal = string(resources.ResourceTypePortal) ResourceTypeApplicationAuthStrategy = string(resources.ResourceTypeApplicationAuthStrategy) ResourceTypeDCRProvider = string(resources.ResourceTypeDCRProvider) ResourceTypeControlPlane = string(resources.ResourceTypeControlPlane) ResourceTypeAPI = string(resources.ResourceTypeAPI) ResourceTypeAPIVersion = string(resources.ResourceTypeAPIVersion) ResourceTypeAPIPublication = string(resources.ResourceTypeAPIPublication) ResourceTypeAPIImplementation = string(resources.ResourceTypeAPIImplementation) ResourceTypeAPIDocument = string(resources.ResourceTypeAPIDocument) ResourceTypeGatewayService = string(resources.ResourceTypeGatewayService) ResourceTypeControlPlaneDataPlaneCertificate = string(resources.ResourceTypeControlPlaneDataPlaneCertificate) ResourceTypeCatalogService = string(resources.ResourceTypeCatalogService) ResourceTypePortalCustomization = string(resources.ResourceTypePortalCustomization) ResourceTypePortalCustomDomain = string(resources.ResourceTypePortalCustomDomain) ResourceTypePortalAuthSettings = string(resources.ResourceTypePortalAuthSettings) ResourceTypePortalIPAllowList = string(resources.ResourceTypePortalIPAllowList) ResourceTypePortalIntegration = string(resources.ResourceTypePortalIntegration) ResourceTypePortalIdentityProvider = string(resources.ResourceTypePortalIdentityProvider) ResourceTypePortalPage = string(resources.ResourceTypePortalPage) ResourceTypePortalSnippet = string(resources.ResourceTypePortalSnippet) ResourceTypePortalTeam = string(resources.ResourceTypePortalTeam) ResourceTypePortalTeamRole = string(resources.ResourceTypePortalTeamRole) ResourceTypePortalAssetLogo = string(resources.ResourceTypePortalAssetLogo) ResourceTypePortalAssetFavicon = string(resources.ResourceTypePortalAssetFavicon) ResourceTypePortalEmailConfig = string(resources.ResourceTypePortalEmailConfig) ResourceTypePortalEmailTemplate = string(resources.ResourceTypePortalEmailTemplate) ResourceTypePortalAuditLogWebhook = string(resources.ResourceTypePortalAuditLogWebhook) ResourceTypeAuditLogWebhookDestination = string(resources.ResourceTypeAuditLogWebhookDestination) ResourceTypeEventGatewayControlPlane = string(resources.ResourceTypeEventGatewayControlPlane) ResourceTypeEventGatewayBackendCluster = string(resources.ResourceTypeEventGatewayBackendCluster) ResourceTypeEventGatewayVirtualCluster = string(resources.ResourceTypeEventGatewayVirtualCluster) ResourceTypeEventGatewayListener = string(resources.ResourceTypeEventGatewayListener) ResourceTypeEventGatewayListenerPolicy = string(resources.ResourceTypeEventGatewayListenerPolicy) ResourceTypeEventGatewayDataPlaneCertificate = string(resources.ResourceTypeEventGatewayDataPlaneCertificate) ResourceTypeEventGatewayClusterPolicy = string(resources.ResourceTypeEventGatewayClusterPolicy) ResourceTypeEventGatewayProducePolicy = string(resources.ResourceTypeEventGatewayProducePolicy) ResourceTypeEventGatewayConsumePolicy = string(resources.ResourceTypeEventGatewayConsumePolicy) ResourceTypeEventGatewaySchemaRegistry = string(resources.ResourceTypeEventGatewaySchemaRegistry) ResourceTypeEventGatewayStaticKey = string(resources.ResourceTypeEventGatewayStaticKey) ResourceTypeEventGatewayTLSTrustBundle = string(resources.ResourceTypeEventGatewayTLSTrustBundle) ResourceTypeOrganizationTeam = string(resources.ResourceTypeOrganizationTeam) // ResourceTypeDeck represents an internal deck execution step. ResourceTypeDeck = "_deck" )
Resource type constants are aliases for the canonical resource identifiers in the resources package. Keep these only for planner/executor compatibility.
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) GetDesiredPortalAuditLogWebhooks ¶ added in v0.10.0
func (b *BasePlanner) GetDesiredPortalAuditLogWebhooks(namespace string) []resources.PortalAuditLogWebhookResource
GetDesiredPortalAuditLogWebhooks returns desired portal audit-log webhook 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) GetDesiredPortalIPAllowLists ¶ added in v0.10.0
func (b *BasePlanner) GetDesiredPortalIPAllowLists(namespace string) []resources.PortalIPAllowListResource
GetDesiredPortalIPAllowLists returns desired portal IP allow list resources from the specified namespace
func (*BasePlanner) GetDesiredPortalIdentityProviders ¶ added in v0.9.0
func (b *BasePlanner) GetDesiredPortalIdentityProviders(namespace string) []resources.PortalIdentityProviderResource
GetDesiredPortalIdentityProviders returns desired portal identity provider resources from the specified namespace
func (*BasePlanner) GetDesiredPortalIntegrations ¶ added in v0.10.0
func (b *BasePlanner) GetDesiredPortalIntegrations(namespace string) []resources.PortalIntegrationResource
GetDesiredPortalIntegrations returns desired portal integration 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
type DeckOptions struct {
Runner deck.Runner
KonnectToken string
KonnectTokenSource deck.KonnectTokenSource
KonnectAddress string
}
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_data_plane_certificate_planner.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