[WIP] - Create an Execution Environment Builder#558
Draft
cigamit wants to merge 1 commit into
Draft
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR introduces an Execution Environment Builder feature to Ascender/AWX, adding a new “Tools” UI section plus the backend API/models/task plumbing to create and run “builder build” unified jobs that build/push execution environments via the control plane.
Changes:
- Add new backend resources for execution environment builders and their build jobs (models, serializers, views, URLs, RBAC, migrations, events).
- Add a new ansible-runner task path (and playbook) to build EEs, including a new setting for builder container runtime options.
- Add UI screens/routes/tests for listing/creating/editing builders and viewing build job details/output.
Reviewed changes
Copilot reviewed 65 out of 65 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| awx/ui/src/util/jobs.js | Map new build job model |
| awx/ui/src/screens/Setting/shared/data.jobSettings.json | Add builder container options setting |
| awx/ui/src/screens/Setting/shared/data.allSettings.json | Add builder container options setting |
| awx/ui/src/screens/Setting/shared/data.allSettingOptions.json | Add setting metadata/options |
| awx/ui/src/screens/Setting/Jobs/JobsEdit/JobsEdit.js | Expose new setting in Jobs UI |
| awx/ui/src/screens/Setting/Jobs/JobsEdit/data.defaultJobSettings.json | Default for new setting |
| awx/ui/src/screens/Job/Job.js | Route build jobs to custom detail |
| awx/ui/src/screens/Job/ExecutionEnvironmentBuilderBuildDetail/index.js | Export build detail screen |
| awx/ui/src/screens/Job/ExecutionEnvironmentBuilderBuildDetail/ExecutionEnvironmentBuilderBuildDetail.test.js | Tests for build detail screen |
| awx/ui/src/screens/Job/ExecutionEnvironmentBuilderBuildDetail/ExecutionEnvironmentBuilderBuildDetail.js | Build job detail UI/actions |
| awx/ui/src/screens/ExecutionEnvironmentBuilder/shared/ExecutionEnvironmentFileSelect.test.js | Tests for EE file select |
| awx/ui/src/screens/ExecutionEnvironmentBuilder/shared/ExecutionEnvironmentFileSelect.js | EE definition file selector |
| awx/ui/src/screens/ExecutionEnvironmentBuilder/shared/ExecutionEnvironmentBuilderForm.test.js | Tests for builder form |
| awx/ui/src/screens/ExecutionEnvironmentBuilder/shared/ExecutionEnvironmentBuilderForm.js | Builder create/edit form |
| awx/ui/src/screens/ExecutionEnvironmentBuilder/index.js | Export builders screen |
| awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilders.test.js | Route resolution tests |
| awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilders.js | Builders route container + breadcrumbs |
| awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilderList/index.js | Export builders list |
| awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilderList/ExecutionEnvironmentBuilderListItem.test.js | List row tests |
| awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilderList/ExecutionEnvironmentBuilderListItem.js | Builders list row actions |
| awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilderList/ExecutionEnvironmentBuilderList.test.js | List view tests |
| awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilderList/ExecutionEnvironmentBuilderList.js | Builders list view |
| awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilderEdit/index.js | Export builder edit |
| awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilderEdit/ExecutionEnvironmentBuilderEdit.test.js | Edit container tests |
| awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilderEdit/ExecutionEnvironmentBuilderEdit.js | Edit container + submit logic |
| awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilderDetail/index.js | Export builder detail |
| awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilderDetail/ExecutionEnvironmentBuilderDetails.test.js | Detail view tests |
| awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilderDetail/ExecutionEnvironmentBuilderDetails.js | Builder detail UI/actions |
| awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilderAdd/index.js | Export builder add |
| awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilderAdd/ExecutionEnvironmentBuilderAdd.test.js | Add container tests |
| awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilderAdd/ExecutionEnvironmentBuilderAdd.js | Add container + submit logic |
| awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilder.js | Builder detail routing/fetch |
| awx/ui/src/routeConfig.js | Add “Tools” nav group + route |
| awx/ui/src/constants.js | Add build job URL segment |
| awx/ui/src/components/LaunchButton/LaunchButton.js | Support relaunch for build jobs |
| awx/ui/src/components/JobList/JobListItem.js | Display label for build jobs |
| awx/ui/src/api/models/Projects.js | Add project EE-file listing call |
| awx/ui/src/api/models/ExecutionEnvironmentBuilders.js | New builders API model |
| awx/ui/src/api/models/ExecutionEnvironmentBuilderBuilds.js | New builds API model |
| awx/ui/src/api/index.js | Export new API clients |
| awx/playbooks/build_ee.yml | EE build playbook for runner |
| awx/main/utils/common.py | Capacity type for build jobs |
| awx/main/tests/functional/api/test_execution_environment_builder.py | Functional API coverage |
| awx/main/tasks/jobs.py | Runner task for builder builds |
| awx/main/tasks/callback.py | Runner callback class stub |
| awx/main/scheduler/task_manager.py | Scheduler dependency handling |
| awx/main/scheduler/dependency_graph.py | Blocking graph integration |
| awx/main/models/unified_jobs.py | Event parent key mapping |
| awx/main/models/projects.py | List EE definition files in project |
| awx/main/models/execution_environment_builders.py | New builder model |
| awx/main/models/execution_environment_builder_builds.py | New unified job subclass |
| awx/main/models/events.py | New build event model |
| awx/main/models/activity_stream.py | Track builder in activity stream |
| awx/main/models/init.py | Register new models/events |
| awx/main/migrations/0201_executionenvironmentbuilder_and_more.py | DB schema for new feature |
| awx/main/dispatch/worker/callback.py | Emit event detail support |
| awx/main/conf.py | Register new settings key |
| awx/main/access.py | RBAC access classes |
| awx/api/views/root.py | Add endpoints to API root |
| awx/api/views/init.py | Implement builder/build endpoints |
| awx/api/urls/urls.py | Wire new API URL includes |
| awx/api/urls/project.py | Add project EE-files endpoint |
| awx/api/urls/execution_environment_builder.py | Builder URLs |
| awx/api/urls/execution_environment_builder_build.py | Build URLs (stdout/events/etc) |
| awx/api/serializers.py | Serializers for new resources |
Comment on lines
+970
to
+971
| new_build.signal_start() | ||
| return Response({'id': new_build.id}) |
Comment on lines
+58
to
+66
| useEffect(() => { | ||
| if (error) { | ||
| if (error.response?.status === 403) { | ||
| setIsDisabled(true); | ||
| } else { | ||
| onError(error); | ||
| } | ||
| } | ||
| }, [error, onError]); |
Comment on lines
+1419
to
+1422
| I can see an execution environment builder when: | ||
| - I'm a superuser | ||
| - I'm a member of the same organization | ||
| - it has no organization (global) |
| - eed.version == 3 | ||
| fail_msg: "The execution environment definition must define 'version: 3' at the top level." | ||
|
|
||
| - name: Ensure container config directories exists |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This adds a new Tools section. The first tool we are adding is an Execution Environment builder (with many more tools to come).
The EE Builder allows you to select a definition file from a project, where to push the EE, and the credential. It creates a new type of Job which will then use the control plane to build the EE.
Things to finish
Fix permissions for EE AdminsCombine migrationsUpdate example configAdd tests