- Updated `wwctl upgrade` to handle updates
- Maintained `.Container` and `.ContainerName` in tstruct
- Added `ContainerName()` methods to node and profile objects
- Added `--container`, `-C` aliases to wwctl commands (`<node|profile> <add|set>`)
- Added `wwctl container` alias
- Added support for `container_exit.sh` if `image_exit.sh` is not found
Signed-off-by: Jonathon Anderson <janderson@ciq.com>
Before #1628, all default constructors for nodes and profiles attempted to
construct objects with pre-populated empty fields (e.g., for pointers to member
structs and for collections that default to nil). Changes to MergeNode in #1629
changed this behavior intentionally to simplify the generation of minimal json;
but this had the unintended side-effect of breaking existing templates that may
now encounter a nil pointer, particularly when accessing member structs.
Introduced here, the Expand() methods on Node and Profile are now responsible
for populating such fields, and Node.Expand() is now called during template
processing.
Signed-off-by: Jonathon Anderson <janderson@ciq.com>
- Make Resources an `interface{}` to support arbitrary yaml
- Remove `wwctl resource` as incompatible with arbitrary yaml
- Revert changes to host overlay templates
- Remove NFS mount options from warewulf.conf
- Replace NFS support / resource prefix with "fstab" resource
- Move resources to profiles
- Migrate warewulf.conf mounts to nodes.conf with `wwctl upgrade`
- Add documentation
Signed-off-by: Jonathon Anderson <janderson@ciq.com>
- Benchmarks overlay build in an environment with 1000 nodes
- Updates testenv to support both benchmarks and tests
To execute:
```
go test github.com/warewulf/warewulf/internal/app/wwctl/overlay/build -bench Benchmark_Overlay_Build
```
Signed-off-by: Jonathon Anderson <janderson@ciq.com>
Rendering overlay templates requires fetching and populating / merging all
other nodes, because overlay templates have access to all cluster node info.
This was previously being done for each template render, but is not being done
once for each render operation and re-used for each template render.
Signed-off-by: Jonathon Anderson <janderson@ciq.com>
- No receiver of the error is checking its type
- No receiver of the error is checking its `Name` attribute
- Any receiver of the error knows the name already
Signed-off-by: Jonathon Anderson <janderson@ciq.com>
site overlays are place in sysconfdir/overlays and take
precedence over distribution overlays with the same name.
Every `wwctl overlay` command changing overlays will create
an site overlay. distribution overlays can't be deleted or
modified with wwctl.
Signed-off-by: Christian Goll <cgoll@suse.com>
Add the the function softlink to the template rendering, so that
{{ softlink: "/bin/bash" }} for the file `/bin/run.ww` will create
a soft link to `/bin/bash`
It's also possible to "import" soft links from the host, e.g. the
template
{{ ImportLink "/etc/localtime" }}
set the timezone from the host
Signed-off-by: Christian Goll <cgoll@suse.com>
- make sure spec sets new cache dir
- move clean out of api
- capture warewulfconf.Paths.Cachedir+"/warewulf" in once place
- split Clean() into multiple functions
- remove WriteFileAbs
Signed-off-by: Jonathon Anderson <janderson@ciq.com>
This is a significant change in the undelying data model!
nodeDb, err := node.New()
will result in a structure which contains the on disk
values. Only
nodeDb.FindAllNodes() or nodeDb.GetNode(id) will give
the nodes with its merged in profiles.
Signed-off-by: Christian Goll <cgoll@suse.com>
- Closes#987
To make the overlays testable in isolation, and after discussion with
the TSC, removed host/time/source from overlay files.
Signed-off-by: Jonathon Anderson <janderson@ciq.com>
Previously, the authentication key was always generated using rsa. Now
it uses the first configured ssh key type.
Signed-off-by: Jonathon Anderson <janderson@ciq.com>
{{ .Overlay }} contains the overlay name in which the template is
located, or an empty string if RenderTempalte is called outside the
warewulf overlay tree.
- Closes#1052
Signed-off-by: Christian Goll <cgoll@suse.com>
The Version (e,g, 4.4 ), Release (git hash) and Confversion (e.g. 44)
must be compiled into the code so that they can't be changed during run
time and ensure this with the compiler
Signed-off-by: Christian Goll <cgoll@suse.com>
Internal version update is necessary as new structures were added,
most obviously the disk, partitions and file system structures.
Old configurations will work as expected.
Signed-off-by: Christian Goll <cgoll@suse.com>
As part of reviewing this PR, I expanded the test definitions to make it
easier to discern the intent of each test at a glance. In so doing I
understood most tests behaving as normal, but I did make a few small
changes:
- Some tests no longer produce any errors, so remove this variable from
the test definitions.
- Replace comma-separated overlay definitions with explicit slices.
Splitting comma-separated strings led to erroneous behavior where a
null overlay list was processed as a single null overlay rather than
an empty slice.
Signed-off-by: Jonathon Anderson <janderson@ciq.com>
The warewulfd process called `wwctl build -O [system|runtime] node`
if autobuild was set. This created [system|runtime].img which isn't
supported with the build model. Calling now BuildOverlay directly
Signed-off-by: Christian Goll <cgoll@suse.com>