Carlo
57bab9e5ec
Allow Python script-only packages ( #49070 )
...
**Related issue:** Resolves #41470
Adds support for uploading Python (`.py`) script-only software packages
— accepted as script-only (the file contents become the install script;
advanced options and automatic install follow `.sh`/`.ps1`), assigned
the new `py_packages` source, and installable on macOS and Linux hosts
across the UI, REST API, and GitOps.
Feature branch combining the backend (#48942 ) and frontend (#48946 )
sub-PRs.
# Checklist for submitter
- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
- [x] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements), JS
inline code is prevented especially for url redirects, and untrusted
data interpolated into shell scripts/commands is validated against shell
metacharacters.
## Testing
- [x] Added/updated automated tests
- [x] QA'd all new/changed functionality manually
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Added support for Python (`.py`) script-only software packages across
UI uploads, API/self-service installs, and GitOps parsing.
* Python installers now derive metadata correctly and render the proper
Python icon, with install eligibility for macOS & Linux.
* **Bug Fixes**
* Improved installer-script validation and “supported file types” error
messages to include `.py` (and consistent handling of related script
fields/options).
* **Tests**
* Expanded unit, integration, and GitOps tests to cover Python package
parsing, metadata derivation, platform/host eligibility, and UI
rendering.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-16 14:20:03 -04:00
..
2026-06-30 16:20:37 -03:00
2026-06-23 10:01:23 -04:00
2026-06-25 15:57:25 -03:00
2026-06-24 08:27:53 -04:00
2026-06-19 09:22:48 -04:00
2026-07-08 13:43:14 -03:00
2026-06-17 18:19:00 -04:00
2026-06-25 18:21:26 -05:00
2026-07-07 11:20:45 -05:00
2026-07-03 12:14:24 -04:00
2026-07-10 14:37:59 -04:00
2026-06-16 14:56:11 +02:00
2026-07-06 20:28:21 +01:00
2026-07-03 10:28:08 -03:00
2026-07-15 06:56:32 -07:00
2026-07-16 10:37:57 -04:00
2026-07-13 17:07:39 +02:00
2026-06-16 11:28:06 -04:00
2026-06-23 16:58:40 -05:00
2026-07-16 06:34:46 -05:00
2026-07-16 08:47:55 -07:00
2026-06-25 13:13:13 -04:00
2026-06-19 12:13:36 -04:00
2026-07-14 10:28:19 -04:00
2026-07-07 11:18:45 -05:00
2026-06-16 10:29:26 -05:00
2026-07-10 14:47:23 +02:00
2026-06-24 13:36:24 -04:00
2026-06-16 10:28:44 -05:00
2026-07-08 09:59:20 -06:00
2026-07-07 11:52:35 -04:00
2026-06-16 15:04:25 -05:00
2026-07-10 17:37:50 -05:00
2026-07-06 20:29:05 +01:00
2026-07-16 14:20:03 -04:00
2026-06-29 14:45:06 -06:00
2026-06-15 19:54:23 -05:00
2026-06-18 13:53:28 -05:00
2026-06-29 09:43:30 -04:00
2026-06-24 13:05:53 -05:00
2026-06-30 08:55:03 -03:00
2026-06-29 11:59:37 -04:00
2026-07-10 17:37:50 -05:00
2026-06-29 12:28:10 -03:00
2026-07-14 11:52:15 -07:00
2026-06-19 14:37:06 -04:00
2026-07-13 09:46:49 -04:00
2026-07-09 06:07:30 -05:00
2026-07-06 22:38:45 +01:00
2026-06-16 10:55:23 -04:00
2026-06-24 14:16:57 -04:00
2026-06-16 16:29:17 -05:00
2026-06-25 17:29:33 -04:00
2026-06-26 22:03:01 +01:00
2026-07-09 10:01:27 -06:00
2026-06-16 14:04:45 -04:00
2026-06-19 07:15:05 -04:00
2026-07-07 10:54:26 -03:00
2026-07-07 16:25:20 -04:00
2026-06-15 12:33:16 -04:00
2026-07-13 15:58:53 -03:00
2026-06-29 17:11:27 +01:00
2026-06-17 12:07:14 -04:00
2026-06-22 11:23:16 -04:00
2026-06-19 10:52:03 -05:00
2026-06-19 14:17:31 -05:00
2026-06-24 07:49:19 -07:00
2026-07-07 16:24:41 -04:00
2026-07-15 19:35:27 -03:00
2026-06-17 11:10:03 -05:00
2026-06-24 07:50:35 -07:00
2026-07-09 14:57:48 -04:00
2026-07-09 07:38:47 +01:00
2026-06-12 22:30:58 +01:00
2026-06-19 11:10:58 -05:00
2026-06-19 13:42:17 +01:00
2026-07-06 18:34:10 +01:00
2026-06-17 18:32:06 +02:00
2026-06-30 10:13:07 -03:00
2026-07-06 13:00:10 -03:00
2026-07-16 06:33:05 -05:00
2026-06-26 15:58:31 -04:00
2026-06-18 06:35:57 +01:00
2026-06-16 10:21:20 -03:00
2026-06-26 12:07:13 -04:00
2026-07-07 16:15:58 -04:00
2026-07-16 10:46:35 -03:00
2026-07-07 16:08:23 -04:00
2026-07-09 13:04:31 -04:00
2026-07-06 14:16:14 +01:00
2026-06-17 16:20:54 +02:00
2026-07-10 12:31:17 -04:00
2026-06-25 09:32:22 -04:00
2026-06-18 16:22:49 +01:00
2026-06-18 14:42:32 +02:00
2026-07-15 12:34:59 -04:00
2026-07-01 19:21:02 +01:00
2026-06-26 10:40:55 -04:00
2026-06-26 10:40:26 -04:00
2026-06-29 14:44:47 -06:00
2026-06-22 14:54:52 -05:00
2026-06-23 15:04:49 -05:00
2026-07-10 16:19:47 -04:00
2026-07-08 15:07:48 -03:00
2026-06-15 08:52:25 +01:00
2026-06-24 16:30:02 -04:00
2026-06-26 13:03:40 -04:00
2026-06-19 06:33:04 +01:00
2026-07-02 07:37:42 -04:00
2026-06-17 11:09:21 -05:00
2026-06-24 10:00:27 -04:00
2026-07-02 11:17:04 -03:00
2026-06-16 15:58:24 -05:00
2026-06-30 12:26:57 -03:00
2026-06-15 08:52:25 +01:00
2026-06-26 11:24:16 -07:00
2026-06-23 12:26:02 +02:00
2026-07-14 07:47:28 -07:00
2026-06-25 10:31:38 -05:00
2026-06-15 20:44:05 +01:00
2026-06-19 11:14:24 -05:00
2026-07-13 14:43:39 -03:00
2026-07-10 13:52:48 -04:00
2026-07-08 11:38:26 -05:00
2026-06-18 17:17:23 +01:00
2026-06-25 17:44:03 -04:00
2026-07-01 10:28:30 -03:00
2026-06-18 09:55:22 -04:00
2026-06-18 11:01:13 -05:00
2026-06-19 17:01:05 -04:00
2026-07-15 16:37:51 -04:00
2026-07-10 15:42:15 +02:00
2026-06-29 10:21:40 -04:00
2026-06-23 12:38:58 -05:00
2026-06-24 10:19:37 -04:00
2026-06-25 16:27:30 -05:00
2026-07-02 19:16:28 -04:00
2026-07-07 14:38:50 +02:00
2026-07-06 18:18:16 -04:00
2026-07-10 15:42:39 +02:00
2026-07-07 10:54:26 -03:00
2026-07-01 15:04:12 -05:00
2026-06-26 09:51:29 -03:00
2026-07-10 15:46:42 +02:00
2026-06-26 19:13:50 +01:00
2026-07-09 18:00:06 +02:00
2026-07-07 16:29:53 +01:00
2026-06-29 14:08:53 +01:00
2026-07-15 10:14:57 -03:00
2026-07-13 10:51:12 -04:00
2026-07-07 09:26:14 -04:00
2026-07-02 07:38:11 -04:00
2026-07-10 12:48:12 -04:00
2026-07-13 13:10:33 -03:00
2026-07-07 13:15:14 -04:00
2026-07-01 16:20:50 -05:00
2026-07-07 17:05:38 +02:00
2026-07-07 13:08:26 -04:00
2026-07-08 13:14:14 -03:00
2026-07-07 19:22:31 +01:00
2026-07-08 14:38:10 +01:00
2026-07-06 16:19:42 -05:00
2026-07-09 07:32:37 -05:00
2026-07-10 15:51:14 -04:00
2026-07-10 10:07:30 +01:00
2026-07-10 06:40:30 -06:00
2026-07-10 11:14:28 -06:00
2026-07-13 15:37:07 -07:00
2026-07-15 17:52:57 -07:00
2026-07-15 13:22:13 -07:00
2026-07-15 17:42:22 -07:00
2026-07-09 13:17:03 -04:00
2026-06-23 09:41:08 -05:00
2026-07-07 09:59:12 -03:00
2026-07-15 09:55:54 -04:00
2026-06-25 12:04:34 -04:00
2026-07-13 13:51:02 -04:00
2026-07-13 12:52:38 -04:00
2026-07-06 09:19:56 -03:00
2026-06-24 16:53:37 -04:00
2026-07-14 17:32:04 -07:00
2026-07-03 11:04:30 -03:00
2026-07-01 14:00:59 -04:00
2026-06-25 10:01:15 -03:00
2026-07-02 14:32:49 -05:00
2026-06-30 21:33:07 +01:00
2026-06-25 07:25:33 -04:00
2026-06-26 10:34:26 -04:00
2026-07-13 09:08:26 -05:00
2026-07-03 13:29:49 -04:00
2026-07-10 13:32:16 -05:00
2026-06-25 12:02:15 -04:00
2026-07-10 11:53:48 -04:00
2026-07-01 10:40:31 -03:00
2026-06-22 10:34:37 -04:00
2026-06-23 14:28:15 -04:00
2026-06-29 10:41:16 -04:00
2026-07-03 14:12:08 -03:00
2026-07-09 11:20:45 -03:00