Commit Graph

619 Commits

Author SHA1 Message Date
Itxaka
b5cfab06a7 sparkles: Use kairos-sdk module (#1140) 2023-03-15 15:45:00 +01:00
Oz Tiram
ce4631fd07 bug: Fix configuration not being merge (#1117)
Fix #687.

Signed-off-by: Oz Tiram <oz@spectrocloud.com>
2023-03-14 15:44:49 +01:00
Ettore Di Giacinto
6bc750130c robot: Delete duplicate test suite registration (#1091)
Signed-off-by: mudler <mudler@c3os.io>
2023-03-10 11:10:03 +01:00
Jacob Payne
e57ef905a4 bug: Fix manual install not supporting configuration url (#963)
* fixed manual install not supporting configuration url

Signed-off-by: Jacob Payne <jacob@spectrocloud.com>

* break out url logic and add testing.

Signed-off-by: Jacob Payne <jacob@spectrocloud.com>

---------

Signed-off-by: Jacob Payne <jacob@spectrocloud.com>
Co-authored-by: Ettore Di Giacinto <mudler@users.noreply.github.com>
2023-03-08 10:13:36 -07:00
Jacob Payne
d8d97097a7 bug: remove kcrypt hook after reset (#982)
remove kcrypt hook after reset

Signed-off-by: Jacob Payne <jacob@spectrocloud.com>
2023-02-28 15:57:47 -07:00
Shawn Wilsher
609c09f305 🔧 Integrate Shellcheck (#931)
* Add `shellcheck` to lint.

Signed-off-by: Shawn Wilsher <656602+sdwilsh@users.noreply.github.com>

* Fix/Suppress `shellcheck` lint issues

Signed-off-by: Shawn Wilsher <656602+sdwilsh@users.noreply.github.com>

---------

Signed-off-by: Shawn Wilsher <656602+sdwilsh@users.noreply.github.com>
Co-authored-by: Itxaka <itxaka.garcia@spectrocloud.com>
2023-02-23 04:36:49 -08:00
Mauro Morales
0cf3da5e06 sparkles: Web UI schema validations (#934)
* Allow validator to receive a config-schema

It will try to process a URL first, otherwise a file and if the file
is not present it will try to read the source as a cloud-config

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* Validate cloud-config on WebUI

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

---------

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
2023-02-22 08:54:45 +01:00
Mauro Morales
461516fec5 sparkles: Integrate schema validation (#853)
* Change ValidationError to return the actual error

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* Add validate command

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* Warn validation errors when scanning configs

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* Lint

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* Add schema command to print config json schema

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* Add strict-validations flag

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* Lint and remove focus

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* Rename command schema to print-schema

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* Fix issue by reading originalData

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* Lint

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* Remove test from removed feature

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* Add comments to exported functions

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* Lint

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* Add test for validate.go

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* Remove focus

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* Add more tests for root schema

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* Add more tests

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

---------

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
Co-authored-by: Itxaka <itxaka.garcia@spectrocloud.com>
2023-02-14 16:15:13 +01:00
renovate[bot]
1f9d67c57a Update module github.com/erikgeiser/promptkit to v0.8.0 (#652)
* Update module github.com/erikgeiser/promptkit to v0.8.0

* 🎨 Adapt agent to new v0.8.0 promptkit version

Validation function for textinput now requires an error/nil instead of
a bool

Signed-off-by: Itxaka <itxaka@spectrocloud.com>

---------

Signed-off-by: Itxaka <itxaka@spectrocloud.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Itxaka <itxaka@spectrocloud.com>
Co-authored-by: Itxaka <itxaka.garcia@spectrocloud.com>
2023-02-04 11:22:57 +01:00
Ettore Di Giacinto
9c99670add robot: Don't run installation twice on installation tests (#811)
* 🤖 Don't run installation twice on installation tests

Signed-off-by: mudler <mudler@c3os.io>

* 🐛 Scan provided config in manual-install

Signed-off-by: mudler <mudler@c3os.io>

* 🤖 Git unshallow before running tests

Signed-off-by: mudler <mudler@c3os.io>

---------

Signed-off-by: mudler <mudler@c3os.io>
2023-02-03 18:41:35 +01:00
Oz Tiram
6e5c87a717 sparkles: custom user bind and ephemeral mounts (#692)
*  custom user bind and ephemeral mounts

Users can now specify custom and ephemeral mounts in cloud-init under
the `install` section, e.g.:

```
users:
 - name: kairos
...
install:
  auto: true
  device: "auto"
  bind_mounts:
  - /mnt/bind1
  - /mnt/bind2
  ephemeral_mounts:
  - /mnt/ephemeral
  - /mnt/ephemeral2
...
```
Ephemeral mounts are mounted as RW - but changes are discarded when the
machine is restart.
Bind mounts will persist changes after restarted.

This is a fix for #210

Signed-off-by: Oz Tiram <oz@spectrocloud.com>

* Add the custom user mount to /cos/run/cos-layout.env

Signed-off-by: Oz Tiram <oz@spectrocloud.com>

* Add docs for custom user mounts in configuration example

Signed-off-by: Oz Tiram <oz@spectrocloud.com>

* Reuse test_install function

DRY the code, change how we call the function install_test

Signed-off-by: Oz Tiram <oz@spectrocloud.com>

* Enable custom mount tests and install tests

Signed-off-by: Oz Tiram <oz@spectrocloud.com>

* Enable tests in CI

Signed-off-by: Oz Tiram <oz@spectrocloud.com>

* Remove duplicate if check

Signed-off-by: Oz Tiram <oz@spectrocloud.com>

* Remove uneeded fmt.Println ...

Signed-off-by: Oz Tiram <oz@spectrocloud.com>

* Use separate label for custom mounts

Signed-off-by: Oz Tiram <oz@spectrocloud.com>

* 🔧 Earthfile - DRY ginkgo

We repeat this a more than twice so just extract to own
target...

Signed-off-by: Oz Tiram <oz@spectrocloud.com>

* Correct return type for  ContainElements

Signed-off-by: Oz Tiram <oz@spectrocloud.com>

* Remove CLOUD_INIT from custom mounts test

This is not needed here.

Signed-off-by: Oz Tiram <oz@spectrocloud.com>

* Fix qemu-test-* earthly targets

Signed-off-by: Oz Tiram <oz@spectrocloud.com>

* 🔧 Fix CPU passing to VM

Signed-off-by: Oz Tiram <oz@spectrocloud.com>

* 🔧 remove apt cache after install qemu

Helps deal with space running out in the CI.

Signed-off-by: Oz Tiram <oz@spectrocloud.com>

* 📖 Document custom mounts

Signed-off-by: Oz Tiram <oz@spectrocloud.com>

---------

Signed-off-by: Oz Tiram <oz@spectrocloud.com>
Co-authored-by: Ettore Di Giacinto <mudler@users.noreply.github.com>
2023-02-03 11:04:02 +01:00
Jacob Payne
9ff30b4417 require userdata loaded before running install (#742)
Signed-off-by: Jacob Payne <jacob@spectrocloud.com>
Co-authored-by: Ettore Di Giacinto <mudler@users.noreply.github.com>
2023-01-30 08:12:11 -07:00
Mauro Morales
1f294055a4 sparkles: Integrate documentation to Web UI (#741)
* Integrate documentation to Web UI

Relates to #738

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* submodule update

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* Use hugo docker image

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

---------

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
2023-01-28 21:44:24 +01:00
Mauro Morales
2a391a02aa bug: Add broken webui dependency (#737)
Add broken webui dependency

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
2023-01-26 13:38:27 +01:00
Mauro Morales
8b45622f87 Revert "Update dependency codemirror to v6" (#736)
Revert "Update dependency codemirror to v6 (#610)"

This reverts commit 8ca997d9685d55f8dd0bb94888d89a515fbf1507.
2023-01-26 11:46:44 +01:00
Ettore Di Giacinto
746135eede sparkles: Add reset hook (#723)
Signed-off-by: mudler <mudler@c3os.io>

Signed-off-by: mudler <mudler@c3os.io>
2023-01-25 13:38:56 +01:00
renovate[bot]
9b16896a1a Update dependency codemirror to v6 (#610)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-01-25 10:47:59 +01:00
Ettore Di Giacinto
ef93e321fa seedling: Drop references to node-config (#697)
Signed-off-by: mudler <mudler@c3os.io>

Signed-off-by: mudler <mudler@c3os.io>
2023-01-20 19:14:53 +01:00
Ettore Di Giacinto
f052a4a83c seedling: Drop unrequired copy (#683)
Signed-off-by: mudler <mudler@c3os.io>

Signed-off-by: mudler <mudler@c3os.io>
2023-01-20 10:29:35 +01:00
Dimitris Karakasilis
544f28c493 Use new kcrypt/config package (#669)
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>

Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
2023-01-18 15:14:57 +02:00
Oz Tiram
b273803338 seedling: Add version information directly from git (#651)
* 🌱 Add version information directly from git

Partial fix for kairos-io/kairos#643.

Signed-off-by: Oz Tiram <oz@spectrocloud.com>

* Update cmd/profile-build/main.go

Signed-off-by: Ettore Di Giacinto <mudler@users.noreply.github.com>

Signed-off-by: Oz Tiram <oz@spectrocloud.com>
Signed-off-by: Ettore Di Giacinto <mudler@users.noreply.github.com>
Co-authored-by: Ettore Di Giacinto <mudler@users.noreply.github.com>
2023-01-16 19:24:11 +01:00
renovate[bot]
3b2dcf172e Update dependency bootstrap to v5 (#626)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-01-13 10:56:37 +01:00
Mauro Morales
112095fa70 seedling: Vendor webui dependencies (#619)
* 🌱 Vendor webui dependencies

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* Remove GA caching

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* The deps need to be there before the compilation of the agent

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* Remove unnecesary tag

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* Do not build webui-deps

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
2023-01-10 14:21:15 +01:00
Ettore Di Giacinto
667fd76d9d seedling: Webui enhancements (#620)
* 🌱 Make sure webui starts on alpine

Also drop to shell when there are no providers

Signed-off-by: mudler <mudler@c3os.io>

* 🌱 Suppress verbose logging on tty

Signed-off-by: mudler <mudler@c3os.io>

* 🌱 Print WebUI address

Signed-off-by: mudler <mudler@c3os.io>

* 🎨 Update banner

Signed-off-by: mudler <mudler@c3os.io>

* 🌱 Refactor, display also interfaces

Signed-off-by: mudler <mudler@c3os.io>

* 🌱 Address feedback from review

Signed-off-by: mudler <mudler@c3os.io>

Signed-off-by: mudler <mudler@c3os.io>
2023-01-08 21:49:23 +01:00
Ettore Di Giacinto
d59892c5c5 seedling: Webui installer (#587)
* 🌱 Add webui

Signed-off-by: mudler <mudler@c3os.io>

* 🌱 Re-read config files after loading bundles

Signed-off-by: mudler <mudler@c3os.io>

* [check-spelling] Update metadata

Update for https://github.com/kairos-io/kairos/actions/runs/3806058276/attempts/1
Accepted in https://github.com/kairos-io/kairos/pull/587#issuecomment-1367859480

Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
Signed-off-by: mudler <mudler@c3os.io>

* 🎨 Beautify index page

Signed-off-by: mudler <mudler@c3os.io>

* Do not rerun if we were successful or we are already running

Signed-off-by: mudler <mudler@c3os.io>

* Add syntax highlight

Signed-off-by: mudler <mudler@c3os.io>

* Add error message

Signed-off-by: mudler <mudler@c3os.io>

* Add YAML validation and highlight

Signed-off-by: mudler <mudler@c3os.io>

* Fixup terminal output

Signed-off-by: mudler <mudler@c3os.io>

* Fix newlines

Signed-off-by: mudler <mudler@c3os.io>

* fixups

Signed-off-by: mudler <mudler@c3os.io>

* 🎨 Fixup lint issues

Signed-off-by: mudler <mudler@c3os.io>

* Mark dependencies

Signed-off-by: mudler <mudler@c3os.io>

* Let configure the listening address

Signed-off-by: mudler <mudler@c3os.io>

Signed-off-by: mudler <mudler@c3os.io>
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
2023-01-05 14:15:05 +01:00
Ettore Di Giacinto
34c8ad827f seedling: Add /usr/local/system/providers to bus (#569)
This allows bundles to install providers in the persistent path
Signed-off-by: mudler <mudler@c3os.io>
2022-12-20 17:22:09 +01:00
mudler
836a039e6b robot: Add agent config bootstrap test
Signed-off-by: mudler <mudler@kairos.io>
2022-11-27 14:34:36 +01:00
Eng Zer Jun
c868bbaf9e art: Move from io/ioutil to io and os packages (#470)
refactor: move from io/ioutil to io and os packages

The io/ioutil package has been deprecated as of Go 1.16 [1]. This commit
replaces the existing io/ioutil functions with their new definitions in
io and os packages.

[1]: https://golang.org/doc/go1.16#ioutil
Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>
2022-11-22 01:11:03 +08:00
Dimitris Karakasilis
9011ce3419 Persist partition label/uuid mapping whenever we encrypt a partition (#408)
Fixes: https://github.com/kairos-io/kairos/issues/380

Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>

Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
2022-11-16 13:35:59 +02:00
Dimitris Karakasilis
080a34bd9a Upgrade to latest release if one is not specified and ask user to confirm (#389)
* Upgrade to latest release if one is not specified and ask user to confirm

Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>

* Re-use existing promptBool function

Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>

Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
2022-11-07 20:28:33 +02:00
Santhosh
74bf315829 set env vars in agent (#333) 2022-10-30 12:27:08 +05:30
Ettore Di Giacinto
7e11876248 art: Enhance error handling and display when a config is not loaded from the system (#267) 2022-10-24 16:57:02 +02:00
Santhosh
c7c68c222f set configScanDir as package scoped var (#264)
set config.Install.env variables in environment

adding env to config to use across all stages

switch to config.Scan to read config
2022-10-24 16:43:23 +05:30
Ettore Di Giacinto
0af13f655f sparkles: enhancements (#263)
* 🎨 Do not need to prefix '.' on queries

*  Add recovery to stateapi

*  Add cloudconfig SDK

*  Unify post-install/firstboot hooks

This also adds capabilities to add grub option at first boot rather than
after installation as for bundles.

* 🤖 Optimize tests to wait for state to change
2022-10-24 08:34:49 +02:00
Ettore Di Giacinto
5893294c54 sparkles: state api sdk (#262)
*  Add state api

This is related to https://github.com/kairos-io/kairos/issues/34.

Starts to unify the API to retrieve the state in the sdk to have a common place to query system status information.

* 🤖 Add test

* Update go.mod

* ⚙️ Fine-tune detection of partitions

* 🤖 Add more fine-grained tests

* 🎨 Add /dev/ to partition name

* 🤖 Fixup tests

* ⚙️ Remount accessors

*  Add state partition to cloud-init paths

* 📝 Upper case Kairos in motd

* 🎨 Add mounts sdk

* 🎨 Set grub options via SDK

* 🎨 Make it more idiomatic
2022-10-23 20:22:32 +02:00
Ettore Di Giacinto
5c4e29f3d3 sparkles: Minor enhancements (#239)
* 🐛 Fixup grub option quoting

* ⚙️ Copy discovery to oem if found

*  Add environment block to install

* ⚙️ Use /oem for mount in kcrypt post-hook

* 📝 Update docs with installer env reference

* 🤖 Add test deps

* ⚙️ Be consistent and set env also for post-hooks

* ⚙️ propagate env in post-hooks
2022-10-18 07:45:07 +02:00
Ettore Di Giacinto
78bcb65cb6 sparkles: Add kcrypt to images (#195)
*  Add kcrypt to images

This adds the dracut module and the binary to the images.

Related to https://github.com/kairos-io/kairos/issues/184

*  Add Kcrypt post-install hook

Fixes https://github.com/kairos-io/kairos/issues/184
2022-10-07 13:36:32 +02:00
Ettore Di Giacinto
a8875f6b4f sparkles: Add bundles to post-install hooks (#171)
* 🤖 Add bundles and sysext test

*  Exec bundles also after install

* 🤖 Adapt tests

* 🎨 Create dir only if doesn't exist

* 🎨 Return err on mount

* 🎨 Make bundle errors failure as an option

* 🎨 Minor fixups

* debug

* 🤖 Fix spec

* 🤖 Get correct version for bundle test

* 🎨 Fixups

* 🤖 systemd-sysext is available only on opensuse for now
2022-10-03 00:16:01 +02:00
Jacob Payne
b1396c541b added support for fast mode (#168) 2022-09-30 17:23:10 -07:00
Ettore Di Giacinto
0d88ec39a9 sparkles: Add reset event for sdk (#143) 2022-09-23 17:20:23 +02:00
Ettore Di Giacinto
e25526cfc9 art: Rebranding (#130)
See: https://github.com/c3os-io/c3os/issues/88
2022-09-17 18:43:51 +02:00
Ettore Di Giacinto
0763c820f2 sparkles: Auto-detect device with 'auto' 2022-09-10 13:01:24 +00:00
Ettore Di Giacinto
d7e6e9efa4 sparkles: Add manual-install 2022-09-10 13:01:03 +00:00
Ettore Di Giacinto
b7fec41fe3 sparkles: Boot options (#91)
*  Add grub_options to config

Split post-install into hooks

* 🤖 Adapt test to latest releases
2022-09-08 15:39:26 +02:00
Ettore Di Giacinto
01c6a99577 art: Make Initialize more idiomatic 2022-08-20 21:48:54 +00:00
Ettore Di Giacinto
6b5c4d416c bug: Make bus Initialize idempotent, add Reload 2022-08-20 21:47:16 +00:00
Ettore Di Giacinto
1254c09745 bug: fixup reset and interactive-install branding text 2022-08-20 21:27:04 +00:00
Ettore Di Giacinto
4ebe503e1b robot: Add bundles test suite, fixup linting issues 2022-08-18 15:19:15 +00:00
Ettore Di Giacinto
6fc2693229 art: Always stream out an event 2022-08-18 13:32:33 +00:00
Ettore Di Giacinto
fe03afa167 art: Expose to sdk upgrade/list events 2022-08-18 13:12:05 +00:00