Skip to content

Commit

Permalink
cluster: bump up go-tarantool to v2
Browse files Browse the repository at this point in the history
  • Loading branch information
dmyger committed Feb 4, 2025
1 parent f13b13e commit bba9f08
Show file tree
Hide file tree
Showing 19 changed files with 173 additions and 128 deletions.
50 changes: 31 additions & 19 deletions cli/cluster/cluster.go
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package cluster

import (
"context"
"errors"
"fmt"
"strings"
"time"

"github.com/tarantool/go-tarantool"
"github.com/tarantool/go-tarantool/v2"
"github.com/tarantool/go-tlsdialer"
libcluster "github.com/tarantool/tt/lib/cluster"
"github.com/tarantool/tt/lib/connect"
)
Expand Down Expand Up @@ -78,8 +80,9 @@ func collectEtcdConfig(collectors libcluster.CollectorFactory,
func collectTarantoolConfig(collectors libcluster.CollectorFactory,
clusterConfig libcluster.ClusterConfig) (*libcluster.Config, error) {
type tarantoolOpts struct {
addr string
opts tarantool.Opts
addr string
dialer tarantool.Dialer
opts tarantool.Opts
}

tarantoolConfig := clusterConfig.Config.Storage
Expand All @@ -92,40 +95,49 @@ func collectTarantoolConfig(collectors libcluster.CollectorFactory,
} else {
network, address = connect.ParseBaseURI(endpoint.Uri)
}

addr := fmt.Sprintf("%s://%s", network, address)
if endpoint.Params.Transport == "" || endpoint.Params.Transport != "ssl" {
opts = append(opts, tarantoolOpts{
addr: addr,
dialer: tarantool.NetDialer{
Address: addr,
User: endpoint.Login,
Password: endpoint.Password,
},
opts: tarantool.Opts{
User: endpoint.Login,
Pass: endpoint.Password,
Transport: endpoint.Params.Transport,
SkipSchema: true,
},
addr: fmt.Sprintf("%s://%s", network, address)})
})
} else {
opts = append(opts, tarantoolOpts{
addr: addr,
dialer: tlsdialer.OpenSSLDialer{
Address: addr,
User: endpoint.Login,
Password: endpoint.Password,
SslKeyFile: endpoint.Params.SslKeyFile,
SslCertFile: endpoint.Params.SslCertFile,
SslCaFile: endpoint.Params.SslCaFile,
SslCiphers: endpoint.Params.SslCiphers,
},
opts: tarantool.Opts{
User: endpoint.Login,
Pass: endpoint.Password,
Transport: endpoint.Params.Transport,
Ssl: tarantool.SslOpts{
KeyFile: endpoint.Params.SslKeyFile,
CertFile: endpoint.Params.SslCertFile,
CaFile: endpoint.Params.SslCaFile,
Ciphers: endpoint.Params.SslCiphers,
},
SkipSchema: true,
},
addr: fmt.Sprintf("%s://%s", network, address),
})
}
}

