moto/moto/forecast/responses.py
2023-03-06 21:41:24 -01:00

81 lines
2.9 KiB
Python

import json
from moto.core.common_types import TYPE_RESPONSE
from moto.core.responses import BaseResponse
from moto.utilities.aws_headers import amzn_request_id
from .models import forecast_backends, ForecastBackend
class ForecastResponse(BaseResponse):
def __init__(self) -> None:
super().__init__(service_name="forecast")
@property
def forecast_backend(self) -> ForecastBackend:
return forecast_backends[self.current_account][self.region]
@amzn_request_id
def create_dataset_group(self) -> TYPE_RESPONSE:
dataset_group_name = self._get_param("DatasetGroupName")
domain = self._get_param("Domain")
dataset_arns = self._get_param("DatasetArns")
tags = self._get_param("Tags")
dataset_group = self.forecast_backend.create_dataset_group(
dataset_group_name=dataset_group_name,
domain=domain,
dataset_arns=dataset_arns,
tags=tags,
)
response = {"DatasetGroupArn": dataset_group.arn}
return 200, {}, json.dumps(response)
@amzn_request_id
def describe_dataset_group(self) -> TYPE_RESPONSE:
dataset_group_arn = self._get_param("DatasetGroupArn")
dataset_group = self.forecast_backend.describe_dataset_group(
dataset_group_arn=dataset_group_arn
)
response = {
"CreationTime": dataset_group.creation_date,
"DatasetArns": dataset_group.dataset_arns,
"DatasetGroupArn": dataset_group.arn,
"DatasetGroupName": dataset_group.dataset_group_name,
"Domain": dataset_group.domain,
"LastModificationTime": dataset_group.modified_date,
"Status": "ACTIVE",
}
return 200, {}, json.dumps(response)
@amzn_request_id
def delete_dataset_group(self) -> TYPE_RESPONSE:
dataset_group_arn = self._get_param("DatasetGroupArn")
self.forecast_backend.delete_dataset_group(dataset_group_arn)
return 200, {}, ""
@amzn_request_id
def update_dataset_group(self) -> TYPE_RESPONSE:
dataset_group_arn = self._get_param("DatasetGroupArn")
dataset_arns = self._get_param("DatasetArns")
self.forecast_backend.update_dataset_group(dataset_group_arn, dataset_arns)
return 200, {}, ""
@amzn_request_id
def list_dataset_groups(self) -> TYPE_RESPONSE:
list_all = sorted(
[
{
"DatasetGroupArn": dsg.arn,
"DatasetGroupName": dsg.dataset_group_name,
"CreationTime": dsg.creation_date,
"LastModificationTime": dsg.creation_date,
}
for dsg in self.forecast_backend.list_dataset_groups()
],
key=lambda x: x["LastModificationTime"], # type: ignore
reverse=True,
)
response = {"DatasetGroups": list_all}
return 200, {}, json.dumps(response)