Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
e1975c5
Initial plan
Copilot Apr 23, 2026
c56df78
Standardize recipe parameter naming: rename Parameters to RecipeParam…
Copilot Apr 23, 2026
0ef75a0
Remove 'recipe' prefix from kind, location, and parameters fields in …
Copilot May 13, 2026
9c7d970
Merge branch 'main' into copilot/standardize-recipe-parameter-naming
Reshrahim May 13, 2026
3b302df
Update remaining recipeKind/recipeLocation in TypeSpec examples and t…
Copilot May 13, 2026
073ee92
Fix RecipeKind/RecipeLocation field refs in test_client_factory and p…
Copilot May 13, 2026
33147f3
Fix remaining RecipeKind/RecipeLocation refs in recipepack.go and upd…
Copilot May 13, 2026
af7e7c3
Fix Bicep test files and design notes: recipeKind→kind, recipeLocatio…
Copilot May 13, 2026
647345c
Revert out-of-scope extensibility design notes change and fix serde f…
Copilot May 13, 2026
3c675db
Merge branch 'main' into copilot/standardize-recipe-parameter-naming
Reshrahim May 13, 2026
5152195
Add test coverage for renamed Kind/Location fields in test helpers an…
Copilot May 13, 2026
79613b4
Remove Recipe prefix from data model, CLI labels, and all user-facing…
Copilot May 14, 2026
6b6d774
Merge branch 'main' into copilot/standardize-recipe-parameter-naming
Reshrahim May 14, 2026
07dfcdd
Merge branch 'main' into copilot/standardize-recipe-parameter-naming
Reshrahim May 14, 2026
6361151
Merge branch 'main' into copilot/standardize-recipe-parameter-naming
Reshrahim May 14, 2026
554e3b6
Merge branch 'main' into copilot/standardize-recipe-parameter-naming
Reshrahim May 15, 2026
a28f7cc
Merge branch 'main' into copilot/standardize-recipe-parameter-naming
nicolejms May 18, 2026
7fd5fc0
Merge branch 'main' into copilot/standardize-recipe-parameter-naming
Reshrahim May 18, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 32 additions & 32 deletions eng/design-notes/recipes/2025-08-recipe-packs.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,8 +102,8 @@ version: 1.0.0
description: "Recipe Pack for deploying to ACI in production."
recipes:
- resourceType: "Radius.Compute/containers@2025-05-01-preview"
recipeKind: "bicep"
recipeLocation: "oci://ghcr.io/my-org/recipes/core/aci-container:1.2.0"
kind: "bicep"
location: "oci://ghcr.io/my-org/recipes/core/aci-container:1.2.0"
parameters:
cpu: "1.0"
memoryInGB: "2.0"
Expand All @@ -112,13 +112,13 @@ recipes:
# Optional: allow platform-specific options like containerGroupProfile for ACI
allowPlatformOptions: true
- resourceType: "Radius.Compute/gateways@2025-05-01-preview"
recipeKind: "bicep"
recipeLocation: "oci://ghcr.io/my-org/recipes/core/aci-gateway:1.1.0"
kind: "bicep"
location: "oci://ghcr.io/my-org/recipes/core/aci-gateway:1.1.0"
parameters:
sku: "Standard_v2"
- resourceType: "Radius.Security/secrets@2025-05-01-preview"
recipeKind: "bicep"
recipeLocation: "oci://ghcr.io/my-org/recipes/azure/keyvault-secretstore:1.0.0"
kind: "bicep"
location: "oci://ghcr.io/my-org/recipes/azure/keyvault-secretstore:1.0.0"
parameters:
skuName: "premium"
```
Expand Down Expand Up @@ -197,13 +197,13 @@ recipes: Record<RecipeDefinition>;
@doc("Recipe definition for a specific resource type")
model RecipeDefinition {
@doc("The type of recipe (e.g., terraform, bicep)")
recipeKind: RecipeKind;
kind: RecipeKind;

@doc("Connect to the location using HTTP (not HTTPS). This should be used when the location is known not to support HTTPS, for example in a locally hosted registry for Bicep recipes. Defaults to false (use HTTPS/TLS)")
plainHttp?: boolean;

@doc("URL or path to the recipe source")
recipeLocation: string;
location: string;

@doc("recipe digest in the format algorithm:digest_value")
recipeDigest?: string;
Expand Down Expand Up @@ -278,21 +278,21 @@ resource computeRecipePack 'Radius.Core/recipePacks@2026-01-01-preview' = {
properties: {
recipes: {
'Radius.Compute/containers': {
recipeKind: 'terraform'
recipeLocation: 'https://github.com/project-radius/resource-types-contrib.git//recipes/compute/containers/kubernetes?ref=v0.48'
kind: 'terraform'
location: 'https://github.com/project-radius/resource-types-contrib.git//recipes/compute/containers/kubernetes?ref=v0.48'
recipeDigest: 'sha256:4g5h6i7j8k9l0m1n2o3p4q5r6s7t8u9v0w1x2y3z4a5b6c7d8e9f0g1h2i3j4k5'
parameters: {
allowPlatformOptions: true
anIntegerParam: 1
}
}
'Radius.Security/secrets': {
recipeKind: 'terraform'
recipeLocation: 'https://github.com/project-radius/resource-types-contrib.git//recipes/security/secrets/kubernetes?ref=v0.48'
kind: 'terraform'
location: 'https://github.com/project-radius/resource-types-contrib.git//recipes/security/secrets/kubernetes?ref=v0.48'
}
'Radius.Storage/volumes': {
recipeKind: 'terraform'
recipeLocation: 'https://github.com/project-radius/resource-types-contrib.git//recipes/storage/volumes/kubernetes?ref=v0.48'
kind: 'terraform'
location: 'https://github.com/project-radius/resource-types-contrib.git//recipes/storage/volumes/kubernetes?ref=v0.48'
}
}
}
Expand Down Expand Up @@ -325,16 +325,16 @@ curl -X PUT \
"description": "Test recipe pack with sample recipes",
"recipes": {
"Applications.Datastores/sqlDatabases": {
"recipeKind": "terraform",
"recipeLocation": "https://github.com/example/recipes/sql-database",
"kind": "terraform",
"location": "https://github.com/example/recipes/sql-database",
"parameters": {
"size": "small",
"backup": false
}
},
"Applications.Datastores/redisCaches": {
"recipeKind": "bicep",
"recipeLocation": "https://github.com/example/recipes/redis-cache.bicep",
"kind": "bicep",
"location": "https://github.com/example/recipes/redis-cache.bicep",
"parameters": {
"tier": "basic"
}
Expand All @@ -359,16 +359,16 @@ CREATE response:
"parameters": {
"tier": "basic"
},
"recipeKind": "bicep",
"recipeLocation": "https://github.com/example/recipes/redis-cache.bicep"
"kind": "bicep",
"location": "https://github.com/example/recipes/redis-cache.bicep"
},
"Applications.Datastores/sqlDatabases": {
"parameters": {
"backup": false,
"size": "small"
},
"recipeKind": "terraform",
"recipeLocation": "https://github.com/example/recipes/sql-database"
"kind": "terraform",
"location": "https://github.com/example/recipes/sql-database"
}
}
},
Expand Down Expand Up @@ -408,16 +408,16 @@ READ response:
"parameters": {
"tier": "basic"
},
"recipeKind": "bicep",
"recipeLocation": "https://github.com/example/recipes/redis-cache.bicep"
"kind": "bicep",
"location": "https://github.com/example/recipes/redis-cache.bicep"
},
"Applications.Datastores/sqlDatabases": {
"parameters": {
"backup": false,
"size": "small"
},
"recipeKind": "terraform",
"recipeLocation": "https://github.com/example/recipes/sql-database"
"kind": "terraform",
"location": "https://github.com/example/recipes/sql-database"
}
}
},
Expand Down Expand Up @@ -524,19 +524,19 @@ resource computeRecipePack 'Radius.Core/recipePacks@2025-05-01-preview' = {
properties: {
recipes: {
'Radius.Compute/containers': {
recipeKind: 'terraform'
recipeLocation: 'https://github.com/project-radius/resource-types-contrib.git//recipes/compute/containers/kubernetes?ref=v0.48'
kind: 'terraform'
location: 'https://github.com/project-radius/resource-types-contrib.git//recipes/compute/containers/kubernetes?ref=v0.48'
parameters: {
allowPlatformOptions: true
}
}
'Radius.Security/secrets': {
recipeKind: 'terraform'
recipeLocation: 'https://github.com/project-radius/resource-types-contrib.git//recipes/security/secrets/kubernetes?ref=v0.48'
kind: 'terraform'
location: 'https://github.com/project-radius/resource-types-contrib.git//recipes/security/secrets/kubernetes?ref=v0.48'
}
'Radius.Storage/volumes': {
recipeKind: 'terraform'
recipeLocation: 'https://github.com/project-radius/resource-types-contrib.git//recipes/storage/volumes/kubernetes?ref=v0.48'
kind: 'terraform'
location: 'https://github.com/project-radius/resource-types-contrib.git//recipes/storage/volumes/kubernetes?ref=v0.48'
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1278,7 +1278,7 @@
"$type": "ObjectType",
"name": "RecipeDefinition",
"properties": {
"recipeKind": {
"kind": {
"type": {
"$ref": "#/107"
},
Expand All @@ -1292,7 +1292,7 @@
"flags": 0,
"description": "Connect to the location using HTTP (not HTTPS). This should be used when the location is known not to support HTTPS, for example in a locally hosted registry for Bicep recipes. Defaults to false (use HTTPS/TLS)"
},
"recipeLocation": {
"location": {
"type": {
"$ref": "#/0"
},
Expand Down
16 changes: 8 additions & 8 deletions pkg/cli/cmd/env/show/preview/show.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,10 @@ rad env show my-env --group my-env
}

type EnvRecipes struct {
RecipePack string
ResourceType string
RecipeKind string
RecipeLocation string
RecipePack string
ResourceType string
Kind string
Location string
}

// Runner is the runner implementation for the `rad env show` preview command.
Expand Down Expand Up @@ -189,10 +189,10 @@ func (r *Runner) Run(ctx context.Context) error {

for resourceType, recipe := range pack.RecipePackResource.Properties.Recipes {
envRecipes = append(envRecipes, EnvRecipes{
RecipePack: ID.Name(),
ResourceType: resourceType,
RecipeKind: string(*recipe.RecipeKind),
RecipeLocation: *recipe.RecipeLocation,
RecipePack: ID.Name(),
ResourceType: resourceType,
Kind: string(*recipe.Kind),
Location: *recipe.Location,
})
}
}
Expand Down
40 changes: 20 additions & 20 deletions pkg/cli/cmd/env/show/preview/show_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -165,16 +165,16 @@ func Test_Run(t *testing.T) {
Format: "table",
Obj: []EnvRecipes{
{
RecipePack: "test-recipe-pack",
ResourceType: "test-recipe1",
RecipeKind: string(corerpv20250801.RecipeKindTerraform),
RecipeLocation: "https://example.com/recipe1?ref=v0.1",
RecipePack: "test-recipe-pack",
ResourceType: "test-recipe1",
Kind: string(corerpv20250801.RecipeKindTerraform),
Location: "https://example.com/recipe1?ref=v0.1",
},
{
RecipePack: "test-recipe-pack",
ResourceType: "test-recipe2",
RecipeKind: string(corerpv20250801.RecipeKindTerraform),
RecipeLocation: "https://example.com/recipe2?ref=v0.1",
RecipePack: "test-recipe-pack",
ResourceType: "test-recipe2",
Kind: string(corerpv20250801.RecipeKindTerraform),
Location: "https://example.com/recipe2?ref=v0.1",
},
},
Options: objectformats.GetRecipesForEnvironmentTableFormat(),
Expand Down Expand Up @@ -243,23 +243,23 @@ func Test_Run_RecipeSortOrder(t *testing.T) {
if recipePackName == "pack-a" {
recipes = map[string]*corerpv20250801.RecipeDefinition{
"Applications.Datastores/sqlDatabases": {
RecipeLocation: new("ghcr.io/radius-project/recipes/sql"),
RecipeKind: to.Ptr(corerpv20250801.RecipeKindTerraform),
Location: new("ghcr.io/radius-project/recipes/sql"),
Kind: to.Ptr(corerpv20250801.RecipeKindTerraform),
},
"Applications.Datastores/redisCaches": {
RecipeLocation: new("ghcr.io/radius-project/recipes/redis"),
RecipeKind: to.Ptr(corerpv20250801.RecipeKindTerraform),
Location: new("ghcr.io/radius-project/recipes/redis"),
Kind: to.Ptr(corerpv20250801.RecipeKindTerraform),
},
}
} else {
recipes = map[string]*corerpv20250801.RecipeDefinition{
"Applications.Messaging/rabbitMQQueues": {
RecipeLocation: new("ghcr.io/radius-project/recipes/rabbitmq"),
RecipeKind: to.Ptr(corerpv20250801.RecipeKindBicep),
Location: new("ghcr.io/radius-project/recipes/rabbitmq"),
Kind: to.Ptr(corerpv20250801.RecipeKindBicep),
},
"Applications.Dapr/stateStores": {
RecipeLocation: new("ghcr.io/radius-project/recipes/dapr-state"),
RecipeKind: to.Ptr(corerpv20250801.RecipeKindBicep),
Location: new("ghcr.io/radius-project/recipes/dapr-state"),
Kind: to.Ptr(corerpv20250801.RecipeKindBicep),
},
}
}
Expand Down Expand Up @@ -294,10 +294,10 @@ func Test_Run_RecipeSortOrder(t *testing.T) {

// Verify the recipes are sorted by RecipePack first, then by ResourceType
expectedRecipes := []EnvRecipes{
{RecipePack: "pack-a", ResourceType: "Applications.Datastores/redisCaches", RecipeKind: "terraform", RecipeLocation: "ghcr.io/radius-project/recipes/redis"},
{RecipePack: "pack-a", ResourceType: "Applications.Datastores/sqlDatabases", RecipeKind: "terraform", RecipeLocation: "ghcr.io/radius-project/recipes/sql"},
{RecipePack: "pack-b", ResourceType: "Applications.Dapr/stateStores", RecipeKind: "bicep", RecipeLocation: "ghcr.io/radius-project/recipes/dapr-state"},
{RecipePack: "pack-b", ResourceType: "Applications.Messaging/rabbitMQQueues", RecipeKind: "bicep", RecipeLocation: "ghcr.io/radius-project/recipes/rabbitmq"},
{RecipePack: "pack-a", ResourceType: "Applications.Datastores/redisCaches", Kind: "terraform", Location: "ghcr.io/radius-project/recipes/redis"},
{RecipePack: "pack-a", ResourceType: "Applications.Datastores/sqlDatabases", Kind: "terraform", Location: "ghcr.io/radius-project/recipes/sql"},
{RecipePack: "pack-b", ResourceType: "Applications.Dapr/stateStores", Kind: "bicep", Location: "ghcr.io/radius-project/recipes/dapr-state"},
{RecipePack: "pack-b", ResourceType: "Applications.Messaging/rabbitMQQueues", Kind: "bicep", Location: "ghcr.io/radius-project/recipes/rabbitmq"},
}

// The third output should be the recipes table
Expand Down
8 changes: 4 additions & 4 deletions pkg/cli/cmd/recipepack/show/display.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,13 +47,13 @@ func (r *Runner) display(recipePack v20250801preview.RecipePackResource) error {
}

kind := "unknown"
if definition.RecipeKind != nil {
kind = string(*definition.RecipeKind)
if definition.Kind != nil {
kind = string(*definition.Kind)
}

location := ""
if definition.RecipeLocation != nil {
location = *definition.RecipeLocation
if definition.Location != nil {
location = *definition.Location
}

r.Output.LogInfo("%s", resourceType)
Expand Down
4 changes: 2 additions & 2 deletions pkg/cli/cmd/recipepack/show/show_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,8 @@ func Test_Run(t *testing.T) {
Properties: &corerpv20250801preview.RecipePackProperties{
Recipes: map[string]*corerpv20250801preview.RecipeDefinition{
"Radius.Core/example": {
RecipeKind: to.Ptr(corerpv20250801preview.RecipeKindTerraform),
RecipeLocation: new("https://github.com/radius-project/example"),
Kind: to.Ptr(corerpv20250801preview.RecipeKindTerraform),
Location: new("https://github.com/radius-project/example"),
Parameters: map[string]any{
"foo": "bar",
},
Expand Down
20 changes: 10 additions & 10 deletions pkg/cli/objectformats/objectformats.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,12 +70,12 @@ func GetRecipeFormat() output.FormatterOptions {
JSONPath: "{ .ResourceType }",
},
{
Heading: "RECIPE KIND",
JSONPath: "{ .RecipeKind }",
Heading: "KIND",
JSONPath: "{ .Kind }",
},
{
Heading: "RECIPE LOCATION",
JSONPath: "{ .RecipeLocation }",
Heading: "LOCATION",
JSONPath: "{ .Location }",
},
},
}
Expand All @@ -90,11 +90,11 @@ func GetRecipeFormatWithoutHeadings() output.FormatterOptions {
},
{
Heading: "",
JSONPath: "{ .RecipeKind }",
JSONPath: "{ .Kind }",
},
{
Heading: "",
JSONPath: "{ .RecipeLocation }",
JSONPath: "{ .Location }",
},
},
}
Expand Down Expand Up @@ -140,12 +140,12 @@ func GetRecipesForEnvironmentTableFormat() output.FormatterOptions {
JSONPath: "{ .ResourceType }",
},
{
Heading: "RECIPE KIND",
JSONPath: "{ .RecipeKind }",
Heading: "KIND",
JSONPath: "{ .Kind }",
},
{
Heading: "RECIPE LOCATION",
JSONPath: "{ .RecipeLocation }",
Heading: "LOCATION",
JSONPath: "{ .Location }",
},
},
}
Expand Down
Loading
Loading