var connectionErrors []error
cconfig := libcluster.NewConfig()
for _, opt := range opts {
conn, err := tarantool.Connect(opt.addr, opt.opts)
ctx := context.Background()
if opt.opts.Timeout > 0 {
var cancel context.CancelFunc
ctx, cancel = context.WithTimeout(ctx, opt.opts.Timeout)
defer cancel()
}

conn, err := tarantool.Connect(ctx, opt.dialer, opt.opts)
if err != nil {
connectionErrors = append(connectionErrors,
fmt.Errorf("error when connecting to endpoint %q: %w", opt.addr, err))
Expand Down
28 changes: 18 additions & 10 deletions cli/cluster/cmd/common.go
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package cmd

import (
"context"
"errors"
"fmt"
"os"

clientv3 "go.etcd.io/etcd/client/v3"

"github.com/tarantool/go-tarantool"
"github.com/tarantool/go-tarantool/v2"
"github.com/tarantool/tt/cli/cluster"
libcluster "github.com/tarantool/tt/lib/cluster"
"github.com/tarantool/tt/lib/connect"
Expand Down Expand Up @@ -144,19 +145,26 @@ type connectOpts struct {

// connectTarantool establishes a connection to Tarantool.
func connectTarantool(uriOpts UriOpts, connOpts connectOpts) (tarantool.Connector, error) {
addr, connectorOpts := MakeConnectOptsFromUriOpts(uriOpts)
if connectorOpts.User == "" && connectorOpts.Pass == "" {
connectorOpts.User = connOpts.Username
connectorOpts.Pass = connOpts.Password
if connectorOpts.User == "" {
connectorOpts.User = os.Getenv(connect.TarantoolUsernameEnv)
if uriOpts.Username == "" && uriOpts.Password == "" {
uriOpts.Username = connOpts.Username
uriOpts.Password = connOpts.Password
if uriOpts.Username == "" {
uriOpts.Username = os.Getenv(connect.TarantoolUsernameEnv)
}
if connectorOpts.Pass == "" {
connectorOpts.Pass = os.Getenv(connect.TarantoolPasswordEnv)
if uriOpts.Password == "" {
uriOpts.Password = os.Getenv(connect.TarantoolPasswordEnv)
}
}

conn, err := tarantool.Connect(addr, connectorOpts)
dialer, connectorOpts := MakeConnectOptsFromUriOpts(uriOpts)

ctx := context.Background()
if connectorOpts.Timeout > 0 {
var cancel context.CancelFunc
ctx, cancel = context.WithTimeout(ctx, connectorOpts.Timeout)
defer cancel()
}
conn, err := tarantool.Connect(ctx, dialer, connectorOpts)
if err != nil {
return nil, fmt.Errorf("failed to connect to tarantool: %w", err)
}
Expand Down
2 changes: 1 addition & 1 deletion cli/cluster/cmd/replicaset.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (

"github.com/apex/log"
"github.com/manifoldco/promptui"
"github.com/tarantool/go-tarantool"
"github.com/tarantool/go-tarantool/v2"
"github.com/tarantool/tt/cli/replicaset"
libcluster "github.com/tarantool/tt/lib/cluster"
clientv3 "go.etcd.io/etcd/client/v3"
Expand Down
41 changes: 26 additions & 15 deletions cli/cluster/cmd/uri.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ import (
"strings"
"time"

"github.com/tarantool/go-tarantool"
"github.com/tarantool/go-tarantool/v2"
"github.com/tarantool/go-tlsdialer"

libcluster "github.com/tarantool/tt/lib/cluster"
)
Expand Down Expand Up @@ -145,22 +146,32 @@ func MakeEtcdOptsFromUriOpts(src UriOpts) libcluster.EtcdOpts {

// MakeConnectOptsFromUriOpts create Tarantool connect options from
// URI options.
func MakeConnectOptsFromUriOpts(src UriOpts) (string, tarantool.Opts) {
opts := tarantool.Opts{
User: src.Username,
Pass: src.Password,
Ssl: tarantool.SslOpts{
KeyFile: src.KeyFile,
CertFile: src.CertFile,
CaFile: src.CaFile,
Ciphers: src.Ciphers,
},
Timeout: src.Timeout,
func MakeConnectOptsFromUriOpts(src UriOpts) (tarantool.Dialer, tarantool.Opts) {
address := fmt.Sprintf("tcp://%s", src.Host)

var dialer tarantool.Dialer

if src.KeyFile != "" || src.CertFile != "" || src.CaFile != "" || src.Ciphers != "" {
dialer = tlsdialer.OpenSSLDialer{
Address: address,
User: src.Username,
Password: src.Password,
SslKeyFile: src.KeyFile,
SslCertFile: src.CertFile,
SslCaFile: src.CaFile,
SslCiphers: src.Ciphers,
}
} else {
dialer = tarantool.NetDialer{
Address: address,
User: src.Username,
Password: src.Password,
}
}

if opts.Ssl != (tarantool.SslOpts{}) {
opts.Transport = "ssl"
opts := tarantool.Opts{
Timeout: src.Timeout,
}

return fmt.Sprintf("tcp://%s", src.Host), opts
return dialer, opts
}
65 changes: 39 additions & 26 deletions cli/cluster/cmd/uri_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

"github.com/tarantool/go-tarantool"
"github.com/tarantool/go-tarantool/v2"
"github.com/tarantool/go-tlsdialer"

"github.com/tarantool/tt/cli/cluster/cmd"
libcluster "github.com/tarantool/tt/lib/cluster"
Expand Down Expand Up @@ -335,17 +336,24 @@ func TestMakeEtcdOptsFromUriOpts(t *testing.T) {
}

func TestMakeConnectOptsFromUriOpts(t *testing.T) {
type Expected struct {
dialer tarantool.Dialer
opts tarantool.Opts
}
cases := []struct {
Name string
UriOpts cmd.UriOpts
Expected tarantool.Opts
ExpectedAddr string
Name string
UriOpts cmd.UriOpts
Expected Expected
}{
{
Name: "empty",
UriOpts: cmd.UriOpts{},
Expected: tarantool.Opts{},
ExpectedAddr: "tcp://",
Name: "empty",
UriOpts: cmd.UriOpts{},
Expected: Expected{
tarantool.NetDialer{
Address: "tcp://",
},
tarantool.Opts{},
},
},
{
Name: "ignored",
Expand All @@ -359,10 +367,14 @@ func TestMakeConnectOptsFromUriOpts(t *testing.T) {
SkipPeerVerify: true,
Timeout: 673,
},
Expected: tarantool.Opts{
Timeout: 673,
Expected: Expected{
tarantool.NetDialer{
Address: "tcp://",
},
tarantool.Opts{
Timeout: 673,
},
},
ExpectedAddr: "tcp://", // is this ok?
},
{
Name: "full",
Expand All @@ -383,28 +395,29 @@ func TestMakeConnectOptsFromUriOpts(t *testing.T) {
SkipPeerVerify: true,
Timeout: 2 * time.Second,
},
Expected: tarantool.Opts{
User: "username",
Pass: "password",
Timeout: 2 * time.Second,
Transport: "ssl",
Ssl: tarantool.SslOpts{
KeyFile: "key_file",
CertFile: "cert_file",
CaFile: "ca_file",
Ciphers: "foo:bar:ciphers",
Expected: Expected{
tlsdialer.OpenSSLDialer{
Address: "tcp://foo",
User: "username",
Password: "password",
SslKeyFile: "key_file",
SslCertFile: "cert_file",
SslCaFile: "ca_file",
SslCiphers: "foo:bar:ciphers",
},
tarantool.Opts{
Timeout: 2 * time.Second,
},
},
ExpectedAddr: "tcp://foo",
},
}

for _, tc := range cases {
t.Run(tc.Name, func(t *testing.T) {
addr, tntOpts := cmd.MakeConnectOptsFromUriOpts(tc.UriOpts)
dialer, opts := cmd.MakeConnectOptsFromUriOpts(tc.UriOpts)

assert.Equal(t, tc.Expected, tntOpts)
assert.Equal(t, tc.ExpectedAddr, addr)
assert.Equal(t, tc.Expected.dialer, dialer)
assert.Equal(t, tc.Expected.opts, opts)
})
}
}
4 changes: 3 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ require (
github.com/tarantool/cartridge-cli v0.0.0-20220605082730-53e6a5be9a61
github.com/tarantool/go-prompt v1.0.1
github.com/tarantool/go-tarantool v1.12.2
github.com/tarantool/go-tarantool/v2 v2.2.0
github.com/tarantool/go-tarantool/v2 v2.2.1
github.com/tarantool/go-tlsdialer v1.0.0
github.com/tarantool/tt/lib/cluster v0.0.0
github.com/tarantool/tt/lib/integrity v0.0.0
github.com/vmihailenco/msgpack/v5 v5.3.5
Expand Down Expand Up @@ -116,6 +117,7 @@ require (
github.com/soheilhy/cmux v0.1.5 // indirect
github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/tarantool/go-iproto v1.1.0 // indirect
github.com/tarantool/go-openssl v1.1.1 // indirect
github.com/tklauser/go-sysconf v0.3.4 // indirect
github.com/tklauser/numcpus v0.2.1 // indirect
Expand Down
6 changes: 4 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -438,8 +438,10 @@ github.com/tarantool/go-prompt v1.0.1 h1:88Yer6gCFylqGRrdWwikNFVbklRQsqKF7mycvGd
github.com/tarantool/go-prompt v1.0.1/go.mod h1:9Vuvi60Bk+3yaXqgYaXNTpLbwPPaaEOeaUgpFW1jqTU=
github.com/tarantool/go-tarantool v1.12.2 h1:u4g+gTOHNxbUDJv0EIUFkRurU/lTQSzWrz8o7bHVAqI=
github.com/tarantool/go-tarantool v1.12.2/go.mod h1:QRiXv0jnxwgxHtr9ZmifSr/eRba76gTUBgp69pDMX1U=
github.com/tarantool/go-tarantool/v2 v2.2.0 h1:U7RDvWxPaPPecMppqVwfpTGnSJQ++Crg2l9cS/ztgp8=
github.com/tarantool/go-tarantool/v2 v2.2.0/go.mod h1:hKKeZeCP8Y8+U6ZFS32ot1jHV/n4WKVP4fjRAvQznMY=
github.com/tarantool/go-tarantool/v2 v2.2.1 h1:ldzMVfkmTuJl4ie3ByMIr+mmPSKDVTcSkN8XlVZEows=
github.com/tarantool/go-tarantool/v2 v2.2.1/go.mod h1:hKKeZeCP8Y8+U6ZFS32ot1jHV/n4WKVP4fjRAvQznMY=
github.com/tarantool/go-tlsdialer v1.0.0 h1:UZ67erz/QiThttIvcHtUnUWo1ZJ/BlQoN088NvkVmBQ=
github.com/tarantool/go-tlsdialer v1.0.0/go.mod h1:IZuFRmnasGSBtPGZi3LMrpaSUgHYR+hDZ4ec7gR9k/0=
github.com/tj/assert v0.0.0-20171129193455-018094318fb0/go.mod h1:mZ9/Rh9oLWpLLDRpvE+3b7gP/C2YyLFYxNmcLnPTMe0=
github.com/tj/assert v0.0.3 h1:Df/BlaZ20mq6kuai7f5z2TvPFiwC3xaWJSDQNiIS3Rk=
github.com/tj/assert v0.0.3/go.mod h1:Ne6X72Q+TB1AteidzQncjw9PabbMp4PBMZ1k+vd1Pvk=
Expand Down
2 changes: 1 addition & 1 deletion lib/cluster/collector.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (

clientv3 "go.etcd.io/etcd/client/v3"

"github.com/tarantool/go-tarantool"
"github.com/tarantool/go-tarantool/v2"
)

// Collector interface must be implemented by a configuration source collector.
Expand Down
2 changes: 1 addition & 1 deletion lib/cluster/collector_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
"github.com/stretchr/testify/require"
clientv3 "go.etcd.io/etcd/client/v3"

"github.com/tarantool/go-tarantool"
"github.com/tarantool/go-tarantool/v2"

"github.com/tarantool/tt/lib/cluster"
)
Expand Down
2 changes: 1 addition & 1 deletion lib/cluster/datacollector.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package cluster
import (
"time"

"github.com/tarantool/go-tarantool"
"github.com/tarantool/go-tarantool/v2"
clientv3 "go.etcd.io/etcd/client/v3"
)

Expand Down
2 changes: 1 addition & 1 deletion lib/cluster/datacollector_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
"github.com/stretchr/testify/require"
clientv3 "go.etcd.io/etcd/client/v3"

"github.com/tarantool/go-tarantool"
"github.com/tarantool/go-tarantool/v2"

"github.com/tarantool/tt/lib/cluster"
)
Expand Down
2 changes: 1 addition & 1 deletion lib/cluster/datapublisher.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (

clientv3 "go.etcd.io/etcd/client/v3"

"github.com/tarantool/go-tarantool"
"github.com/tarantool/go-tarantool/v2"
)

// DataPublisher interface must be implemented by a raw data publisher.
Expand Down
Loading

0 comments on commit bba9f08

Please sign in to comment.