By default get 30 releases and skip any pre-releases found.
Allow toggling showing pre-releases both for upgrade and for listing
them
Signed-off-by: Itxaka <itxaka.garcia@spectrocloud.com>
Looks like we only get a small subset of the releases so we cant check
for a specific number in the list that we get
Signed-off-by: Itxaka <itxaka.garcia@spectrocloud.com>
* 🐛 Fix version list
First version in the list is the latest one.
Alos moves the check for same version above the current place, so it can
check before asking if you want to update to the same version
Signed-off-by: Itxaka <itxaka.garcia@spectrocloud.com>
* 🌱 Rework versioning for upgrade
Use the semver lib to parse the versions into a proper collection where
it can be parsed and versions compared and sorted properly
Signed-off-by: Itxaka <itxaka.garcia@spectrocloud.com>
* 🤖 lint
Signed-off-by: Itxaka <itxaka.garcia@spectrocloud.com>
---------
Signed-off-by: Itxaka <itxaka.garcia@spectrocloud.com>
* Do not merge all cmdline arguments to generic config
Instead allow only specific Kairos config ones, this should not be known by the collector but doing it this way as a temporary hack to release 2.0 and then we can do properly
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
* Remove fmt.Println
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
* Lint
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
* imports
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
* Filter using a cloud config structure
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
* Pass a filter function
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
* Exclude collector config from config.Config yaml
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
* Fix issue with test now that a yaml tag gets ignored
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
* cleanup FilterKeys func
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
* Add comment
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
---------
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
https://go.dev/doc/modules/major-version
This way we can bump the kairos dependency on the provider-kairos repo
which otherwise produced the error:
```
~/workspace/kairos/provider-kairos (main)*$ go get -u github.com/kairos-io/kairos@v2.0.0-alpha3
go: github.com/kairos-io/kairos@v2.0.0-alpha3: invalid version: module contains a go.mod file, so module path must match major version ("github.com/kairos-io/kairos/v2")
```
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
Co-authored-by: Itxaka <itxaka.garcia@spectrocloud.com>
* Introduce config/collector package
to split the collection of config sources out of the config package.
Each consumer of the new package will take care of unmarshalling the
yaml to a specific Config struct, do validations etc.
* Add tests and remove garbage
* Follow all config_url chains and test it
* Add missing options file and refactor cmdline code
* Consolidate the way we merge configs no matter where they come from
* Allow and use only files with valid headers
Config is specific to Kairos while Collector is generic. This
will allow us to do validations which are just related to Kairos at the
config level, while including every type of key and querying of the full
yaml at the Collector level splitting the responsibilities of each
package.
---------
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
Looks like the schema for the user thinks groups is a string, while checking the code it seems to be more a list of strings and that matches with the yip library and how it parses the groups.
Signed-off-by: Itxaka <itxaka.garcia@spectrocloud.com>
Don't fail when config_url is not accessible
but rather print a Warning.
Fixes#885
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
Co-authored-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Validate yaml
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
* lint feedback
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
* Validate User name with JsonSchema
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
* WIP users validation
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
* Add multiple examples for ssh keys
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
* Add example of complex validation with AnyOf
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
* Better business rule example with P2P
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
* Test with message for empty network_token
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
* Split into a file for each sub section
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
* Add install schema validations
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
* Add to main schema
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
* Add more tests for p2p
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
* Add install schema
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
* Validate fields between new and old schema
It also adds the missing ones
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
* Lint
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
* Remove temp debugging functions
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
* Add new fields in old schema
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
* Add documentation for all exported
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
* Move schemas into a directory of their own
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
* Add missing dot at end of comment
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
* Rebase master and add local_file to bundles
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
---------
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
* ✨ 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>
* 🌱 Return configuration data from the agent
Signed-off-by: Ettore Di Giacinto <mudler@users.noreply.github.com>
* 🤖 Cover query by tests
Signed-off-by: Ettore Di Giacinto <mudler@users.noreply.github.com>
Signed-off-by: Ettore Di Giacinto <mudler@users.noreply.github.com>
Regression introduced in https://github.com/kairos-io/kairos/pull/502.
Now also files like .lst inside the initramfs are globbed inside /oem/90_custom.yaml
Signed-off-by: Ettore Di Giacinto <mudler@users.noreply.github.com>
Signed-off-by: Ettore Di Giacinto <mudler@users.noreply.github.com>
* 🌱 Glob all configs found
This allows to read all the configs found during scanning - this is especially useful in first boot as it allows
to have separate config file logic split into several files
Signed-off-by: Ettore Di Giacinto <mudler@users.noreply.github.com>
* 🌱 Simplify config merge logic
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* WIP
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* 🌱 Make the function work
Signed-off-by: Ettore Di Giacinto <mudler@users.noreply.github.com>
Signed-off-by: mudler <mudler@kairos.io>
Signed-off-by: Ettore Di Giacinto <mudler@users.noreply.github.com>
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
Signed-off-by: mudler <mudler@kairos.io>
Co-authored-by: Dimitris Karakasilis <dimitris@karakasilis.me>