mirror of
https://github.com/coder/coder.git
synced 2025-07-15 22:20:27 +00:00
@ -144,6 +144,7 @@ func templateCreate() *cobra.Command {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type createValidTemplateVersionArgs struct {
|
type createValidTemplateVersionArgs struct {
|
||||||
|
Name string
|
||||||
Client *codersdk.Client
|
Client *codersdk.Client
|
||||||
Organization codersdk.Organization
|
Organization codersdk.Organization
|
||||||
Provisioner database.ProvisionerType
|
Provisioner database.ProvisionerType
|
||||||
@ -162,6 +163,7 @@ func createValidTemplateVersion(cmd *cobra.Command, args createValidTemplateVers
|
|||||||
client := args.Client
|
client := args.Client
|
||||||
|
|
||||||
req := codersdk.CreateTemplateVersionRequest{
|
req := codersdk.CreateTemplateVersionRequest{
|
||||||
|
Name: args.Name,
|
||||||
StorageMethod: codersdk.ProvisionerStorageMethodFile,
|
StorageMethod: codersdk.ProvisionerStorageMethodFile,
|
||||||
StorageSource: args.FileHash,
|
StorageSource: args.FileHash,
|
||||||
Provisioner: codersdk.ProvisionerType(args.Provisioner),
|
Provisioner: codersdk.ProvisionerType(args.Provisioner),
|
||||||
|
@ -19,6 +19,7 @@ import (
|
|||||||
func templatePush() *cobra.Command {
|
func templatePush() *cobra.Command {
|
||||||
var (
|
var (
|
||||||
directory string
|
directory string
|
||||||
|
versionName string
|
||||||
provisioner string
|
provisioner string
|
||||||
parameterFile string
|
parameterFile string
|
||||||
alwaysPrompt bool
|
alwaysPrompt bool
|
||||||
@ -75,6 +76,7 @@ func templatePush() *cobra.Command {
|
|||||||
spin.Stop()
|
spin.Stop()
|
||||||
|
|
||||||
job, _, err := createValidTemplateVersion(cmd, createValidTemplateVersionArgs{
|
job, _, err := createValidTemplateVersion(cmd, createValidTemplateVersionArgs{
|
||||||
|
Name: versionName,
|
||||||
Client: client,
|
Client: client,
|
||||||
Organization: organization,
|
Organization: organization,
|
||||||
Provisioner: database.ProvisionerType(provisioner),
|
Provisioner: database.ProvisionerType(provisioner),
|
||||||
@ -107,6 +109,7 @@ func templatePush() *cobra.Command {
|
|||||||
cmd.Flags().StringVarP(&directory, "directory", "d", currentDirectory, "Specify the directory to create from")
|
cmd.Flags().StringVarP(&directory, "directory", "d", currentDirectory, "Specify the directory to create from")
|
||||||
cmd.Flags().StringVarP(&provisioner, "test.provisioner", "", "terraform", "Customize the provisioner backend")
|
cmd.Flags().StringVarP(&provisioner, "test.provisioner", "", "terraform", "Customize the provisioner backend")
|
||||||
cmd.Flags().StringVarP(¶meterFile, "parameter-file", "", "", "Specify a file path with parameter values.")
|
cmd.Flags().StringVarP(¶meterFile, "parameter-file", "", "", "Specify a file path with parameter values.")
|
||||||
|
cmd.Flags().StringVarP(&versionName, "name", "", "", "Specify a name for the new template version. It will be automatically generated if not provided.")
|
||||||
cmd.Flags().BoolVar(&alwaysPrompt, "always-prompt", false, "Always prompt all parameters. Does not pull parameter values from active template version")
|
cmd.Flags().BoolVar(&alwaysPrompt, "always-prompt", false, "Always prompt all parameters. Does not pull parameter values from active template version")
|
||||||
cliui.AllowSkipPrompt(cmd)
|
cliui.AllowSkipPrompt(cmd)
|
||||||
// This is for testing!
|
// This is for testing!
|
||||||
|
@ -122,7 +122,7 @@ func TestTemplatePush(t *testing.T) {
|
|||||||
Parse: echo.ParseComplete,
|
Parse: echo.ParseComplete,
|
||||||
Provision: echo.ProvisionComplete,
|
Provision: echo.ProvisionComplete,
|
||||||
})
|
})
|
||||||
cmd, root := clitest.New(t, "templates", "push", template.Name, "--directory", source, "--test.provisioner", string(database.ProvisionerTypeEcho))
|
cmd, root := clitest.New(t, "templates", "push", template.Name, "--directory", source, "--test.provisioner", string(database.ProvisionerTypeEcho), "--name", "example")
|
||||||
clitest.SetupConfig(t, client, root)
|
clitest.SetupConfig(t, client, root)
|
||||||
pty := ptytest.New(t)
|
pty := ptytest.New(t)
|
||||||
cmd.SetIn(pty.Input())
|
cmd.SetIn(pty.Input())
|
||||||
@ -153,6 +153,7 @@ func TestTemplatePush(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Len(t, templateVersions, 2)
|
assert.Len(t, templateVersions, 2)
|
||||||
assert.NotEqual(t, template.ActiveVersionID, templateVersions[1].ID)
|
assert.NotEqual(t, template.ActiveVersionID, templateVersions[1].ID)
|
||||||
|
require.Equal(t, "example", templateVersions[1].Name)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("UseWorkingDir", func(t *testing.T) {
|
t.Run("UseWorkingDir", func(t *testing.T) {
|
||||||
|
@ -791,13 +791,17 @@ func (api *API) postTemplateVersionsByOrganization(rw http.ResponseWriter, r *ht
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if req.Name == "" {
|
||||||
|
req.Name = namesgenerator.GetRandomName(1)
|
||||||
|
}
|
||||||
|
|
||||||
templateVersion, err = db.InsertTemplateVersion(ctx, database.InsertTemplateVersionParams{
|
templateVersion, err = db.InsertTemplateVersion(ctx, database.InsertTemplateVersionParams{
|
||||||
ID: uuid.New(),
|
ID: uuid.New(),
|
||||||
TemplateID: templateID,
|
TemplateID: templateID,
|
||||||
OrganizationID: organization.ID,
|
OrganizationID: organization.ID,
|
||||||
CreatedAt: database.Now(),
|
CreatedAt: database.Now(),
|
||||||
UpdatedAt: database.Now(),
|
UpdatedAt: database.Now(),
|
||||||
Name: namesgenerator.GetRandomName(1),
|
Name: req.Name,
|
||||||
Readme: "",
|
Readme: "",
|
||||||
JobID: provisionerJob.ID,
|
JobID: provisionerJob.ID,
|
||||||
CreatedBy: uuid.NullUUID{
|
CreatedBy: uuid.NullUUID{
|
||||||
|
@ -93,7 +93,8 @@ func TestPostTemplateVersionsByOrganization(t *testing.T) {
|
|||||||
|
|
||||||
file, err := client.Upload(ctx, codersdk.ContentTypeTar, data)
|
file, err := client.Upload(ctx, codersdk.ContentTypeTar, data)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
_, err = client.CreateTemplateVersion(ctx, user.OrganizationID, codersdk.CreateTemplateVersionRequest{
|
version, err := client.CreateTemplateVersion(ctx, user.OrganizationID, codersdk.CreateTemplateVersionRequest{
|
||||||
|
Name: "bananas",
|
||||||
StorageMethod: codersdk.ProvisionerStorageMethodFile,
|
StorageMethod: codersdk.ProvisionerStorageMethodFile,
|
||||||
StorageSource: file.Hash,
|
StorageSource: file.Hash,
|
||||||
Provisioner: codersdk.ProvisionerTypeEcho,
|
Provisioner: codersdk.ProvisionerTypeEcho,
|
||||||
@ -105,6 +106,7 @@ func TestPostTemplateVersionsByOrganization(t *testing.T) {
|
|||||||
}},
|
}},
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, "bananas", version.Name)
|
||||||
|
|
||||||
require.Len(t, auditor.AuditLogs, 1)
|
require.Len(t, auditor.AuditLogs, 1)
|
||||||
assert.Equal(t, database.AuditActionCreate, auditor.AuditLogs[0].Action)
|
assert.Equal(t, database.AuditActionCreate, auditor.AuditLogs[0].Action)
|
||||||
|
@ -34,6 +34,7 @@ type Organization struct {
|
|||||||
|
|
||||||
// CreateTemplateVersionRequest enables callers to create a new Template Version.
|
// CreateTemplateVersionRequest enables callers to create a new Template Version.
|
||||||
type CreateTemplateVersionRequest struct {
|
type CreateTemplateVersionRequest struct {
|
||||||
|
Name string `json:"name,omitempty" validate:"omitempty,template_name"`
|
||||||
// TemplateID optionally associates a version with a template.
|
// TemplateID optionally associates a version with a template.
|
||||||
TemplateID uuid.UUID `json:"template_id,omitempty"`
|
TemplateID uuid.UUID `json:"template_id,omitempty"`
|
||||||
|
|
||||||
|
@ -185,6 +185,7 @@ export interface CreateTemplateVersionDryRunRequest {
|
|||||||
|
|
||||||
// From codersdk/organizations.go
|
// From codersdk/organizations.go
|
||||||
export interface CreateTemplateVersionRequest {
|
export interface CreateTemplateVersionRequest {
|
||||||
|
readonly name?: string
|
||||||
readonly template_id?: string
|
readonly template_id?: string
|
||||||
readonly storage_method: ProvisionerStorageMethod
|
readonly storage_method: ProvisionerStorageMethod
|
||||||
readonly storage_source: string
|
readonly storage_source: string
|
||||||
|
Reference in New Issue
Block a user