github.com/Axway/agent-sdk@v1.1.101/pkg/agent/handler/environment.go (about) 1 package handler 2 3 import ( 4 "context" 5 6 agentcache "github.com/Axway/agent-sdk/pkg/agent/cache" 7 v1 "github.com/Axway/agent-sdk/pkg/apic/apiserver/models/api/v1" 8 environment "github.com/Axway/agent-sdk/pkg/apic/apiserver/models/management/v1alpha1" 9 management "github.com/Axway/agent-sdk/pkg/apic/apiserver/models/management/v1alpha1" 10 "github.com/Axway/agent-sdk/pkg/config" 11 "github.com/Axway/agent-sdk/pkg/watchmanager/proto" 12 ) 13 14 type environmentHandler struct { 15 agentCacheManager agentcache.Manager 16 credentialConfig config.CredentialConfig 17 envName string 18 } 19 20 // NewEnvironmentHandler creates a Handler for Environments. 21 func NewEnvironmentHandler(agentCacheManager agentcache.Manager, credentialConfig config.CredentialConfig, envName string) Handler { 22 return &environmentHandler{ 23 agentCacheManager: agentCacheManager, 24 credentialConfig: credentialConfig, 25 envName: envName, 26 } 27 } 28 29 func (c *environmentHandler) Handle(ctx context.Context, meta *proto.EventMeta, resource *v1.ResourceInstance) error { 30 if resource.Kind != environment.EnvironmentGVK().Kind { 31 return nil 32 } 33 34 if resource.Metadata.Scope.Name != c.envName { 35 return nil 36 } 37 38 // verify that action is subresource updated and meta subsresource is environment policy 39 action := GetActionFromContext(ctx) 40 if action != proto.Event_SUBRESOURCEUPDATED || meta.Subresource != management.EnvironmentPoliciesSubResourceName { 41 return nil 42 } 43 44 log := getLoggerFromContext(ctx).WithComponent("environmentHandler") 45 env := &management.Environment{} 46 err := env.FromInstance(resource) 47 if err != nil { 48 log.WithError(err).Error("could not handle access request") 49 return nil 50 } 51 52 // Set up credential config from environment resource policies 53 c.credentialConfig.SetShouldDeprovisionExpired(env.Policies.Credentials.Expiry.Action == "deprovision") 54 c.credentialConfig.SetExpirationDays(int(env.Policies.Credentials.Expiry.Period)) 55 56 return nil 57 }