in cmd/resource/action.go [211:264]
func (c *Clients) initializeLambda(l *lambdaResource) (bool, error) {
state, err := checklambdaState(c.AWSClients.LambdaClient(nil, nil), l.functionName)
if err != nil {
return false, err
}
switch state {
case StateNotFound:
log.Printf("VPC connector %s not found", *l.functionName)
err := createFunction(c.AWSClients.LambdaClient(nil, nil), l)
if err != nil {
return false, err
}
count := 0
for count < retryCount {
state, err = checklambdaState(c.AWSClients.LambdaClient(nil, nil), l.functionName)
if err != nil {
return false, err
}
if state == StateActive {
return true, nil
}
time.Sleep(5 * time.Second)
count++
}
return false, nil
case StateActive:
var err error
l.functionOutput, err = getFunction(c.AWSClients.LambdaClient(nil, nil), l.functionName)
if err != nil {
return false, err
}
err = updateFunction(c.AWSClients.LambdaClient(nil, nil), l)
if err != nil {
return false, err
}
return true, nil
case StatePending:
count := 0
for count < retryCount {
state, err = checklambdaState(c.AWSClients.LambdaClient(nil, nil), l.functionName)
if err != nil {
return false, err
}
if state == StateActive {
return true, nil
}
time.Sleep(8 * time.Second)
count++
}
return false, nil
default:
return false, fmt.Errorf("%s not in desired state: %s", *l.functionName, state)
}
}