Commit Graph

146 Commits

Author SHA1 Message Date
06d85ca961 Make log level configurable, remove custom log message handler 2024-11-09 17:11:10 +01:00
032bdb9e43 Have hosts update garage cluster layout to remove other nodes if necessary 2024-11-08 22:57:31 +01:00
53a06af9ba Use the term 'role' or 'node' rather than 'peer' in the context of garage 2024-11-08 17:46:44 +01:00
04978fa9db Block for bucket list to sync across garage instances during init 2024-11-05 21:25:04 +01:00
8e264cf028 Rework how Network background jobs are managed a bit 2024-11-05 11:59:45 +01:00
6ac473edcb Fix garage health check to wait for full replication factor of nodes 2024-10-31 13:13:17 +01:00
2cdec586b2 Implement removal of nodes from the garage layout 2024-10-31 13:04:19 +01:00
8dab458291 Use Children's Reload method as part of SetConfig 2024-10-31 10:16:06 +01:00
7274815cfd Manage child processes individually, not via Pmux. Also route child logs through mlog 2024-10-29 17:49:24 +01:00
b7c097ef63 Refactor children process reloading, add garage reloading 2024-10-27 14:44:53 +01:00
433328524d Re-organize some reload logic 2024-10-24 22:14:13 +02:00
88ffa97c0f Small changes to how process reloading works 2024-10-24 21:19:58 +02:00
5c41cedea3 Implement SetConfig, but in a stupid way 2024-10-24 19:52:08 +02:00
63cefd403e Use a test logger 2024-10-23 20:38:39 +02:00
bbae88ab4b Add GetConfig method to Network 2024-10-23 20:18:11 +02:00
f639d460cf Implement basic test for network.Join 2024-10-14 12:12:43 +02:00
cb6c11acef Test network.Load 2024-10-07 22:41:46 +02:00
7f3cbf628f Cleanup idle HTTP connections to make shutdown smoother 2024-10-07 22:17:06 +02:00
f146b77187 Generalize create network code in network package integration tests 2024-10-06 19:38:35 +02:00
010c53e5c7 Some general cleanup 2024-10-06 17:15:40 +02:00
71bc182ab4 Implement initial go test for network.Create 2024-10-05 23:03:26 +02:00
168b65ea1d Add ./go/tests.sh 2024-10-05 21:12:29 +02:00
31af39ce4c Embed default daemon.yml directly in entrypoint 2024-09-24 11:27:54 +02:00
64fdba0a48 Implement network(s) list sub-command 2024-09-24 11:03:18 +02:00
de7aac1f25 Refactor command-line parsing, pass --network to most commands 2024-09-23 20:50:45 +02:00
16aca610b4 Add multi-network support to daemon
It's still not possible to pick a network from the command-line, so this
is a bit broken, but the daemon component should handle it correctly at
least.
2024-09-23 19:04:14 +02:00
6c036d1183 Check that two different networks aren't trying to use the same nebula port 2024-09-12 08:59:23 +02:00
df4eae8a5c Support configuring more than one network 2024-09-10 22:51:33 +02:00
c022c97b19 include a migration for multi-network state directories 2024-09-10 21:02:07 +02:00
6d99fb5368 Remove randStr private utility function 2024-09-09 21:38:10 +02:00
8c3e6a2845 Separate Daemon and Network logic into separate packages
In a world where the daemon can manage more than one network, the Daemon
is really responsible only for knowing which networks are currently
joined, creating/joining/leaving networks, and routing incoming RPC
requests to the correct network handler as needed.

