pixie-lab 0.4.1__tar.gz → 0.4.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/.github/workflows/cicd.yaml +117 -279
  2. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/CHANGELOG.md +44 -0
  3. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/Makefile +30 -60
  4. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/PKG-INFO +1 -1
  5. pixie_lab-0.4.3/cijoe/configs/live-env-image.toml +34 -0
  6. pixie_lab-0.4.3/cijoe/configs/test-pxe-live-env-modes.toml +105 -0
  7. pixie_lab-0.4.3/cijoe/scripts/live_env_image.py +307 -0
  8. pixie_lab-0.4.3/cijoe/scripts/live_env_transform.sh +293 -0
  9. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/cijoe/scripts/pixie_wheel_stage.py +0 -1
  10. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/cijoe/scripts/pxe_run_chain_test.py +239 -132
  11. pixie_lab-0.4.3/cijoe/tasks/live-env-image.yaml +35 -0
  12. pixie_lab-0.4.3/cijoe/tasks/test-pxe-live-env-modes.yaml +35 -0
  13. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/README.md +13 -43
  14. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/auto/config +3 -18
  15. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pyproject.toml +1 -1
  16. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/_partition.py +93 -9
  17. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/catalog/_fetcher.py +15 -4
  18. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/catalog/catalog.toml +24 -0
  19. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/events/_kinds.py +0 -20
  20. pixie_lab-0.4.3/src/pixie/oras_pull.py +85 -0
  21. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/pxe/_renderer.py +112 -77
  22. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/pxe/_routes.py +14 -1
  23. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_settings_store.py +37 -21
  24. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_templates/dashboard.html +19 -41
  25. pixie_lab-0.4.3/src/pixie/web/_templates/live_env.html +122 -0
  26. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/main.py +63 -194
  27. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/tests/test_catalog_seed.py +5 -3
  28. pixie_lab-0.4.3/tests/test_oras_pull.py +89 -0
  29. pixie_lab-0.4.3/tests/test_partition_select.py +107 -0
  30. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/tests/test_pxe_plan_json.py +126 -93
  31. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/tests/test_settings.py +62 -20
  32. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/uv.lock +1 -1
  33. pixie_lab-0.4.1/cijoe/configs/netboot-pc.toml +0 -31
  34. pixie_lab-0.4.1/cijoe/configs/test-pxe-flash-always.toml +0 -74
  35. pixie_lab-0.4.1/cijoe/configs/test-pxe-flash.toml +0 -99
  36. pixie_lab-0.4.1/cijoe/configs/test-pxe-inventory.toml +0 -95
  37. pixie_lab-0.4.1/cijoe/configs/test-pxe-tui.toml +0 -74
  38. pixie_lab-0.4.1/cijoe/scripts/live_build.py +0 -194
  39. pixie_lab-0.4.1/cijoe/scripts/pxe_flash_stage.py +0 -93
  40. pixie_lab-0.4.1/cijoe/scripts/pxe_inventory_stage.py +0 -111
  41. pixie_lab-0.4.1/cijoe/tasks/netboot-pc.yaml +0 -39
  42. pixie_lab-0.4.1/cijoe/tasks/test-pxe-flash-always.yaml +0 -30
  43. pixie_lab-0.4.1/cijoe/tasks/test-pxe-flash.yaml +0 -61
  44. pixie_lab-0.4.1/cijoe/tasks/test-pxe-inventory.yaml +0 -51
  45. pixie_lab-0.4.1/cijoe/tasks/test-pxe-tui.yaml +0 -47
  46. pixie_lab-0.4.1/src/pixie/catalog/_live_env.py +0 -128
  47. pixie_lab-0.4.1/src/pixie/web/_templates/ipxe/pixie-live-env.j2 +0 -55
  48. pixie_lab-0.4.1/src/pixie/web/_templates/live_env.html +0 -169
  49. pixie_lab-0.4.1/tests/test_live_env_fetch.py +0 -203
  50. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/.dockerignore +0 -0
  51. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/.github/workflows/docs.yml +0 -0
  52. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/.gitignore +0 -0
  53. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/Containerfile +0 -0
  54. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/LICENSE +0 -0
  55. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/PLAN.md +0 -0
  56. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/README.md +0 -0
  57. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/cijoe/configs/test-pxe-nbdboot.toml +0 -0
  58. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/cijoe/configs/test-pxe.toml +0 -0
  59. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/cijoe/configs/test-usb-ventoy.toml +0 -0
  60. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/cijoe/configs/usbboot-pc.toml +0 -0
  61. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/cijoe/scripts/pixie_ipxe_build.py +0 -0
  62. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/cijoe/scripts/pxe_prepare.py +0 -0
  63. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/cijoe/scripts/usb_iso_build.py +0 -0
  64. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/cijoe/scripts/usb_iso_verify.py +0 -0
  65. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/cijoe/scripts/usb_ventoy_guest_start.py +0 -0
  66. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/cijoe/scripts/usb_ventoy_stage.py +0 -0
  67. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/cijoe/tasks/test-pxe-nbdboot.yaml +0 -0
  68. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/cijoe/tasks/test-pxe.yaml +0 -0
  69. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/cijoe/tasks/test-usb-ventoy.yaml +0 -0
  70. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/cijoe/tasks/usbboot-pc.yaml +0 -0
  71. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/docs/audit.md +0 -0
  72. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/docs/src/boot-modes.md +0 -0
  73. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/docs/src/conf.py +0 -0
  74. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/docs/src/deployment.md +0 -0
  75. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/docs/src/hardware-quirks.md +0 -0
  76. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/docs/src/index.md +0 -0
  77. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/docs/src/quickstart.md +0 -0
  78. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/docs/tooling/README.md +0 -0
  79. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/docs/tooling/pyproject.toml +0 -0
  80. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/docs/tooling/src/pixie_docs/__init__.py +0 -0
  81. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/docs/tooling/src/pixie_docs/cli.py +0 -0
  82. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/auxiliary/cloudinit-metadata.meta +0 -0
  83. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/auxiliary/ipxe-embed.ipxe +0 -0
  84. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/auxiliary/ipxe-local-general.h +0 -0
  85. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/archives/backports.list.binary +0 -0
  86. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/archives/backports.list.chroot +0 -0
  87. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/bootloaders/grub-efi/splash.png +0 -0
  88. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/bootloaders/syslinux/splash.png +0 -0
  89. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/hooks/normal/0500-pixie-install.hook.chroot +0 -0
  90. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/hooks/normal/0500-pixie-skip-bootloader-menu.hook.binary +0 -0
  91. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/hooks/normal/0600-pixie-r8125-dkms.hook.chroot +0 -0
  92. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/hooks/normal/0700-pixie-clock-from-http.hook.chroot +0 -0
  93. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/hooks/normal/0800-pixie-ssh-live.hook.chroot +0 -0
  94. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/hooks/normal/0900-pixie-enable-services.hook.chroot +0 -0
  95. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/hooks/normal/0980-pixie-apt-validate.hook.chroot +0 -0
  96. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/includes.chroot/etc/initramfs-tools/conf.d/pixie-modules-most +0 -0
  97. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/includes.chroot/etc/issue +0 -0
  98. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/includes.chroot/etc/modprobe.d/zz-pixie-blacklist-nouveau.conf +0 -0
  99. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/includes.chroot/etc/motd +0 -0
  100. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/includes.chroot/etc/profile.d/pixie-version.sh +0 -0
  101. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/includes.chroot/etc/systemd/system/getty@.service.d/zzz-pixie-autologin-root.conf +0 -0
  102. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/includes.chroot/etc/systemd/system/pixie-banner-early.service +0 -0
  103. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/includes.chroot/etc/systemd/system/pixie-banner-late.service +0 -0
  104. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/includes.chroot/etc/systemd/system/pixie-banner-mid.service +0 -0
  105. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/includes.chroot/etc/systemd/system/pixie-clock-from-http.service +0 -0
  106. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/includes.chroot/etc/systemd/system/pixie-images-discover.service +0 -0
  107. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/includes.chroot/etc/systemd/system/pixie-on-tty1.service +0 -0
  108. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/includes.chroot/etc/systemd/system/pixie-usb-grow.service +0 -0
  109. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/includes.chroot/etc/systemd/system/var-lib-pixie-images.mount +0 -0
  110. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/includes.chroot/etc/udev/rules.d/70-pixie-realtek-2g5-offloads.rules +0 -0
  111. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/includes.chroot/usr/lib/systemd/system-generators/pixie-skip-usb-only-units-on-netboot +0 -0
  112. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/includes.chroot/usr/local/sbin/pixie-boot-banner +0 -0
  113. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/includes.chroot/usr/local/sbin/pixie-clock-from-http +0 -0
  114. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/includes.chroot/usr/local/sbin/pixie-images-discover +0 -0
  115. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/includes.chroot/usr/local/sbin/pixie-on-tty1 +0 -0
  116. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/includes.chroot/usr/local/sbin/pixie-trace +0 -0
  117. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/includes.chroot/usr/local/sbin/pixie-usb-grow +0 -0
  118. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/package-lists/pixie-base.list.chroot +0 -0
  119. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/package-lists/pixie-flash.list.chroot +0 -0
  120. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/preferences/backports.pref.binary +0 -0
  121. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/pixie-media/live-build/config/preferences/backports.pref.chroot +0 -0
  122. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/__init__.py +0 -0
  123. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/_util.py +0 -0
  124. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/catalog/__init__.py +0 -0
  125. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/catalog/_routes.py +0 -0
  126. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/catalog/_schema.py +0 -0
  127. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/catalog/_store.py +0 -0
  128. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/deploy/__init__.py +0 -0
  129. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/deploy/_main.py +0 -0
  130. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/deploy/_templates.py +0 -0
  131. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/disks.py +0 -0
  132. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/events/__init__.py +0 -0
  133. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/events/_log.py +0 -0
  134. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/events/_routes.py +0 -0
  135. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/exports/__init__.py +0 -0
  136. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/exports/_routes.py +0 -0
  137. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/exports/_store.py +0 -0
  138. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/exports/_supervisor.py +0 -0
  139. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/flash.py +0 -0
  140. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/images.py +0 -0
  141. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/machines/__init__.py +0 -0
  142. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/machines/_routes.py +0 -0
  143. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/machines/_store.py +0 -0
  144. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/oras.py +0 -0
  145. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/pivot/__init__.py +0 -0
  146. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/pivot/nbdboot +0 -0
  147. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/pxe/__init__.py +0 -0
  148. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/tftp/__init__.py +0 -0
  149. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/tftp/_supervisor.py +0 -0
  150. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/tui/__init__.py +0 -0
  151. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/tui/_app.py +0 -0
  152. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/tui_catalog.py +0 -0
  153. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/__init__.py +0 -0
  154. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_auth.py +0 -0
  155. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_bind_preview.py +0 -0
  156. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_fsutil.py +0 -0
  157. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_images.py +0 -0
  158. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_inventory.py +0 -0
  159. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_overlay_bind.py +0 -0
  160. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_overlays.py +0 -0
  161. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_static/.gitkeep +0 -0
  162. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_static/bootstrap-icons.min.css +0 -0
  163. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_static/bootstrap.min.css +0 -0
  164. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_static/fonts/bootstrap-icons.woff +0 -0
  165. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_static/fonts/bootstrap-icons.woff2 +0 -0
  166. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_static/htmx.min.js +0 -0
  167. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_static/pixie-favicon.png +0 -0
  168. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_static/sse.js +0 -0
  169. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_table_state.py +0 -0
  170. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_templates/_partials/page_description.html +0 -0
  171. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_templates/_partials/recent_events.html +0 -0
  172. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_templates/_partials/table_helpers.html +0 -0
  173. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_templates/catalog.html +0 -0
  174. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_templates/catalog_detail.html +0 -0
  175. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_templates/events.html +0 -0
  176. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_templates/image_detail.html +0 -0
  177. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_templates/images.html +0 -0
  178. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_templates/ipxe/bootstrap.j2 +0 -0
  179. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_templates/ipxe/exit.j2 +0 -0
  180. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_templates/ipxe/nbdboot.j2 +0 -0
  181. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_templates/ipxe/unavailable.j2 +0 -0
  182. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_templates/layout.html +0 -0
  183. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_templates/login.html +0 -0
  184. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_templates/machine_detail.html +0 -0
  185. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_templates/machines.html +0 -0
  186. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_templates/overlays.html +0 -0
  187. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/src/pixie/web/_templates/settings.html +0 -0
  188. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/tests/__init__.py +0 -0
  189. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/tests/conftest.py +0 -0
  190. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/tests/integration/__init__.py +0 -0
  191. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/tests/integration/conftest.py +0 -0
  192. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/tests/integration/test_catalog_fetch.py +0 -0
  193. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/tests/integration/test_deploy.py +0 -0
  194. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/tests/integration/test_exports.py +0 -0
  195. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/tests/integration/test_inventory.py +0 -0
  196. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/tests/integration/test_pxe.py +0 -0
  197. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/tests/integration/test_tftp.py +0 -0
  198. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/tests/test_auth.py +0 -0
  199. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/tests/test_catalog_api.py +0 -0
  200. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/tests/test_deploy_unit.py +0 -0
  201. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/tests/test_event_kinds.py +0 -0
  202. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/tests/test_events_unit.py +0 -0
  203. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/tests/test_exports_unit.py +0 -0
  204. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/tests/test_fetch_progress.py +0 -0
  205. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/tests/test_healthz.py +0 -0
  206. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/tests/test_images_ui.py +0 -0
  207. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/tests/test_machines_unit.py +0 -0
  208. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/tests/test_overlays_ui.py +0 -0
  209. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/tests/test_pivot.py +0 -0
  210. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/tests/test_schema.py +0 -0
  211. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/tests/test_ui_pages.py +0 -0
  212. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/tests/test_web_bind_preview.py +0 -0
  213. {pixie_lab-0.4.1 → pixie_lab-0.4.3}/tests/test_web_inventory.py +0 -0
