mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-06 11:56:39 +08:00
refactor leave to use API
Signed-off-by: Matthew R. Kasun <mkasun@nusak.ca>
This commit is contained in:
parent
b7a18eac1f
commit
12dfc5f820
1 changed files with 13 additions and 37 deletions
|
@ -5,24 +5,21 @@ import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
"log"
|
"log"
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
nodepb "github.com/gravitl/netmaker/grpc"
|
|
||||||
"github.com/gravitl/netmaker/logger"
|
"github.com/gravitl/netmaker/logger"
|
||||||
"github.com/gravitl/netmaker/models"
|
"github.com/gravitl/netmaker/models"
|
||||||
"github.com/gravitl/netmaker/netclient/auth"
|
|
||||||
"github.com/gravitl/netmaker/netclient/config"
|
"github.com/gravitl/netmaker/netclient/config"
|
||||||
"github.com/gravitl/netmaker/netclient/daemon"
|
"github.com/gravitl/netmaker/netclient/daemon"
|
||||||
"github.com/gravitl/netmaker/netclient/local"
|
"github.com/gravitl/netmaker/netclient/local"
|
||||||
"github.com/gravitl/netmaker/netclient/ncutils"
|
"github.com/gravitl/netmaker/netclient/ncutils"
|
||||||
"github.com/gravitl/netmaker/netclient/wireguard"
|
"github.com/gravitl/netmaker/netclient/wireguard"
|
||||||
"golang.zx2c4.com/wireguard/wgctrl"
|
"golang.zx2c4.com/wireguard/wgctrl"
|
||||||
"google.golang.org/grpc"
|
|
||||||
"google.golang.org/grpc/metadata"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// LINUX_APP_DATA_PATH - linux path
|
// LINUX_APP_DATA_PATH - linux path
|
||||||
|
@ -158,46 +155,25 @@ func LeaveNetwork(network string, force bool) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
servercfg := cfg.Server
|
|
||||||
node := cfg.Node
|
node := cfg.Node
|
||||||
if node.NetworkSettings.IsComms == "yes" && !force {
|
|
||||||
return errors.New("COMMS_NET - You are trying to leave the comms network. This will break network updates. Unless you re-join. If you really want to leave, run with --force=yes.")
|
|
||||||
}
|
|
||||||
|
|
||||||
if node.IsServer != "yes" {
|
if node.IsServer != "yes" {
|
||||||
var wcclient nodepb.NodeServiceClient
|
token, err := Authenticate(cfg)
|
||||||
conn, err := grpc.Dial(cfg.Server.GRPCAddress,
|
|
||||||
ncutils.GRPCRequestOpts(cfg.Server.GRPCSSL))
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Unable to establish client connection to "+servercfg.GRPCAddress+": %v", err)
|
return fmt.Errorf("unable to authenticate %w", err)
|
||||||
}
|
}
|
||||||
defer conn.Close()
|
url := "https://" + cfg.Server.API + "/api/nodes/" + cfg.Network + "/" + cfg.Node.ID
|
||||||
wcclient = nodepb.NewNodeServiceClient(conn)
|
response, err := API("", http.MethodDelete, url, token)
|
||||||
|
|
||||||
ctx, err := auth.SetJWT(wcclient, network)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Failed to authenticate: %v", err)
|
return fmt.Errorf("error deleting node on server %w", err)
|
||||||
} else { // handle client side
|
}
|
||||||
var header metadata.MD
|
if response.StatusCode == http.StatusOK {
|
||||||
nodeData, err := json.Marshal(&node)
|
logger.Log(0, "deleted node", cfg.Node.Name, " on network ", cfg.Network)
|
||||||
if err == nil {
|
} else {
|
||||||
_, err = wcclient.DeleteNode(
|
bodybytes, _ := ioutil.ReadAll(response.Body)
|
||||||
ctx,
|
defer response.Body.Close()
|
||||||
&nodepb.Object{
|
return fmt.Errorf("error deleting node on server %s %s", response.Status, string(bodybytes))
|
||||||
Data: string(nodeData),
|
|
||||||
Type: nodepb.NODE_TYPE,
|
|
||||||
},
|
|
||||||
grpc.Header(&header),
|
|
||||||
)
|
|
||||||
if err != nil {
|
|
||||||
logger.Log(1, "encountered error deleting node: ", err.Error())
|
|
||||||
} else {
|
|
||||||
logger.Log(1, "removed machine from ", node.Network, " network on remote server")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
wgClient, wgErr := wgctrl.New()
|
wgClient, wgErr := wgctrl.New()
|
||||||
if wgErr == nil {
|
if wgErr == nil {
|
||||||
removeIface := cfg.Node.Interface
|
removeIface := cfg.Node.Interface
|
||||||
|
|
Loading…
Add table
Reference in a new issue