feat(netclient): Add network filter to list command

This commit is contained in:
Adrien Raffin-Caboisse 2021-10-15 15:51:53 +02:00
parent 51a09167fc
commit 2c0a470390
No known key found for this signature in database
GPG key ID: 7FB60532DEBEAD6A
2 changed files with 36 additions and 24 deletions

View file

@ -189,7 +189,7 @@ func Pull(cfg config.ClientConfig) error {
}
func List(cfg config.ClientConfig) error {
err := functions.List()
err := functions.List(cfg.Network)
return err
}

View file

@ -28,36 +28,26 @@ type Network struct {
Peers []Peer `json:"peers"`
}
func List() error {
networks, err := ncutils.GetSystemNetworks()
if err != nil {
return err
func List(network string) error {
nets := []Network{}
var err error
var networks []string
if network == "all" {
networks, err = ncutils.GetSystemNetworks()
if err != nil {
return err
}
} else {
networks = append(networks, network)
}
nets := []Network{}
for _, network := range networks {
cfg, err := config.ReadConfig(network)
net, err := getNetwork(network)
if err != nil {
ncutils.PrintLog(network+": Could not retrieve network configuration.", 1)
return err
}
peers, err := getPeers(network)
if err != nil {
ncutils.PrintLog(network+": Could not retrieve network configuration.", 1)
return err
}
nets = append(nets, Network{
Name: network,
Peers: peers,
CurrentNode: Peer{
Name: cfg.Node.Name,
Interface: cfg.Node.Interface,
PrivateIPv4: cfg.Node.Address,
PrivateIPv6: cfg.Node.Address6,
PublicEndpoint: cfg.Node.Endpoint,
},
})
nets = append(nets, net)
}
jsoncfg, _ := json.Marshal(struct {
@ -68,6 +58,28 @@ func List() error {
return nil
}
func getNetwork(network string) (Network, error) {
cfg, err := config.ReadConfig(network)
if err != nil {
return Network{}, fmt.Errorf("reading configuration for network %v: %w", network, err)
}
peers, err := getPeers(network)
if err != nil {
return Network{}, fmt.Errorf("listing peers for network %v: %w", network, err)
}
return Network{
Name: network,
Peers: peers,
CurrentNode: Peer{
Name: cfg.Node.Name,
Interface: cfg.Node.Interface,
PrivateIPv4: cfg.Node.Address,
PrivateIPv6: cfg.Node.Address6,
PublicEndpoint: cfg.Node.Endpoint,
},
}, nil
}
func getPeers(network string) ([]Peer, error) {
cfg, err := config.ReadConfig(network)
if err != nil {