@@ -7,9 +7,9 @@ name: cicd
7
7
  # (real nbdkit, real HTTP, real NBD wire).
8
8
  # * ``build-container``: separate smoke build kept for the "does
9
9
  # the Containerfile parse on a fresh runner" signal.
10
- # * ``build-media``: build the live-env media (netboot-pc + usbboot-pc
11
- # variants) via the cijoe pipelines under cijoe/tasks/. Requires
12
- # live-build + passwordless sudo; the runner has both.
10
+ # * ``build-media``: build the usbboot-pc bootable .iso via the cijoe
11
+ # live-build pipeline under cijoe/tasks/. Requires live-build +
12
+ # passwordless sudo; the runner has both.
13
13
  # * ``verify-usbboot``: structurally verify the usbboot-pc .iso
14
14
  # (hybrid ISO + El Torito BIOS & UEFI entries + sha256), then boot
15
15
  # it via a real Ventoy stick in QEMU and assert the pixie live env
@@ -27,9 +27,9 @@ name: cicd
27
27
  # only. Before this the image was smoke-built and thrown away, so
28
28
  # the documented ghcr image was never populated by CI.
29
29
  # * ``publish-release``: create the GitHub Release for the tag and
30
- # attach the media ``build-media`` produces -- the netboot-pc
31
- # live-env bake + the usbboot-pc bootable image + checksums. These
32
- # used to live only as ephemeral, login-gated workflow artifacts.
30
+ # attach the media -- the pixie-live-env nbdboot image + the
31
+ # usbboot-pc bootable .iso + checksums. These used to live only as
32
+ # ephemeral, login-gated workflow artifacts.
33
33
  #
