in cfn-resources/network-peering/cmd/resource/resource.go [369:418]
func List(req handler.Request, prevModel *Model, currentModel *Model) (handler.ProgressEvent, error) {
setup()
client, err := util.CreateMongoDBClient(*currentModel.ApiKeys.PublicKey, *currentModel.ApiKeys.PrivateKey)
if err != nil {
log.Warnf("List - error err:%+v", err)
return handler.ProgressEvent{
OperationStatus: handler.Failed,
Message: err.Error(),
HandlerErrorCode: cloudformation.HandlerErrorCodeInvalidRequest}, nil
}
projectID := *currentModel.ProjectId
peerResponse, resp, err := client.Peers.List(context.Background(), projectID, &mongodbatlas.ContainersListOptions{})
if err != nil {
if resp != nil && resp.StatusCode == 404 {
log.Warnf("Resource Not Found 404 for READ projectId:%s, err:%+v", projectID, err)
return handler.ProgressEvent{
Message: err.Error(),
OperationStatus: handler.Failed,
HandlerErrorCode: cloudformation.HandlerErrorCodeNotFound}, nil
} else {
log.Warnf("Error READ projectId:%s, err:%+v", projectID, err)
return handler.ProgressEvent{
Message: err.Error(),
OperationStatus: handler.Failed,
HandlerErrorCode: cloudformation.HandlerErrorCodeServiceInternalError}, nil
}
}
models := []interface{}{}
for _, peer := range peerResponse {
var model Model
model.AccepterRegionName = &peer.AccepterRegionName
model.AwsAccountId = &peer.AWSAccountID
model.RouteTableCIDRBlock = &peer.RouteTableCIDRBlock
model.VpcId = &peer.VpcID
model.Id = &peer.ID
model.ConnectionId = &peer.ConnectionID
model.ErrorStateName = &peer.ErrorStateName
model.StatusName = &peer.StatusName
model.ProviderName = &peer.ProviderName
models = append(models, model)
}
return handler.ProgressEvent{
OperationStatus: handler.Success,
Message: "List Complete",
ResourceModels: models,
}, nil
}