v1alpha2

package
v0.0.0-...-953850c Latest Latest
Warning

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

Go to latest
Published: Apr 25, 2024 License: MPL-2.0 Imports: 10 Imported by: 0

Documentation

Overview

Package v1alpha2 contains API Schema definitions for the app v1alpha2 API group +kubebuilder:object:generate=true +groupName=app.terraform.io

Index

Constants

This section is empty.

Variables

View Source
var (
	// GroupVersion is group version used to register these objects
	GroupVersion = schema.GroupVersion{Group: "app.terraform.io", Version: "v1alpha2"}

	// SchemeBuilder is used to add go types to the GroupVersionKind scheme
	SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}

	// AddToScheme adds the types in this group-version to the given scheme.
	AddToScheme = SchemeBuilder.AddToScheme
)

Functions

This section is empty.

Types

type AgentDeployment

type AgentDeployment struct {
	Replicas *int32      `json:"replicas,omitempty"`
	Spec     *v1.PodSpec `json:"spec,omitempty"`
}

func (*AgentDeployment) DeepCopy

func (in *AgentDeployment) DeepCopy() *AgentDeployment

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentDeployment.

func (*AgentDeployment) DeepCopyInto

func (in *AgentDeployment) DeepCopyInto(out *AgentDeployment)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentDeploymentAutoscaling

type AgentDeploymentAutoscaling struct {
	// MaxReplicas is the maximum number of replicas for the Agent deployment.
	MaxReplicas *int32 `json:"maxReplicas"`

	// MinReplicas is the minimum number of replicas for the Agent deployment.
	MinReplicas *int32 `json:"minReplicas"`

	// TargetWorkspaces is a list of Terraform Cloud Workspaces which
	// the agent pool should scale up to meet demand. When this field
	// is ommited the autoscaler will target all workspaces that are
	// associated with the AgentPool.
	//
	//+optional
	TargetWorkspaces *[]TargetWorkspace `json:"targetWorkspaces"`

	// CooldownPeriodSeconds is the time to wait between scaling events. Defaults to 300.
	//
	//+optional
	//+kubebuilder:default:=300
	CooldownPeriodSeconds *int32 `json:"cooldownPeriodSeconds,omitempty"`
}

AgentDeploymentAutoscaling allows you to configure the operator to scale the deployment for an AgentPool up and down to meet demand.

func (*AgentDeploymentAutoscaling) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentDeploymentAutoscaling.

func (*AgentDeploymentAutoscaling) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentDeploymentAutoscalingStatus

type AgentDeploymentAutoscalingStatus struct {
	// Desired number of agent replicas
	//+optional
	DesiredReplicas *int32 `json:"desiredReplicas,omitempty"`

	// Last time the agent pool was scaledx
	//+optional
	LastScalingEvent *metav1.Time `json:"lastScalingEvent,omitempty"`
}

AgentDeploymentAutoscalingStatus

func (*AgentDeploymentAutoscalingStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentDeploymentAutoscalingStatus.

func (*AgentDeploymentAutoscalingStatus) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentPool

type AgentPool struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   AgentPoolSpec   `json:"spec"`
	Status AgentPoolStatus `json:"status,omitempty"`
}

AgentPool is the Schema for the agentpools API.

func (*AgentPool) DeepCopy

func (in *AgentPool) DeepCopy() *AgentPool

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentPool.

func (*AgentPool) DeepCopyInto

func (in *AgentPool) DeepCopyInto(out *AgentPool)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*AgentPool) DeepCopyObject

func (in *AgentPool) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*AgentPool) IsCreationCandidate

func (ap *AgentPool) IsCreationCandidate() bool

func (*AgentPool) ValidateSpec

func (ap *AgentPool) ValidateSpec() error

type AgentPoolList

type AgentPoolList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []AgentPool `json:"items"`
}

AgentPoolList contains a list of AgentPool.

func (*AgentPoolList) DeepCopy

func (in *AgentPoolList) DeepCopy() *AgentPoolList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentPoolList.

func (*AgentPoolList) DeepCopyInto

func (in *AgentPoolList) DeepCopyInto(out *AgentPoolList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*AgentPoolList) DeepCopyObject