34
34
  # First publish (claiming the pixie-lab name) requires a one-time
35
35
  # PyPI setup: register a Pending Publisher on https://pypi.org
@@ -106,7 +106,7 @@ jobs:
106
106
  name: Build ${{ matrix.variant }} image
107
107
  needs: test
108
108
  runs-on: ubuntu-latest
109
- # A cold live-build (netboot-pc / usbboot-pc) finishes in
109
+ # A cold live-build (usbboot-pc .iso) finishes in
110
110
  # 25-40 min on a warm GHA runner. The dominant failure mode is
111
111
  # a HANG (in-chroot apt / debootstrap has no timeout), so a 60
112
112
  # min cap fails a stuck build fast; the cijoe-output artifact
@@ -116,7 +116,7 @@ jobs:
116
116
  strategy:
117
117
  fail-fast: false
118
118
  matrix:
119
- variant: [netboot-pc, usbboot-pc]
119
+ variant: [usbboot-pc]
120
120
  steps:
121
121
  - uses: actions/checkout@v6
122
122
 
@@ -171,17 +171,6 @@ jobs:
171
171
  path: cijoe/cijoe-output
172
172
  if-no-files-found: warn
173
173
 
174
- - name: Upload artifact (netboot-pc)
175
- if: matrix.variant == 'netboot-pc'
176
- uses: actions/upload-artifact@v7
177
- with:
178
- name: pixie-netboot-pc-x86_64
179
- path: |
180
- ~/system_imaging/disk/pixie-netboot-pc-x86_64-v*.vmlinuz
181
- ~/system_imaging/disk/pixie-netboot-pc-x86_64-v*.initrd
182
- ~/system_imaging/disk/pixie-netboot-pc-x86_64-v*.squashfs
183
- ~/system_imaging/disk/pixie-netboot-pc-x86_64-v*.sha256
184
-
185
174
  - name: Upload artifact (usbboot-pc)
