You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: recipe/2025-08-recipe-packs.md
+13-13Lines changed: 13 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -76,17 +76,17 @@ Both approaches have the below benefits:
76
76
- Helps reduce the size of environment resource, which could reach serialization limits with tons of recipes.
77
77
- Helps reduce overall size of Radius datastore, since common recipe information could now be stored as a single resource instead of being duplicated across several environments.
78
78
- Helps with change isolation, since recipe pack updates are isolated from env updates.
79
-
- Promotes reusablity since multiple environments can point to a recipe pack using the recipe pack ID.
79
+
- Promotes reusability since multiple environments can point to a recipe pack using the recipe pack ID.
80
80
81
81
Below table highlights the trade offs:
82
82
83
83
| Aspect | Applications RP provisioning| Dynamic RP provisioning |
|**Versioning**| ❌ requires versioning support in Radius |✅ Supports schema versioning|
87
87
|**Custom implementation for operations**| ✅ can customize details of CRUDL| ❌ falls back on dynamic resource controllers |
88
88
89
-
Based on the above differences, *we choose Radius.Core/recipePacks to be provisioned imperatively by Applications RP as a first class Radius resource*. The main reason for this decision is that Radius Core resources such as enviroments and recipe-packs could have complex and custom deletion logic compared to what a dynamic resource deletion does. For instance, we need a cascade of deletion when an environment is deleted, or we might want to restrict deleting a recipe pack that is referenced in one or more environment. It is important to support robust core management operations of these resources where as the versioning of the type can follow once Radius versioning support is available.
89
+
Based on the above differences, *we choose Radius.Core/recipePacks to be provisioned imperatively by Applications RP as a first class Radius resource*. The main reason for this decision is that Radius Core resources such as environments and recipe-packs could have complex and custom deletion logic compared to what a dynamic resource deletion does. For instance, we need a cascade of deletion when an environment is deleted, or we might want to restrict deleting a recipe pack that is referenced in one or more environment. It is important to support robust core management operations of these resources where as the versioning of the type can follow once Radius versioning support is available.
90
90
91
91
We should make sure the rad resource-type commands cannot alter the schema of these types as part of schema validation (this namespace is reserved for Radius's use). Appropriate error message should be provided to the user.
92
92
@@ -265,7 +265,7 @@ interface RecipePacks {
265
265
266
266
* We maintain a reverse index into environment IDs so that we can handle CRUDL operations gracefully. For example, only a recipe pack that is not referenced by any environment can be deleted or updated.
267
267
268
-
* We allow the users to input a digest for a recipe to enhance security. More about this in [Verifying Recipy Integrity](#security)
268
+
* We allow the users to input a digest for a recipe to enhance security. More about this in [Verifying Recipe Integrity](#security)
269
269
270
270
#### Examples
271
271
@@ -443,7 +443,7 @@ At a high level, below changes are necessary:
443
443
444
444
Add support to UCP to route `Radius.Core/recipePacks` resource operations to Applications RP in below section. (might need more changes)
@@ -471,7 +471,7 @@ Below changes are needed for supporting recipe packs as new feature:
471
471
472
472
1. Add schema /swagger changes to support the `Radius.Core/recipePacks` resource type ([typespec changes](#schema-and-api-design))
473
473
474
-
2. Create datamodel and convertors for handling recipe pack resource in /radius/`pkg/corerp/api/v20231001preview/ and /radius/pkg/corerp/datamodel/`
474
+
2. Create datamodel and converters for handling recipe pack resource in /radius/`pkg/corerp/api/v20231001preview/ and /radius/pkg/corerp/datamodel/`
475
475
476
476
3. Add controller support for creating/updating/listing/deleting the resource in `/radius/pkg/corerp/frontend/controller/`. Constraints for each operation are captured in [Recipe Pack Operations](#schema-and-api-design)
477
477
@@ -487,7 +487,7 @@ As part of Radius.Core/environments design/implementation below points should be
487
487
488
488
2. Add schema / swagger changes to support the `Radius.Core/environments` resource type
489
489
490
-
3. Add convertors for handling conversions from and to version agnostic data model.
490
+
3. Add converters for handling conversions from and to version agnostic data model.
491
491
492
492
4. Add backend/controller support for creating/updating/deleting the resource.
493
493
@@ -498,7 +498,7 @@ As part of Radius.Core/environments design/implementation below points should be
498
498
In Dynamic RP, while deploying a dynamic resource:
499
499
500
500
1. Add support to look up the `Radius.Core/environments` that is in use, fetch environment's recipe-pack ids
501
-
2. Go over the recipe packs registered in environment one by one until the first recipe pack holding the recipe for the resource type of interest is found. This is because, by design we dont allow duplicate recipes for a resource type either in one recipe pack or across recipe packs in on eenvironment.
501
+
2. Go over the recipe packs registered in environment one by one until the first recipe pack holding the recipe for the resource type of interest is found. This is because, by design we don't allow duplicate recipes for a resource type either in one recipe pack or across recipe packs in one environment.
502
502
503
503
3. Use the recipe information just fetched and construct recipe details that can be passed to the existing recipe engine mechanism.
504
504
@@ -675,7 +675,7 @@ Providing an option to initialize Radius for az/aws based recipe packs requires
675
675
676
676
### Graph support
677
677
678
-
Recipe packs will not be displayed in application graphs since the are operatiors concept and not part of an application as a component.
678
+
Recipe packs will not be displayed in application graphs since they are operators concept and not part of an application as a component.
679
679
However, dashboard will be enhanced to show a list of recipe packs, similar to the environment list we have today.
680
680
681
681
### Logging/Tracing support
@@ -736,7 +736,7 @@ For teams using dependency management tools to keep their IaC updated:
736
736
## Compatibility (optional)
737
737
738
738
Users should migrate from Applications.Core to Radius.Core namespace to make use of new environments and recipePacks resources.
739
-
We will allow both namespac to coexist until a point where it would be safe to remove the support for Applications.Core.
739
+
We will allow both namespace to coexist until a point where it would be safe to remove the support for Applications.Core.
740
740
741
741
## Monitoring
742
742
@@ -748,11 +748,11 @@ We might want to add metrics related to recipe pack usage.
748
748
#### Phase 1: Introduce Radius.Core namespace and setup routing
749
749
- UCP changes to route Radius.Core resources to Applications RP
750
750
- Applications RP changes to add new namespace
751
-
- Add a manifest to register the new namecpase and types
751
+
- Add a manifest to register the new namespace and types
752
752
753
753
#### Resource Schema
754
754
- Define `Radius.Core/recipePacks` schema
755
-
- Add convertors and basic controllers
755
+
- Add converters and basic controllers
756
756
757
757
#### Phase 2: Versioning
758
758
- Handle `version` field to `recipePack`
@@ -770,7 +770,7 @@ We might want to add metrics related to recipe pack usage.
770
770
771
771
772
772
#### Phase 5: Digest Support
773
-
- Add support in recipe engiens to validate recipe integrity using registered hashes.
773
+
- Add support in recipe engines to validate recipe integrity using registered hashes.
0 commit comments