The new network package, with its Network interface, inherits most of
the logic that Daemon used to have, leaving Daemon only the parts needed
for the functionality just described. There's a lot of cleanup done here
in order to really nail down the separation of concerns between the two,
especially around directory creation.
2024-09-09 16:34:00 +02:00
86b2ba7bfa Factor daemon.Children into its own package 2024-09-07 15:46:59 +02:00
a840d0e701 Move common daemon types and values into daecommon 2024-09-07 15:11:04 +02:00
ef86c1bbd1 Make Daemon into a concrete type which implements RPC directly 2024-09-07 14:05:07 +02:00
fed79c6ec7 Update documentation on jsonrpc2.NewDispatchHandler 2024-09-05 19:36:21 +02:00
8d3b17e1cb Remove extraneous empty struct returns from RPC interface 2024-09-05 17:28:10 +02:00
038a28bb02 Remove remaining extraneous 'Result' RPC-related struct types 2024-09-04 22:46:38 +02:00
06a345ecd1 Embed context directly into subCmdCtx 2024-09-04 22:35:29 +02:00
6c185f6263 Allow variadic number of parameters on RPC calls 2024-09-04 22:25:38 +02:00
53ad8a91b4 Generate RPC client wrapper 2024-09-04 21:24:45 +02:00
5138ed7c6a Attempt to delete socket file before listening on the path 2024-09-04 19:44:58 +02:00
4f6a89ced0 Roadmap has been moved to micropelago.net 2024-09-01 12:20:37 +02:00
39e12f6ebd disallow -h and --help as flags in sub-commands 2024-07-22 16:37:22 +02:00
d31be8455b Pluralize 'host(s)' subcommands 2024-07-22 15:52:51 +02:00
ca62a37692 Fix rendering of text flag defaults 2024-07-22 10:42:25 +02:00
af69f1cfba Fix panic when starting up daemon with existing bootstrap 2024-07-21 17:20:48 +02:00
1ea16d80e4 Require host in garage for nebula create-cert command 2024-07-21 17:12:35 +02:00
ee30199c4c Automatically choose IP for new hosts 2024-07-21 17:10:28 +02:00
1411370b0e Write new host to garage as part of CreateHost 2024-07-20 12:36:21 +02:00
c94f8e3475 Move creation of children into daemon initialize method 2024-07-20 11:14:59 +02:00
7aa11ebe29 Only restart sub-processes which need restarting on bootstrap changes 2024-07-20 10:42:26 +02:00
bc9a2b62ef Upgrade pmux to latest 2024-07-19 17:06:12 +02:00
e657061482 Set permission bits on unix socket, so it's group read/writable 2024-07-16 17:30:36 +02:00
3980dc6083 Write files to runtime dir with write permissions, so they can be overwritten by the restartLoop 2024-07-14 15:51:04 +02:00
5de93e3711 Add back the ability to specify IP for nebula create-cert 2024-07-14 14:43:17 +02:00
0f42d9367c Fix nebula create-cert error message 2024-07-14 14:28:01 +02:00
6fff1dfaeb Default HTTP socket to the tmp directory 2024-07-14 14:20:45 +02:00
67d17efde0 Allow including CA signing key with JoiningBootstrap, and update docs 2024-07-14 13:33:29 +02:00
d2710db8f1 State CA signing key in secrets store, eliminate admin bundle 2024-07-14 13:11:18 +02:00
9d5c8ea4db Use secrets store for global garage bucket creds 2024-07-14 12:19:39 +02:00
86abdb6ae1 Propagate garage RPC secret with created host bootstrap 2024-07-14 11:58:39 +02:00
56f796e3fb Implement basic secrets architecture, use it for garage RPC secret 2024-07-13 17:42:41 +02:00
b5059be7fa Move create-bootstrap logic into daemon, rename to hosts create 2024-07-13 16:31:52 +02:00
cb8fef38c4 Move create-nebula-cert into nebula create-cert, move most logic into daemon 2024-07-13 16:08:13 +02:00
cc121f0752 Move RemoveHost into daemon 2024-07-12 17:05:39 +02:00
778db848c6 Fix daemon EnvVar dirs not being created on startup 2024-07-12 16:35:32 +02:00
c5e919dc86 Remove runtime dir locking code 2024-07-12 16:13:44 +02:00
7ca8ff3467 Fetch nebula CAPublicCredentials from daemon 2024-07-12 16:11:42 +02:00
30c8ca332a Fetch GarageClientParams from daemon 2024-07-12 16:03:37 +02:00
736b23429c Do proper type-based validation or hostnames and ipnets 2024-07-12 15:31:43 +02:00
1ee396c976 Use RPC for create-bootstrap 2024-07-09 15:14:29 +02:00
279c79a9f1 Replace admin create-network with network create over RPC 2024-07-09 11:43:17 +02:00
f9d033b89f Implement Daemon.CreateNetwork, but it's not yet used or tested 2024-07-07 20:01:10 +02:00
7d8b274445 Implement JoinNetwork RPC method, and accompanying sub-command 2024-07-07 12:44:49 +02:00
81368821b7 Refactor Daemon into Children and DaemonRestarter into Daemon 2024-07-06 15:36:48 +02:00
179059fd3d Rename ISLE_SOCKET_PATH and refactor how it's loaded a bit 2024-07-06 14:26:06 +02:00
05e91cd657 Move daemon restarting logic into daemon package 2024-06-24 18:55:36 +02:00
c808fa81b9 Move some environment variables into daemon package 2024-06-24 14:45:57 +02:00
c3609252a5 Implement RPC socket and use it to list hosts 2024-06-23 14:37:10 +02:00
47e53dffb7 Switch to using latest mediocre-go-lib 2024-06-22 17:49:56 +02:00
4664ec4a70 Implement jsonrpc2 package, intended for use over the daemon socket 2024-06-22 17:37:15 +02:00
4e5d3b28ab Move some Bootstrap methods onto Daemon 2024-06-17 22:15:28 +02:00
a8893e4fc6 Move daemon sub-process logic into daemon package 2024-06-17 21:06:57 +02:00
aa1a8ea806 Implement archlinux pkg build as part of release 2024-06-17 17:20:34 +02:00
8a1c8d2ed6 Use XDG_STATE_HOME rather than XDG_DATA_HOME for storing bootstrap 2024-06-17 17:20:26 +02:00
c645a8c767 Refactor how signing/encryption keys are typed and (un)marshaled 2024-06-15 23:02:24 +02:00
65fa208a34 Move garage admin API calls into garage package 2024-06-12 10:55:55 +02:00
842c169169 Separate garage server logic into its own package 2024-06-12 10:18:33 +02:00
68f417b5ba Upgrade garage to v1.0.0
This required switching all garage admin API calls to the new v1
versions, and redoing how the global bucket key is created so it is
created via the "create key" API call.
2024-06-11 16:57:31 +02:00
2768be00d8 Refactor how host data is signed, now it's simpler and probably more secure 2024-06-10 22:33:26 +02:00
f13a08abfb Use JSON instead of YAML for files which aren't intended for human editing 2024-06-10 18:56:36 +02:00
Brian Picciano
8dcc436aaa Refactor tests some more, use shared across all of them 2023-09-05 23:14:40 +02:00
Brian Picciano
3c3bd8649a Fix minio-client creating config directory in user's home 2023-09-04 21:38:28 +02:00
Brian Picciano
0b486d5d27 Allow setting tun name in daemon config 2023-09-01 16:45:21 +02:00
Brian Picciano
3d6ed8604a Add ability to sign nebula public keys, and show nebula network info
The new commands are:

- `isle admin create-nebula-cert`
- `isle nebula show`

Between these two commands it's possible, with some effort, to get a
nebula mobile client hooked up to an isle server.
2023-08-27 16:09:03 +02:00
Brian Picciano
661e2b28cb Move go code into 'go' tld, to make organization clearer 2023-08-25 15:19:31 +02:00