186
175
  if: matrix.variant == 'usbboot-pc'
187
176
  uses: actions/upload-artifact@v7
@@ -191,6 +180,67 @@ jobs:
191
180
  ~/system_imaging/disk/pixie-usbboot-pc-x86_64-v*.iso
192
181
  ~/system_imaging/disk/pixie-usbboot-pc-x86_64-v*.sha256
193
182
 
183
+ build-live-env-image:
184
+ name: Build pixie-live-env image
185
+ # The image the live-env boot modes nbdboot: the nosi arch-headless
186
+ # base disk image with the pixie CLI + pixie-on-tty1 service injected
187
+ # (cijoe/tasks/live-env-image.yaml). Unlike the live-build bakes this
188
+ # does NOT run debootstrap/mksquashfs; it qemu-nbd-mounts a copy of a
189
+ # pulled base image, injects userspace, slims, and gzips. Wired to
190
+ # ``test`` so we don't pay for the ORAS pull + qemu transform on a
191
+ # broken lint/typecheck.
192
+ needs: test
193
+ runs-on: ubuntu-latest
194
+ # 60 min cap for the same reason as build-media: the real ORAS pull
195
+ # of the arch-headless base (~1.6 GiB) + decompress + qemu transform
196
+ # + gzip dominate wall clock.
197
+ timeout-minutes: 60
198
+ steps:
199
+ - uses: actions/checkout@v6
200
+
201
+ - name: Install build dependencies (qemu-nbd, rsync, nbd module)
202
+ run: |
203
+ set -eu
204
+ sudo apt-get update
205
+ sudo apt-get install -y --no-install-recommends \
206
+ qemu-utils rsync gzip
207
+ # The transform attaches a copy of the base image to /dev/nbdX
208
+ # via qemu-nbd; load the module with partition scanning so the
209
+ # root partition shows up as nbdXp1.
210
+ sudo modprobe nbd max_part=16
211
+ ls -la /dev/nbd0
212
+
213
+ - name: Install cijoe
214
+ run: pipx install --force cijoe
215
+
216
+ - name: Install uv
217
+ uses: astral-sh/setup-uv@v8.1.0
218
+
219
+ - name: Build pixie-live-env image
220
+ run: make live-env-image
221
+
222
+ # cijoe captures the full run (per-command output + report.html)
223
+ # under cijoe/cijoe-output/. Upload it ALWAYS so a transform
224
+ # failure leaves a diagnosable artifact.
225
+ - name: Upload cijoe output
226
+ if: always()
227
+ uses: actions/upload-artifact@v7
228
+ with:
229
+ name: cijoe-output-live-env-image
230
+ path: cijoe/cijoe-output
231
+ if-no-files-found: warn
232
+
233
+ - name: Upload artifact (pixie-live-env-image)
234
+ uses: actions/upload-artifact@v7
235
+ with:
236
+ name: pixie-live-env-image-x86_64
237
+ path: |
238
+ ~/system_imaging/disk/pixie-live-env-x86_64.img.gz
239
+ ~/system_imaging/disk/pixie-live-env-x86_64.img.gz.sha256
240
+ ~/system_imaging/disk/pixie-live-env-x86_64.content-sha256
241
+ ~/system_imaging/disk/pixie-live-env-catalog.toml
242
+ if-no-files-found: error
243
+
194
244
  test-pxe:
195
245
  name: PXE bootstrap chain test (containerized pixie + client QEMU VM)
196
246
  # Independent of the media bake: the chain test only needs the
@@ -257,9 +307,8 @@ jobs:
257
307
  # netboot bundle, root disk from nosi's img.gz -- and asserts a
258
308
  # real Debian userspace comes up over NBD.
259
309
  #
