Commit Graph

563 Commits

Author SHA1 Message Date
Itxaka
e0ea9975a4
New logger (#70) 2024-02-28 09:29:02 +01:00
Dimitris Karakasilis
f666b18370
2226 detect boot state (#69)
* Detect boot state using suffix in UKI mode

This assumes that the files are named correctly on installation/upgrades
etc (pending implementation)

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

* WIP

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

* Refactor NewRuntime and add logging

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

---------

Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
2024-02-19 12:10:31 +02:00
Itxaka
89782e9933
Support identifying recovery via recovery-mode stanza (#68) 2024-02-01 15:22:24 +01:00
Itxaka
c21aa7f149
Expand shim locations (#67) 2024-01-12 10:20:53 +01:00
Mauro Morales
f665d930e2
Allow k3s to be downgraded when kairos version is higher
because we may cut an rc in which we try some newer k3s version but we
decide to not release a stable version with that, so we revert to an
older k3s version when we release stable.

Signed-off-by: Dimitris Karakasilis <dimitris@spectrocloud.com>
2024-01-08 16:57:03 +02:00
Dimitris Karakasilis
e671e8d9d4
Don't require "Variant" to be set when generating base container names (#65)
Part of: https://github.com/kairos-io/kairos/issues/2104

(Needs to be bumped in kairos-agent to complete the story)

Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
2024-01-05 10:18:54 +02:00
Itxaka
eaa9d3ce04 Add 2 utils to get efi/shim paths
Signed-off-by: Itxaka <itxaka@kairos.io>
2023-12-30 12:46:01 +01:00
Itxaka
a99f8bb487
Expand config schema (#64) 2023-12-18 15:39:09 +01:00
Dimitris Karakasilis
78aa874172
Put the os-release variable values in quotes (#63)
otherwise the files can't be "source"d

Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
2023-12-18 14:44:47 +02:00
Dimitris Karakasilis
74a57eb673
Make "standard" flavor os-release variables optional (#62)
* Make "standard" flavor os-release variables optional

and change ARCH to TARGETARCH to simplify how it's passed down from
Earthly in the kairos repo

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

* Add SOFTWARE_VERSION_PREFIX in os-release

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

* Accept SOFTWARE_VERSION_PREFIX in cli

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

* Fix test

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

---------

Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
2023-12-14 16:57:03 +02:00
Dimitris Karakasilis
a8707c113a
1999 list releases (#61)
* Add registry and org to the os-release file

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

* Extract the software version prefix to a field

and make sure everything still works.
Also implement NoPrereleases method to filter out Kairos pre-releases

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

* Store RegistryAndOrg on the TagList

to be used in the new PrintImages method that prints full image URLs

This method will be used in the "kairos-agent upgrade list-releases" command

Also fix some relic softarePrefix arguments (Artifact now has that info)

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

* Implement sorting in a semver manner

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

* Implement FullImages method that returns the tags as full images

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

---------

Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
2023-12-08 14:01:57 +02:00
Mauro Morales
5a078882be
Remove variant from base tag (#60) 2023-12-07 12:03:02 +01:00
Dimitris Karakasilis
29fc4851f4
1999 introduce versioneer (#59)
* Introduce versioneer package

to replace the naming.sh script in kairos-io/kairos

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

* Implement BootableName for bootable artifacts

also introduce Version and SoftwareVersion fields

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

* Refactor to introduce commondName

to be used with ContainerName

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

* Implement ContainerName and add missing tests

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

* Introduce NewArtifactFromJSON

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

* Introduce NewFromOSRelease

to be used within a Kairos image

See also discussion: https://github.com/kairos-io/kairos/discussions/2035

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

* Introduce 3 methods to find releases (TODO: implement them)

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

* Use existing OSRelease method and remove the new one

the existing method had to be adapted to accept and optional path to
the os-release file to allow the tests to pass a tmp file.

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

* Introduce TagList and some basic filtering of tags

also introduce RegistryInspector which finds tags from a container
registry for a specific repository.

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

* Implement OtherVersions method of TagList

to return different Kairos versions of the exact same artifact.

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

* [WIP] Add TODOs for 2 more methods

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

* Implement Sorted() method on TagList

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

* Implement RSorted

and change OtherVersions test to ensure it also returns older versions too.

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

* Implement NewerVersions method

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

* Make json file pretty

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

* Implement OtherSoftwareVersions and NewerSoftwareVersions

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

* Implement NewerAnyVersions and OtherAnyVersions

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

* Make TagList a struct so that it has an "Artifact" field

Now the Artifact has a TagList method that returns a TagList which is
associated to the specific Artifact.

All methods of TagList are now available to the Artifact.

E.g.
tagList, _ := artifact.TagList("quay.io/kairos")
tagList.NewerAnyVersion(...)

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

* Use the field Artifact in TagList methods instead of needing an argument

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

* Fix linting errors

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

* Restructure files and introduce main.go for versioneer

to provide a user interface that will replace naming.sh script of the
kairos repository

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

* Fix imports

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

* Implement bootable-artifact-name cli command

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

* Implement BaseContainerName method

Signed-off-by: Dimitris Karakasilis <dimitris@spectrocloud.com>

* Create a wrapper command base-container-artifact-name

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

* Extract the cli command to the packag to be re-used in kairos-agent

Signed-off-by: Dimitris Karakasilis <dimitris@spectrocloud.com>

* Go back to original package structure

and just nest the cli

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

* Move the versioneer "main" package outside the tree

to allow it to be imported in kairos-agent

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

* Allow setting the cli flags using environment variables

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

* Implement os-release-variables command

to replace the logic in Earthly and Dockerfiles

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

* Fix test

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

* Fix TODO in Readme

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

* Dry the creation of the Artifact

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

---------

Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
Signed-off-by: Dimitris Karakasilis <dimitris@spectrocloud.com>
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
Co-authored-by: Mauro Morales <mauro.morales@spectrocloud.com>
Co-authored-by: Dimitris Karakasilis <dimitris@spectrocloud.com>
2023-12-05 15:46:08 +02:00
Mauro Morales
9bbc110598
Re-introduce local runner (#57)
* Re-introduce local runner

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

* Refactor code, remove LocalRunner

and allow both "container:" and "run:" types to use local archives

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

* Treat "docker:" bundler prefix the same as "container:"

as per the docs:
https://kairos.io/docs/advanced/bundles/#bundle-types

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

* Add TODO tests

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

* Remove the not-needed LocalRunner

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

* Implement tests

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

* Remove TODO

Won't do now to avoid introducing bugs

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

---------

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
Co-authored-by: Dimitris Karakasilis <dimitris@karakasilis.me>
2023-12-05 12:09:10 +02:00
Dimitris Karakasilis
f73090dca2
Don't parse userdata and userdata.yaml (#58)
yip writes both files with the same content when userdata passes
validation (schema.Load):

48147fae9d/pkg/plugins/datasource.go (L246-L252)

This means we shouldn't match `userdata` since the `userdata.yaml` will
be used due to the extension.

Fixes https://github.com/kairos-io/kairos/issues/2019

Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
2023-11-23 16:37:37 +02:00
renovate[bot]
f37fc75b5d fix(deps): update module github.com/swaggest/jsonschema-go to v0.3.62 2023-10-30 16:26:42 +00:00
Tyler Gillson
196f133f26
feat: add ProviderOptions to Cluster (#53)
Signed-off-by: Tyler Gillson <tyler.gillson@gmail.com>
2023-10-30 17:22:46 +01:00
Itxaka
2ecbdbbd3f
Add init system information to state output (#56)
Signed-off-by: Itxaka <itxaka@kairos.io>
2023-10-18 17:16:12 +02:00
renovate[bot]
7d4292eaa6 fix(deps): update module github.com/containerd/containerd to v1.7.7 2023-10-17 22:35:38 +00:00
renovate[bot]
0bb4e40b4f fix(deps): update module github.com/santhosh-tekuri/jsonschema/v5 to v5.3.1 2023-10-04 18:50:31 +00:00
Mauro Morales
56431eb91a
Configure automerge for patch updates 2023-10-04 17:37:10 +02:00
Itxaka
8f54324703
Allow passing readers to collector (#52) 2023-09-26 09:32:53 +02:00
Itxaka
699aa6203c
Read the first ten lines of a config to check for headers (#51)
There could be comments before the cloud-config header or jinja
expressions as we found already[0] so our current header check its a bit
strict.

This patch makes it so er read the first ten lines of the config source,
check for # at the start and then check for the headers as we did
before, so we are a bit more letinent in case the cloud-config header is
not the first thing in the file

Signed-off-by: Itxaka <itxaka@kairos.io>
2023-09-15 20:59:31 +02:00
renovate[bot]
5919d1a466
fix(deps): update module github.com/swaggest/jsonschema-go to v0.3.59 (#36)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-04 16:47:54 +02:00
renovate[bot]
52e0cbd60e
fix(deps): update module github.com/itchyny/gojq to v0.12.13 (#24)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-04 16:47:41 +02:00
renovate[bot]
42c18546e0
fix(deps): update module github.com/containerd/containerd to v1.7.5 (#25)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-04 16:47:22 +02:00
Itxaka
9e420d9015
Add KairosFS type and detectBoot with FS (#46) 2023-09-01 15:31:04 +03:00
Itxaka
fd9cffde95
Properly calculate image size (#45) 2023-08-17 13:45:07 +03:00
renovate[bot]
f6ec86180b
fix(deps): update module github.com/onsi/ginkgo/v2 to v2.11.0 (#23)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-08 18:33:06 +02:00
renovate[bot]
c1d4d698f2
fix(deps): update module github.com/mudler/yip to v1.3.0 (#19)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-08 18:31:03 +02:00
renovate[bot]
3af1fbf2f8
fix(deps): update module github.com/zcalusic/sysinfo to v1 (#22)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-08 18:29:11 +02:00
Itxaka
9e6ea0760a
Add a method to get the image size (#39) 2023-08-07 16:40:31 +02:00
Itxaka
7203787534
Semi force the umount of oem when dealing with mounts (#40) 2023-08-07 16:35:15 +02:00
Mauro Morales
396c5553ca
🐛 Wrong deep merge when array contains maps (#38)
* Do not try to smart merge arrays, but just append them

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

* Fix tests

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

* Rewording for tests

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

* Rename function to match what is doing after refactoring

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

---------

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
2023-08-01 10:08:21 +02:00
Itxaka
61e5a4d261
Extend root schema (#37)
Signed-off-by: Itxaka <itxaka.garcia@spectrocloud.com>
2023-07-25 12:38:46 +02:00
Itxaka
fe26d1de91
Add cleanstack util (#35) 2023-07-19 21:44:12 +02:00
renovate[bot]
481a189471
fix(deps): update module github.com/pterm/pterm to v0.12.63 (#20)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-19 21:24:52 +02:00
Mauro Morales
05770e9f5c
schedule renovate after hours (#34)
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
2023-07-10 10:05:28 +02:00
Dimitris Karakasilis
6d60329315
Allow the users to apply arbitrary images in framework-profile.yaml (#33)
so that they can force an older or newer release of one specific package

Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
2023-06-23 12:12:18 +02:00
Itxaka
03c6a9b8f5 Drop debug prints
Signed-off-by: Itxaka <itxaka.garcia@spectrocloud.com>
2023-06-20 12:21:58 +02:00
Itxaka
df990bf49a
Improve image extractor (#32) 2023-06-20 09:43:43 +03:00
Itxaka
dcf352a009
Bring collector into the sdk (#31) 2023-06-14 13:01:06 +02:00
Mauro Morales
cd5173edb8
Add issue template (#30)
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
2023-06-14 08:59:09 +02:00
Itxaka
dd4fbb8014
Identify lvm partitions for state (#28) 2023-06-07 14:48:27 +02:00
Itxaka
425e07d8c7
Add noFormat to install schema (#27) 2023-06-07 11:13:13 +02:00
Mauro Morales
c90740d747
Move schema validation to sdk to be used by different repos (#21)
* Move schema validation to sdk to be used by different repos

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

* remove unused

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

* fix recommendations

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

---------

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
2023-05-26 12:32:01 +02:00
Itxaka
3524a69e57
Remove leftover print (#18) 2023-05-23 15:13:41 +02:00
Itxaka
f5982c9d5a
Try to create rootpath before extracting image if it doesnt exist (#17) 2023-05-18 12:17:40 +02:00
Itxaka
40db3d970e
Allow setting the platform of the image to download (#15) 2023-05-17 08:04:20 +00:00
renovate[bot]
60c5f9c587
fix(deps): update module github.com/pterm/pterm to v0.12.61 (#11)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Itxaka <itxaka.garcia@spectrocloud.com>
2023-05-17 09:45:37 +02:00