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)
| 1095 | // createTemplateInOrg ensures a starter template exists in the |
| 1096 | // given org, creating it from the example if needed. |
| 1097 | func 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 |
no test coverage detected