agent/association/processor/deps.go (41 lines of code) (raw):
// Copyright 2016 Amazon.com, Inc. or its affiliates. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License"). You may not
// use this file except in compliance with the License. A copy of the
// License is located at
//
// http://aws.amazon.com/apache2.0/
//
// or in the "license" file accompanying this file. This file is distributed
// on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
// either express or implied. See the License for the specific language governing
// permissions and limitations under the License.
// Package processor manage polling of associations, dispatching association to processor
package processor
import (
"github.com/aws/amazon-ssm-agent/agent/association/model"
"github.com/aws/amazon-ssm-agent/agent/association/parser"
"github.com/aws/amazon-ssm-agent/agent/context"
"github.com/aws/amazon-ssm-agent/agent/contracts"
"github.com/aws/amazon-ssm-agent/agent/framework/docmanager"
"github.com/aws/amazon-ssm-agent/agent/log"
messageContract "github.com/aws/amazon-ssm-agent/agent/runcommand/contracts"
)
type AssocList []string
var assocParser parserService = &assocParserService{}
var assocBookkeeping bookkeepingService = &assocBookkeepingService{}
// PluginAssociationInstances cached the number of associations attached to a specific type of plugin
var pluginAssociationInstances = make(map[string]AssocList)
func getPluginAssociationInstances() map[string]AssocList {
return pluginAssociationInstances
}
// bookkeepingService represents the dependency for docmanager
type bookkeepingService interface {
DeleteOldOrchestrationDirectories(log log.T, instanceID, orchestrationRootDirName string, retentionDurationHours int, associationRetentionDurationHours int)
}
type assocBookkeepingService struct{}
func (assocBookkeepingService) DeleteOldOrchestrationDirectories(log log.T, instanceID, orchestrationRootDirName string, retentionDurationHours int, associationRetentionDurationHours int) {
docmanager.DeleteOldOrchestrationDirectories(log, instanceID, orchestrationRootDirName, retentionDurationHours, associationRetentionDurationHours)
}
// parserService represents the dependency for association parser
type parserService interface {
ParseDocumentForPayload(log log.T, rawData *model.InstanceAssociation) (*messageContract.SendCommandPayload, error)
InitializeDocumentState(context context.T,
payload *messageContract.SendCommandPayload,
rawData *model.InstanceAssociation) (contracts.DocumentState, error)
}
type assocParserService struct{}
// ParseDocumentWithParams wraps parser ParseDocumentWithParams
func (assocParserService) ParseDocumentForPayload(
log log.T,
rawData *model.InstanceAssociation) (*messageContract.SendCommandPayload, error) {
return parser.ParseDocumentForPayload(log, rawData)
}
// InitializeDocumentState wraps engine InitializeCommandState
func (assocParserService) InitializeDocumentState(context context.T,
payload *messageContract.SendCommandPayload,
rawData *model.InstanceAssociation) (contracts.DocumentState, error) {
return parser.InitializeDocumentState(context, payload, rawData)
}