diff --git a/internal/api/run.go b/internal/api/run.go index 8f30d4c64..1c03e1aa1 100644 --- a/internal/api/run.go +++ b/internal/api/run.go @@ -71,6 +71,7 @@ func (a *api) createRun(w http.ResponseWriter, r *http.Request) { ConfigurationVersionID: configurationVersionID, TargetAddrs: opts.TargetAddrs, ReplaceAddrs: opts.ReplaceAddrs, + PlanOnly: opts.PlanOnly, }) if err != nil { Error(w, err) diff --git a/internal/api/types/run.go b/internal/api/types/run.go index fc56d88c4..904e711e0 100644 --- a/internal/api/types/run.go +++ b/internal/api/types/run.go @@ -81,6 +81,9 @@ type RunCreateOptions struct { // set. https://jsonapi.org/format/#crud-creating Type string `jsonapi:"primary,runs"` + // PlanOnly specifies if this is a speculative, plan-only run that Terraform cannot apply. + PlanOnly *bool `jsonapi:"attr,plan-only,omitempty"` + // Specifies if this plan is a destroy plan, which will destroy all // provisioned resources. IsDestroy *bool `jsonapi:"attribute" json:"is-destroy,omitempty"` diff --git a/internal/configversion/service.go b/internal/configversion/service.go index 5dba484b6..bf95cc20c 100644 --- a/internal/configversion/service.go +++ b/internal/configversion/service.go @@ -15,9 +15,6 @@ type ( Service interface { CreateConfigurationVersion(ctx context.Context, workspaceID string, opts ConfigurationVersionCreateOptions) (*ConfigurationVersion, error) - // CloneConfigurationVersion creates a new configuration version using the - // config tarball of an existing configuration version. - CloneConfigurationVersion(ctx context.Context, cvID string, opts ConfigurationVersionCreateOptions) (*ConfigurationVersion, error) GetConfigurationVersion(ctx context.Context, id string) (*ConfigurationVersion, error) GetLatestConfigurationVersion(ctx context.Context, workspaceID string) (*ConfigurationVersion, error) ListConfigurationVersions(ctx context.Context, workspaceID string, opts ConfigurationVersionListOptions) (*ConfigurationVersionList, error) @@ -84,29 +81,6 @@ func (s *service) CreateConfigurationVersion(ctx context.Context, workspaceID st return cv, nil } -func (s *service) CloneConfigurationVersion(ctx context.Context, cvID string, opts ConfigurationVersionCreateOptions) (*ConfigurationVersion, error) { - cv, err := s.GetConfigurationVersion(ctx, cvID) - if err != nil { - return nil, err - } - - cv, err = s.CreateConfigurationVersion(ctx, cv.WorkspaceID, opts) - if err != nil { - return nil, err - } - - config, err := s.DownloadConfig(ctx, cvID) - if err != nil { - return nil, err - } - - if err := s.UploadConfig(ctx, cv.ID, config); err != nil { - return nil, err - } - - return cv, nil -} - func (s *service) ListConfigurationVersions(ctx context.Context, workspaceID string, opts ConfigurationVersionListOptions) (*ConfigurationVersionList, error) { subject, err := s.workspace.CanAccess(ctx, rbac.ListConfigurationVersionsAction, workspaceID) if err != nil { diff --git a/internal/http/html/static/templates/content/workspace_edit.tmpl b/internal/http/html/static/templates/content/workspace_edit.tmpl index 3a1fd0547..f54e19f82 100644 --- a/internal/http/html/static/templates/content/workspace_edit.tmpl +++ b/internal/http/html/static/templates/content/workspace_edit.tmpl @@ -179,7 +179,7 @@ - +