func Create()

in cfn-resources/cloud-provider-snapshot-restore-jobs/cmd/resource/resource.go [18:72]


func Create(req handler.Request, prevModel *Model, currentModel *Model) (handler.ProgressEvent, error) {
	client, err := util.CreateMongoDBClient(*currentModel.ApiKeys.PublicKey, *currentModel.ApiKeys.PrivateKey)
	if err != nil {
		return handler.ProgressEvent{}, err
	}

	deliveryType := currentModel.DeliveryType
	if deliveryType == nil || (*deliveryType != automated && *deliveryType != download) {
		return handler.ProgressEvent{
			OperationStatus: handler.Failed,
			Message:         "error creating cloud provider snapshot restore job: you must specify either `automated` or `download` delivery types",
			ResourceModel:   currentModel,
		}, nil
	}
	requestParameters := &matlasClient.SnapshotReqPathParameters{}
	snapshotRequest := &matlasClient.CloudProviderSnapshotRestoreJob{}
	targetClusterName := currentModel.TargetClusterName
	targetProjectId := currentModel.TargetProjectId
	if *deliveryType == automated {
		if targetClusterName == nil || *targetClusterName == "" {
			return handler.ProgressEvent{
				OperationStatus: handler.Failed,
				Message:         "error creating cloud provider snapshot restore job: `target_cluster_name` must be set if delivery type is `automated`",
				ResourceModel:   currentModel,
			}, nil
		}
		if targetProjectId == nil || *targetProjectId == "" {
			return handler.ProgressEvent{
				OperationStatus: handler.Failed,
				Message:         "error creating cloud provider snapshot restore job: `target_project_id` must be set if delivery type is `automated`",
				ResourceModel:   currentModel,
			}, nil
		}
		snapshotRequest.TargetClusterName = *targetClusterName
		snapshotRequest.TargetGroupID = *targetProjectId
	}
	requestParameters.GroupID = *currentModel.ProjectId
	requestParameters.ClusterName = *currentModel.ClusterName
	snapshotRequest.SnapshotID = *currentModel.SnapshotId
	snapshotRequest.DeliveryType = *deliveryType

	restoreJob, _, err := client.CloudProviderSnapshotRestoreJobs.Create(context.Background(), requestParameters, snapshotRequest)

	if err != nil {
		return handler.ProgressEvent{}, fmt.Errorf("error creating cloud provider snapshot restore job: %s", err)
	}

	currentModel.Id = &restoreJob.ID

	return handler.ProgressEvent{
		OperationStatus: handler.Success,
		Message:         "Create Complete",
		ResourceModel:   currentModel,
	}, nil
}