Use RPC for create-bootstrap
This commit is contained in:
parent
279c79a9f1
commit
1ee396c976
@ -104,12 +104,14 @@ var subCmdAdminCreateBootstrap = subCmd{
|
|||||||
return fmt.Errorf("initializing bootstrap data: %w", err)
|
return fmt.Errorf("initializing bootstrap data: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
hostBootstrap, err := loadHostBootstrap()
|
hostsRes, err := subCmdCtx.getHosts()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("loading host bootstrap: %w", err)
|
return fmt.Errorf("getting hosts: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
newHostBootstrap.Hosts = hostBootstrap.Hosts
|
for _, host := range hostsRes.Hosts {
|
||||||
|
newHostBootstrap.Hosts[host.Name] = host
|
||||||
|
}
|
||||||
|
|
||||||
return newHostBootstrap.WriteTo(os.Stdout)
|
return newHostBootstrap.WriteTo(os.Stdout)
|
||||||
},
|
},
|
||||||
|
15
go/cmd/entrypoint/client.go
Normal file
15
go/cmd/entrypoint/client.go
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"isle/daemon"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (ctx subCmdCtx) getHosts() (daemon.GetHostsResult, error) {
|
||||||
|
var res daemon.GetHostsResult
|
||||||
|
err := ctx.daemonRCPClient.Call(ctx.ctx, &res, "GetHosts", nil)
|
||||||
|
if err != nil {
|
||||||
|
return daemon.GetHostsResult{}, fmt.Errorf("calling GetHosts: %w", err)
|
||||||
|
}
|
||||||
|
return res, nil
|
||||||
|
}
|
@ -4,7 +4,6 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"isle/bootstrap"
|
"isle/bootstrap"
|
||||||
"isle/daemon"
|
|
||||||
"isle/jsonutil"
|
"isle/jsonutil"
|
||||||
"os"
|
"os"
|
||||||
"regexp"
|
"regexp"
|
||||||
@ -26,11 +25,7 @@ var subCmdHostsList = subCmd{
|
|||||||
name: "list",
|
name: "list",
|
||||||
descr: "Lists all hosts in the network, and their IPs",
|
descr: "Lists all hosts in the network, and their IPs",
|
||||||
do: func(subCmdCtx subCmdCtx) error {
|
do: func(subCmdCtx subCmdCtx) error {
|
||||||
|
hostsRes, err := subCmdCtx.getHosts()
|
||||||
ctx := subCmdCtx.ctx
|
|
||||||
|
|
||||||
var res daemon.GetHostsResult
|
|
||||||
err := subCmdCtx.daemonRCPClient.Call(ctx, &res, "GetHosts", nil)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("calling GetHosts: %w", err)
|
return fmt.Errorf("calling GetHosts: %w", err)
|
||||||
}
|
}
|
||||||
@ -43,8 +38,8 @@ var subCmdHostsList = subCmd{
|
|||||||
Storage bootstrap.GarageHost `json:",omitempty"`
|
Storage bootstrap.GarageHost `json:",omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
hosts := make([]host, 0, len(res.Hosts))
|
hosts := make([]host, 0, len(hostsRes.Hosts))
|
||||||
for _, h := range res.Hosts {
|
for _, h := range hostsRes.Hosts {
|
||||||
|
|
||||||
host := host{
|
host := host{
|
||||||
Name: h.Name,
|
Name: h.Name,
|
||||||
|
@ -61,9 +61,8 @@ type Daemon interface {
|
|||||||
// - ErrAlreadyJoined
|
// - ErrAlreadyJoined
|
||||||
JoinNetwork(context.Context, bootstrap.Bootstrap) error
|
JoinNetwork(context.Context, bootstrap.Bootstrap) error
|
||||||
|
|
||||||
// GetGarageBootstrapHosts loads (and verifies) the <hostname>.json.signed
|
// GetBootstrapHosts returns the hosts stored in the bootstrap.
|
||||||
// file for all hosts stored in garage.
|
GetBootstrapHosts(
|
||||||
GetGarageBootstrapHosts(
|
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
) (
|
) (
|
||||||
map[string]bootstrap.Host, error,
|
map[string]bootstrap.Host, error,
|
||||||
@ -594,7 +593,7 @@ func (d *daemon) JoinNetwork(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *daemon) GetGarageBootstrapHosts(
|
func (d *daemon) GetBootstrapHosts(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
) (
|
) (
|
||||||
map[string]bootstrap.Host, error,
|
map[string]bootstrap.Host, error,
|
||||||
@ -604,7 +603,7 @@ func (d *daemon) GetGarageBootstrapHosts(
|
|||||||
) (
|
) (
|
||||||
map[string]bootstrap.Host, error,
|
map[string]bootstrap.Host, error,
|
||||||
) {
|
) {
|
||||||
return getGarageBootstrapHosts(ctx, d.logger, currBootstrap)
|
return currBootstrap.Hosts, nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ func (r *RPC) GetHosts(
|
|||||||
) (
|
) (
|
||||||
GetHostsResult, error,
|
GetHostsResult, error,
|
||||||
) {
|
) {
|
||||||
hostsMap, err := r.daemon.GetGarageBootstrapHosts(ctx)
|
hostsMap, err := r.daemon.GetBootstrapHosts(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return GetHostsResult{}, fmt.Errorf("retrieving hosts: %w", err)
|
return GetHostsResult{}, fmt.Errorf("retrieving hosts: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
# shellcheck source=../../utils/with-1-data-1-empty-node-network.sh
|
# shellcheck source=../../utils/with-1-data-1-empty-node-network.sh
|
||||||
source "$UTILS"/with-1-data-1-empty-node-network.sh
|
source "$UTILS"/with-1-data-1-empty-node-network.sh
|
||||||
|
|
||||||
as_primus
|
# TODO when primus creates secondus' bootstrap it should write the new host to
|
||||||
|
# its own bootstrap, as well as to garage.
|
||||||
|
as_secondus
|
||||||
hosts="$(isle hosts list)"
|
hosts="$(isle hosts list)"
|
||||||
|
|
||||||
[ "$(echo "$hosts" | jq -r '.[0].Name')" = "primus" ]
|
[ "$(echo "$hosts" | jq -r '.[0].Name')" = "primus" ]
|
||||||
|
Loading…
Reference in New Issue
Block a user