func (in *AgentPoolList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type AgentPoolSpec

type AgentPoolSpec struct {
	// Agent Pool name.
	// More information:
	//   - https://developer.hashicorp.com/terraform/cloud-docs/agents/agent-pools
	//
	//+kubebuilder:validation:MinLength:=1
	Name string `json:"name"`
	// Organization name where the Workspace will be created.
	// More information:
	//   - https://developer.hashicorp.com/terraform/cloud-docs/users-teams-organizations/organizations
	//
	//+kubebuilder:validation:MinLength:=1
	Organization string `json:"organization"`
	// API Token to be used for API calls.
	Token Token `json:"token"`

	// List of the agent tokens to generate.
	//
	//+kubebuilder:validation:MinItems:=1
	//+optional
	AgentTokens []*AgentToken `json:"agentTokens,omitempty"`

	// Agent deployment settings
	//+optional
	AgentDeployment *AgentDeployment `json:"agentDeployment,omitempty"`

	// Agent deployment settings
	//+optional
	AgentDeploymentAutoscaling *AgentDeploymentAutoscaling `json:"autoscaling,omitempty"`
}

AgentPoolSpec defines the desired stak get ste of AgentPool.

func (*AgentPoolSpec) DeepCopy

func (in *AgentPoolSpec) DeepCopy() *AgentPoolSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentPoolSpec.

func (*AgentPoolSpec) DeepCopyInto

func (in *AgentPoolSpec) DeepCopyInto(out *AgentPoolSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentPoolStatus

type AgentPoolStatus struct {
	// Real world state generation.
	ObservedGeneration int64 `json:"observedGeneration"`
	// Agent Pool ID that is managed by the controller.
	AgentPoolID string `json:"agentPoolID"`
	// List of the agent tokens generated by the controller.
	//
	//+optional
	AgentTokens []*AgentToken `json:"agentTokens,omitempty"`
	// Name of the agent deployment generated by the controller.
	//
	//+optional
	AgentDeploymentName string `json:"agentDeploymentName,omitempty"`
	// Autoscaling Status
	//
	//+optional
	AgentDeploymentAutoscalingStatus *AgentDeploymentAutoscalingStatus `json:"autoscaling,omitempty"`
}

AgentPoolStatus defines the observed state of AgentPool.

func (*AgentPoolStatus) DeepCopy

func (in *AgentPoolStatus) DeepCopy() *AgentPoolStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentPoolStatus.

func (*AgentPoolStatus) DeepCopyInto

func (in *AgentPoolStatus) DeepCopyInto(out *AgentPoolStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentToken

type AgentToken struct {
	// Agent Token name.
	//
	//+kubebuilder:validation:MinLength:=1
	Name string `json:"name"`
	// Agent Token ID.
	//
	//+kubebuilder:validation:Pattern:="^at-[a-zA-Z0-9]+$"
	//+optional
	ID string `json:"id,omitempty"`
	// Timestamp of when the agent token was created.
	//
	//+optional
	CreatedAt *int64 `json:"createdAt,omitempty"`
	// Timestamp of when the agent token was last used.
	//
	//+optional
	LastUsedAt *int64 `json:"lastUsedAt,omitempty"`
}

Agent Token is a secret token that a Terraform Cloud Agent is used to connect to the Terraform Cloud Agent Pool. In `spec` only the field `Name` is allowed, the rest are used in `status`. More infromation:

func (*AgentToken) DeepCopy

func (in *AgentToken) DeepCopy() *AgentToken

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentToken.

func (*AgentToken) DeepCopyInto

func (in *AgentToken) DeepCopyInto(out *AgentToken)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ConfigurationVersionStatus

type ConfigurationVersionStatus struct {
	// Configuration Version ID.
	ID string `json:"id"`
	// Configuration Version Status.
	Status string `json:"status"`
}

A configuration version is a resource used to reference the uploaded configuration files. More information:

func (*ConfigurationVersionStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigurationVersionStatus.

func (*ConfigurationVersionStatus) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ConsumerWorkspace

type ConsumerWorkspace struct {
	// Consumer Workspace ID.
	// Must match pattern: `^ws-[a-zA-Z0-9]+$`
	//
	//+kubebuilder:validation:Pattern:="^ws-[a-zA-Z0-9]+$"
	//+optional
	ID string `json:"id,omitempty"`
	// Consumer Workspace name.
	//
	//+kubebuilder:validation:MinLength:=1
	//+optional
	Name string `json:"name,omitempty"`
}

ConsumerWorkspace allows access to the state for specific workspaces within the same organization. Only one of the fields `ID` or `Name` is allowed. At least one of the fields `ID` or `Name` is mandatory. More information:

func (*ConsumerWorkspace) DeepCopy

func (in *ConsumerWorkspace) DeepCopy() *ConsumerWorkspace

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConsumerWorkspace.

func (*ConsumerWorkspace) DeepCopyInto

func (in *ConsumerWorkspace) DeepCopyInto(out *ConsumerWorkspace)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type CustomPermissions

type CustomPermissions struct {
	// Run access.
	// Must be one of the following values: `apply`, `plan`, `read`.
	// Default: `read`.
	//
	//+kubebuilder:validation:Pattern:="^(apply|plan|read)$"
	//+kubebuilder:default:=read
	//+optional
	Runs string `json:"runs,omitempty"`
	// Manage Workspace Run Tasks.
	// Default: `false`.
	//
	//+kubebuilder:validation:default:=false
	//+optional
	RunTasks bool `json:"runTasks,omitempty"`
	// Download Sentinel mocks.
	// Must be one of the following values: `none`, `read`.
	// Default: `none`.
	//
	//+kubebuilder:validation:Pattern:="^(none|read)$"
	//+kubebuilder:default:=none
	//+optional
	Sentinel string `json:"sentinel,omitempty"`
	// State access.
	// Must be one of the following values: `none`, `read`, `read-outputs`, `write`.
	// Default: `none`.
	//
	//+kubebuilder:validation:Pattern:="^(none|read|read-outputs|write)$"
	//+kubebuilder:default:=none
	//+optional
	StateVersions string `json:"stateVersions,omitempty"`
	// Variable access.
	// Must be one of the following values: `none`, `read`, `write`.
	// Default: `none`.
	//
	//+kubebuilder:validation:Pattern:="^(none|read|write)$"
	//+kubebuilder:default:=none
	//+optional
	Variables string `json:"variables,omitempty"`
	// Lock/unlock workspace.
	// Default: `false`.
	//
	//+kubebuilder:default:=false
	//+optional
	WorkspaceLocking bool `json:"workspaceLocking,omitempty"`
}

Custom permissions let you assign specific, finer-grained permissions to a team than the broader fixed permission sets provide. More information:

func (*CustomPermissions) DeepCopy

func (in *CustomPermissions) DeepCopy() *CustomPermissions

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomPermissions.

func (*CustomPermissions) DeepCopyInto

func (in *CustomPermissions) DeepCopyInto(out *CustomPermissions)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type CustomProjectPermissions

type CustomProjectPermissions struct {
	// Project access.
	// Must be one of the following values: `delete`, `read`, `update`.
	// Default: `read`.
	//
	//+kubebuilder:validation:Enum:=delete;read;update
	//+kubebuilder:default:=read
	//+optional
	ProjectAccess tfc.ProjectSettingsPermissionType `json:"projectAccess,omitempty"`
	// Team management.
	// Must be one of the following values: `manage`, `none`, `read`.
	// Default: `none`.
	//
	//+kubebuilder:validation:Enum:=manage;none;read
	//+kubebuilder:default:=none
	//+optional
	TeamManagement tfc.ProjectTeamsPermissionType `json:"teamManagement,omitempty"`
	// Allow users to create workspaces in the project.
	// This grants read access to all workspaces in the project.
	// Default: `false`.
	//
	//+kubebuilder:default:=false
	//+optional
	CreateWorkspace bool `json:"createWorkspace,omitempty"`
	// Allows users to delete workspaces in the project.
	// Default: `false`.
	//
	//+kubebuilder:default:=false
	//+optional
	DeleteWorkspace bool `json:"deleteWorkspace,omitempty"`
	// Allows users to move workspaces out of the project.
	// A user must have this permission on both the source and destination project to successfully move a workspace from one project to another.
	// Default: `false`.
	//
	//+kubebuilder:default:=false
	//+optional
	MoveWorkspace bool `json:"moveWorkspace,omitempty"`
	// Allows users to manually lock the workspace to temporarily prevent runs.
	// When a workspace's execution mode is set to "local", users must have this permission to perform local CLI runs using the workspace's state.
	// Default: `false`.
	//
	//+kubebuilder:default:=false
	//+optional
	LockWorkspace bool `json:"lockWorkspace,omitempty"`
	// Run access.
	// Must be one of the following values: `apply`, `plan`, `read`.
	// Default: `read`.
	//
	//+kubebuilder:validation:Enum:=apply;plan;read
	//+kubebuilder:default:=read
	//+optional
	Runs tfc.WorkspaceRunsPermissionType `json:"runs,omitempty"`
	// Manage Workspace Run Tasks.
	// Default: `false`.
	//
	//+kubebuilder:validation:default:=false
	//+optional
	RunTasks bool `json:"runTasks,omitempty"`
	// Download Sentinel mocks.
	// Must be one of the following values: `none`, `read`.
	// Default: `none`.
	//
	//+kubebuilder:validation:Enum:=none;read
	//+kubebuilder:default:=none
	//+optional
	SentinelMocks tfc.WorkspaceSentinelMocksPermissionType `json:"sentinelMocks,omitempty"`
	// State access.
	// Must be one of the following values: `none`, `read`, `read-outputs`, `write`.
	// Default: `none`.
	//
	//+kubebuilder:validation:Enum:=none;read;read-outputs;write
	//+kubebuilder:default:=none
	//+optional
	StateVersions tfc.WorkspaceStateVersionsPermissionType `json:"stateVersions,omitempty"`
	// Variable access.
	// Must be one of the following values: `none`, `read`, `write`.
	// Default: `none`.
	//
	//+kubebuilder:validation:Enum:=none;read;write
	//+kubebuilder:default:=none
	//+optional
	Variables tfc.WorkspaceVariablesPermissionType `json:"variables,omitempty"`
}

Custom permissions let you assign specific, finer-grained permissions to a team than the broader fixed permission sets provide. More information:

func (*CustomProjectPermissions) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomProjectPermissions.

func (*CustomProjectPermissions) DeepCopyInto

func (in *CustomProjectPermissions) DeepCopyInto(out *CustomProjectPermissions)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Module

type Module struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   ModuleSpec   `json:"spec"`
	Status ModuleStatus `json:"status,omitempty"`
}

Module is the Schema for the modules API Module implements the API-driven Run Workflow More information:

func (*Module) DeepCopy

func (in *Module) DeepCopy() *Module

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Module.

func (*Module) DeepCopyInto

func (in *Module) DeepCopyInto(out *Module)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Module) DeepCopyObject

func (in *Module) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*Module) ValidateSpec

func (m *Module) ValidateSpec() error

type ModuleList

type ModuleList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []Module `json:"items"`
}

