Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
159 commits
Select commit Hold shift + click to select a range
48d8987
feat(policy): add enhanced standard/custom actions protos
jakedoublev Mar 31, 2025
05334f2
reserve field names as well
jakedoublev Mar 31, 2025
3751250
rm deprecated actions
jakedoublev Mar 31, 2025
b91a1d9
Merge branch 'main' into feat/actions-protos
jakedoublev Mar 31, 2025
824f876
allow migration before hard deprecation
jakedoublev Mar 31, 2025
d83783e
access pdp todo comment
jakedoublev Mar 31, 2025
ad9512c
list should specify stand/cust in response, and proactively prevent f…
jakedoublev Apr 1, 2025
bf28fcf
Merge branch 'main' into feat/actions-protos
jakedoublev Apr 1, 2025
809b956
Merge branch 'main' into feat/actions-svc
jakedoublev Apr 1, 2025
f39adac
actions svc
jakedoublev Apr 1, 2025
857f493
Merge branch 'main' into feat/actions-protos
jakedoublev Apr 1, 2025
5e3374f
Merge branch 'feat/actions-protos' into feat/actions-svc
jakedoublev Apr 1, 2025
1fe24f5
proto validation
jakedoublev Apr 1, 2025
03fcd4c
actions mermaid ERD for the migration
jakedoublev Apr 1, 2025
b800517
migrate up and down
jakedoublev Apr 1, 2025
f5592b1
wip
jakedoublev Apr 1, 2025
021d2c7
update overall erd
jakedoublev Apr 1, 2025
4ad71a2
update migrations with relation table
jakedoublev Apr 1, 2025
fb3fd22
global policy erd styling
jakedoublev Apr 1, 2025
3c48cba
fix migration markdown notes
jakedoublev Apr 1, 2025
85938a4
timestamp with time zone
jakedoublev Apr 2, 2025
38068ab
list actions query
jakedoublev Apr 2, 2025
9fa0396
add subject mappings to get action response
jakedoublev Apr 2, 2025
74d4fd7
Merge branch 'feat/actions-protos' into feat/actions-svc
jakedoublev Apr 2, 2025
76c664b
Merge branch 'feat/actions-svc' into feat/actions-db
jakedoublev Apr 2, 2025
1ddc082
CRUD of actions (not including subject mappings yet
jakedoublev Apr 2, 2025
445ff05
wip
jakedoublev Apr 2, 2025
dcd40c4
mini ADR for storing standard actions
jakedoublev Apr 2, 2025
a67018f
rework protos according to mini-ADR and how we'll store standard actions
jakedoublev Apr 2, 2025
2307646
Merge branch 'feat/actions-protos' into feat/actions-svc
jakedoublev Apr 2, 2025
b2b720b
Merge branch 'feat/actions-svc' into feat/actions-db
jakedoublev Apr 2, 2025
02fc6d1
wip
jakedoublev Apr 3, 2025
406aa4d
fix and gencode
jakedoublev Apr 3, 2025
82a5df7
fix
jakedoublev Apr 3, 2025
ff78374
lower case sm db queries in sqlc gencode
jakedoublev Apr 3, 2025
ae486bb
wip
jakedoublev Apr 3, 2025
86537a6
wip
jakedoublev Apr 3, 2025
b1aaa0a
fix
jakedoublev Apr 3, 2025
b1a973b
fix
jakedoublev Apr 3, 2025
63a1806
fix
jakedoublev Apr 4, 2025
c518f45
run suites again
jakedoublev Apr 4, 2025
b91046a
fix subject mapping retrieval in lookup by fqn
jakedoublev Apr 4, 2025
9b26484
improve test
jakedoublev Apr 4, 2025
098c75f
lint fixes
jakedoublev Apr 4, 2025
250e40b
stub actions integration test suite
jakedoublev Apr 4, 2025
cc4666a
wip
jakedoublev Apr 4, 2025
5e00695
fix list actions which was not considering limit/offset in query
jakedoublev Apr 7, 2025
b038163
Merge branch 'main' into feat/actions-protos
jakedoublev Apr 8, 2025
5b83f99
Merge branch 'feat/actions-protos' into feat/actions-svc
jakedoublev Apr 8, 2025
f1a7012
Merge branch 'feat/actions-svc' into feat/actions-db
jakedoublev Apr 8, 2025
21a568e
Merge branch 'feat/actions-db' into feat/actions-db-2
jakedoublev Apr 8, 2025
c26a6c6
create sm with nonexistent action ID fails
jakedoublev Apr 8, 2025
0610352
fix list actions query
jakedoublev Apr 8, 2025
b435036
lower case action names
jakedoublev Apr 8, 2025
10322a5
more tests
jakedoublev Apr 8, 2025
7446ff7
another sm test around actions
jakedoublev Apr 8, 2025
7eb526f
more tests
jakedoublev Apr 8, 2025
1e831d3
spelling
jakedoublev Apr 9, 2025
c1cb712
Merge branch 'feat/actions-db' into feat/actions-db-2
jakedoublev Apr 9, 2025
9f607f1
define standard actions type
jakedoublev Apr 9, 2025
3c3059f
more tests
jakedoublev Apr 9, 2025
3b4935c
remove updateStandardAction query
jakedoublev Apr 9, 2025
9d667b3
fix sm update query
jakedoublev Apr 9, 2025
13ef076
make action update name optional
jakedoublev Apr 9, 2025
8273cd1
Merge branch 'feat/actions-protos' into feat/actions-svc
jakedoublev Apr 9, 2025
0419fba
Merge branch 'feat/actions-svc' into feat/actions-db
jakedoublev Apr 9, 2025
c59be99
Merge branch 'feat/actions-db' into feat/actions-db-2
jakedoublev Apr 9, 2025
15a7e85
Merge branch 'main' into feat/actions-protos
jakedoublev Apr 10, 2025
ef5500a
Merge branch 'feat/actions-protos' into feat/actions-svc
jakedoublev Apr 10, 2025
3a3dddc
Merge branch 'feat/actions-svc' into feat/actions-db
jakedoublev Apr 10, 2025
2f06e49
Merge branch 'feat/actions-db' into feat/actions-db-2
jakedoublev Apr 10, 2025
8882056
feat(policy): actions service RPCs should roundtrip to db layer
jakedoublev Apr 10, 2025
e196a86
lint fixes
jakedoublev Apr 11, 2025
78e1d1d
lint fixes
jakedoublev Apr 11, 2025
9551f71
Merge branch 'feat/actions-svc' into feat/actions-db
jakedoublev Apr 11, 2025
9a24131
Merge branch 'feat/actions-db' into feat/actions-db-2
jakedoublev Apr 11, 2025
f4e289a
Merge branch 'feat/actions-db-2' into feat/actions-svc-2
jakedoublev Apr 11, 2025
8c7f6bb
lint fix
jakedoublev Apr 11, 2025
973d877
Merge remote-tracking branch 'origin' into feat/actions-protos
jakedoublev Apr 11, 2025
e94278c
bump migration timestamp
jakedoublev Apr 11, 2025
4873b73
test custom rules
jakedoublev Apr 11, 2025
b37bb13
Merge branch 'feat/actions-protos' into feat/actions-svc
jakedoublev Apr 11, 2025
8a37484
bump proto-generating deps
jakedoublev Apr 11, 2025
748fdb4
validator is no longer a pointer
jakedoublev Apr 11, 2025
8df00e0
consume latest proto rules
jakedoublev Apr 11, 2025
f62fb0d
test common rule protos
jakedoublev Apr 11, 2025
23a6ab7
rules proto file rename and regeneration with improved CEL
jakedoublev Apr 11, 2025
b3d8ecc
Merge branch 'feat/actions-protos' into feat/actions-svc
jakedoublev Apr 11, 2025
c4ffbc5
rename string extension rules
jakedoublev Apr 11, 2025
d0dd460
defunct test case
jakedoublev Apr 11, 2025
22eedab
Merge branch 'main' into feat/actions-protos
jakedoublev Apr 11, 2025
98df67c
rm extraneous comment
jakedoublev Apr 11, 2025
279aa1e
put back authz service logic
jakedoublev Apr 11, 2025
ce7928e
Merge branch 'feat/actions-protos' into feat/actions-svc
jakedoublev Apr 11, 2025
6d992f4
bump protovalidate
jakedoublev Apr 11, 2025
2cc0784
go mod tidy
jakedoublev Apr 11, 2025
002795f
Merge branch 'feat/actions-protos' into feat/actions-svc
jakedoublev Apr 11, 2025
486f9e0
bump to 1.23.4
jakedoublev Apr 11, 2025
b56eb55
Merge branch 'feat/actions-protos' into feat/actions-svc
jakedoublev Apr 11, 2025
892f115
put back protocol/go bump
jakedoublev Apr 11, 2025
894455b
fix unit tests
jakedoublev Apr 11, 2025
03a9a0d
bump proto-validate in service package to be compatible with CI
jakedoublev Apr 11, 2025
c38d722
go mod tidy
jakedoublev Apr 11, 2025
c9a0eef
bump connect dep as well
jakedoublev Apr 11, 2025
48121d2
trigger CI
jakedoublev Apr 11, 2025
aa99448
Merge branch 'main' into feat/actions-protos
jakedoublev Apr 14, 2025
158604a
Merge branch 'feat/actions-protos' into feat/actions-svc
jakedoublev Apr 14, 2025
7a55a40
test replacement with protocol/go containing proto validations
jakedoublev Apr 14, 2025
18a5f98
service should follow policy patterns with config update hooks
jakedoublev Apr 14, 2025
bbba5d0
Merge branch 'main' into feat/actions-svc
jakedoublev Apr 14, 2025
a598989
fix(policy): remove predefined rules in actions protos
jakedoublev Apr 14, 2025
7f14f6f
fix
jakedoublev Apr 14, 2025
ae9f697
test rm predefined proto rules
jakedoublev Apr 14, 2025
fd854f5
Merge branch 'fix/rm-predefined' into feat/actions-svc
jakedoublev Apr 14, 2025
5498a27
fix proto validation failure names
jakedoublev Apr 14, 2025
2551747
fix proto validation failure names
jakedoublev Apr 14, 2025
61bfcb4
fix tests
jakedoublev Apr 14, 2025
d97099d
downgrade protovalidate/protocolbuffers/go
jakedoublev Apr 14, 2025
488d655
Merge branch 'fix/rm-predefined' into feat/actions-svc
jakedoublev Apr 14, 2025
9077368
update replacement directive pin commit
jakedoublev Apr 14, 2025
0dd18ae
fix optional updation
jakedoublev Apr 14, 2025
c6a2040
codegen
jakedoublev Apr 14, 2025
428133a
Merge branch 'fix/rm-predefined' into feat/actions-svc
jakedoublev Apr 14, 2025
2a85aeb
fix actions_test
jakedoublev Apr 14, 2025
8e7b771
update pinned commit
jakedoublev Apr 14, 2025
d67cdf7
Merge branch 'main' into feat/actions-svc
jakedoublev Apr 17, 2025
06426f3
bump sdk
jakedoublev Apr 17, 2025
2c673b1
Merge branch 'feat/actions-svc' into feat/actions-db
jakedoublev Apr 17, 2025
cc82f5b
Merge branch 'feat/actions-db' into feat/actions-db-2
jakedoublev Apr 17, 2025
8d91e62
Merge branch 'feat/actions-db-2' into feat/actions-svc-2
jakedoublev Apr 17, 2025
13d0a0f
Merge branch 'main' into feat/actions-db
jakedoublev Apr 17, 2025
d01b524
typo
jakedoublev Apr 17, 2025
c53f359
lint fix
jakedoublev Apr 17, 2025
c82aaca
Merge branch 'main' into feat/actions-db
jakedoublev Apr 17, 2025
c8643d3
feat(policy): actions db CRUD handlers and integration tests (db part…
jakedoublev Apr 17, 2025
e839876
lint fixes
jakedoublev Apr 17, 2025
b84dade
fix test
jakedoublev Apr 17, 2025
b5cfc1d
improve migration
jakedoublev Apr 21, 2025
cdc32c0
re-export standard CRUDable action names and update roundtrip CI tests
jakedoublev Apr 21, 2025
c117675
Merge branch 'main' into feat/actions-db
jakedoublev Apr 21, 2025
3e15cbe
Merge branch 'main' into feat/actions-db
jakedoublev Apr 21, 2025
52e975b
copilot suggestions
jakedoublev Apr 21, 2025
4003eff
test resolving circular CI issues
jakedoublev Apr 21, 2025
53697e3
different tweak to map subject mapping create/update with deprecated …
jakedoublev Apr 21, 2025
91e280d
tweak
jakedoublev Apr 21, 2025
5c05080
add skipped create/udpate tests to be removed when create/update SM w…
jakedoublev Apr 21, 2025
0a4dbcd
typo
jakedoublev Apr 21, 2025
83e68ab
Merge branch 'feat/actions-db' into feat/actions-svc-2
jakedoublev Apr 21, 2025
d997c65
add actions to SDK and alphabetize
jakedoublev Apr 22, 2025
fc8eefe
Merge branch 'main' into feat/actions-svc-2
jakedoublev Apr 22, 2025
1351cb3
fix service registry test
jakedoublev Apr 22, 2025
5bb5d0e
rm extraneous error check
jakedoublev Apr 22, 2025
4e8b8cc
pr comments
jakedoublev Apr 23, 2025
a04bc56
audit/logs cleanup around transactions
jakedoublev Apr 23, 2025
e911976
fmt
jakedoublev Apr 23, 2025
db5a5d1
Merge branch 'main' into feat/actions-svc-2
jakedoublev Apr 23, 2025
7ad4122
Merge branch 'main' into feat/actions-svc-2
jakedoublev Apr 23, 2025
dfa7782
make sure actions service client is not nil
jakedoublev Apr 23, 2025
3f8431f
Merge branch 'main' into feat/actions-svc-2
jakedoublev Apr 23, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 7 additions & 4 deletions sdk/sdk.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (
"github.com/opentdf/platform/protocol/go/authorization"
"github.com/opentdf/platform/protocol/go/entityresolution"
"github.com/opentdf/platform/protocol/go/policy"
"github.com/opentdf/platform/protocol/go/policy/actions"
"github.com/opentdf/platform/protocol/go/policy/attributes"
"github.com/opentdf/platform/protocol/go/policy/kasregistry"
"github.com/opentdf/platform/protocol/go/policy/namespaces"
Expand Down Expand Up @@ -63,14 +64,15 @@ type SDK struct {
conn *grpc.ClientConn
dialOptions []grpc.DialOption
tokenSource auth.AccessTokenSource
Namespaces namespaces.NamespaceServiceClient
Actions actions.ActionServiceClient
Attributes attributes.AttributesServiceClient
Authorization authorization.AuthorizationServiceClient
EntityResoution entityresolution.EntityResolutionServiceClient
KeyAccessServerRegistry kasregistry.KeyAccessServerRegistryServiceClient
Namespaces namespaces.NamespaceServiceClient
ResourceMapping resourcemapping.ResourceMappingServiceClient
SubjectMapping subjectmapping.SubjectMappingServiceClient
KeyAccessServerRegistry kasregistry.KeyAccessServerRegistryServiceClient
Unsafe unsafe.UnsafeServiceClient
Authorization authorization.AuthorizationServiceClient
EntityResoution entityresolution.EntityResolutionServiceClient
wellknownConfiguration wellknownconfiguration.WellKnownServiceClient
}

Expand Down Expand Up @@ -193,6 +195,7 @@ func New(platformEndpoint string, opts ...Option) (*SDK, error) {
conn: platformConn,
dialOptions: dialOptions,
tokenSource: accessTokenSource,
Actions: actions.NewActionServiceClient(platformConn),
Attributes: attributes.NewAttributesServiceClient(platformConn),
Namespaces: namespaces.NewNamespaceServiceClient(platformConn),
ResourceMapping: resourcemapping.NewResourceMappingServiceClient(platformConn),
Expand Down
3 changes: 3 additions & 0 deletions service/logger/audit/constants.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ const (
ObjectTypeEntityObject
ObjectTypeResourceMappingGroup
ObjectTypePublicKey
ObjectTypeAction
)

func (ot ObjectType) String() string {
Expand All @@ -38,6 +39,8 @@ func (ot ObjectType) String() string {
"key_object",
"entity_object",
"resource_mapping_group",
"public_key",
"action",
}[ot]
}

Expand Down
10 changes: 6 additions & 4 deletions service/pkg/server/services_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ type mockTestServiceOptions struct {
dbRegister serviceregistry.DBRegister
}

const numExpectedPolicyServices = 7

func mockTestServiceRegistry(opts mockTestServiceOptions) (serviceregistry.IService, *spyTestService) {
spy := &spyTestService{}
mockTestServiceDefaults := mockTestServiceOptions{
Expand Down Expand Up @@ -112,7 +114,7 @@ func (suite *ServiceTestSuite) Test_RegisterCoreServices_In_Mode_ALL_Expect_All_

policy, err := registry.GetNamespace(servicePolicy)
suite.Require().NoError(err)
suite.Len(policy.Services, 6)
suite.Len(policy.Services, numExpectedPolicyServices)
suite.Equal(modeCore, policy.Mode)

wellKnown, err := registry.GetNamespace(serviceWellKnown)
Expand Down Expand Up @@ -143,7 +145,7 @@ func (suite *ServiceTestSuite) Test_RegisterCoreServices_In_Mode_Core_Expect_Cor

policy, err := registry.GetNamespace(servicePolicy)
suite.Require().NoError(err)
suite.Len(policy.Services, 6)
suite.Len(policy.Services, numExpectedPolicyServices)
suite.Equal(modeCore, policy.Mode)

wellKnown, err := registry.GetNamespace(serviceWellKnown)
Expand All @@ -170,7 +172,7 @@ func (suite *ServiceTestSuite) Test_RegisterServices_In_Mode_Core_Plus_Kas_Expec

policy, err := registry.GetNamespace(servicePolicy)
suite.Require().NoError(err)
suite.Len(policy.Services, 6)
suite.Len(policy.Services, numExpectedPolicyServices)
suite.Equal(modeCore, policy.Mode)

wellKnown, err := registry.GetNamespace(serviceWellKnown)
Expand All @@ -197,7 +199,7 @@ func (suite *ServiceTestSuite) Test_RegisterServices_In_Mode_Core_Plus_Kas_Expec

policy, err := registry.GetNamespace(servicePolicy)
suite.Require().NoError(err)
suite.Len(policy.Services, 6)
suite.Len(policy.Services, numExpectedPolicyServices)
suite.Equal(modeCore, policy.Mode)

wellKnown, err := registry.GetNamespace(serviceWellKnown)
Expand Down
119 changes: 108 additions & 11 deletions service/policy/actions/actions.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,16 @@ package actions

import (
"context"
"errors"
"fmt"
"log/slog"

"connectrpc.com/connect"
"github.com/opentdf/platform/protocol/go/policy/actions"
"github.com/opentdf/platform/protocol/go/policy/actions/actionsconnect"
"github.com/opentdf/platform/service/logger"
"github.com/opentdf/platform/service/logger/audit"
"github.com/opentdf/platform/service/pkg/config"
"github.com/opentdf/platform/service/pkg/db"
"github.com/opentdf/platform/service/pkg/serviceregistry"

policyconfig "github.com/opentdf/platform/service/policy/config"
Expand Down Expand Up @@ -78,22 +79,118 @@ func NewRegistration(ns string, dbRegister serviceregistry.DBRegister) *servicer
}
}

func (a *ActionService) GetAction(context.Context, *connect.Request[actions.GetActionRequest]) (*connect.Response[actions.GetActionResponse], error) {
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("GetAction is not implemented"))
func (a *ActionService) GetAction(ctx context.Context, req *connect.Request[actions.GetActionRequest]) (*connect.Response[actions.GetActionResponse], error) {
rsp := &actions.GetActionResponse{}

a.logger.DebugContext(ctx, "getting action", slog.Any("identifier", req.Msg.GetIdentifier()))

action, err := a.dbClient.GetAction(ctx, req.Msg)
if err != nil {
return nil, db.StatusifyError(err, db.ErrTextGetRetrievalFailed, slog.Any("identifier", req.Msg.GetIdentifier()))
}
rsp.Action = action

return connect.NewResponse(rsp), nil
}

func (a *ActionService) ListActions(context.Context, *connect.Request[actions.ListActionsRequest]) (*connect.Response[actions.ListActionsResponse], error) {
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ListActions is not implemented"))
func (a *ActionService) ListActions(ctx context.Context, req *connect.Request[actions.ListActionsRequest]) (*connect.Response[actions.ListActionsResponse], error) {
a.logger.DebugContext(ctx, "listing actions")
rsp, err := a.dbClient.ListActions(ctx, req.Msg)
if err != nil {
return nil, db.StatusifyError(err, db.ErrTextListRetrievalFailed)
}
a.logger.DebugContext(ctx, "listed actions")
return connect.NewResponse(rsp), nil
}

func (a *ActionService) CreateAction(context.Context, *connect.Request[actions.CreateActionRequest]) (*connect.Response[actions.CreateActionResponse], error) {
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("CreateAction is not implemented"))
func (a *ActionService) CreateAction(ctx context.Context, req *connect.Request[actions.CreateActionRequest]) (*connect.Response[actions.CreateActionResponse], error) {
a.logger.DebugContext(ctx, "creating action", slog.String("name", req.Msg.GetName()))
auditParams := audit.PolicyEventParams{
ActionType: audit.ActionTypeCreate,
ObjectType: audit.ObjectTypeAction,
}
rsp := &actions.CreateActionResponse{}

err := a.dbClient.RunInTx(ctx, func(txClient *policydb.PolicyDBClient) error {
action, err := txClient.CreateAction(ctx, req.Msg)
if err != nil {
return err
}

auditParams.ObjectID = action.GetId()
auditParams.Original = action
a.logger.Audit.PolicyCRUDSuccess(ctx, auditParams)

rsp.Action = action
return nil
})
if err != nil {
a.logger.Audit.PolicyCRUDFailure(ctx, auditParams)
return nil, db.StatusifyError(err, db.ErrTextCreationFailed, slog.String("action", req.Msg.String()))
}
return connect.NewResponse(rsp), nil
}

func (a *ActionService) UpdateAction(context.Context, *connect.Request[actions.UpdateActionRequest]) (*connect.Response[actions.UpdateActionResponse], error) {
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("UpdateAction is not implemented"))
func (a *ActionService) UpdateAction(ctx context.Context, req *connect.Request[actions.UpdateActionRequest]) (*connect.Response[actions.UpdateActionResponse], error) {
actionID := req.Msg.GetId()
a.logger.DebugContext(ctx, "updating action", slog.String("id", actionID))
rsp := &actions.UpdateActionResponse{}

auditParams := audit.PolicyEventParams{
ActionType: audit.ActionTypeUpdate,
ObjectType: audit.ObjectTypeAction,
ObjectID: actionID,
}

err := a.dbClient.RunInTx(ctx, func(txClient *policydb.PolicyDBClient) error {
original, err := txClient.GetAction(ctx, &actions.GetActionRequest{
Identifier: &actions.GetActionRequest_Id{
Id: actionID,
},
})
if err != nil {
return err
}

updated, err := txClient.UpdateAction(ctx, req.Msg)
if err != nil {
return err
}

auditParams.Original = original
auditParams.Updated = updated
a.logger.Audit.PolicyCRUDSuccess(ctx, auditParams)

rsp.Action = updated
return nil
})
if err != nil {
a.logger.Audit.PolicyCRUDFailure(ctx, auditParams)
return nil, db.StatusifyError(err, db.ErrTextUpdateFailed, slog.String("action", req.Msg.String()))
}

return connect.NewResponse(rsp), nil
}

func (a *ActionService) DeleteAction(context.Context, *connect.Request[actions.DeleteActionRequest]) (*connect.Response[actions.DeleteActionResponse], error) {
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("DeleteAction is not implemented"))
func (a *ActionService) DeleteAction(ctx context.Context, req *connect.Request[actions.DeleteActionRequest]) (*connect.Response[actions.DeleteActionResponse], error) {
rsp := &actions.DeleteActionResponse{}
actionID := req.Msg.GetId()

auditParams := audit.PolicyEventParams{
ActionType: audit.ActionTypeDelete,
ObjectType: audit.ObjectTypeAction,
ObjectID: actionID,
}
a.logger.DebugContext(ctx, "deleting action", slog.String("id", actionID))

deleted, err := a.dbClient.DeleteAction(ctx, req.Msg)
if err != nil {
a.logger.Audit.PolicyCRUDFailure(ctx, auditParams)
return nil, db.StatusifyError(err, db.ErrTextDeletionFailed, slog.String("action", req.Msg.String()))
}

a.logger.Audit.PolicyCRUDSuccess(ctx, auditParams)
rsp.Action = deleted

return connect.NewResponse(rsp), nil
}
3 changes: 1 addition & 2 deletions service/policy/db/actions.go
Original file line number Diff line number Diff line change
Expand Up @@ -199,8 +199,7 @@ func (c PolicyDBClient) DeleteAction(ctx context.Context, req *actions.DeleteAct
}
// standard action
name := strings.ToLower(got.GetName())
isStandard := ActionStandard(name).IsValid()
if isStandard {
if ActionStandard(name).IsValid() {
return nil, fmt.Errorf("cannot delete standard action %s: %w", name, db.ErrRestrictViolation)
}
return nil, db.ErrNotFound
Expand Down
1 change: 0 additions & 1 deletion service/policy/db/query.sql
Original file line number Diff line number Diff line change
Expand Up @@ -1228,7 +1228,6 @@ INSERT INTO attribute_value_public_key_map (value_id, key_id) VALUES ($1, $2);
-- name: removePublicKeyFromAttributeValue :execrows
DELETE FROM attribute_value_public_key_map WHERE value_id = $1 AND key_id = $2;


----------------------------------------------------------------
-- ACTIONS
----------------------------------------------------------------
Expand Down
6 changes: 0 additions & 6 deletions service/policy/db/subject_mappings.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ import (
"fmt"
"strings"

"github.com/jackc/pgerrcode"
"github.com/jackc/pgx/v5"
"github.com/opentdf/platform/protocol/go/common"
"github.com/opentdf/platform/protocol/go/policy"
"github.com/opentdf/platform/protocol/go/policy/subjectmapping"
Expand Down Expand Up @@ -508,10 +506,6 @@ func (c PolicyDBClient) UpdateSubjectMapping(ctx context.Context, r *subjectmapp

_, err = c.Queries.updateSubjectMapping(ctx, updateParams)
if err != nil {
// CTE behavior requires custom handling with divide by zero to detect 0 count
if strings.Contains(err.Error(), pgerrcode.DivisionByZero) {
err = pgx.ErrNoRows
}
return nil, db.WrapIfKnownInvalidQueryErr(err)
}

Expand Down
1 change: 0 additions & 1 deletion service/policy/namespaces/namespaces.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,6 @@ func (ns NamespacesService) GetNamespace(ctx context.Context, req *connect.Reque

func (ns NamespacesService) CreateNamespace(ctx context.Context, req *connect.Request[namespaces.CreateNamespaceRequest]) (*connect.Response[namespaces.CreateNamespaceResponse], error) {
ns.logger.Debug("creating new namespace", slog.String("name", req.Msg.GetName()))

auditParams := audit.PolicyEventParams{
ActionType: audit.ActionTypeCreate,
ObjectType: audit.ObjectTypeNamespace,
Expand Down
2 changes: 2 additions & 0 deletions service/policy/policy.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"embed"

"github.com/opentdf/platform/service/pkg/serviceregistry"
"github.com/opentdf/platform/service/policy/actions"
"github.com/opentdf/platform/service/policy/attributes"
"github.com/opentdf/platform/service/policy/db/migrations"
"github.com/opentdf/platform/service/policy/kasregistry"
Expand Down Expand Up @@ -34,6 +35,7 @@ func NewRegistrations() []serviceregistry.IService {
subjectmapping.NewRegistration(namespace, dbRegister),
kasregistry.NewRegistration(namespace, dbRegister),
unsafe.NewRegistration(namespace, dbRegister),
actions.NewRegistration(namespace, dbRegister),
}...)
return registrations
}
Loading