From 52fdfd5bdc6448fe81f2174b4b5bdce60a4493bc Mon Sep 17 00:00:00 2001 From: Dmitri Dolguikh Date: Mon, 3 Aug 2026 18:21:07 +0200 Subject: [PATCH] add an posture-check-id to public-id index Signed-off-by: Dmitri Dolguikh --- .../internals/network_map_db/db_store.go | 2 +- .../network_map_db/pgsql/group_test.go | 3 +- .../network_map_db/pgsql/network_map_data.go | 37 ++++++++++--------- .../internals/network_map_db/pgsql/posture.go | 24 +++++++----- 4 files changed, 36 insertions(+), 30 deletions(-) diff --git a/management/internals/network_map_db/db_store.go b/management/internals/network_map_db/db_store.go index da989d393..c8ba94b80 100644 --- a/management/internals/network_map_db/db_store.go +++ b/management/internals/network_map_db/db_store.go @@ -31,7 +31,7 @@ type NetworkMapDBStore interface { GetNetwork(ctx context.Context, accountId string) (nmdata.Network, error) GetAppliedZoneCandidates(ctx context.Context, accountId string) ([]networkmap.AppliedZoneCandidate, error) GetAccountSettings(ctx context.Context, accountId string) (nmdata.AccountSettingsInfo, error) - GetPostureChecks(ctx context.Context, accountId string) ([]nmdata.PostureChecks, error) + GetPostureChecks(ctx context.Context, accountId string) ([]nmdata.PostureChecks, map[string]string, error) GetNetworkMapData(ctx context.Context, accountId string) (*networkmap.NetworkMapData, error) GetAllowedUsers(ctx context.Context, accountId string) (map[string]struct{}, map[string][]string, error) GetDnsSettings(ctx context.Context, accountId string) (nmdata.DNSSettings, error) diff --git a/management/internals/network_map_db/pgsql/group_test.go b/management/internals/network_map_db/pgsql/group_test.go index 7154b5e6e..9774747d6 100644 --- a/management/internals/network_map_db/pgsql/group_test.go +++ b/management/internals/network_map_db/pgsql/group_test.go @@ -241,8 +241,9 @@ func TestGetPostureChecks(t *testing.T) { // err = loadSQL(ctx, s.pool, initDb) //assert.NoError(t, err) - checks, err := s.GetPostureChecks(ctx, "cdfcks2t2r9s73a58us0") //"ckd7ee2fic3c73dtendg") + checks, idx, err := s.GetPostureChecks(ctx, "cdfcks2t2r9s73a58us0") //"ckd7ee2fic3c73dtendg") assert.NoError(t, err) + assert.NotEmpty(t, idx) fmt.Print(checks) // assert.Contains(t, diff --git a/management/internals/network_map_db/pgsql/network_map_data.go b/management/internals/network_map_db/pgsql/network_map_data.go index f7dc86113..076483b15 100644 --- a/management/internals/network_map_db/pgsql/network_map_data.go +++ b/management/internals/network_map_db/pgsql/network_map_data.go @@ -52,7 +52,7 @@ func (pg *PgStore) GetNetworkMapData(ctx context.Context, accountId string) (*ne if err != nil { return rollbackAndReturnError(ctx, tx, err) } - postureChecks, err := GetPostureChecksViaPgxConnection(ctx, tx.Conn(), accountId) + postureChecks, postureCheckXIDToPublicID, err := GetPostureChecksViaPgxConnection(ctx, tx.Conn(), accountId) if err != nil { return rollbackAndReturnError(ctx, tx, err) } @@ -112,23 +112,24 @@ func (pg *PgStore) GetNetworkMapData(ctx context.Context, accountId string) (*ne } toret := networkmap.NetworkMapData{ - AccountSettings: &acctSettings, - DNSSettings: &dnsSettings, - Network: &network, - Peers: toMap(peers, func(p nmdata.Peer) string { return p.ID }), - Groups: toMap(groups, func(g nmdata.Group) string { return g.PublicID }), - Policies: toSliceOfPtrs(policies), - ResourcePolicies: resourcePolicies, - Routes: toSliceOfPtrs(routes), - Routers: routers, - NameServerGroups: toSliceOfPtrs(nsGroups), - NetworkResources: toSliceOfPtrs(networkResources), - PostureChecks: toMap(postureChecks, func(pc nmdata.PostureChecks) string { return pc.ID }), - AllowedUserIDs: allowedUserIds, - GroupIDToUserIDs: groupsToUserIds, - NetworkXIDToPublicID: networkXIDToPublicID, // TODO (dmitri) maybe we can switch to public ids everywhere? - AppliedZoneCandidates: dnsZones, - PrivateServiceCandidates: buildPrivateServiceCandidates(services, domains, proxyPeers), + AccountSettings: &acctSettings, + DNSSettings: &dnsSettings, + Network: &network, + Peers: toMap(peers, func(p nmdata.Peer) string { return p.ID }), + Groups: toMap(groups, func(g nmdata.Group) string { return g.PublicID }), + Policies: toSliceOfPtrs(policies), + ResourcePolicies: resourcePolicies, + Routes: toSliceOfPtrs(routes), + Routers: routers, + NameServerGroups: toSliceOfPtrs(nsGroups), + NetworkResources: toSliceOfPtrs(networkResources), + PostureChecks: toMap(postureChecks, func(pc nmdata.PostureChecks) string { return pc.ID }), + AllowedUserIDs: allowedUserIds, + GroupIDToUserIDs: groupsToUserIds, + NetworkXIDToPublicID: networkXIDToPublicID, // TODO (dmitri) maybe we can switch to public ids everywhere? + AppliedZoneCandidates: dnsZones, + PrivateServiceCandidates: buildPrivateServiceCandidates(services, domains, proxyPeers), + PostureCheckXIDToPublicID: postureCheckXIDToPublicID, } return &toret, nil diff --git a/management/internals/network_map_db/pgsql/posture.go b/management/internals/network_map_db/pgsql/posture.go index 7b3c97ae7..f995811ca 100644 --- a/management/internals/network_map_db/pgsql/posture.go +++ b/management/internals/network_map_db/pgsql/posture.go @@ -2,6 +2,7 @@ package networkmap_pgsql import ( "context" + "database/sql" "encoding/json" "reflect" @@ -12,45 +13,48 @@ import ( const ( GetPostureChecksQuery = ` - select public_id as id, checks + select id, public_id, checks from posture_checks where account_id=$1 ` ) -func (pg *PgStore) GetPostureChecks(ctx context.Context, accountId string) ([]nmdata.PostureChecks, error) { +func (pg *PgStore) GetPostureChecks(ctx context.Context, accountId string) ([]nmdata.PostureChecks, map[string]string, error) { c, err := pg.Pool.Acquire(ctx) if err != nil { - return nil, err + return nil, nil, err } return GetPostureChecksViaPgxConnection(ctx, c.Conn(), accountId) } -func GetPostureChecksViaPgxConnection(ctx context.Context, con *pgx.Conn, accountId string) ([]nmdata.PostureChecks, error) { +func GetPostureChecksViaPgxConnection(ctx context.Context, con *pgx.Conn, accountId string) ([]nmdata.PostureChecks, map[string]string, error) { rows, err := con.Query(ctx, GetPostureChecksQuery, accountId) if err != nil { - return nil, err + return nil, nil, err } checks, err := pgx.CollectRows(rows, pgx.RowToStructByName[posturechecks]) if err != nil { - return nil, err + return nil, nil, err } toret := make([]nmdata.PostureChecks, 0, len(checks)) + idToPublicIDIdx := make(map[string]string) for _, c := range checks { checks := nmdata.PostureChecks{} err := networkmapdb.FromSqlTypesToSharedTypes(reflect.ValueOf(&c), reflect.ValueOf(&checks)) if err != nil { - return nil, err + return nil, nil, err } toret = append(toret, checks) + idToPublicIDIdx[checks.ID] = c.PublicID.String } - return toret, nil + return toret, idToPublicIDIdx, nil } type posturechecks struct { - ID string - Checks json.RawMessage + ID string + PublicID sql.NullString `nmap:"skip"` + Checks json.RawMessage }