ModuleList contains a list of Module

func (*ModuleList) DeepCopy

func (in *ModuleList) DeepCopy() *ModuleList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ModuleList.

func (*ModuleList) DeepCopyInto

func (in *ModuleList) DeepCopyInto(out *ModuleList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ModuleList) DeepCopyObject

func (in *ModuleList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ModuleOutput

type ModuleOutput struct {
	// Output name must match with the module output.
	//
	//+kubebuilder:validation:MinLength:=1
	Name string `json:"name"`
	// Specify whether or not the output is sensitive.
	// Default: `false`.
	//
	//+kubebuilder:default:=false
	//+optional
	Sensitive bool `json:"sensitive,omitempty"`
}

Module outputs to store in ConfigMap(non-sensitive) or Secret(sensitive).

func (*ModuleOutput) DeepCopy

func (in *ModuleOutput) DeepCopy() *ModuleOutput

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ModuleOutput.

func (*ModuleOutput) DeepCopyInto

func (in *ModuleOutput) DeepCopyInto(out *ModuleOutput)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ModuleSource

type ModuleSource struct {
	// Non local Terraform module source.
	// More information:
	//   - https://developer.hashicorp.com/terraform/language/modules/sources
	//
	//+kubebuilder:validation:MinLength:=1
	Source string `json:"source"`
	// Terraform module version.
	//
	//+kubebuilder:validation:MinLength:=1
	//+optional
	Version string `json:"version,omitempty"`
}

Module source and version to execute.

func (*ModuleSource) DeepCopy

func (in *ModuleSource) DeepCopy() *ModuleSource

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ModuleSource.

func (*ModuleSource) DeepCopyInto

func (in *ModuleSource) DeepCopyInto(out *ModuleSource)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ModuleSpec

type ModuleSpec struct {
	// Organization name where the Workspace will be created.
	// More information:
	//   - https://developer.hashicorp.com/terraform/cloud-docs/users-teams-organizations/organizations
	//
	//+kubebuilder:validation:MinLength:=1
	Organization string `json:"organization"`
	// API Token to be used for API calls.
	Token Token `json:"token"`
	// Module source and version to execute.
	Module *ModuleSource `json:"module"`
	// Workspace to execute the module.
	Workspace *ModuleWorkspace `json:"workspace"`

	// Name of the module that will be uploaded and executed.
	// Default: `this`.
	//
	//+kubebuilder:validation:MinLength:=1
	//+kubebuilder:default:=this
	//+optional
	Name string `json:"name,omitempty"`
	// Variables to pass to the module, they must exist in the Workspace.
	//
	//+kubebuilder:validation:MinItems:=1
	// +optional
	Variables []ModuleVariable `json:"variables,omitempty"`
	// Module outputs to store in ConfigMap(non-sensitive) or Secret(sensitive).
	//
	//+kubebuilder:validation:MinItems:=1
	//+optional
	Outputs []ModuleOutput `json:"outputs,omitempty"`
	// Specify whether or not to execute a Destroy run when the object is deleted from the Kubernetes.
	// Default: `false`.
	//
	//+kubebuilder:default:=false
	//+optional
	DestroyOnDeletion bool `json:"destroyOnDeletion,omitempty"`
	// Allows executing a new Run without changing any Workspace or Module attributes.
	// Example: kubectl patch <KIND> <NAME> --type=merge --patch '{"spec": {"restartedAt": "'\`date -u -Iseconds\`'"}}'
	//
	//+kubebuilder:validation:MinLength:=1
	//+optional
	RestartedAt string `json:"restartedAt,omitempty"`
}

ModuleSpec defines the desired state of Module.

func (*ModuleSpec) DeepCopy

func (in *ModuleSpec) DeepCopy() *ModuleSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ModuleSpec.

func (*ModuleSpec) DeepCopyInto

func (in *ModuleSpec) DeepCopyInto(out *ModuleSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ModuleStatus

type ModuleStatus struct {
	// Real world state generation.
	ObservedGeneration int64 `json:"observedGeneration"`
	// Workspace ID where the module is running.
	WorkspaceID string `json:"workspaceID"`
	// A configuration version is a resource used to reference the uploaded configuration files.
	// More information:
	//   - https://developer.hashicorp.com/terraform/cloud-docs/api-docs/configuration-versions
	//   - https://developer.hashicorp.com/terraform/cloud-docs/run/api
	ConfigurationVersion *ConfigurationVersionStatus `json:"configurationVersion,omitempty"`
	// Workspace Runs status.
	// More information:
	//   - https://developer.hashicorp.com/terraform/cloud-docs/run/states
	Run *RunStatus `json:"run,omitempty"`
	// Module Outputs status.
	Output *OutputStatus `json:"output,omitempty"`
	// Workspace Destroy Run status.
	//
	//+optional
	DestroyRunID string `json:"destroyRunID,omitempty"`
}

ModuleStatus defines the observed state of Module.

func (*ModuleStatus) DeepCopy

func (in *ModuleStatus) DeepCopy() *ModuleStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ModuleStatus.

func (*ModuleStatus) DeepCopyInto

func (in *ModuleStatus) DeepCopyInto(out *ModuleStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ModuleVariable

type ModuleVariable struct {
	// Variable name must exist in the Workspace.
	//
	//+kubebuilder:validation:MinLength:=1
	Name string `json:"name"`
}

Variables to pass to the module.

func (*ModuleVariable) DeepCopy

func (in *ModuleVariable) DeepCopy() *ModuleVariable

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ModuleVariable.

func (*ModuleVariable) DeepCopyInto

func (in *ModuleVariable) DeepCopyInto(out *ModuleVariable)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ModuleWorkspace

type ModuleWorkspace struct {
	// Module Workspace ID.
	// Must match pattern: `^ws-[a-zA-Z0-9]+$`
	//
	//+kubebuilder:validation:Pattern:="^ws-[a-zA-Z0-9]+$"
	//+optional
	ID string `json:"id,omitempty"`
	// Module Workspace Name.
	//
	//+kubebuilder:validation:MinLength:=1
	//+optional
	Name string `json:"name,omitempty"`
}

Workspace to execute the module. Only one of the fields `ID` or `Name` is allowed. At least one of the fields `ID` or `Name` is mandatory.

func (*ModuleWorkspace) DeepCopy

func (in *ModuleWorkspace) DeepCopy() *ModuleWorkspace

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ModuleWorkspace.

func (*ModuleWorkspace) DeepCopyInto

func (in *ModuleWorkspace) DeepCopyInto(out *ModuleWorkspace)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Notification

type Notification struct {
	// Notification name.
	//
	//+kubebuilder:validation:MinLength:=1
	Name string `json:"name"`
	// The type of the notification.
	// Must be one of the following values: `email`, `generic`, `microsoft-teams`, `slack`.
	//
	//+kubebuilder:validation:Enum:=email;generic;microsoft-teams;slack
	Type tfc.NotificationDestinationType `json:"type"`
	// Whether the notification configuration should be enabled or not.
	// Default: `true`.
	//
	//+kubebuilder:default=true
	//+optional
	Enabled bool `json:"enabled,omitempty"`
	// The token of the notification.
	//
	//+kubebuilder:validation:MinLength:=1
	//+optional
	Token string `json:"token,omitempty"`
	// The list of run events that will trigger notifications.
	// Trigger represents the different TFC notifications that can be sent as a run's progress transitions between different states.
	// There are two categories of triggers:
	//   - Health Events: `assessment:check_failure`, `assessment:drifted`, `assessment:failed`.
	//   - Run Events: `run:applying`, `run:completed`, `run:created`, `run:errored`, `run:needs_attention`, `run:planning`.
	//
	//+kubebuilder:validation:MinItems:=1
	//+optional
	Triggers []NotificationTrigger `json:"triggers,omitempty"`
	// The URL of the notification.
	// Must match pattern: `^https?://.*`
	//
	//+kubebuilder:validation:Pattern:="^https?://.*"
	//+optional
	URL string `json:"url,omitempty"`
	// The list of email addresses that will receive notification emails.
	// It is only available for Terraform Enterprise users. It is not available in Terraform Cloud.
	//
	//+kubebuilder:validation:MinItems:=1
	//+optional
	EmailAddresses []string `json:"emailAddresses,omitempty"`
	// The list of users belonging to the organization that will receive notification emails.
	//
	//+kubebuilder:validation:MinItems:=1
	//+optional
	EmailUsers []string `json:"emailUsers,omitempty"`
}

Notifications allow you to send messages to other applications based on run and workspace events. More information:

func (*Notification) DeepCopy

func (in *Notification) DeepCopy() *Notification

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Notification.

func (*Notification) DeepCopyInto

func (in *Notification) DeepCopyInto(out *Notification)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type NotificationTrigger

type NotificationTrigger string

NotificationTrigger represents the different TFC notifications that can be sent as a run's progress transitions between different states. This must be aligned with go-tfe type `NotificationTriggerType`. Must be one of the following values: `run:applying`, `assessment:check_failure`, `run:completed`, `run:created`, `assessment:drifted`, `run:errored`, `assessment:failed`, `run:needs_attention`, `run:planning`.

+kubebuilder:validation:Enum:="run:applying";"assessment:check_failure";"run:completed";"run:created";"assessment:drifted";"run:errored";"assessment:failed";"run:needs_attention";"run:planning"

type OutputStatus

type OutputStatus struct {
	// Run ID of the latest run that updated the outputs.
	RunID string `json:"runID"`
}

Outputs status.

func (*OutputStatus) DeepCopy

func (in *OutputStatus) DeepCopy() *OutputStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OutputStatus.

func (*OutputStatus) DeepCopyInto

func (in *OutputStatus) DeepCopyInto(out *OutputStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PlanStatus

type PlanStatus struct {
	// Latest plan-only/speculative plan Terraform Cloud run ID.
	//
	//+optional
	ID string `json:"id,omitempty"`
	// Latest plan-only/speculative plan Terraform Cloud run status.
	//
	//+optional
	Status string `json:"status,omitempty"`
	// The version of Terraform to use for this run.
	//
	//+kubebuilder:validation:Pattern:="^\\d{1}\\.\\d{1,2}\\.\\d{1,2}$"
	//+optional
	TerraformVersion string `json:"terraformVersion,omitempty"`
}

func (*PlanStatus) DeepCopy

func (in *PlanStatus) DeepCopy() *PlanStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PlanStatus.

func (*PlanStatus) DeepCopyInto

func (in *PlanStatus) DeepCopyInto(out *PlanStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*PlanStatus) RunCompleted

func (rs *PlanStatus) RunCompleted() bool

type Project

type Project struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   ProjectSpec   `json:"spec"`
	Status ProjectStatus `json:"status,omitempty"`
}

Project is the Schema for the projects API

func (*Project) DeepCopy

func (in *Project) DeepCopy() *Project

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Project.

func (*Project) DeepCopyInto

func (in *Project) DeepCopyInto(out *Project)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Project) DeepCopyObject

func (in *Project) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*Project) IsCreationCandidate

func (p *Project) IsCreationCandidate() bool

func (*Project) ValidateSpec

func (p *Project) ValidateSpec() error

type ProjectList

type ProjectList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []Project `json:"items"`
}

