func Read()

in cmd/resource/resource.go [45:113]


func Read(req handler.Request, _ *Model, currentModel *Model) (handler.ProgressEvent, error) {
	data, err := DecodeID(currentModel.ID)
	if err != nil {
		return makeEvent(nil, NoStage, NewError(ErrCodeInvalidException, err.Error())), nil
	}
	// Load model with decode values of ID.
	currentModel.Name = data.Name
	currentModel.Namespace = data.Namespace
	currentModel.ClusterID = data.ClusterID
	currentModel.KubeConfig = data.KubeConfig
	currentModel.VPCConfiguration = data.VPCConfiguration

	client, err := NewClients(currentModel.ClusterID, currentModel.KubeConfig, data.Namespace, req.Session, currentModel.RoleArn, nil, currentModel.VPCConfiguration)
	if err != nil {
		return makeEvent(currentModel, NoStage, NewError(ErrCodeInvalidException, err.Error())), nil
	}
	if IsZero(currentModel.VPCConfiguration) && currentModel.ClusterID != nil {
		currentModel.VPCConfiguration, err = getVpcConfig(client.AWSClients.EKSClient(nil, nil), client.AWSClients.EC2Client(nil, nil), currentModel)
		if err != nil {
			return makeEvent(currentModel, NoStage, NewError(ErrCodeInvalidException, err.Error())), nil
		}
		// generate lambda resource when auto detected vpc configs
		if !IsZero(currentModel.VPCConfiguration) {
			client.LambdaResource = newLambdaResource(client.AWSClients.STSClient(nil, nil), currentModel.ClusterID, currentModel.KubeConfig, currentModel.VPCConfiguration)
		}
	}

	e := &Event{}
	e.Model = currentModel

	vpc := false
	if !IsZero(currentModel.VPCConfiguration) {
		vpc = true
		e.Kubeconfig, err = getLocalKubeConfig()
		if err != nil {
			return makeEvent(currentModel, NoStage, NewError(ErrCodeKubeException, err.Error())), nil
		}
		u, err := client.initializeLambda(client.LambdaResource)
		if err != nil {
			return makeEvent(currentModel, NoStage, NewError(ErrCodeLambdaException, err.Error())), nil
		}
		if !u {
			return makeEvent(currentModel, NoStage, NewError(ErrCodeInvalidException, "vpc connector didn't stabilize in time")), nil
		}
	}
	e.Action = CheckReleaseAction
	_, err = client.helmStatusWrapper(currentModel.Name, e, client.LambdaResource.functionName, vpc)
	if err != nil {
		if err.Error() == ErrCodeNotFound {
			return makeEvent(nil, NoStage, NewError(ErrCodeNotFound, err.Error())), nil
		}
		return makeEvent(nil, NoStage, NewError(ErrCodeHelmActionException, err.Error())), nil
	}
	//currentModel.Chart = aws.String(s.ChartName)
	//currentModel.Version = aws.String(s.ChartVersion)
	/* Disable fetching resources created by helm
	e.ReleaseData = &ReleaseData{
		Name:      aws.StringValue(data.Name),
		Namespace: s.Namespace,
		Chart:     s.Chart,
		Manifest:  s.Manifest,
	}
	e.Action = GetResourcesAction
	currentModel.Resources, err = client.kubeResourcesWrapper(e, client.LambdaResource.functionName, vpc)
	if err != nil {
		return makeEvent(currentModel, NoStage, err), nil
	}*/
	return makeEvent(currentModel, CompleteStage, nil), nil
}