diff --git a/API.md b/API.md new file mode 100644 index 00000000..d5e03737 --- /dev/null +++ b/API.md @@ -0,0 +1,31 @@ +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 by direct function call so that we do not need to maintain separate code paths, nor is the API required. + +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. + +The API currently 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. diff --git a/CHANGELOG.md b/CHANGELOG.md index 194deb06..4f83e30e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 have the type ethernet or infiniband that these will be brought up by NetworkManager - Listings of container via `wwctl container list` will now show the creation,modification date and the size. +- Initial cut of the warewulf API. See https://github.com/hpcng/warewulf/pull/471 ### Bug fixes - For the connections of `wwctl ssh` the primary interface will be used