ProjectList contains a list of Project

func (*ProjectList) DeepCopy

func (in *ProjectList) DeepCopy() *ProjectList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectList.

func (*ProjectList) DeepCopyInto

func (in *ProjectList) DeepCopyInto(out *ProjectList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ProjectList) DeepCopyObject

func (in *ProjectList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ProjectSpec

type ProjectSpec struct {
	// Organization name where the Workspace will be created.
	// More information:
	//   - https://developer.hashicorp.com/terraform/cloud-docs/users-teams-organizations/organizations
	//
	//+kubebuilder:validation:MinLength:=1
	Organization string `json:"organization"`
	// API Token to be used for API calls.
	Token Token `json:"token"`
	// Name of the Project.
	//
	//+kubebuilder:validation:MinLength:=1
	Name string `json:"name"`

	// Terraform Cloud's access model is team-based. In order to perform an action within a Terraform Cloud organization,
	// users must belong to a team that has been granted the appropriate permissions.
	// You can assign project-specific permissions to teams.
	// More information:
	//   - https://developer.hashicorp.com/terraform/cloud-docs/workspaces/organize-workspaces-with-projects#permissions
	//   - https://developer.hashicorp.com/terraform/cloud-docs/users-teams-organizations/permissions#project-permissions
	//
	//+kubebuilder:validation:MinItems:=1
	//+optional
	TeamAccess []*ProjectTeamAccess `json:"teamAccess,omitempty"`
}

ProjectSpec defines the desired state of Project. More information:

func (*ProjectSpec) DeepCopy

func (in *ProjectSpec) DeepCopy() *ProjectSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectSpec.

func (*ProjectSpec) DeepCopyInto

func (in *ProjectSpec) DeepCopyInto(out *ProjectSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ProjectStatus

type ProjectStatus struct {
	// Real world state generation.
	ObservedGeneration int64 `json:"observedGeneration"`
	// Project ID.
	ID string `json:"id"`
	// Project name.
	Name string `json:"name"`
}

ProjectStatus defines the observed state of Project.

func (*ProjectStatus) DeepCopy

func (in *ProjectStatus) DeepCopy() *ProjectStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectStatus.

func (*ProjectStatus) DeepCopyInto

func (in *ProjectStatus) DeepCopyInto(out *ProjectStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ProjectTeamAccess

type ProjectTeamAccess struct {
	// Team to grant access.
	// More information:
	//   - https://developer.hashicorp.com/terraform/cloud-docs/users-teams-organizations/teams
	Team Team `json:"team"`
	// There are two ways to choose which permissions a given team has on a project: fixed permission sets, and custom permissions.
	// Must be one of the following values: `admin`, `custom`, `maintain`, `read`, `write`.
	// More information:
	//   - https://developer.hashicorp.com/terraform/cloud-docs/users-teams-organizations/permissions#project-permissions
	//   - https://developer.hashicorp.com/terraform/cloud-docs/users-teams-organizations/permissions#general-project-permissions
	//
	//+kubebuilder:validation:Enum:=admin;custom;maintain;read;write
	Access tfc.TeamProjectAccessType `json:"access"`
	// Custom permissions let you assign specific, finer-grained permissions to a team than the broader fixed permission sets provide.
	// More information:
	//   - https://developer.hashicorp.com/terraform/cloud-docs/users-teams-organizations/permissions#custom-project-permissions
	//
	//+optional
	Custom *CustomProjectPermissions `json:"custom,omitempty"`
}

Terraform Cloud's access model is team-based. In order to perform an action within a Terraform Cloud organization, users must belong to a team that has been granted the appropriate permissions. You can assign project-specific permissions to teams. More information:

func (*ProjectTeamAccess) DeepCopy

func (in *ProjectTeamAccess) DeepCopy() *ProjectTeamAccess

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectTeamAccess.

func (*ProjectTeamAccess) DeepCopyInto

func (in *ProjectTeamAccess) DeepCopyInto(out *ProjectTeamAccess)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RemoteStateSharing

type RemoteStateSharing struct {
	// Allow access to the state for all workspaces within the same organization.
	// Default: `false`.
	//
	//+kubebuilder:default:=false
	//+optional
	AllWorkspaces bool `json:"allWorkspaces,omitempty"`
	// Allow access to the state for specific workspaces within the same organization.
	//
	//+kubebuilder:validation:MinItems:=1
	//+optional
	Workspaces []*ConsumerWorkspace `json:"workspaces,omitempty"`
}

RemoteStateSharing allows remote state access between workspaces. By default, new workspaces in Terraform Cloud do not allow other workspaces to access their state. More information:

func (*RemoteStateSharing) DeepCopy

func (in *RemoteStateSharing) DeepCopy() *RemoteStateSharing

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RemoteStateSharing.

func (*RemoteStateSharing) DeepCopyInto

func (in *RemoteStateSharing) DeepCopyInto(out *RemoteStateSharing)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RunStatus

type RunStatus struct {
	// Current(both active and finished) Terraform Cloud run ID.
	//
	//+optional
	ID string `json:"id,omitempty"`
	// Current(both active and finished) Terraform Cloud run status.
	//
	//+optional
	Status string `json:"status,omitempty"`
	// The configuration version of this run.
	//
	//+optional
	ConfigurationVersion string `json:"configurationVersion,omitempty"`
	// Run ID of the latest run that could update the outputs.
	//
	//+optional
	OutputRunID string `json:"outputRunID,omitempty"`
}

func (*RunStatus) DeepCopy

func (in *RunStatus) DeepCopy() *RunStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RunStatus.

func (*RunStatus) DeepCopyInto

func (in *RunStatus) DeepCopyInto(out *RunStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RunStatus) RunApplied

func (rs *RunStatus) RunApplied() bool

func (*RunStatus) RunCompleted

func (rs *RunStatus) RunCompleted() bool

type RunTrigger

type RunTrigger struct {
	// Source Workspace ID.
	// Must match pattern: `^ws-[a-zA-Z0-9]+$`
	//
	//+kubebuilder:validation:Pattern:="^ws-[a-zA-Z0-9]+$"
	//+optional
	ID string `json:"id,omitempty"`
	// Source Workspace Name.
	//
	//+kubebuilder:validation:MinLength:=1
	//+optional
	Name string `json:"name,omitempty"`
}

RunTrigger allows you to connect this workspace to one or more source workspaces. These connections allow runs to queue automatically in this workspace on successful apply of runs in any of the source workspaces. Only one of the fields `ID` or `Name` is allowed. At least one of the fields `ID` or `Name` is mandatory. More information:

func (*RunTrigger) DeepCopy

func (in *RunTrigger) DeepCopy() *RunTrigger

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RunTrigger.

func (*RunTrigger) DeepCopyInto

func (in *RunTrigger) DeepCopyInto(out *RunTrigger)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SSHKey

type SSHKey struct {
	// SSH key ID.
	// Must match pattern: `^sshkey-[a-zA-Z0-9]+$`
	//
	//+kubebuilder:validation:Pattern:="^sshkey-[a-zA-Z0-9]+$"
	//+optional
	ID string `json:"id,omitempty"`
	// SSH key name.
	//
	//+kubebuilder:validation:MinLength:=1
	//+optional
	Name string `json:"name,omitempty"`
}

SSH key used to clone Terraform modules. Only one of the fields `ID` or `Name` is allowed. At least one of the fields `ID` or `Name` is mandatory. More information:

func (*SSHKey) DeepCopy

func (in *SSHKey) DeepCopy() *SSHKey

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SSHKey.

func (*SSHKey) DeepCopyInto

func (in *SSHKey) DeepCopyInto(out *SSHKey)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Tag

type Tag string

Tags allows you to correlate, organize, and even filter workspaces based on the assigned tags. Tags must be one or more characters; can include letters, numbers, colons, hyphens, and underscores; and must begin and end with a letter or number. Must match pattern: `^[A-Za-z0-9][A-Za-z0-9:_-]*$`

+kubebuilder:validation:Pattern:="^[A-Za-z0-9][A-Za-z0-9:_-]*$"

type TargetWorkspace

type TargetWorkspace struct {
	// Workspace ID
	//
	//+optional
	ID string `json:"id,omitempty"`
	// Workspace Name
	//
	//+kubebuilder:validation:MinLength:=1
	//+optional
	Name string `json:"name,omitempty"`

	// Wildcard Name to match match workspace names using `*` on name suffix, prefix, or both.
	//
	//+kubebuilder:validation:MinLength:=1
	//+optional
	WildcardName string `json:"wildcardName,omitempty"`
}

TargetWorkspace is the name or ID of the workspace you want autoscale against.

func (*TargetWorkspace) DeepCopy

func (in *TargetWorkspace) DeepCopy() *TargetWorkspace

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TargetWorkspace.

func (*TargetWorkspace) DeepCopyInto

func (in *TargetWorkspace) DeepCopyInto(out *TargetWorkspace)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Team

type Team struct {
	// Team ID.
	// Must match pattern: `^team-[a-zA-Z0-9]+$`
	//
	//+kubebuilder:validation:Pattern:="^team-[a-zA-Z0-9]+$"
	//+optional
	ID string `json:"id,omitempty"`
	// Team name.
	//
	//+kubebuilder:validation:MinLength:=1
	//+optional
	Name string `json:"name,omitempty"`
}

Teams are groups of Terraform Cloud users within an organization. If a user belongs to at least one team in an organization, they are considered a member of that organization. Only one of the fields `ID` or `Name` is allowed. At least one of the fields `ID` or `Name` is mandatory. More information:

func (*Team) DeepCopy

func (in *Team) DeepCopy() *Team

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Team.

func (*Team) DeepCopyInto

func (in *Team) DeepCopyInto(out *Team)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type TeamAccess

type TeamAccess struct {
	// Team to grant access.
	// More information:
	//   - https://developer.hashicorp.com/terraform/cloud-docs/users-teams-organizations/teams
	Team Team `json:"team"`
	// There are two ways to choose which permissions a given team has on a workspace: fixed permission sets, and custom permissions.
	// Must be one of the following values: `admin`, `custom`, `plan`, `read`, `write`.
	// More information:
	//   - https://developer.hashicorp.com/terraform/cloud-docs/users-teams-organizations/permissions#workspace-permissions
	//
	//+kubebuilder:validation:Pattern:="^(admin|custom|plan|read|write)$"
	Access string `json:"access"`
	// Custom permissions let you assign specific, finer-grained permissions to a team than the broader fixed permission sets provide.
	// More information:
	//   - https://developer.hashicorp.com/terraform/cloud-docs/users-teams-organizations/permissions#custom-workspace-permissions
	//
	//+optional
	Custom CustomPermissions `json:"custom,omitempty"`
}

Terraform Cloud workspaces can only be accessed by users with the correct permissions. You can manage permissions for a workspace on a per-team basis. When a workspace is created, only the owners team and teams with the "manage workspaces" permission can access it, with full admin permissions. These teams' access can't be removed from a workspace. More information:

func (*TeamAccess) DeepCopy

func (in *TeamAccess) DeepCopy() *TeamAccess

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamAccess.

func (*TeamAccess) DeepCopyInto

func (in *TeamAccess) DeepCopyInto(out *TeamAccess)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Token

type Token struct {
	// Selects a key of a secret in the workspace's namespace
	SecretKeyRef *corev1.SecretKeySelector `json:"secretKeyRef"`
}

Token refers to a Kubernetes Secret object within the same namespace as the Workspace object

func (*Token) DeepCopy

func (in *Token) DeepCopy() *Token

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Token.

func (*Token) DeepCopyInto

func (in *Token) DeepCopyInto(out *Token)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ValueFrom

type ValueFrom struct {
	// Selects a key of a ConfigMap.
	//
	//+optional
	ConfigMapKeyRef *corev1.ConfigMapKeySelector `json:"configMapKeyRef,omitempty"`
	// Selects a key of a Secret.
	//
	//+optional
	SecretKeyRef *corev1.SecretKeySelector `json:"secretKeyRef,omitempty"`
}

ValueFrom source for the variable's value. Cannot be used if value is not empty.

func (*ValueFrom) DeepCopy

func (in *ValueFrom) DeepCopy() *ValueFrom

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ValueFrom.

func (*ValueFrom) DeepCopyInto

func (in *ValueFrom) DeepCopyInto(out *ValueFrom)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Variable

type Variable struct {
	// Name of the variable.
	//
	//+kubebuilder:validation:MinLength:=1
	Name string `json:"name"`
	// Description of the variable.
	//
	//+kubebuilder:validation:MinLength:=1
	//+optional
	Description string `json:"description,omitempty"`
	// Parse this field as HashiCorp Configuration Language (HCL). This allows you to interpolate values at runtime.
	// Default: `false`.
	//
	//+kubebuilder:default:=false
	//+optional
	HCL bool `json:"hcl,omitempty"`
	// Sensitive variables are never shown in the UI or API.
	// They may appear in Terraform logs if your configuration is designed to output them.
	// Default: `false`.
	//
	//+kubebuilder:default:=false
	//+optional
	Sensitive bool `json:"sensitive,omitempty"`
	// Value of the variable.
	//
	//+kubebuilder:validation:MinLength:=1
	//+optional
	Value string `json:"value,omitempty"`
	// Source for the variable's value. Cannot be used if value is not empty.
	//
	//+optional
	ValueFrom *ValueFrom `json:"valueFrom,omitempty"`
}

Variables let you customize configurations, modify Terraform's behavior, and store information like provider credentials. More information:

func (*Variable) DeepCopy

func (in *Variable) DeepCopy() *Variable

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Variable.

func (*Variable) DeepCopyInto

func (in *Variable) DeepCopyInto(out *Variable)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type VariableStatus

type VariableStatus struct {
	// Name of the variable.
	Name string `json:"name"`
	// ID of the variable.
	ID string `json:"id"`
	// VersionID is a hash of the variable on the TFC end.
	VersionID string `json:"versionID"`
	// ValueID is a hash of the variable on the CRD end.
	ValueID string `json:"valueID"`
	// Category of the variable.
	Category string `json:"category"`
}

func (*VariableStatus) DeepCopy

func (in *VariableStatus) DeepCopy() *VariableStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VariableStatus.

func (*VariableStatus) DeepCopyInto

func (in *VariableStatus) DeepCopyInto(out *VariableStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type VersionControl

type VersionControl struct {
	// The VCS Connection (OAuth Connection + Token) to use.
	// Must match pattern: `^ot-[a-zA-Z0-9]+$`
	//
	//+kubebuilder:validation:Pattern:="^ot-[a-zA-Z0-9]+$"
	OAuthTokenID string `json:"oAuthTokenID,omitempty"`
	// A reference to your VCS repository in the format `<organization>/<repository>` where `<organization>` and `<repository>` refer to the organization and repository in your VCS provider.
	//
	//+kubebuilder:validation:MinLength:=1
	Repository string `json:"repository,omitempty"`
	// The repository branch that Run will execute from. This defaults to the repository's default branch (e.g. main).
	//
	//+kubebuilder:validation:MinLength:=1
	//+optional
	Branch string `json:"branch,omitempty"`
	// Whether this workspace allows automatic speculative plans on PR.
	// Default: `true`.
	// More information:
	//   - https://developer.hashicorp.com/terraform/cloud-docs/run/ui#speculative-plans-on-pull-requests
	//   - https://developer.hashicorp.com/terraform/cloud-docs/run/remote-operations#speculative-plans
	//
	//+kubebuilder:default=true
	//+optional
	SpeculativePlans bool `json:"speculativePlans"`
}

VersionControl settings for the workspace's VCS repository, enabling the UI/VCS-driven run workflow. Omit this argument to utilize the CLI-driven and API-driven workflows, where runs are not driven by webhooks on your VCS provider. More information:

func (*VersionControl) DeepCopy

func (in *VersionControl) DeepCopy() *VersionControl

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VersionControl.

func (*VersionControl) DeepCopyInto

func (in *VersionControl) DeepCopyInto(out *VersionControl)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Workspace

type Workspace struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   WorkspaceSpec   `json:"spec"`
	Status WorkspaceStatus `json:"status,omitempty"`
}

Workspace is the Schema for the workspaces API

func (*Workspace) DeepCopy

func (in *Workspace) DeepCopy() *Workspace

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Workspace.

func (*Workspace) DeepCopyInto

func (in *Workspace) DeepCopyInto(out *Workspace)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Workspace) DeepCopyObject

func (in *Workspace) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*Workspace) IsCreationCandidate

func (w *Workspace) IsCreationCandidate() bool

func (*Workspace) ValidateSpec

func (w *Workspace) ValidateSpec() error

type WorkspaceAgentPool

type WorkspaceAgentPool struct {
	// Agent Pool ID.
	// Must match pattern: `^apool-[a-zA-Z0-9]+$`
	//
	//+kubebuilder:validation:Pattern:="^apool-[a-zA-Z0-9]+$"
	//+optional
	ID string `json:"id,omitempty"`
	// Agent Pool name.
	//
	//+kubebuilder:validation:MinLength:=1
	//+optional
	Name string `json:"name,omitempty"`
}

AgentPool allows Terraform Cloud to communicate with isolated, private, or on-premises infrastructure. Only one of the fields `ID` or `Name` is allowed. At least one of the fields `ID` or `Name` is mandatory. More information:

func (*WorkspaceAgentPool) DeepCopy

func (in *WorkspaceAgentPool) DeepCopy() *WorkspaceAgentPool

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceAgentPool.

func (*WorkspaceAgentPool) DeepCopyInto

func (in *WorkspaceAgentPool) DeepCopyInto(out *WorkspaceAgentPool)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type WorkspaceList

type WorkspaceList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []Workspace `json:"items"`
}

