Skip to content

Commit 053d8b1

Browse files
committed
STAC-24174: validate version
1 parent 5856aa2 commit 053d8b1

6 files changed

Lines changed: 50 additions & 8 deletions

File tree

‎cmd/stackpack/stackpack_validate.go‎

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,11 @@ import (
1414

1515
// ValidateArgs contains arguments for stackpack validate command
1616
type ValidateArgs struct {
17-
Name string
18-
StackpackDir string
19-
StackpackFile string
20-
DockerImage string
17+
Name string
18+
StackpackDir string
19+
StackpackFile string
20+
DockerImage string
21+
StackpackVersion string
2122

2223
dockerRunner func([]string) error
2324
}
@@ -44,6 +45,9 @@ This command is experimental and requires STS_EXPERIMENTAL_STACKPACK environment
4445
Example: `# Validate using API
4546
sts stackpack validate --name my-stackpack
4647
48+
# Validate a specific version using API
49+
sts stackpack validate --name my-stackpack --stackpack-version 1.2.3
50+
4751
# Validate using Docker with a directory
4852
sts stackpack validate --image quay.io/stackstate/stackstate-server:latest --stackpack-directory ./my-stackpack
4953
@@ -56,6 +60,7 @@ sts stackpack validate --image quay.io/stackstate/stackstate-server:latest --sta
5660
cmd.Flags().StringVarP(&args.StackpackDir, "stackpack-directory", "d", "", "Path to stackpack directory (Docker mode)")
5761
cmd.Flags().StringVarP(&args.StackpackFile, "stackpack-file", "f", "", "Path to .sts file (Docker mode)")
5862
cmd.Flags().StringVar(&args.DockerImage, "image", "", "Docker image reference (triggers Docker mode)")
63+
cmd.Flags().StringVar(&args.StackpackVersion, "stackpack-version", "", "Stackpack version to validate (optional, defaults to latest)")
5964

6065
// Set default docker runner if not already set
6166
if args.dockerRunner == nil {
@@ -107,7 +112,11 @@ func runAPIValidation(cli *di.Deps, cmd *cobra.Command, args *ValidateArgs) comm
107112
}
108113

109114
// Call validate endpoint
110-
_, resp, validateErr := api.StackpackApi.ValidateStackPack(cli.Context, args.Name).Execute()
115+
request := api.StackpackApi.ValidateStackPack(cli.Context, args.Name)
116+
if args.StackpackVersion != "" {
117+
request = request.Version(args.StackpackVersion)
118+
}
119+
_, resp, validateErr := request.Execute()
111120
if validateErr != nil {
112121
return common.NewResponseError(validateErr, resp)
113122
}

‎cmd/stackpack/stackpack_validate_test.go‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,18 @@ func TestValidate_APIMode_MissingName(t *testing.T) {
104104
assert.Contains(t, err.Error(), "name is required")
105105
}
106106

107+
func TestValidate_APIMode_WithStackpackVersion(t *testing.T) {
108+
cli, cmd := setupValidateCmd(t)
109+
110+
_, err := di.ExecuteCommandWithContext(&cli.Deps, cmd, "--name", "my-stackpack", "--stackpack-version", "1.2.3")
111+
require.NoError(t, err)
112+
113+
// Verify success message
114+
require.NotEmpty(t, *cli.MockPrinter.SuccessCalls)
115+
successCall := (*cli.MockPrinter.SuccessCalls)[0]
116+
assert.Contains(t, successCall, "validation successful")
117+
}
118+
107119
// ===== Docker Mode Tests =====
108120

109121
func TestValidate_DockerMode_MissingImage(t *testing.T) {

‎generated/stackstate_api/api/openapi.yaml‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -413,6 +413,13 @@ paths:
413413
required: true
414414
schema:
415415
type: string
416+
- description: "Optional version string (e.g. '1.2.3'). If not provided, validates\
417+
\ the latest version."
418+
in: query
419+
name: version
420+
required: false
421+
schema:
422+
type: string
416423
responses:
417424
"200":
418425
content:

‎generated/stackstate_api/api_stackpack.go‎

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎generated/stackstate_api/docs/StackpackApi.md‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -435,7 +435,7 @@ Name | Type | Description | Notes
435435

436436
## ValidateStackPack
437437

438-
> string ValidateStackPack(ctx, stackPackName).Execute()
438+
> string ValidateStackPack(ctx, stackPackName).Version(version).Execute()
439439
440440
Validate API
441441

@@ -455,10 +455,11 @@ import (
455455

456456
func main() {
457457
stackPackName := "stackPackName_example" // string |
458+
version := "version_example" // string | Optional version string (e.g. '1.2.3'). If not provided, validates the latest version. (optional)
458459

459460
configuration := openapiclient.NewConfiguration()
460461
apiClient := openapiclient.NewAPIClient(configuration)
461-
resp, r, err := apiClient.StackpackApi.ValidateStackPack(context.Background(), stackPackName).Execute()
462+
resp, r, err := apiClient.StackpackApi.ValidateStackPack(context.Background(), stackPackName).Version(version).Execute()
462463
if err != nil {
463464
fmt.Fprintf(os.Stderr, "Error when calling `StackpackApi.ValidateStackPack``: %v\n", err)
464465
fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
@@ -484,6 +485,7 @@ Other parameters are passed through a pointer to a apiValidateStackPackRequest s
484485
Name | Type | Description | Notes
485486
------------- | ------------- | ------------- | -------------
486487

488+
**version** | **string** | Optional version string (e.g. '1.2.3'). If not provided, validates the latest version. |
487489

488490
### Return type
489491

‎stackstate_openapi/openapi_version‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
7dda64436db2c041092b31af19b541977a3699dc
1+
36a7262f51769ebff26827b33e2ebf8afd9b0f69

0 commit comments

Comments
 (0)