260
- # 60 min timeout for the same reasons as test-pxe-flash: the real
261
- # oras pull (~2.6 GiB compressed) + img.gz decompression to
262
- # pixie's blob store dominates wall clock.
310
+ # 60 min timeout because the real oras pull (~2.6 GiB compressed) +
311
+ # img.gz decompression to pixie's blob store dominates wall clock.
263
312
  runs-on: ubuntu-latest
264
313
  timeout-minutes: 60
265
314
  steps:
@@ -304,146 +353,20 @@ jobs:
304
353
  path: cijoe/_build/test-pxe
305
354
  if-no-files-found: warn
306
355
 
307
- test-pxe-inventory:
308
- name: PXE inventory chain test (containerized pixie + client QEMU VM)
309
- # Depends on the netboot-pc bake for the live-env media that
310
- # pixie serves at /boot/pixie-live-env/. No disk image assembly
311
- # here (unlike nbdboot), so the runner does not need
312
- # squashfs-tools / rsync / mkfs.ext4.
313
- needs: build-media
314
- runs-on: ubuntu-latest
315
- timeout-minutes: 30
316
- steps:
317
- - uses: actions/checkout@v6
318
-
319
- - name: Install host tools (qemu, dnsmasq, ipxe, bridge)
320
- run: |
321
- set -eu
322
- sudo apt-get update
323
- sudo apt-get install -y --no-install-recommends \
324
- qemu-system-x86 \
325
- qemu-utils \
326
- dnsmasq \
327
- ipxe \
328
- bridge-utils \
329
- iproute2
330
- sudo chmod a+rw /dev/kvm
331
- ls -la /dev/kvm
332
-
333
- - name: Install cijoe
334
- run: pipx install --force cijoe
335
-
336
- - name: Install uv
337
- uses: astral-sh/setup-uv@v8.1.0
338
-
339
- - name: Download netboot-pc bake artifacts
340
- uses: actions/download-artifact@v7
341
- with:
342
- name: pixie-netboot-pc-x86_64
343
- path: ~/system_imaging/disk/
344
-
345
- - name: Show downloaded artifact contents
346
- run: |
347
- set -eu
348
- echo "--- ~/system_imaging/disk (recursive) ---"
349
- find ~/system_imaging/disk -maxdepth 5 -print
350
-
351
- - name: Run PXE inventory chain test
352
- run: make test-pxe-inventory
353
-
354
- - name: Upload cijoe output
355
- if: always()
356
- uses: actions/upload-artifact@v7
357
- with:
358
- name: cijoe-output-test-pxe-inventory
359
- path: cijoe/cijoe-output
360
- if-no-files-found: warn
361
-
362
- - name: Upload PXE workspace (serial logs, dnsmasq.log)
363
- if: always()
364
- uses: actions/upload-artifact@v7
365
- with:
366
- name: test-pxe-inventory-workspace
367
- path: cijoe/_build/test-pxe
368
- if-no-files-found: warn
369
-
370
- test-pxe-flash:
371
- name: PXE flash chain test (containerized pixie + client QEMU VM)
372
- # Same artifact dependency as test-pxe-inventory (the netboot-pc
373
- # bake for the live-env media). qemu-utils lands qemu-img which
374
- # we use to read the client disk's sector 0 for a boot-signature
375
- # check without a full-disk convert.
356
+ test-pxe-live-env-modes:
357
+ name: PXE live-env modes chain test (containerized pixie + client QEMU VM)
358
+ # Consolidated: nbdboots the pixie-live-env image ONCE, then runs
359
+ # pixie-inventory / -tui / -flash-once against it in sequence (one
360
+ # heavy image fetch, three client boots, destructive flash last).
361
+ # Fetches the pinned pixie-live-env release image (https) + its
362
+ # arch-headless netboot bundle (oras) + the nosi flash target
363
+ # (oras). No build-media dependency.
376
364
  #
377
- # Wider timeout (60 min) because the pipeline pulls a real nosi
378
- # image via oras (~2.6 GiB compressed) + decompresses img.gz +
379
- # dds ~10 GiB sparsely to the client qcow2 -- not the synthetic
380
- # 16 MiB marker file the earlier test-pxe-flash iterations used.
381
- needs: build-media
382
- runs-on: ubuntu-latest
383
- timeout-minutes: 60
384
- steps:
385
- - uses: actions/checkout@v6
386
-
387
- - name: Install host tools (qemu, dnsmasq, ipxe, bridge)
388
- run: |
389
- set -eu
390
- sudo apt-get update
391
- sudo apt-get install -y --no-install-recommends \
392
- qemu-system-x86 \
393
- qemu-utils \
394
- dnsmasq \
395
- ipxe \
396
- bridge-utils \
397
- iproute2
398
- sudo chmod a+rw /dev/kvm
399
- ls -la /dev/kvm
400
-
401
- - name: Install cijoe
402
- run: pipx install --force cijoe
403
-
404
- - name: Install uv
405
- uses: astral-sh/setup-uv@v8.1.0
406
-
407
- - name: Download netboot-pc bake artifacts
408
- uses: actions/download-artifact@v7
409
- with:
410
- name: pixie-netboot-pc-x86_64
411
- path: ~/system_imaging/disk/
412
-
413
- - name: Show downloaded artifact contents
414
- run: |
415
- set -eu
416
- echo "--- ~/system_imaging/disk (recursive) ---"
417
- find ~/system_imaging/disk -maxdepth 5 -print
418
-
419
- - name: Run PXE flash chain test
420
- run: make test-pxe-flash
421
-
422
- - name: Upload cijoe output
423
- if: always()
424
- uses: actions/upload-artifact@v7
425
- with:
426
- name: cijoe-output-test-pxe-flash
427
- path: cijoe/cijoe-output
428
- if-no-files-found: warn
429
-
430
- - name: Upload PXE workspace (serial logs, dnsmasq.log)
431
- if: always()
432
- uses: actions/upload-artifact@v7
433
- with:
434
- name: test-pxe-flash-workspace
435
- path: cijoe/_build/test-pxe
436
- if-no-files-found: warn
437
-
438
- test-pxe-flash-always:
439
- name: PXE flash-always chain test (containerized pixie + client QEMU VM)
440
- # Same dependencies + real-nosi pipeline as test-pxe-flash. The
441
- # difference is a one-line config knob + an inverted assertion:
442
- # pixie-flash-always must NOT flip its bind on the CLI's /done.
443
- # 60 min for the same reasons -- real oras pull dominates.
444
- needs: build-media
365
+ # 90 min: the pixie-live-env img.gz fetch + the flash submode's
366
+ # ~2.6 GiB nosi image pull/decompress + three sequential QEMU boots
367
+ # dominate wall clock.
445
368
  runs-on: ubuntu-latest
