mirror of
https://github.com/netbirdio/netbird.git
synced 2026-10-09 15:09:08 +02:00
added support for GetNetworkResources in sqlite; moved several more internal types into shared_types
Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io>
This commit is contained in:
@@ -7,15 +7,11 @@ import (
|
|||||||
"net/netip"
|
"net/netip"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/netbirdio/netbird/management/server/types"
|
|
||||||
"github.com/netbirdio/netbird/shared/management/networkmap/nmdata"
|
"github.com/netbirdio/netbird/shared/management/networkmap/nmdata"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestGetNetworkResources(t *testing.T) {
|
func TestGetNetworkResources(t *testing.T) {
|
||||||
if engine == string(types.SqliteStoreEngine) {
|
|
||||||
t.Skip()
|
|
||||||
}
|
|
||||||
ctx := context.TODO()
|
ctx := context.TODO()
|
||||||
|
|
||||||
execQuery(t, ctx,
|
execQuery(t, ctx,
|
||||||
|
|||||||
@@ -2,11 +2,11 @@ package networkmap_pgsql
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"database/sql"
|
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/jackc/pgx/v5"
|
"github.com/jackc/pgx/v5"
|
||||||
|
networkmapdb "github.com/netbirdio/netbird/management/internals/network_map_db"
|
||||||
"github.com/netbirdio/netbird/shared/management/networkmap/nmdata"
|
"github.com/netbirdio/netbird/shared/management/networkmap/nmdata"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -34,7 +34,7 @@ func (pgc *PgStoreConn) GetAccountSettings(ctx context.Context, accountId string
|
|||||||
return nmdata.AccountSettingsInfo{}, err
|
return nmdata.AccountSettingsInfo{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
settings, err := pgx.CollectOneRow(rows, pgx.RowToStructByName[account])
|
settings, err := pgx.CollectOneRow(rows, pgx.RowToStructByName[networkmapdb.Account])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nmdata.AccountSettingsInfo{}, err
|
return nmdata.AccountSettingsInfo{}, err
|
||||||
}
|
}
|
||||||
@@ -59,17 +59,3 @@ func (pgc *PgStoreConn) GetAccountSettings(ctx context.Context, accountId string
|
|||||||
|
|
||||||
return settingsInfo, nil
|
return settingsInfo, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type account struct {
|
|
||||||
PeerLoginExpirationEnabled sql.NullBool
|
|
||||||
PeerLoginExpiration sql.NullInt64
|
|
||||||
PeerInactivityExpirationEnabled sql.NullBool
|
|
||||||
PeerInactivityExpiration sql.NullInt64
|
|
||||||
DNSDomain sql.NullString
|
|
||||||
IPv6EnabledGroups json.RawMessage
|
|
||||||
RoutingPeerDNSResolutionEnabled sql.NullBool
|
|
||||||
LazyConnectionEnabled sql.NullBool
|
|
||||||
AutoUpdateVersion sql.NullString
|
|
||||||
AutoUpdateAlways sql.NullBool
|
|
||||||
MetricsPushEnabled sql.NullBool
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -2,9 +2,6 @@ package networkmap_pgsql
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"database/sql"
|
|
||||||
"encoding/json"
|
|
||||||
"reflect"
|
|
||||||
|
|
||||||
"github.com/jackc/pgx/v5"
|
"github.com/jackc/pgx/v5"
|
||||||
networkmapdb "github.com/netbirdio/netbird/management/internals/network_map_db"
|
networkmapdb "github.com/netbirdio/netbird/management/internals/network_map_db"
|
||||||
@@ -25,33 +22,10 @@ func (pgc *PgStoreConn) GetNameServerGroups(ctx context.Context, accountId strin
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
nsgroups, err := pgx.CollectRows(rows, pgx.RowToStructByName[nameserverGroup])
|
nsgroups, err := pgx.CollectRows(rows, pgx.RowToStructByName[networkmapdb.NameserverGroup])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
toret := make([]nmdata.NameServerGroup, 0, len(nsgroups))
|
return networkmapdb.ConvertAllToSharedTypes[networkmapdb.NameserverGroup, nmdata.NameServerGroup](nsgroups)
|
||||||
for _, nsg := range nsgroups {
|
|
||||||
group := nmdata.NameServerGroup{}
|
|
||||||
err := networkmapdb.FromSqlTypesToSharedTypes(
|
|
||||||
reflect.ValueOf(&nsg), reflect.ValueOf(&group))
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
toret = append(toret, group)
|
|
||||||
}
|
|
||||||
return toret, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
type nameserverGroup struct {
|
|
||||||
ID string
|
|
||||||
PublicID sql.NullString
|
|
||||||
Name sql.NullString
|
|
||||||
Description sql.NullString
|
|
||||||
NameServers json.RawMessage
|
|
||||||
Groups json.RawMessage
|
|
||||||
Primary sql.NullBool
|
|
||||||
Domains json.RawMessage
|
|
||||||
Enabled sql.NullBool
|
|
||||||
SearchDomainsEnabled sql.NullBool
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,9 +2,6 @@ package networkmap_pgsql
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"database/sql"
|
|
||||||
"encoding/json"
|
|
||||||
"reflect"
|
|
||||||
|
|
||||||
"github.com/jackc/pgx/v5"
|
"github.com/jackc/pgx/v5"
|
||||||
networkmapdb "github.com/netbirdio/netbird/management/internals/network_map_db"
|
networkmapdb "github.com/netbirdio/netbird/management/internals/network_map_db"
|
||||||
@@ -25,33 +22,10 @@ func (pgc *PgStoreConn) GetNetworkResources(ctx context.Context, accountId strin
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
netresorces, err := pgx.CollectRows(rows, pgx.RowToStructByName[networkresource])
|
netresorces, err := pgx.CollectRows(rows, pgx.RowToStructByName[networkmapdb.Networkresource])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
toret := make([]nmdata.NetworkResource, 0, len(netresorces))
|
return networkmapdb.ConvertAllToSharedTypes[networkmapdb.Networkresource, nmdata.NetworkResource](netresorces)
|
||||||
for _, nres := range netresorces {
|
|
||||||
resource := nmdata.NetworkResource{}
|
|
||||||
err := networkmapdb.FromSqlTypesToSharedTypes(
|
|
||||||
reflect.ValueOf(&nres), reflect.ValueOf(&resource))
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
toret = append(toret, resource)
|
|
||||||
}
|
|
||||||
return toret, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
type networkresource struct {
|
|
||||||
ID string
|
|
||||||
NetworkID sql.NullString
|
|
||||||
AccountID sql.NullString
|
|
||||||
PublicID sql.NullString
|
|
||||||
Name sql.NullString
|
|
||||||
Description sql.NullString
|
|
||||||
Type sql.NullString
|
|
||||||
Domain sql.NullString
|
|
||||||
Prefix json.RawMessage
|
|
||||||
Enabled sql.NullBool
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,20 @@ import (
|
|||||||
|
|
||||||
var ErrDnsUnsupportedRecordType = errors.New("unsupported record type")
|
var ErrDnsUnsupportedRecordType = errors.New("unsupported record type")
|
||||||
|
|
||||||
|
type Account struct {
|
||||||
|
PeerLoginExpirationEnabled sql.NullBool
|
||||||
|
PeerLoginExpiration sql.NullInt64
|
||||||
|
PeerInactivityExpirationEnabled sql.NullBool
|
||||||
|
PeerInactivityExpiration sql.NullInt64
|
||||||
|
DNSDomain sql.NullString
|
||||||
|
IPv6EnabledGroups []byte `nmap:"json"`
|
||||||
|
RoutingPeerDNSResolutionEnabled sql.NullBool
|
||||||
|
LazyConnectionEnabled sql.NullBool
|
||||||
|
AutoUpdateVersion sql.NullString
|
||||||
|
AutoUpdateAlways sql.NullBool
|
||||||
|
MetricsPushEnabled sql.NullBool
|
||||||
|
}
|
||||||
|
|
||||||
type Domain struct {
|
type Domain struct {
|
||||||
Domain sql.NullString
|
Domain sql.NullString
|
||||||
TargetCluster sql.NullString
|
TargetCluster sql.NullString
|
||||||
@@ -39,6 +53,32 @@ type Zone struct {
|
|||||||
RecordRData sql.NullString `nmap:"skip"`
|
RecordRData sql.NullString `nmap:"skip"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type NameserverGroup struct {
|
||||||
|
ID string
|
||||||
|
PublicID sql.NullString
|
||||||
|
Name sql.NullString
|
||||||
|
Description sql.NullString
|
||||||
|
NameServers []byte `nmap:"json"`
|
||||||
|
Groups []byte `nmap:"json"`
|
||||||
|
Primary sql.NullBool
|
||||||
|
Domains []byte `nmap:"json"`
|
||||||
|
Enabled sql.NullBool
|
||||||
|
SearchDomainsEnabled sql.NullBool
|
||||||
|
}
|
||||||
|
|
||||||
|
type Networkresource struct {
|
||||||
|
ID string
|
||||||
|
NetworkID sql.NullString
|
||||||
|
AccountID sql.NullString
|
||||||
|
PublicID sql.NullString
|
||||||
|
Name sql.NullString
|
||||||
|
Description sql.NullString
|
||||||
|
Type sql.NullString
|
||||||
|
Domain sql.NullString
|
||||||
|
Prefix []byte `nmap:"json"`
|
||||||
|
Enabled sql.NullBool
|
||||||
|
}
|
||||||
|
|
||||||
func RecordTypeAndRdata(t, rdata string) (int, string, error) {
|
func RecordTypeAndRdata(t, rdata string) (int, string, error) {
|
||||||
switch t {
|
switch t {
|
||||||
case "A":
|
case "A":
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package networkmap_sqlite
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"database/sql"
|
|
||||||
"reflect"
|
"reflect"
|
||||||
|
|
||||||
networkmapdb "github.com/netbirdio/netbird/management/internals/network_map_db"
|
networkmapdb "github.com/netbirdio/netbird/management/internals/network_map_db"
|
||||||
@@ -33,7 +32,7 @@ func (sc *SqliteStoreConn) GetAccountSettings(ctx context.Context, accountId str
|
|||||||
return nmdata.AccountSettingsInfo{}, err
|
return nmdata.AccountSettingsInfo{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
a, err := networkmapdb.CollectOneRowForSqlite[account](rows)
|
a, err := networkmapdb.CollectOneRowForSqlite[networkmapdb.Account](rows)
|
||||||
|
|
||||||
settingsInfo := nmdata.AccountSettingsInfo{}
|
settingsInfo := nmdata.AccountSettingsInfo{}
|
||||||
err = networkmapdb.FromSqlTypesToSharedTypes(reflect.ValueOf(&a), reflect.ValueOf(&settingsInfo))
|
err = networkmapdb.FromSqlTypesToSharedTypes(reflect.ValueOf(&a), reflect.ValueOf(&settingsInfo))
|
||||||
@@ -43,17 +42,3 @@ func (sc *SqliteStoreConn) GetAccountSettings(ctx context.Context, accountId str
|
|||||||
|
|
||||||
return settingsInfo, nil
|
return settingsInfo, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type account struct {
|
|
||||||
PeerLoginExpirationEnabled sql.NullBool
|
|
||||||
PeerLoginExpiration sql.NullInt64
|
|
||||||
PeerInactivityExpirationEnabled sql.NullBool
|
|
||||||
PeerInactivityExpiration sql.NullInt64
|
|
||||||
DNSDomain sql.NullString
|
|
||||||
IPv6EnabledGroups []byte `nmap:"json"`
|
|
||||||
RoutingPeerDNSResolutionEnabled sql.NullBool
|
|
||||||
LazyConnectionEnabled sql.NullBool
|
|
||||||
AutoUpdateVersion sql.NullString
|
|
||||||
AutoUpdateAlways sql.NullBool
|
|
||||||
MetricsPushEnabled sql.NullBool
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package networkmap_sqlite
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"database/sql"
|
|
||||||
|
|
||||||
networkmapdb "github.com/netbirdio/netbird/management/internals/network_map_db"
|
networkmapdb "github.com/netbirdio/netbird/management/internals/network_map_db"
|
||||||
"github.com/netbirdio/netbird/shared/management/networkmap/nmdata"
|
"github.com/netbirdio/netbird/shared/management/networkmap/nmdata"
|
||||||
@@ -22,23 +21,10 @@ func (sc *SqliteStoreConn) GetNameServerGroups(ctx context.Context, accountId st
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
nsgroups, err := networkmapdb.CollectRowsForSqlite[nameserverGroup](rows)
|
nsgroups, err := networkmapdb.CollectRowsForSqlite[networkmapdb.NameserverGroup](rows)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return networkmapdb.ConvertAllToSharedTypes[nameserverGroup, nmdata.NameServerGroup](nsgroups)
|
return networkmapdb.ConvertAllToSharedTypes[networkmapdb.NameserverGroup, nmdata.NameServerGroup](nsgroups)
|
||||||
}
|
|
||||||
|
|
||||||
type nameserverGroup struct {
|
|
||||||
ID string
|
|
||||||
PublicID sql.NullString
|
|
||||||
Name sql.NullString
|
|
||||||
Description sql.NullString
|
|
||||||
NameServers []byte `nmap:"json"`
|
|
||||||
Groups []byte `nmap:"json"`
|
|
||||||
Primary sql.NullBool
|
|
||||||
Domains []byte `nmap:"json"`
|
|
||||||
Enabled sql.NullBool
|
|
||||||
SearchDomainsEnabled sql.NullBool
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package networkmap_sqlite
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
networkmapdb "github.com/netbirdio/netbird/management/internals/network_map_db"
|
||||||
|
"github.com/netbirdio/netbird/shared/management/networkmap/nmdata"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
GetNetworkResourcesQuery = `
|
||||||
|
select id, network_id, account_id, public_id, name, description, type, domain, prefix, enabled
|
||||||
|
from network_resources
|
||||||
|
where account_id=$1
|
||||||
|
`
|
||||||
|
)
|
||||||
|
|
||||||
|
func (sc *SqliteStoreConn) GetNetworkResources(ctx context.Context, accountId string) ([]nmdata.NetworkResource, error) {
|
||||||
|
rows, err := sc.Conn.QueryContext(ctx, GetNetworkResourcesQuery, accountId)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
netresorces, err := networkmapdb.CollectRowsForSqlite[networkmapdb.Networkresource](rows)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return networkmapdb.ConvertAllToSharedTypes[networkmapdb.Networkresource, nmdata.NetworkResource](netresorces)
|
||||||
|
}
|
||||||
@@ -91,9 +91,6 @@ func (s *SqliteStoreConn) GetPolicies(ctx context.Context, accountId string) ([]
|
|||||||
func (s *SqliteStoreConn) GetRoutes(ctx context.Context, accountId string) ([]nmdata.Route, error) {
|
func (s *SqliteStoreConn) GetRoutes(ctx context.Context, accountId string) ([]nmdata.Route, error) {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
func (s *SqliteStoreConn) GetNetworkResources(ctx context.Context, accountId string) ([]nmdata.NetworkResource, error) {
|
|
||||||
return nil, nil
|
|
||||||
}
|
|
||||||
func (s *SqliteStoreConn) GetNetworkRouters(ctx context.Context, accountId string) (map[string]map[string]*nmdata.NetworkRouter, error) {
|
func (s *SqliteStoreConn) GetNetworkRouters(ctx context.Context, accountId string) (map[string]map[string]*nmdata.NetworkRouter, error) {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user