learning_go/rbd_exporter/connection/connection.go
2025-12-23 19:20:42 +03:00

40 lines
801 B
Go

package connection
import (
"fmt"
"rbd_exporter/mytypes"
"github.com/ceph/go-ceph/rados"
)
func Connect(params mytypes.Params) (_ mytypes.CephConnection, err error) {
var cephConn = mytypes.CephConnection{}
defer func() {
if err != nil {
err = fmt.Errorf("error in func connect() %w", err)
}
}()
cephConn.Conn, err = rados.NewConnWithClusterAndUser("ceph", "client.admin")
if err != nil {
return mytypes.CephConnection{}, err
}
err = cephConn.Conn.ReadConfigFile(params.Config)
if err != nil {
return mytypes.CephConnection{}, err
}
err = cephConn.Conn.SetConfigOption("keyring", params.Keyring)
if err != nil {
return mytypes.CephConnection{}, err
}
err = cephConn.Conn.Connect()
if err != nil {
return mytypes.CephConnection{}, err
}
return cephConn, nil
}