446
- timeout-minutes: 60
369
+ timeout-minutes: 90
447
370
  steps:
448
371
  - uses: actions/checkout@v6
449
372
 
@@ -467,26 +390,14 @@ jobs:
467
390
  - name: Install uv
468
391
  uses: astral-sh/setup-uv@v8.1.0
469
392
 
470
- - name: Download netboot-pc bake artifacts
471
- uses: actions/download-artifact@v7
472
- with:
473
- name: pixie-netboot-pc-x86_64
474
- path: ~/system_imaging/disk/
475
-
476
- - name: Show downloaded artifact contents
477
- run: |
478
- set -eu
479
- echo "--- ~/system_imaging/disk (recursive) ---"
480
- find ~/system_imaging/disk -maxdepth 5 -print
481
-
482
- - name: Run PXE flash-always chain test
483
- run: make test-pxe-flash-always
393
+ - name: Run PXE live-env modes chain test
394
+ run: make test-pxe-live-env-modes
484
395
 
485
396
  - name: Upload cijoe output
486
397
  if: always()
487
398
  uses: actions/upload-artifact@v7
488
399
  with:
489
- name: cijoe-output-test-pxe-flash-always
400
+ name: cijoe-output-test-pxe-live-env-modes
490
401
  path: cijoe/cijoe-output
491
402
  if-no-files-found: warn
492
403
 
@@ -494,70 +405,7 @@ jobs:
494
405
  if: always()
495
406
  uses: actions/upload-artifact@v7
496
407
  with:
497
- name: test-pxe-flash-always-workspace
498
- path: cijoe/_build/test-pxe
499
- if-no-files-found: warn
500
-
501
- test-pxe-tui:
502
- name: PXE tui chain test (containerized pixie + client QEMU VM)
503
- # Same live-env media dependency as test-pxe-flash. No qemu-utils
504
- # here -- the tui test does not read the target disk; it just
505
- # asserts the wizard entered its picker screen (a serial marker
506
- # coming out of pixie CLI's _screen_select_image).
507
- needs: build-media
508
- runs-on: ubuntu-latest
509
- timeout-minutes: 30
510
- steps:
511
- - uses: actions/checkout@v6
512
-
513
- - name: Install host tools (qemu, dnsmasq, ipxe, bridge)
514
- run: |
515
- set -eu
516
- sudo apt-get update
517
- sudo apt-get install -y --no-install-recommends \
518
- qemu-system-x86 \
519
- qemu-utils \
520
- dnsmasq \
521
- ipxe \
522
- bridge-utils \
523
- iproute2
524
- sudo chmod a+rw /dev/kvm
525
- ls -la /dev/kvm
526
-
527
- - name: Install cijoe
528
- run: pipx install --force cijoe
529
-
530
- - name: Install uv
531
- uses: astral-sh/setup-uv@v8.1.0
532
-
533
- - name: Download netboot-pc bake artifacts
534
- uses: actions/download-artifact@v7
535
- with:
536
- name: pixie-netboot-pc-x86_64
537
- path: ~/system_imaging/disk/
538
-
539
- - name: Show downloaded artifact contents
540
- run: |
541
- set -eu
542
- echo "--- ~/system_imaging/disk (recursive) ---"
543
- find ~/system_imaging/disk -maxdepth 5 -print
544
-
545
- - name: Run PXE tui chain test
546
- run: make test-pxe-tui
547
-
548
- - name: Upload cijoe output
549
- if: always()
550
- uses: actions/upload-artifact@v7
551
- with:
552
- name: cijoe-output-test-pxe-tui
553
- path: cijoe/cijoe-output
554
- if-no-files-found: warn
555
-
556
- - name: Upload PXE workspace (serial logs, dnsmasq.log)
557
- if: always()
558
- uses: actions/upload-artifact@v7
559
- with:
560
- name: test-pxe-tui-workspace
408
+ name: test-pxe-live-env-modes-workspace
561
409
  path: cijoe/_build/test-pxe
562
410
  if-no-files-found: warn
563
411
 
@@ -650,12 +498,10 @@ jobs:
650
498
  - build-container
651
499
  - build-wheel
652
500
  - build-media
501
+ - build-live-env-image
653
502
  - test-pxe
