/
selector.go
53 lines (45 loc) · 1.51 KB
/
selector.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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package cloudtest
import (
"github.com/aws/aws-sdk-go-v2/service/lambda"
"github.com/pkg/errors"
)
// stackLambdaLiteralSelector returns a lambda function
type stackLambdaLiteralSelector struct {
literalName string
}
func (slls *stackLambdaLiteralSelector) Select(t CloudTest) (*lambda.GetFunctionOutput, error) {
output := cache.getFunction(t, slls.literalName)
if output == nil {
return nil, errors.Errorf("Failed to find named function: %s", slls.literalName)
}
return output, nil
}
// NewLambdaLiteralSelector returns a new LambdaSelector that just uses
// the hardcoded name
func NewLambdaLiteralSelector(functionName string) LambdaSelector {
return &stackLambdaLiteralSelector{
literalName: functionName,
}
}
// stackLambdasSelector returns a lambda function
type stackLambdasSelector struct {
stackName string
jmesSelector string
}
func (sls *stackLambdasSelector) Select(t CloudTest) (*lambda.GetFunctionOutput, error) {
functionOutput := cache.getStackFunction(t, sls.stackName, sls.jmesSelector)
if functionOutput == nil {
return nil, errors.Errorf("Failed to find AWS Lambda in stack %s for selector: %s",
sls.stackName,
sls.jmesSelector)
}
return functionOutput, nil
}
// NewStackLambdaSelector returns a new LambdaSelector using the jmesSelector
// expression against all GetFunctionOutputs for that lambda function
func NewStackLambdaSelector(stackName string, jmesSelector string) LambdaSelector {
return &stackLambdasSelector{
stackName: stackName,
jmesSelector: jmesSelector,
}
}