WorkspaceList contains a list of Workspace

func (*WorkspaceList) DeepCopy

func (in *WorkspaceList) DeepCopy() *WorkspaceList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceList.

func (*WorkspaceList) DeepCopyInto

func (in *WorkspaceList) DeepCopyInto(out *WorkspaceList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*WorkspaceList) DeepCopyObject

func (in *WorkspaceList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type WorkspaceProject

type WorkspaceProject struct {
	// Project ID.
	// Must match pattern: `^prj-[a-zA-Z0-9]+$`
	//
	//+kubebuilder:validation:Pattern:="^prj-[a-zA-Z0-9]+$"
	//+optional
	ID string `json:"id,omitempty"`
	// Project name.
	//
	//+kubebuilder:validation:MinLength:=1
	//+optional
	Name string `json:"name,omitempty"`
}

Projects let you organize your workspaces into groups. Only one of the fields `ID` or `Name` is allowed. At least one of the fields `ID` or `Name` is mandatory. More information:

func (*WorkspaceProject) DeepCopy

func (in *WorkspaceProject) DeepCopy() *WorkspaceProject

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceProject.

func (*WorkspaceProject) DeepCopyInto

func (in *WorkspaceProject) DeepCopyInto(out *WorkspaceProject)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type WorkspaceRunTask

type WorkspaceRunTask struct {
	// Run Task ID.
	// Must match pattern: `^task-[a-zA-Z0-9]+$`
	//
	//+kubebuilder:validation:Pattern:="^task-[a-zA-Z0-9]+$"
	//+optional
	ID string `json:"id,omitempty"`
	// Run Task Name.
	//
	//+kubebuilder:validation:MinLength:=1
	//+optional
	Name string `json:"name,omitempty"`
	// Run Task Enforcement Level. Can be one of `advisory` or `mandatory`. Default: `advisory`.
	// Must be one of the following values: `advisory`, `mandatory`
	// Default: `advisory`.
	//
	//+kubebuilder:validation:Pattern:="^(advisory|mandatory)$"
	//+kubebuilder:default:=advisory
	//+optional
	EnforcementLevel string `json:"enforcementLevel"`
	// Run Task Stage.
	// Must be one of the following values: `pre_apply`, `pre_plan`, `post_plan`.
	// Default: `post_plan`.
	//
	//+kubebuilder:validation:Pattern:="^(pre_apply|pre_plan|post_plan)$"
	//+kubebuilder:default:=post_plan
	//+optional
	Stage string `json:"stage,omitempty"`
}

Run tasks allow Terraform Cloud to interact with external systems at specific points in the Terraform Cloud run lifecycle. Only one of the fields `ID` or `Name` is allowed. At least one of the fields `ID` or `Name` is mandatory. More information:

func (*WorkspaceRunTask) DeepCopy

func (in *WorkspaceRunTask) DeepCopy() *WorkspaceRunTask

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceRunTask.

func (*WorkspaceRunTask) DeepCopyInto

func (in *WorkspaceRunTask) DeepCopyInto(out *WorkspaceRunTask)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type WorkspaceSpec

type WorkspaceSpec struct {
	// Workspace name.
	//
	//+kubebuilder:validation:MinLength:=1
	Name string `json:"name"`
	// Organization name where the Workspace will be created.
	// More information:
	//   - https://developer.hashicorp.com/terraform/cloud-docs/users-teams-organizations/organizations
	//
	//+kubebuilder:validation:MinLength:=1
	Organization string `json:"organization"`
	// API Token to be used for API calls.
	Token Token `json:"token"`

	// Define either change will be applied automatically(auto) or require an operator to confirm(manual).
	// Must be one of the following values: `auto`, `manual`.
	// Default: `manual`.
	// More information:
	//   - https://developer.hashicorp.com/terraform/cloud-docs/workspaces/settings#auto-apply-and-manual-apply
	//
	//+kubebuilder:validation:Pattern:="^(auto|manual)$"
	//+kubebuilder:default=manual
	//+optional
	ApplyMethod string `json:"applyMethod,omitempty"`
	// Allows a destroy plan to be created and applied.
	// Default: `true`.
	// More information:
	//   - https://developer.hashicorp.com/terraform/cloud-docs/workspaces/settings#destruction-and-deletion
	//
	//+kubebuilder:default=true
	//+optional
	AllowDestroyPlan bool `json:"allowDestroyPlan"`
	// Workspace description.
	//
	//+kubebuilder:validation:MinLength:=1
	//+optional
	Description string `json:"description,omitempty"`
	// Terraform Cloud Agents allow Terraform Cloud to communicate with isolated, private, or on-premises infrastructure.
	// More information:
	//   - https://developer.hashicorp.com/terraform/cloud-docs/agents
	//
	//+optional
	AgentPool *WorkspaceAgentPool `json:"agentPool,omitempty"`
	// Define where the Terraform code will be executed.
	// Must be one of the following values: `agent`, `local`, `remote`.
	// Default: `remote`.
	// More information:
	//   - https://developer.hashicorp.com/terraform/cloud-docs/workspaces/settings#execution-mode
	//
	//+kubebuilder:validation:Pattern:="^(agent|local|remote)$"
	//+kubebuilder:default=remote
	//+optional
	ExecutionMode string `json:"executionMode,omitempty"`
	// Run tasks allow Terraform Cloud to interact with external systems at specific points in the Terraform Cloud run lifecycle.
	// More information:
	//   - https://developer.hashicorp.com/terraform/cloud-docs/workspaces/settings/run-tasks
	//
	//+kubebuilder:validation:MinItems:=1
	//+optional
	RunTasks []WorkspaceRunTask `json:"runTasks,omitempty"`
	// Workspace tags are used to help identify and group together workspaces.
	// Tags must be one or more characters; can include letters, numbers, colons, hyphens, and underscores; and must begin and end with a letter or number.
	//
	//+kubebuilder:validation:MinItems:=1
	//+optional
	Tags []Tag `json:"tags,omitempty"`
	// Terraform Cloud workspaces can only be accessed by users with the correct permissions.
	// You can manage permissions for a workspace on a per-team basis.
	// When a workspace is created, only the owners team and teams with the "manage workspaces" permission can access it,
	// with full admin permissions. These teams' access can't be removed from a workspace.
	// More information:
	//   - https://developer.hashicorp.com/terraform/cloud-docs/workspaces/settings/access
	//
	//+kubebuilder:validation:MinItems:=1
	//+optional
	TeamAccess []*TeamAccess `json:"teamAccess,omitempty"`
	// The version of Terraform to use for this workspace.
	// If not specified, the latest available version will be used.
	// Must match pattern: `^\\d{1}\\.\\d{1,2}\\.\\d{1,2}$`
	// More information:
	//   - https://www.terraform.io/cloud-docs/workspaces/settings#terraform-version
	//
	//+kubebuilder:validation:Pattern:="^\\d{1}\\.\\d{1,2}\\.\\d{1,2}$"
	//+optional
	TerraformVersion string `json:"terraformVersion,omitempty"`
	// The directory where Terraform will execute, specified as a relative path from the root of the configuration directory.
	// More information:
	//   - https://www.terraform.io/cloud-docs/workspaces/settings#terraform-working-directory
	//
	//+kubebuilder:validation:MinLength:=1
	//+optional
	WorkingDirectory string `json:"workingDirectory,omitempty"`
	// Terraform Environment variables for all plans and applies in this workspace.
	// Variables defined within a workspace always overwrite variables from variable sets that have the same type and the same key.
	// More information:
	//   - https://developer.hashicorp.com/terraform/cloud-docs/workspaces/variables
	//   - https://developer.hashicorp.com/terraform/cloud-docs/workspaces/variables#environment-variables
	//
	//+kubebuilder:validation:MinItems:=1
	//+optional
	EnvironmentVariables []Variable `json:"environmentVariables,omitempty"`
	// Terraform variables for all plans and applies in this workspace.
	// Variables defined within a workspace always overwrite variables from variable sets that have the same type and the same key.
	// More information:
	//   - https://developer.hashicorp.com/terraform/cloud-docs/workspaces/variables
	//   - https://developer.hashicorp.com/terraform/cloud-docs/workspaces/variables#terraform-variables
	//
	//+kubebuilder:validation:MinItems:=1
	//+optional
	TerraformVariables []Variable `json:"terraformVariables,omitempty"`
	// Remote state access between workspaces.
	// By default, new workspaces in Terraform Cloud do not allow other workspaces to access their state.
	// More information:
	//   - https://developer.hashicorp.com/terraform/cloud-docs/workspaces/state#accessing-state-from-other-workspaces
	//
	//+optional
	RemoteStateSharing *RemoteStateSharing `json:"remoteStateSharing,omitempty"`
	// Run triggers allow you to connect this workspace to one or more source workspaces.
	// These connections allow runs to queue automatically in this workspace on successful apply of runs in any of the source workspaces.
	// More information:
	//   - https://developer.hashicorp.com/terraform/cloud-docs/workspaces/settings/run-triggers
	//
	//+kubebuilder:validation:MinItems:=1
	//+optional
	RunTriggers []RunTrigger `json:"runTriggers,omitempty"`
	// Settings for the workspace's VCS repository, enabling the UI/VCS-driven run workflow.
	// Omit this argument to utilize the CLI-driven and API-driven workflows, where runs are not driven by webhooks on your VCS provider.
	// More information:
	//   - https://www.terraform.io/cloud-docs/run/ui
	//   - https://www.terraform.io/cloud-docs/vcs
	//
	//+optional
	VersionControl *VersionControl `json:"versionControl,omitempty"`
	// SSH key used to clone Terraform modules.
	// More information:
	//   - https://developer.hashicorp.com/terraform/cloud-docs/workspaces/settings/ssh-keys
	//
	//+optional
	SSHKey *SSHKey `json:"sshKey,omitempty"`
	// Notifications allow you to send messages to other applications based on run and workspace events.
	// More information:
	//   - https://developer.hashicorp.com/terraform/cloud-docs/workspaces/settings/notifications
	//
	//+kubebuilder:validation:MinItems:=1
	//+optional
	Notifications []Notification `json:"notifications,omitempty"`
	// Projects let you organize your workspaces into groups.
	// Default: default organization project.
	// More information:
	//   - https://developer.hashicorp.com/terraform/tutorials/cloud/projects
	//
	//+optional
	Project *WorkspaceProject `json:"project,omitempty"`
}

WorkspaceSpec defines the desired state of Workspace.

func (*WorkspaceSpec) DeepCopy

func (in *WorkspaceSpec) DeepCopy() *WorkspaceSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceSpec.

func (*WorkspaceSpec) DeepCopyInto

func (in *WorkspaceSpec) DeepCopyInto(out *WorkspaceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type WorkspaceStatus

type WorkspaceStatus struct {
	// Workspace ID that is managed by the controller.
	WorkspaceID string `json:"workspaceID"`

	// Real world state generation.
	//
	//+optional
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`
	// Workspace last update timestamp.
	//
	//+optional
	UpdateAt int64 `json:"updateAt,omitempty"`
	// Workspace Runs status.
	//
	//+optional
	Run *RunStatus `json:"runStatus,omitempty"`
	// Run status of plan-only/speculative plan that was triggered manually.
	//
	//+optional
	Plan *PlanStatus `json:"plan,omitempty"`
	// Workspace Terraform version.
	//
	//+kubebuilder:validation:Pattern:="^\\d{1}\\.\\d{1,2}\\.\\d{1,2}$"
	//+optional
	TerraformVersion string `json:"terraformVersion,omitempty"`
	// Workspace variables.
	//
	//+optional
	Variables []VariableStatus `json:"variables,omitempty"`
}

WorkspaceStatus defines the observed state of Workspace.

func (*WorkspaceStatus) AddOrUpdateVariableStatus

func (s *WorkspaceStatus) AddOrUpdateVariableStatus(variable VariableStatus)

AddOrUpdateVariableStatus adds a given variable to the status if it does not exist there; otherwise, it updates it.

func (*WorkspaceStatus) DeepCopy

func (in *WorkspaceStatus) DeepCopy() *WorkspaceStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceStatus.

func (*WorkspaceStatus) DeepCopyInto

func (in *WorkspaceStatus) DeepCopyInto(out *WorkspaceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*WorkspaceStatus) DeleteVariableStatus

func (s *WorkspaceStatus) DeleteVariableStatus(variable VariableStatus)

DeleteVariableStatus deletes a given variable from the status.

func (*WorkspaceStatus) GetVariableStatus

func (s *WorkspaceStatus) GetVariableStatus(variable VariableStatus) *VariableStatus

GetVariableStatus returns a given variable from the status if it exists there; otherwise, nil.

Jump to

Keyboard shortcuts

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