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  }