github.com/Axway/agent-sdk@v1.1.101/pkg/agent/handler/accessrequestdefinition.go (about)

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