Documentation
¶
Overview ¶
Copyright 2017 HootSuite Media Inc. SPDX-License-Identifier: Apache-2.0 Modified hereafter by contributors to runatlantis/atlantis.
Package models holds all models that are needed across packages. We place these models in their own package so as to avoid circular dependencies between packages (which is a compile error).
Index ¶
- func GenerateLockKey(project Project, workspace string) string
- func ParseGitlabHostname(raw string) (host, basePath string, err error)
- func SplitRepoFullName(repoFullName string) (owner string, repo string)
- type ApprovalStatus
- type CommitStatus
- type ImportSuccess
- type MergeableStatus
- type Plan
- type PlanSuccess
- type PlanSuccessStats
- type PolicyCheckResults
- type PolicySetResult
- type PolicySetStatus
- type Project
- type ProjectLock
- type ProjectPlanStatus
- type ProjectStatus
- type PullReqStatus
- type PullRequest
- type PullRequestEventType
- type PullRequestOptions
- type PullRequestState
- type PullStatus
- type Repo
- type StateRmSuccess
- type TeamAllowlistCheckerContext
- type User
- type VCSHost
- type VCSHostType
- type VersionSuccess
- type WorkflowHookCommandContext
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GenerateLockKey ¶ added in v0.36.0
GenerateLockKey creates a consistent lock key from a project and workspace. This ensures the same format is used across all locking operations.
func ParseGitlabHostname ¶ added in v0.43.0
ParseGitlabHostname splits a user-supplied GitLab hostname into its host and base path components. Accepted inputs include bare hosts ("gitlab.com"), hosts with a subpath ("acme.com/gitlab"), and fully-qualified URLs ("https://acme.com:8080/gitlab/").
The returned host includes any port. The returned basePath is either empty or starts with "/" and has no trailing slash.
func SplitRepoFullName ¶ added in v0.4.7
SplitRepoFullName splits a repo full name up into its owner and repo name segments. If the repoFullName is malformed, may return empty strings for owner or repo. Ex. runatlantis/atlantis => (runatlantis, atlantis)
gitlab/subgroup/runatlantis/atlantis => (gitlab/subgroup/runatlantis, atlantis) azuredevops/project/atlantis => (azuredevops/project, atlantis)
Types ¶
type ApprovalStatus ¶ added in v0.17.4
type CommitStatus ¶ added in v0.4.3
type CommitStatus int
CommitStatus is the result of executing an Atlantis command for the commit. In Github the options are: error, failure, pending, success. In Gitlab the options are: failed, canceled, pending, running, success. We only support Failed, Pending, Success.
const ( PendingCommitStatus CommitStatus = iota SuccessCommitStatus FailedCommitStatus )
func (CommitStatus) String ¶ added in v0.4.3
func (s CommitStatus) String() string
type ImportSuccess ¶ added in v0.22.0
type ImportSuccess struct {
// Output is the output from terraform import
Output string
// RePlanCmd is the command that users should run to re-plan this project.
RePlanCmd string
}
ImportSuccess is the result of a successful import run.
type MergeableStatus ¶ added in v0.37.0
type Plan ¶
type Plan struct {
// Project is the project this plan is for.
Project Project
// LocalPath is the absolute path to the plan on disk
// (versus the relative path from the repo root).
LocalPath string
}
Plan is the result of running an Atlantis plan command. This model is used to represent a plan on disk.
type PlanSuccess ¶ added in v0.4.14
type PlanSuccess struct {
// TerraformOutput is the output from Terraform of running plan.
TerraformOutput string
// LockURL is the full URL to the lock held by this plan.
LockURL string
// RePlanCmd is the command that users should run to re-plan this project.
RePlanCmd string
// ApplyCmd is the command that users should run to apply this plan.
ApplyCmd string
// MergedAgain is true if we're using the checkout merge strategy and the
// branch we're merging into had been updated, and we had to merge again
// before planning
MergedAgain bool
}
PlanSuccess is the result of a successful plan.
func (PlanSuccess) DiffMarkdownFormattedTerraformOutput ¶ added in v0.17.3
func (p PlanSuccess) DiffMarkdownFormattedTerraformOutput() string
DiffMarkdownFormattedTerraformOutput formats the Terraform output to match diff markdown format
func (*PlanSuccess) DiffSummary ¶ added in v0.23.0
func (p *PlanSuccess) DiffSummary() string
DiffSummary extracts one line summary of plan changes from TerraformOutput.
func (*PlanSuccess) NoChanges ¶ added in v0.23.0
func (p *PlanSuccess) NoChanges() bool
NoChanges returns true if the plan has no changes.
func (PlanSuccess) Stats ¶ added in v0.24.3
func (p PlanSuccess) Stats() PlanSuccessStats
Stats returns plan change stats and contextual information.
func (*PlanSuccess) Summary ¶ added in v0.17.0
func (p *PlanSuccess) Summary() string
Summary extracts summaries of plan changes from TerraformOutput.
type PlanSuccessStats ¶ added in v0.24.3
PlanSuccessStats holds stats for a plan.
func NewPlanSuccessStats ¶ added in v0.24.3
func NewPlanSuccessStats(output string) PlanSuccessStats
type PolicyCheckResults ¶ added in v0.24.0
type PolicyCheckResults struct {
PreConftestOutput string
PostConftestOutput string
// PolicySetResults is the output from policy check binary(conftest|opa)
PolicySetResults []PolicySetResult
// LockURL is the full URL to the lock held by this policy check.
LockURL string
// RePlanCmd is the command that users should run to re-plan this project.
RePlanCmd string
// ApplyCmd is the command that users should run to apply this plan.
ApplyCmd string
// ApprovePoliciesCmd is the command that users should run to approve policies for this plan.
ApprovePoliciesCmd string
// HasDiverged is true if we're using the checkout merge strategy and the
// branch we're merging into has been updated since we cloned and merged
// it.
HasDiverged bool
}
PolicyCheckResults is the result of a successful policy check run.
func (*PolicyCheckResults) CombinedOutput ¶ added in v0.24.0
func (p *PolicyCheckResults) CombinedOutput() string
func (*PolicyCheckResults) PolicyCleared ¶ added in v0.24.0
func (p *PolicyCheckResults) PolicyCleared() bool
PolicyCleared is used to determine if policies have all succeeded or been approved.
func (*PolicyCheckResults) PolicySummary ¶ added in v0.24.0
func (p *PolicyCheckResults) PolicySummary() string
PolicySummary returns a summary of the current approval state of policy sets.
func (*PolicyCheckResults) Summary ¶ added in v0.24.0
func (p *PolicyCheckResults) Summary() string
Summary extracts one line summary of each policy check.
type PolicySetResult ¶ added in v0.24.0
type PolicySetStatus ¶ added in v0.24.0
PolicySetApproval tracks the number of approvals a given policy set has.
type Project ¶
type Project struct {
// ProjectName of the project
ProjectName string
// RepoFullName is the owner and repo name, ex. "runatlantis/atlantis"
RepoFullName string
// Path to project root in the repo.
// If "." then project is at root.
// Never ends in "/".
// todo: rename to RepoRelDir to match rest of project once we can separate
// out how this is saved in boltdb vs. its usage everywhere else so we don't
// break existing dbs.
Path string
}
Project represents a Terraform project. Since there may be multiple Terraform projects in a single repo we also include Path to the project root relative to the repo root.
func NewProject ¶
NewProject constructs a Project. Use this constructor because it sets Path correctly.
type ProjectLock ¶
type ProjectLock struct {
// Project is the project that is being locked.
Project Project
// Pull is the pull request from which the command was run that
// created this lock.
Pull PullRequest
// User is the username of the user that ran the command
// that created this lock.
User User
// Workspace is the Terraform workspace that this
// lock is being held against.
Workspace string
// Time is the time at which the lock was first created.
Time time.Time
}
ProjectLock represents a lock on a project.
type ProjectPlanStatus ¶ added in v0.4.14
type ProjectPlanStatus int
ProjectPlanStatus is the status of where this project is at in the planning cycle.
const ( // ErroredPlanStatus means that this plan has an error or the apply has an // error. ErroredPlanStatus ProjectPlanStatus = iota // PlannedPlanStatus means that a plan has been successfully generated but // not yet applied. PlannedPlanStatus // PlannedNoChangesPlanStatus means that a plan has been successfully // generated with "No changes" and not yet applied. PlannedNoChangesPlanStatus // ErroredApplyStatus means that a plan has been generated but there was an // error while applying it. ErroredApplyStatus // AppliedPlanStatus means that a plan has been generated and applied // successfully. AppliedPlanStatus // DiscardedPlanStatus means that there was an unapplied plan that was // discarded due to a project being unlocked DiscardedPlanStatus // ErroredPolicyCheckStatus means that there was an unapplied plan that was // discarded due to a project being unlocked ErroredPolicyCheckStatus // PassedPolicyCheckStatus means that there was an unapplied plan that was // discarded due to a project being unlocked PassedPolicyCheckStatus )
func (ProjectPlanStatus) String ¶ added in v0.4.14
func (p ProjectPlanStatus) String() string
String returns a string representation of the status.
type ProjectStatus ¶ added in v0.4.14
type ProjectStatus struct {
Workspace string
RepoRelDir string
ProjectName string
// PolicySetApprovals tracks the approval status of every PolicySet for a Project.
PolicyStatus []PolicySetStatus
// Status is the status of where this project is at in the planning cycle.
Status ProjectPlanStatus
}
ProjectStatus is the status of a specific project.
type PullReqStatus ¶ added in v0.17.4
type PullReqStatus struct {
ApprovalStatus ApprovalStatus
MergeableStatus MergeableStatus
}
type PullRequest ¶
type PullRequest struct {
// Num is the pull request number or ID.
Num int
// HeadCommit is a sha256 that points to the head of the branch that is being
// pull requested into the base. If the pull request is from Bitbucket Cloud
// the string will only be 12 characters long because Bitbucket Cloud
// truncates its commit IDs.
HeadCommit string
// URL is the url of the pull request.
// ex. "https://github.com/runatlantis/atlantis/pull/1"
URL string
// HeadBranch is the name of the head branch (the branch that is getting
// merged into the base).
HeadBranch string
// BaseBranch is the name of the base branch (the branch that the pull
// request is getting merged into).
BaseBranch string
// Author is the username of the pull request author.
Author string
// State will be one of Open or Closed.
// Gitlab supports an additional "merged" state but Github doesn't so we map
// merged to Closed.
State PullRequestState
// BaseRepo is the repository that the pull request will be merged into.
BaseRepo Repo
}
PullRequest is a VCS pull request. GitLab calls these Merge Requests.
type PullRequestEventType ¶ added in v0.4.3
type PullRequestEventType int
const ( OpenedPullEvent PullRequestEventType = iota UpdatedPullEvent ClosedPullEvent OtherPullEvent )
func (PullRequestEventType) String ¶ added in v0.4.3
func (p PullRequestEventType) String() string
type PullRequestOptions ¶ added in v0.17.0
type PullRequestOptions struct {
// When DeleteSourceBranchOnMerge flag is set to true VCS deletes the source branch after the PR is merged
// Applied by GitLab & AzureDevops
DeleteSourceBranchOnMerge bool
// MergeMethod specifies the merge method for the VCS
// Implemented only for Github
MergeMethod string
}
PullRequestOptions is used to set optional paralmeters for PullRequest
type PullRequestState ¶ added in v0.2.0
type PullRequestState int
const ( OpenPullState PullRequestState = iota ClosedPullState )
type PullStatus ¶ added in v0.4.14
type PullStatus struct {
// Projects are the projects that have been modified in this pull request.
Projects []ProjectStatus
// Pull is the original pull request model.
Pull PullRequest
}
PullStatus is the current status of a pull request that is in progress.
func (PullStatus) StatusCount ¶ added in v0.5.0
func (p PullStatus) StatusCount(status ProjectPlanStatus) int
StatusCount returns the number of projects that have status.
type Repo ¶
type Repo struct {
// FullName is the owner and repo name separated
// by a "/", ex. "runatlantis/atlantis", "gitlab/subgroup/atlantis",
// "Bitbucket Server/atlantis", "azuredevops/project/atlantis".
FullName string
// Owner is just the repo owner, ex. "runatlantis" or "gitlab/subgroup"
// or azuredevops/project. This may contain /'s in the case of GitLab
// subgroups or Azure DevOps Team Projects. This may contain spaces in
// the case of Bitbucket Server.
Owner string
// Name is just the repo name, ex. "atlantis". This will never have
// /'s in it.
Name string
// CloneURL is the full HTTPS url for cloning with username and token string
// ex. "https://username:token@github.com/atlantis/atlantis.git".
CloneURL string
// SanitizedCloneURL is the full HTTPS url for cloning with the password
// redacted.
// ex. "https://user:<redacted>@github.com/atlantis/atlantis.git".
SanitizedCloneURL string
// VCSHost is where this repo is hosted.
VCSHost VCSHost
}
Repo is a VCS repository.
func NewRepo ¶ added in v0.3.2
func NewRepo(vcsHostType VCSHostType, repoFullName string, cloneURL string, vcsUser string, vcsToken string, vcsHostname string) (Repo, error)
NewRepo constructs a Repo object. repoFullName is the owner/repo form, cloneURL can be with or without .git at the end ex. https://github.com/runatlantis/atlantis.git OR
https://github.com/runatlantis/atlantis
vcsHostname is the configured hostname for the VCS (may include a subpath for GitLab, e.g. "acme.com/gitlab"). Pass empty string to skip the enhanced host/subpath validation; non-GitLab callers always pass "".
type StateRmSuccess ¶ added in v0.23.0
type StateRmSuccess struct {
// Output is the output from terraform state rm
Output string
// RePlanCmd is the command that users should run to re-plan this project.
RePlanCmd string
}
StateRmSuccess is the result of a successful state rm run.
type TeamAllowlistCheckerContext ¶ added in v0.30.0
type TeamAllowlistCheckerContext struct {
// BaseRepo is the repository that the pull request will be merged into.
BaseRepo Repo
// The name of the command that is being executed, i.e. 'plan', 'apply' etc.
CommandName string
// EscapedCommentArgs are the extra arguments that were added to the atlantis
// command, ex. atlantis plan -- -target=resource. We then escape them
// by adding a \ before each character so that they can be used within
// sh -c safely, i.e. sh -c "terraform plan $(touch bad)".
EscapedCommentArgs []string
// HeadRepo is the repository that is getting merged into the BaseRepo.
// If the pull request branch is from the same repository then HeadRepo will
// be the same as BaseRepo.
HeadRepo Repo
// Log is a logger that's been set up for this context.
Log logging.SimpleLogging
// Pull is the pull request we're responding to.
Pull PullRequest
// ProjectName is the name of the project set in atlantis.yaml. If there was
// no name this will be an empty string.
ProjectName string
// RepoDir is the absolute path to the repo root
RepoDir string
// RepoRelDir is the directory of this project relative to the repo root.
RepoRelDir string
// User is the user that triggered this command.
User User
// Verbose is true when the user would like verbose output.
Verbose bool
// Workspace is the Terraform workspace this project is in. It will always
// be set.
Workspace string
// API is true if plan/apply by API endpoints
API bool
}
TeamAllowlistCheckerContext defines the context for a TeamAllowlistChecker to verify command permissions.
type VCSHost ¶ added in v0.3.6
type VCSHost struct {
// Hostname is the hostname of the VCS provider, ex. "github.com" or
// "github-enterprise.example.com".
Hostname string
// Type is which type of VCS host this is, ex. GitHub or GitLab.
Type VCSHostType
}
VCSHost is a Git hosting provider, for example GitHub.
type VCSHostType ¶ added in v0.3.6
type VCSHostType int
const ( Github VCSHostType = iota Gitlab BitbucketCloud BitbucketServer AzureDevops Gitea )
func NewVCSHostType ¶ added in v0.19.8
func NewVCSHostType(t string) (VCSHostType, error)
func (VCSHostType) String ¶ added in v0.3.6
func (h VCSHostType) String() string
type VersionSuccess ¶ added in v0.17.3
type VersionSuccess struct {
VersionOutput string
}
type WorkflowHookCommandContext ¶ added in v0.18.2
type WorkflowHookCommandContext struct {
// BaseRepo is the repository that the pull request will be merged into.
BaseRepo Repo
// The name of the command that is being executed, i.e. 'plan', 'apply' etc.
CommandName string
// Set true if there were any errors during the command execution
CommandHasErrors bool
// EscapedCommentArgs are the extra arguments that were added to the atlantis
// command, ex. atlantis plan -- -target=resource. We then escape them
// by adding a \ before each character so that they can be used within
// sh -c safely, i.e. sh -c "terraform plan $(touch bad)".
EscapedCommentArgs []string
// HeadRepo is the repository that is getting merged into the BaseRepo.
// If the pull request branch is from the same repository then HeadRepo will
// be the same as BaseRepo.
HeadRepo Repo
// HookDescription is a description of the hook that is being executed.
HookDescription string
// UUID for reference
HookID string
// HookStepName is the name of the step that is being executed.
HookStepName string
// Log is a logger that's been set up for this context.
Log logging.SimpleLogging
// Pull is the pull request we're responding to.
Pull PullRequest
// ProjectName is the name of the project set in atlantis.yaml. If there was
// no name this will be an empty string.
ProjectName string
// RepoRelDir is the directory of this project relative to the repo root.
RepoRelDir string
// User is the user that triggered this command.
User User
// Verbose is true when the user would like verbose output.
Verbose bool
// Workspace is the Terraform workspace this project is in. It will always
// be set.
Workspace string
// API is true if plan/apply by API endpoints
API bool
}
WorkflowHookCommandContext defines the context for a pre and post workflow_hooks that will be executed before workflows.