654
503
  - test-pxe-nbdboot
655
- - test-pxe-inventory
656
- - test-pxe-tui
657
- - test-pxe-flash
658
- - test-pxe-flash-always
504
+ - test-pxe-live-env-modes
659
505
  - verify-usbboot
660
506
  runs-on: ubuntu-latest
661
507
  if: startsWith(github.ref, 'refs/tags/v')
@@ -692,12 +538,10 @@ jobs:
692
538
  - build-container
693
539
  - build-wheel
694
540
  - build-media
541
+ - build-live-env-image
695
542
  - test-pxe
696
543
  - test-pxe-nbdboot
697
- - test-pxe-inventory
698
- - test-pxe-tui
699
- - test-pxe-flash
700
- - test-pxe-flash-always
544
+ - test-pxe-live-env-modes
701
545
  - verify-usbboot
702
546
  runs-on: ubuntu-latest
703
547
  if: startsWith(github.ref, 'refs/tags/v')
@@ -725,11 +569,11 @@ jobs:
725
569
 
726
570
  publish-release:
727
571
  name: Publish GitHub Release (media assets)
728
- # Attach the media CI already builds -- the netboot-pc live-env
729
- # bake (vmlinuz + initrd + squashfs) and the usbboot-pc bootable
730
- # image -- to a GitHub Release on v* tags. Before this they only
731
- # existed as ephemeral, login-gated workflow artifacts, so an
732
- # operator had no released live-env or USB image to download. Same
572
+ # Attach the media CI already builds -- the pixie-live-env nbdboot
573
+ # image and the usbboot-pc bootable .iso -- to a GitHub Release on
574
+ # v* tags. Before this they only existed as ephemeral, login-gated
575
+ # workflow artifacts, so an operator had no released live-env or
576
+ # USB image to download. Same
733
577
  # full-pipeline gate as the other publish jobs.
734
578
  needs:
735
579
  - test
@@ -737,12 +581,10 @@ jobs:
737
581
  - build-container
738
582
  - build-wheel
739
583
  - build-media
584
+ - build-live-env-image
740
585
  - test-pxe
741
586
  - test-pxe-nbdboot
742
- - test-pxe-inventory
743
- - test-pxe-tui
744
- - test-pxe-flash
745
- - test-pxe-flash-always
587
+ - test-pxe-live-env-modes
746
588
  - verify-usbboot
747
589
  runs-on: ubuntu-latest
748
590
  if: startsWith(github.ref, 'refs/tags/v')
@@ -753,33 +595,28 @@ jobs:
753
595
  - name: Download media artifacts
754
596
  uses: actions/download-artifact@v8
755
597
  with:
756
- # Both build-media matrix legs upload under this shape:
757
- # ``pixie-netboot-pc-x86_64`` + ``pixie-usbboot-pc-x86_64``.
758
- # merge-multiple flattens both into one directory.
598
+ # build-media uploads the usbboot-pc .iso under this shape.
759
599
  pattern: pixie-*-pc-x86_64
760
600
  merge-multiple: true
761
601
  path: release-assets
602
+ - name: Download pixie-live-env image
603
+ # The nbdboot live-env image (arch-headless + injected pixie CLI
604
+ # / service): the gzipped disk image + its .sha256, the
605
+ # .content-sha256 sidecar (the value an operator sets
606
+ # PIXIE_LIVE_ENV_IMAGE_SHA to), and the catalog fragment.
607
+ uses: actions/download-artifact@v8
608
+ with:
609
+ name: pixie-live-env-image-x86_64
610
+ path: release-assets
762
611
  - name: List release assets
763
612
  run: ls -la release-assets
764
- - name: Assemble live-env fetch tarball
765
- # pixie's in-app "Fetch live-env" pulls ONE tarball that unpacks
766
- # to vmlinuz + initrd + live.squashfs (see catalog/_live_env.py).
767
- # Repackage the netboot-pc trio under those stable names so
768
- # ``.../releases/latest/download/pixie-live-env-x86_64.tar.gz``
769
- # -- the default PIXIE_LIVE_ENV_SRC -- resolves.
613
+ - name: Stage curated catalog
614
+ # Ship the curated catalog (the nosi subset + the pixie-live-env
615
+ # image) so DEFAULT_CATALOG_URL
616
+ # (.../releases/latest/download/catalog.toml) resolves and
617
+ # pixie's Import + live-env TUI default work.
770
618
  run: |
771
619
  set -eu
772
- d=$(mktemp -d)
773
- cp release-assets/pixie-netboot-pc-x86_64-*.vmlinuz "$d/vmlinuz"
774
- cp release-assets/pixie-netboot-pc-x86_64-*.initrd "$d/initrd"
775
- cp release-assets/pixie-netboot-pc-x86_64-*.squashfs "$d/live.squashfs"
776
- tar -C "$d" -czf release-assets/pixie-live-env-x86_64.tar.gz \
777
- vmlinuz initrd live.squashfs
778
- ( cd release-assets && sha256sum pixie-live-env-x86_64.tar.gz \
779
- > pixie-live-env-x86_64.tar.gz.sha256 )
780
- # Ship the curated catalog (the netboot-capable nosi subset)
781
- # so DEFAULT_CATALOG_URL (.../releases/latest/download/catalog.toml)
782
- # resolves and pixie's Import + live-env TUI default work.
783
620
  cp src/pixie/catalog/catalog.toml release-assets/catalog.toml
