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
}