func()

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)
	}
}