784
621
  ls -la release-assets
785
622
  - name: Create / update GitHub Release
@@ -798,7 +635,8 @@ jobs:
798
635
 
799
636
  ## Media assets attached here
800
637
 
801
- - `pixie-live-env-x86_64.tar.gz` — the live-env trio packaged for pixie's in-app **Fetch live-env** action (the default `PIXIE_LIVE_ENV_SRC`). Click Fetch live-env on the dashboard and pixie pulls + stages this itself; no manual bake or copy.
802
- - `pixie-netboot-pc-x86_64-*.{vmlinuz,initrd,squashfs}` — the same live-env (netboot-pc bake) as loose files, if you prefer to stage `PIXIE_LIVE_ENV_DIR` (`data/live-env/`) by hand. Used by the `pixie-flash-once` / `pixie-flash-always` / `pixie-inventory` / `pixie-tui` boot modes.
803
- - `pixie-usbboot-pc-x86_64-*.iso` — bootable USB / ISO media for the pixie live env (uncompressed; `dd` / Etcher / Ventoy ready).
638
+ - `pixie-live-env-x86_64.img.gz` — the **nbdboot** live-env image: the nosi `arch-headless` base disk image with the pixie CLI + `pixie-on-tty1` service injected. Fetch it from the **Catalog** tab (it seeds into a fresh catalog), then set `PIXIE_LIVE_ENV_IMAGE_SHA` to select it for the `pixie-flash-once` / `pixie-flash-always` / `pixie-inventory` / `pixie-tui` boot modes so they nbdboot this image ephemerally.
639
+ - `pixie-live-env-x86_64.content-sha256` — the raw-image sha256 to set `PIXIE_LIVE_ENV_IMAGE_SHA` to (identical to the `content_sha256` pixie assigns after fetching the `pixie-live-env` catalog entry).
640
+ - `pixie-live-env-catalog.toml` — the catalog fragment (the `pixie-live-env` disk image + its arch-headless netboot bundle) with `content_sha256` filled in; the shipped `catalog.toml` also lists these entries.
641
+ - `pixie-usbboot-pc-x86_64-*.iso` — bootable USB / ISO media for ad-hoc flash-install of images (uncompressed; `dd` / Etcher / Ventoy ready).
804
642
  - `*.sha256` — checksums for the above.
@@ -11,6 +11,50 @@ operator-facing summary.
11
11
 
12
12
  ## [Unreleased]
13
13
 
14
+ ## [0.4.3] - 2026-07-26
15
+
16
+ ### Removed
17
+
18
+ **The squashfs live-env path is retired.** The live-env boot modes
19
+ (`pixie-inventory` / `pixie-tui` / `pixie-flash-once` / `pixie-flash-always`)
20
+ now boot the disk image selected by `PIXIE_LIVE_ENV_IMAGE_SHA` over
21
+ ephemeral nbdboot, full stop -- the old Debian live-boot squashfs
22
+ delivery is gone. Removed: the `boot=live fetch=<squashfs>` render
23
+ fallback (an unset image sha now degrades to the unavailable plan, so
24
+ select an image on the Live env page), the in-app "Fetch live-env"
25
+ action and `/ui/live-env/src/edit` route, the `PIXIE_LIVE_ENV_SRC` /
26
+ `PIXIE_LIVE_ENV_DIR` settings and the `/boot/pixie-live-env` mount, and
27
+ the `netboot-pc` live-build bake (with its `pixie-live-env-x86_64.tar.gz`
28
+ release asset). The `usbboot-pc` bootable `.iso` -- for ad-hoc
29
+ flash-install of images -- is unchanged.
30
+
31
+ ## [0.4.2] - 2026-07-26
32
+
33
+ ### Added
34
+
35
+ **The live-env boots as an ephemeral-nbdboot disk image, not a
36
+ live-boot squashfs.** The inventory / tui / flash boot modes now
37
+ nbdboot a normal disk image (nosi `arch-headless` with the pixie CLI +
38
+ `pixie-on-tty1` service injected) with a tmpfs overlay, instead of
39
+ fetching a live-boot squashfs. This fixes boxes whose NIC never came up
40
+ under the old Debian live-boot initramfs (dual-NIC Intel `igb` among
41
+ them): the image rides the same dracut ramboot path that nbdboot
42
+ already uses, which brings those NICs up. Point pixie at it by fetching
43
+ the `pixie-live-env` catalog entry and setting `PIXIE_LIVE_ENV_IMAGE_SHA`
44
+ (or the `live_env.image_sha` setting) to its content sha; the image ships
45
+ as a release asset (`pixie-live-env-x86_64.img.gz`, under 2 GB) built and
46
+ published by CI.
47
+
48
+ ### Fixed
49
+
50
+ **Rootfs extraction picks the Linux root partition by GPT type.** The
51
+ fetcher extracted partition 1 as `rootfs.raw`, correct for the
52
+ ubuntu/debian cloud images (root at p1) but not for arch/fedora, whose
53
+ images place BIOS-boot + ESP first and root at p3 -- there it produced a
54
+ 1 MiB stub that could not mount. It now selects by type (Linux-root GUID,
55
+ then the largest Linux filesystem, then the largest non-firmware/boot/swap
56
+ partition), so every nosi image extracts its real root.
57
+
14
58
  ## [0.4.1] - 2026-07-25
15
59
 
16
60
  ### Changed