Skip to content

Commit

Permalink
feat(frontend): remove tcp trid parameters
Browse files Browse the repository at this point in the history
Signed-off-by: Artsiom Koltun <[email protected]>
  • Loading branch information
artek-koltun authored and glimchb committed Oct 2, 2023
1 parent c7cd781 commit 4ae797d
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 50 deletions.
12 changes: 5 additions & 7 deletions cmd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,13 +64,11 @@ func main() {
var busesStr string
flag.StringVar(&busesStr, "buses", "", "QEMU PCI buses IDs separated by `:` to attach Nvme/virtio-blk devices on. e.g. \"pci.opi.0:pci.opi.1\". Valid only with -kvm option")

var tcpTransportListenAddr string
flag.StringVar(&tcpTransportListenAddr, "tcp_trid", "127.0.0.1:4420", "ipv4 address:port (aka traddr:trsvcid) or ipv6 [address]:port tuple (aka [traddr]:trsvcid) to listen on for Nvme/TCP transport")
flag.Parse()

var tlsFiles string
flag.StringVar(&tlsFiles, "tls", "", "TLS files in server_cert:server_key:ca_cert format.")

flag.Parse()

// Create KV store for persistence
options := gomap.DefaultOptions
options.Codec = utils.ProtoCodec{}
Expand All @@ -84,10 +82,10 @@ func main() {
}(store)

go runGatewayServer(grpcPort, httpPort)
runGrpcServer(grpcPort, useKvm, store, spdkAddress, qmpAddress, ctrlrDir, busesStr, tcpTransportListenAddr, tlsFiles)
runGrpcServer(grpcPort, useKvm, store, spdkAddress, qmpAddress, ctrlrDir, busesStr, tlsFiles)
}

func runGrpcServer(grpcPort int, useKvm bool, store gokv.Store, spdkAddress, qmpAddress, ctrlrDir, busesStr, tcpTransportListenAddr, tlsFiles string) {
func runGrpcServer(grpcPort int, useKvm bool, store gokv.Store, spdkAddress, qmpAddress, ctrlrDir, busesStr, tlsFiles string) {
buses := splitBusesBySeparator(busesStr)

lis, err := net.Listen("tcp", fmt.Sprintf(":%d", grpcPort))
Expand Down Expand Up @@ -142,7 +140,7 @@ func runGrpcServer(grpcPort int, useKvm bool, store gokv.Store, spdkAddress, qmp
} else {
frontendServer := frontend.NewCustomizedServer(jsonRPC,
store,
frontend.NewNvmeTCPTransport(tcpTransportListenAddr),
frontend.NewNvmeTCPTransport(),
frontend.NewVhostUserBlkTransport(),
)
pb.RegisterFrontendNvmeServiceServer(s, frontendServer)
Expand Down
2 changes: 1 addition & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ services:
condition: service_healthy
redis:
condition: service_healthy
command: sh -c "/opi-spdk-bridge -grpc_port=50051 -http_port=8082 -spdk_addr=/var/tmp/spdk.sock -tcp_trid=$$(getent hosts spdk | awk '{ print $$1 }'):7777"
command: sh -c "/opi-spdk-bridge -grpc_port=50051 -http_port=8082 -spdk_addr=/var/tmp/spdk.sock"
healthcheck:
test: grpcurl -plaintext localhost:50051 list || exit 1

Expand Down
2 changes: 1 addition & 1 deletion pkg/frontend/frontend.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ func NewServer(jsonRPC spdk.JSONRPC, store gokv.Store) *Server {
Subsystems: make(map[string]*pb.NvmeSubsystem),
Controllers: make(map[string]*pb.NvmeController),
Namespaces: make(map[string]*pb.NvmeNamespace),
transport: NewNvmeTCPTransport("127.0.0.1:4420"),
transport: NewNvmeTCPTransport(),
},
Virt: VirtioParameters{
BlkCtrls: make(map[string]*pb.VirtioBlk),
Expand Down
47 changes: 6 additions & 41 deletions pkg/frontend/transport.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ package frontend

import (
"log"
"net"
"path"

"github.com/opiproject/gospdk/spdk"
Expand All @@ -27,55 +26,21 @@ type VirtioBlkTransport interface {
DeleteParams(virtioBlk *pb.VirtioBlk) (any, error)
}

const (
ipv4NvmeTCPProtocol = "ipv4"
ipv6NvmeTCPProtocol = "ipv6"
)

// TODO: consider using https://pkg.go.dev/net#TCPAddr
type nvmeTCPTransport struct {
listenAddr net.IP
listenPort string
protocol string
}
type nvmeTCPTransport struct{}

// NewNvmeTCPTransport creates a new instance of nvmeTcpTransport
func NewNvmeTCPTransport(listenAddr string) NvmeTransport {
host, port, err := net.SplitHostPort(listenAddr)
if err != nil {
log.Panicf("Invalid ip:port tuple: %v", listenAddr)
}

parsedAddr := net.ParseIP(host)
if parsedAddr == nil {
log.Panicf("Invalid ip address: %v", host)
}

var protocol string
switch {
case parsedAddr.To4() != nil:
protocol = ipv4NvmeTCPProtocol
case parsedAddr.To16() != nil:
protocol = ipv6NvmeTCPProtocol
default:
log.Panicf("Not supported protocol for: %v", listenAddr)
}

return &nvmeTCPTransport{
listenAddr: parsedAddr,
listenPort: port,
protocol: protocol,
}
func NewNvmeTCPTransport() NvmeTransport {
return &nvmeTCPTransport{}
}

func (c *nvmeTCPTransport) Params(_ *pb.NvmeController, nqn string) (spdk.NvmfSubsystemAddListenerParams, error) {
result := spdk.NvmfSubsystemAddListenerParams{}
result.Nqn = nqn
result.SecureChannel = false
result.ListenAddress.Trtype = "tcp"
result.ListenAddress.Traddr = c.listenAddr.String()
result.ListenAddress.Trsvcid = c.listenPort
result.ListenAddress.Adrfam = c.protocol
result.ListenAddress.Traddr = ""
result.ListenAddress.Trsvcid = ""
result.ListenAddress.Adrfam = ""

return result, nil
}
Expand Down

0 comments on commit 4ae797d

Please sign in to comment.