← Back to issue list

feat(extensions): extension dispatch for 12-factor extensions.

View original Github issue

Metadata

Project
rockcraft
Number
#1259
Type
pull request
State
merged
Author
Thanhphan1147
Labels
Created
Updated
Closed

Current evaluation

Merged after fixing CI failures and review feedback. Adds V2 extension classes and factory dispatch for all 12-factor frameworks targeting ubuntu@26.04. Prepares for transparent paas-charm 2.0 dispatch while preserving V1 behavior.

Suggested action:

No scores available.

Issue body

Add V2 extension classes and factory dispatch for all 12-factor frameworks (Flask, Django, FastAPI, ExpressJS, SpringBoot). ## What this PR does - `get_project_bases(yaml_data)`: extracts base strings from project YAML - `_FrameworkFactory`: routes between V1/V2 extension classes based on the project's target bases - `FlaskFrameworkV2` / `FlaskFrameworkFactory` — targets `ubuntu@26.04`, experimental - `DjangoFrameworkV2` / `DjangoFrameworkFactory` — targets `ubuntu@26.04`, experimental - `FastAPIFrameworkV2` / `FastAPIFrameworkFactory` — targets `ubuntu@26.04`, experimental - `ExpressJSFrameworkV2` / `ExpressJSFrameworkFactory` — targets `ubuntu@26.04`, experimental - `SpringBootFrameworkV2` / `SpringBootFrameworkFactory` — targets `ubuntu@26.04`, experimental Each V2 class is behaviourally identical to its V1 counterpart for now; it exists so that a future paas-charm 2.0 implementation can be dispatched transparently based on the rock's target base. - [x] I've followed the [contribution guidelines](https://github.com/canonical/rockcraft/blob/main/CONTRIBUTING.md). - [x] I've signed the [CLA](http://www.ubuntu.com/legal/contributors/). - [x] I've successfully run `make lint && make test`.

Evaluation history

Date Model Scores Action Summary
qwen/qwen3.6-35b-a3b Merged after fixing CI failures and review feedback. Adds V2 extension classes and factory dispatch for all 12-factor frameworks targeting ubuntu@26.04. Prepares for transparent paas-charm 2.0 dispatch while preserving V1 behavior.
qwen3.6-35b-a3b-mtp-q6
Staleness: 5
Complexity: 40
Confidence: 90
needs review Introduces V2 extension classes and a factory dispatch mechanism for Flask, Django, FastAPI, ExpressJS, and SpringBoot targeting ubuntu@26.04. Currently behaviorally identical to V1 to enable future transparent dispatch. PR is ready for maintainer review.
qwen3.6-35b-a3b-mtp-q6
Staleness: 10
Complexity: 35
Confidence: 90
needs review Adds shared classes and routing methods for V1/V2 extension dispatch. Serves as a foundational base for multiple framework-specific PRs. Currently awaiting maintainer review after author pinged reviewer one day ago.

Update history

Date Change
updated
updated
updated
updated
updated
updated
updated
updated

Related issues

Issue Project State Summary Similarity
#2722 Feat: extension dispatch for 12-factor extensions. charmcraft merged Merged after a maintainer delay to align with the 4.3.0 release. The feature implements extension dispatch for 12-factor extensions, approved by two reviewers and passing CI checks.
83%
#1257 feat(extensions): add ExpressJS framework V2 extension and factory dispatch rockcraft closed Superseded and closed. The ExpressJS framework V2 extension and factory dispatch were merged into base pull request #1259 to consolidate reviews. Author requested closure of this branch.
71%
#1800 feat: go-framework init profile and extension charmcraft merged Merged. Adds go-framework init profile and extension to charmcraft per ISD153. Uses Ubuntu 24.04 base, restricts to amd64, and refactors 12-factor extensions to inherit from _TwelveFactorBase. Approved by three reviewers and passed CI.
70%