-
Notifications
You must be signed in to change notification settings - Fork 13
/
accessrequestdefinition.go
39 lines (31 loc) · 1.1 KB
/
accessrequestdefinition.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package handler
import (
"context"
agentcache "github.com/Axway/agent-sdk/pkg/agent/cache"
apiv1 "github.com/Axway/agent-sdk/pkg/apic/apiserver/models/api/v1"
management "github.com/Axway/agent-sdk/pkg/apic/apiserver/models/management/v1alpha1"
"github.com/Axway/agent-sdk/pkg/watchmanager/proto"
)
type ardHandler struct {
agentCacheManager agentcache.Manager
}
// NewARDHandler creates a Handler for Access Requests
func NewARDHandler(agentCacheManager agentcache.Manager) Handler {
return &ardHandler{
agentCacheManager: agentCacheManager,
}
}
// Handle processes grpc events triggered for AccessRequests
func (h *ardHandler) Handle(ctx context.Context, _ *proto.EventMeta, resource *apiv1.ResourceInstance) error {
action := GetActionFromContext(ctx)
if resource.Kind != management.AccessRequestDefinitionGVK().Kind {
return nil
}
if action == proto.Event_CREATED || action == proto.Event_UPDATED {
h.agentCacheManager.AddAccessRequestDefinition(resource)
}
if action == proto.Event_DELETED {
return h.agentCacheManager.DeleteAccessRequestDefinition(resource.Metadata.ID)
}
return nil
}