feat(cli): add CLI support for listing presets (#18910)

## Description 

This PR introduces a new `list presets` command to display the presets
associated with a given template.
By default, it displays the presets for the template's active version,
unless a `--template-version` flag is provided.

## Changes

* Added a new `list presets` command under `coder templates presets` to
display presets associated with a template.
* By default, the command lists presets from the template’s active
version.
* Users can override the default behavior by providing the
`--template-version` flag to target a specific version.

```
> coder templates versions presets list --help

USAGE:
  coder templates presets list [flags] <template>

  List all presets of the specified template. Defaults to the active template version.

OPTIONS:
  -O, --org string, $CODER_ORGANIZATION
          Select which organization (uuid or name) to use.

  -c, --column [name|parameters|default|desired prebuild instances] (default: name,parameters,default,desired prebuild instances)
          Columns to display in table output.

  -o, --output table|json (default: table)
          Output format.

      --template-version string
          Specify a template version to list presets for. Defaults to the active version.
```

Related PR: https://github.com/coder/coder/pull/18912 - please consider
both PRs together as they’re part of the same workflow
Relates to issue: https://github.com/coder/coder/issues/16594

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added CLI commands to manage and list presets for specific template
versions, supporting tabular and JSON output.
* Introduced a new CLI subcommand group for template version presets,
including detailed help and documentation.
* Added support for displaying and managing the desired number of
prebuild instances for presets in CLI, API, and UI.

* **Documentation**
* Updated and expanded CLI and API documentation to describe new
commands, options, and the desired prebuild instances field in presets.
* Added new help output and reference files for template version presets
commands.

* **Bug Fixes**
* Ensured correct handling and display of the desired prebuild instances
property for presets across CLI, API, and UI.

* **Tests**
* Introduced end-to-end tests for listing template version presets,
covering scenarios with and without presets.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
Susana Ferreira
2025-07-24 16:44:36 +01:00
committed by GitHub
parent 070178c454
commit 931b97caab
18 changed files with 584 additions and 22 deletions
+8 -6
View File
@@ -5513,6 +5513,7 @@ Only certain features set these fields: - FeatureManagedAgentLimit|
```json
{
"default": true,
"desiredPrebuildInstances": 0,
"id": "string",
"name": "string",
"parameters": [
@@ -5526,12 +5527,13 @@ Only certain features set these fields: - FeatureManagedAgentLimit|
### Properties
| Name | Type | Required | Restrictions | Description |
|--------------|---------------------------------------------------------------|----------|--------------|-------------|
| `default` | boolean | false | | |
| `id` | string | false | | |
| `name` | string | false | | |
| `parameters` | array of [codersdk.PresetParameter](#codersdkpresetparameter) | false | | |
| Name | Type | Required | Restrictions | Description |
|----------------------------|---------------------------------------------------------------|----------|--------------|-------------|
| `default` | boolean | false | | |
| `desiredPrebuildInstances` | integer | false | | |
| `id` | string | false | | |
| `name` | string | false | | |
| `parameters` | array of [codersdk.PresetParameter](#codersdkpresetparameter) | false | | |
## codersdk.PresetParameter
+11 -9
View File
@@ -2914,6 +2914,7 @@ curl -X GET http://coder-server:8080/api/v2/templateversions/{templateversion}/p
[
{
"default": true,
"desiredPrebuildInstances": 0,
"id": "string",
"name": "string",
"parameters": [
@@ -2936,15 +2937,16 @@ curl -X GET http://coder-server:8080/api/v2/templateversions/{templateversion}/p
Status Code **200**
| Name | Type | Required | Restrictions | Description |
|----------------|---------|----------|--------------|-------------|
| `[array item]` | array | false | | |
| `» default` | boolean | false | | |
| `» id` | string | false | | |
| `» name` | string | false | | |
| `» parameters` | array | false | | |
| `»» name` | string | false | | |
| `»» value` | string | false | | |
| Name | Type | Required | Restrictions | Description |
|------------------------------|---------|----------|--------------|-------------|
| `[array item]` | array | false | | |
| `» default` | boolean | false | | |
| `» desiredPrebuildInstances` | integer | false | | |
| `» id` | string | false | | |
| `» name` | string | false | | |
| `» parameters` | array | false | | |
| `»» name` | string | false | | |
| `»» value` | string | false | | |
To perform this operation, you must be authenticated. [Learn more](authentication.md).