Commit Graph

22 Commits

Author SHA1 Message Date
Jonathon Anderson
a1832ad8c1 Complete transfer of Warewulf from HPCng
Warewulf is now being maintained in its own GitHub organization at
github.com/warewulf

Signed-off-by: Jonathon Anderson <janderson@ciq.com>
2024-01-26 21:35:04 -07:00
Jonathon Anderson
1c87ce1367 Remove automatic setting of default container
Since grub support no longer depends on a default container, no longer
automatically set default container on import.

Signed-off-by: Jonathon Anderson <janderson@ciq.com>
2024-01-17 18:02:04 -07:00
Christian Goll
2fe98e5f55 default profile needs to have a container
Signed-off-by: Christian Goll <cgoll@suse.com>
2024-01-17 18:02:04 -07:00
MatthewHink
d8cd6049ac Initial cut of wwapi.
We need an API for Warewulf in order to automate around it. The initial version of the API will look a lot like wwctl. wwctl will call the API so that we do not need to maintain separate code paths. In this preview wwctl calls the API via direct function call, but we can change that to a gprc or REST call to a Warewulf server in the future.

This commit contains:
wwapid WareWulf API Daemon. A grpc server with mTLS auth.
wwapic WareWulf API Client. A grpc client with mTLS auth. It's just a sample that reads the version from the server.
wwapird WareWulf API Rest Daemon. A http REST reverse proxy to wwapid.
There are also sample insecure and secure curls to test with.

Implemented Functionality:
wwctl node add
wwctl node delete
wwctl node list
wwctl node set
wwctl node status
wwctl container build
wwctl container delete
wwctl container import
wwctl container list
wwctl container show

Some notes on the files:

    Logic that was in wwctl has moved to warewulf/internal/pkg/api. wwctl just calls the API. wwctl functionality is unchanged.
    Everything under the /google directory is copied google proto code to stand up wwapird. It's a bit strange to copy in the code, but that is currently how it's done.
    Everything in warewulf/internal/pkg/api/routes/wwapiv1 is generated code.

There are some loose ends here, such as no service installers. I just ran off the command line for development.
The Makefile could use improvement. I'm building by make clean setup proto all build wwapid wwapic wwapird ; echo $?
I copied the configs from warewulf/etc to /usr/local/etc/warewulf manually.
2022-06-24 08:39:30 -07:00
Carter Dodd
a36467b2a8 Merge upstream 2022-05-13 19:42:18 -05:00
Carter Dodd
379faad51d Refactor of server, logging, building of images, template updates
* Combine provision response handling, add hwaddr and interface to dhcp
* Simplify stage cases, add backward compatible uri parse
* Move control of image compression to client
* Fix kernel search path for ubuntu, buffer template generation
* Implement cpio and gz as functions, add log named functions
* Generalize fs image creation routine
* Combine daemonLogf to generalized wwlog
* Fix template newline insertion, update dhcp and hosts tmpl
* Update IPXE template to handle non-compressed files
* Update DHCP template to set network interfaces and server IP assignment
* Update DHCP/hosts templates to choose a host-name self-consistently
2022-05-13 16:52:59 -05:00
Christian Goll
2efcbe0348 syncucer will only write witrh syncuser switch
uid/gid are not synced at container import but checked. An apropriate
message is printed, regarding users which are not present on host.
The `wwctl container syncuser` needs the `--write` switch to actually
write to the container.

The command `wwctl container syncuser` will always operate at the
container level, but as the 'generic` overlay reads in the container
passwd/group, following two steps will update the passwd/group on a
running cluster:
1. Add passwd/group to container
wwctl container syncuser --write CONTAINER
2. Synchronize overlay
wwctl overlay build -N
2022-05-12 11:18:53 +02:00
Christian Goll
ca698182f9 direct file is now also suppored 2022-04-14 14:45:23 +02:00
Christian Goll
18e2147953 added file uri pattern for container import 2022-04-14 14:25:22 +02:00
Christian Goll
db2dcbfbe2 will always run syncuids on exec and import 2022-04-06 21:44:00 +02:00
Christian Goll
61eae386af Just check syncuids on default 2022-04-06 21:44:00 +02:00
Christian Goll
8c7fd7d140 basic function comparing uids of host/container 2022-04-06 21:44:00 +02:00
Christian Goll
b426482d82 need valid url or dir to import something 2022-01-18 15:46:01 +01:00
WestleyR
4edc16953e Fix linting issues 2021-09-07 20:48:51 -07:00
Gregory Kurtzer
fc7182d7bd Don't bind resolv.conf, copy on import 2021-09-01 19:23:13 -07:00
Gregory Kurtzer
dcea5ece28 Minor bug with removing container name if import fails. Fixed. 2021-03-06 18:32:29 -08:00
Gregory Kurtzer
455848463f If container import fails, delete the installed container dir (issue #28) 2021-03-06 18:18:40 -08:00
Gregory Kurtzer
6357e31438 Support container import of chroot directory 2021-02-24 21:01:56 -08:00
Ian Kaneshiro
db28555165 Support OCI registry creds
Adds support to 3 environment variables:
- WAREWULF_OCI_USERNAME: registry user username
- WAREWULF_OCI_PASSWORD: registry user password
- WAREWULF_OCI_NOHTTPS: disable tls requirements (for local registries)

Note:
	This will default to ~/.docker/config.json for credentials and other docker
configurations on the system when no options are specified.
2021-02-16 18:11:23 -08:00
Ian Kaneshiro
846b45524c Tidy up
- Ran goimports to format code and imports
- Removed unused module from go.mod
- Added .editorconfig to keep formatting standard across contributors
2021-02-16 11:54:12 -08:00
Gregory Kurtzer
88dbec7ed9 Automatically reload daemon configuration file when configuration file is changed. 2021-02-12 23:00:03 -08:00
Gregory Kurtzer
72b1d8c9d8 UI Updates with a few minor fixups scattered here and there 2021-01-14 20:23:42 -08:00