MCPcopy Index your code
hub / github.com/coder/coder / createTemplateInOrg

Function createTemplateInOrg

scripts/develop/main.go:1097–1134  ·  view source on GitHub ↗

createTemplateInOrg ensures a starter template exists in the given org, creating it from the example if needed.

(ctx context.Context, logger slog.Logger, client *codersdk.Client, orgName string, example codersdk.TemplateExample, userVars []codersdk.VariableValue)

Source from the content-addressed store, hash-verified

1095// createTemplateInOrg ensures a starter template exists in the
1096// given org, creating it from the example if needed.
1097func createTemplateInOrg(ctx context.Context, logger slog.Logger, client *codersdk.Client, orgName string, example codersdk.TemplateExample, userVars []codersdk.VariableValue) error {
1098 org, err := client.OrganizationByName(ctx, orgName)
1099 if err != nil {
1100 return xerrors.Errorf("look up org %q failed: %w", orgName, err)
1101 }
1102 if _, err := client.TemplateByName(ctx, org.ID, example.ID); err == nil {
1103 logger.Debug(ctx, "template already exists, skipping creation", slog.F("template", example.ID), slog.F("org", orgName))
1104 return nil
1105 }
1106
1107 version, err := client.CreateTemplateVersion(ctx, org.ID,
1108 codersdk.CreateTemplateVersionRequest{
1109 StorageMethod: codersdk.ProvisionerStorageMethodFile,
1110 ExampleID: example.ID,
1111 Provisioner: codersdk.ProvisionerTypeTerraform,
1112 UserVariableValues: userVars,
1113 })
1114 if err != nil {
1115 return xerrors.Errorf("create template version failed: %w", err)
1116 }
1117 version, err = waitForVersion(ctx, client, version.ID)
1118 if err != nil {
1119 return err
1120 }
1121 _, err = client.CreateTemplate(ctx, org.ID,
1122 codersdk.CreateTemplateRequest{
1123 Name: example.ID,
1124 DisplayName: example.Name,
1125 Description: example.Description,
1126 Icon: example.Icon,
1127 VersionID: version.ID,
1128 })
1129 if err != nil {
1130 return xerrors.Errorf("create template failed: %w", err)
1131 }
1132 logger.Info(ctx, "template created in org", slog.F("template", example.ID), slog.F("org", orgName))
1133 return nil
1134}
1135
1136// startPrometheusServer runs the official Prometheus Docker image
1137// with a generated config that scrapes the local Coder metrics

Callers 1

setupStarterTemplateFunction · 0.85

Calls 7

waitForVersionFunction · 0.85
OrganizationByNameMethod · 0.80
TemplateByNameMethod · 0.65
CreateTemplateVersionMethod · 0.65
CreateTemplateMethod · 0.65
ErrorfMethod · 0.45
InfoMethod · 0.45

Tested by

no test coverage detected