add support for tcp cluster connections in uncloud config

This commit is contained in:
Pavel Sviderski
2024-11-28 18:53:47 +10:00
parent 6d1c3aa5b2
commit 3d5fe0a824
2 changed files with 16 additions and 9 deletions
+5
View File
@@ -88,6 +88,7 @@ func (cli *CLI) ConnectCluster(ctx context.Context, clusterName string) (*client
// TODO: iterate over all connections and try to connect to the cluster using the first successful connection.
conn := cfg.Connections[0]
if conn.SSH != "" {
user, host, port, err := conn.SSH.Parse()
if err != nil {
return nil, fmt.Errorf("parse SSH connection %q: %w", conn.SSH, err)
@@ -98,6 +99,10 @@ func (cli *CLI) ConnectCluster(ctx context.Context, clusterName string) (*client
Port: port,
}
return client.New(ctx, connector.NewSSHConnector(sshConfig))
} else if conn.TCP.IsValid() {
return client.New(ctx, connector.NewTCPConnector(conn.TCP))
}
return nil, errors.New("no valid connection configuration found for the cluster")
}
func (cli *CLI) InitCluster(
+2
View File
@@ -2,6 +2,7 @@ package config
import (
"net"
"net/netip"
"strconv"
"strings"
"uncloud/internal/secret"
@@ -14,6 +15,7 @@ const (
type MachineConnection struct {
SSH SSHDestination `toml:"ssh,omitempty"`
TCP netip.AddrPort `toml:"tcp,omitempty"`
Host string `toml:"host,omitempty"`
PublicKey secret.Secret `toml:"public_key,omitempty"`
}