Core: Add RequestId-header to all responses (#7210)
This commit is contained in:
parent
168b869350
commit
1f1e0caca3
@ -1,6 +1,7 @@
|
||||
from moto.core.common_types import TYPE_RESPONSE
|
||||
from moto.core.responses import BaseResponse
|
||||
from moto.core.utils import iso_8601_datetime_with_milliseconds
|
||||
from moto.utilities.aws_headers import amz_crc32, amzn_request_id
|
||||
from moto.utilities.aws_headers import amz_crc32
|
||||
|
||||
from .models import AutoScalingBackend, autoscaling_backends
|
||||
|
||||
@ -13,6 +14,10 @@ class AutoScalingResponse(BaseResponse):
|
||||
def autoscaling_backend(self) -> AutoScalingBackend:
|
||||
return autoscaling_backends[self.current_account][self.region]
|
||||
|
||||
@amz_crc32
|
||||
def call_action(self) -> TYPE_RESPONSE:
|
||||
return super().call_action()
|
||||
|
||||
def create_launch_configuration(self) -> str:
|
||||
instance_monitoring_string = self._get_param("InstanceMonitoring.Enabled")
|
||||
if instance_monitoring_string == "true":
|
||||
@ -139,8 +144,6 @@ class AutoScalingResponse(BaseResponse):
|
||||
template = self.response_template(DESCRIBE_SCALING_ACTIVITIES_TEMPLATE)
|
||||
return template.render()
|
||||
|
||||
@amz_crc32
|
||||
@amzn_request_id
|
||||
def attach_instances(self) -> str:
|
||||
group_name = self._get_param("AutoScalingGroupName")
|
||||
instance_ids = self._get_multi_param("InstanceIds.member")
|
||||
@ -148,8 +151,6 @@ class AutoScalingResponse(BaseResponse):
|
||||
template = self.response_template(ATTACH_INSTANCES_TEMPLATE)
|
||||
return template.render()
|
||||
|
||||
@amz_crc32
|
||||
@amzn_request_id
|
||||
def set_instance_health(self) -> str:
|
||||
instance_id = self._get_param("InstanceId")
|
||||
health_status = self._get_param("HealthStatus")
|
||||
@ -159,8 +160,6 @@ class AutoScalingResponse(BaseResponse):
|
||||
template = self.response_template(SET_INSTANCE_HEALTH_TEMPLATE)
|
||||
return template.render()
|
||||
|
||||
@amz_crc32
|
||||
@amzn_request_id
|
||||
def detach_instances(self) -> str:
|
||||
group_name = self._get_param("AutoScalingGroupName")
|
||||
instance_ids = self._get_multi_param("InstanceIds.member")
|
||||
@ -175,8 +174,6 @@ class AutoScalingResponse(BaseResponse):
|
||||
template = self.response_template(DETACH_INSTANCES_TEMPLATE)
|
||||
return template.render(detached_instances=detached_instances)
|
||||
|
||||
@amz_crc32
|
||||
@amzn_request_id
|
||||
def attach_load_balancer_target_groups(self) -> str:
|
||||
group_name = self._get_param("AutoScalingGroupName")
|
||||
target_group_arns = self._get_multi_param("TargetGroupARNs.member")
|
||||
@ -187,8 +184,6 @@ class AutoScalingResponse(BaseResponse):
|
||||
template = self.response_template(ATTACH_LOAD_BALANCER_TARGET_GROUPS_TEMPLATE)
|
||||
return template.render()
|
||||
|
||||
@amz_crc32
|
||||
@amzn_request_id
|
||||
def describe_load_balancer_target_groups(self) -> str:
|
||||
group_name = self._get_param("AutoScalingGroupName")
|
||||
target_group_arns = (
|
||||
@ -197,8 +192,6 @@ class AutoScalingResponse(BaseResponse):
|
||||
template = self.response_template(DESCRIBE_LOAD_BALANCER_TARGET_GROUPS)
|
||||
return template.render(target_group_arns=target_group_arns)
|
||||
|
||||
@amz_crc32
|
||||
@amzn_request_id
|
||||
def detach_load_balancer_target_groups(self) -> str:
|
||||
group_name = self._get_param("AutoScalingGroupName")
|
||||
target_group_arns = self._get_multi_param("TargetGroupARNs.member")
|
||||
@ -347,8 +340,6 @@ class AutoScalingResponse(BaseResponse):
|
||||
template = self.response_template(EXECUTE_POLICY_TEMPLATE)
|
||||
return template.render()
|
||||
|
||||
@amz_crc32
|
||||
@amzn_request_id
|
||||
def attach_load_balancers(self) -> str:
|
||||
group_name = self._get_param("AutoScalingGroupName")
|
||||
load_balancer_names = self._get_multi_param("LoadBalancerNames.member")
|
||||
@ -356,16 +347,12 @@ class AutoScalingResponse(BaseResponse):
|
||||
template = self.response_template(ATTACH_LOAD_BALANCERS_TEMPLATE)
|
||||
return template.render()
|
||||
|
||||
@amz_crc32
|
||||
@amzn_request_id
|
||||
def describe_load_balancers(self) -> str:
|
||||
group_name = self._get_param("AutoScalingGroupName")
|
||||
load_balancers = self.autoscaling_backend.describe_load_balancers(group_name)
|
||||
template = self.response_template(DESCRIBE_LOAD_BALANCERS_TEMPLATE)
|
||||
return template.render(load_balancers=load_balancers)
|
||||
|
||||
@amz_crc32
|
||||
@amzn_request_id
|
||||
def detach_load_balancers(self) -> str:
|
||||
group_name = self._get_param("AutoScalingGroupName")
|
||||
load_balancer_names = self._get_multi_param("LoadBalancerNames.member")
|
||||
@ -373,8 +360,6 @@ class AutoScalingResponse(BaseResponse):
|
||||
template = self.response_template(DETACH_LOAD_BALANCERS_TEMPLATE)
|
||||
return template.render()
|
||||
|
||||
@amz_crc32
|
||||
@amzn_request_id
|
||||
def enter_standby(self) -> str:
|
||||
group_name = self._get_param("AutoScalingGroupName")
|
||||
instance_ids = self._get_multi_param("InstanceIds.member")
|
||||
@ -399,8 +384,6 @@ class AutoScalingResponse(BaseResponse):
|
||||
timestamp=iso_8601_datetime_with_milliseconds(),
|
||||
)
|
||||
|
||||
@amz_crc32
|
||||
@amzn_request_id
|
||||
def exit_standby(self) -> str:
|
||||
group_name = self._get_param("AutoScalingGroupName")
|
||||
instance_ids = self._get_multi_param("InstanceIds.member")
|
||||
@ -445,8 +428,6 @@ class AutoScalingResponse(BaseResponse):
|
||||
template = self.response_template(SET_INSTANCE_PROTECTION_TEMPLATE)
|
||||
return template.render()
|
||||
|
||||
@amz_crc32
|
||||
@amzn_request_id
|
||||
def terminate_instance_in_auto_scaling_group(self) -> str:
|
||||
instance_id = self._get_param("InstanceId")
|
||||
should_decrement_string = self._get_param("ShouldDecrementDesiredCapacity")
|
||||
|
@ -5,7 +5,7 @@ from urllib.parse import unquote
|
||||
|
||||
from moto.core.responses import TYPE_RESPONSE, BaseResponse
|
||||
from moto.core.utils import path_url
|
||||
from moto.utilities.aws_headers import amz_crc32, amzn_request_id
|
||||
from moto.utilities.aws_headers import amz_crc32
|
||||
|
||||
from .exceptions import (
|
||||
FunctionAlreadyExists,
|
||||
@ -129,9 +129,8 @@ class LambdaResponse(BaseResponse):
|
||||
raise ValueError("Cannot handle request")
|
||||
|
||||
@amz_crc32
|
||||
@amzn_request_id
|
||||
def invoke( # type: ignore
|
||||
self, request=None, full_url="", headers=None
|
||||
def invoke(
|
||||
self, request: Any, full_url: str, headers: Any
|
||||
) -> Tuple[int, Dict[str, str], Union[str, bytes]]:
|
||||
self.setup_class(request, full_url, headers)
|
||||
if request.method == "POST":
|
||||
@ -140,7 +139,6 @@ class LambdaResponse(BaseResponse):
|
||||
raise ValueError("Cannot handle request")
|
||||
|
||||
@amz_crc32
|
||||
@amzn_request_id
|
||||
def invoke_async(
|
||||
self, request: Any, full_url: str, headers: Any
|
||||
) -> Tuple[int, Dict[str, str], Union[str, bytes]]:
|
||||
|
@ -3,7 +3,6 @@ from urllib.parse import unquote, urlsplit
|
||||
|
||||
from moto.core.models import default_user_config
|
||||
from moto.core.responses import BaseResponse
|
||||
from moto.utilities.aws_headers import amzn_request_id
|
||||
|
||||
from .models import BatchBackend, batch_backends
|
||||
|
||||
@ -25,8 +24,6 @@ class BatchResponse(BaseResponse):
|
||||
# Return element after the /v1/*
|
||||
return urlsplit(self.uri).path.lstrip("/").split("/")[1]
|
||||
|
||||
# CreateComputeEnvironment
|
||||
@amzn_request_id
|
||||
def createcomputeenvironment(self) -> str:
|
||||
compute_env_name = self._get_param("computeEnvironmentName")
|
||||
compute_resource = self._get_param("computeResources")
|
||||
@ -46,8 +43,6 @@ class BatchResponse(BaseResponse):
|
||||
|
||||
return json.dumps(result)
|
||||
|
||||
# DescribeComputeEnvironments
|
||||
@amzn_request_id
|
||||
def describecomputeenvironments(self) -> str:
|
||||
compute_environments = self._get_param("computeEnvironments")
|
||||
|
||||
@ -56,8 +51,6 @@ class BatchResponse(BaseResponse):
|
||||
result = {"computeEnvironments": envs}
|
||||
return json.dumps(result)
|
||||
|
||||
# DeleteComputeEnvironment
|
||||
@amzn_request_id
|
||||
def deletecomputeenvironment(self) -> str:
|
||||
compute_environment = self._get_param("computeEnvironment")
|
||||
|
||||
@ -65,8 +58,6 @@ class BatchResponse(BaseResponse):
|
||||
|
||||
return ""
|
||||
|
||||
# UpdateComputeEnvironment
|
||||
@amzn_request_id
|
||||
def updatecomputeenvironment(self) -> str:
|
||||
compute_env_name = self._get_param("computeEnvironment")
|
||||
compute_resource = self._get_param("computeResources")
|
||||
@ -84,8 +75,6 @@ class BatchResponse(BaseResponse):
|
||||
|
||||
return json.dumps(result)
|
||||
|
||||
# CreateJobQueue
|
||||
@amzn_request_id
|
||||
def createjobqueue(self) -> str:
|
||||
compute_env_order = self._get_param("computeEnvironmentOrder")
|
||||
queue_name = self._get_param("jobQueueName")
|
||||
@ -107,8 +96,6 @@ class BatchResponse(BaseResponse):
|
||||
|
||||
return json.dumps(result)
|
||||
|
||||
# DescribeJobQueues
|
||||
@amzn_request_id
|
||||
def describejobqueues(self) -> str:
|
||||
job_queues = self._get_param("jobQueues")
|
||||
|
||||
@ -117,8 +104,6 @@ class BatchResponse(BaseResponse):
|
||||
result = {"jobQueues": queues}
|
||||
return json.dumps(result)
|
||||
|
||||
# UpdateJobQueue
|
||||
@amzn_request_id
|
||||
def updatejobqueue(self) -> str:
|
||||
compute_env_order = self._get_param("computeEnvironmentOrder")
|
||||
queue_name = self._get_param("jobQueue")
|
||||
@ -138,8 +123,6 @@ class BatchResponse(BaseResponse):
|
||||
|
||||
return json.dumps(result)
|
||||
|
||||
# DeleteJobQueue
|
||||
@amzn_request_id
|
||||
def deletejobqueue(self) -> str:
|
||||
queue_name = self._get_param("jobQueue")
|
||||
|
||||
@ -147,8 +130,6 @@ class BatchResponse(BaseResponse):
|
||||
|
||||
return ""
|
||||
|
||||
# RegisterJobDefinition
|
||||
@amzn_request_id
|
||||
def registerjobdefinition(self) -> str:
|
||||
container_properties = self._get_param("containerProperties")
|
||||
node_properties = self._get_param("nodeProperties")
|
||||
@ -181,8 +162,6 @@ class BatchResponse(BaseResponse):
|
||||
|
||||
return json.dumps(result)
|
||||
|
||||
# DeregisterJobDefinition
|
||||
@amzn_request_id
|
||||
def deregisterjobdefinition(self) -> str:
|
||||
queue_name = self._get_param("jobDefinition")
|
||||
|
||||
@ -190,8 +169,6 @@ class BatchResponse(BaseResponse):
|
||||
|
||||
return ""
|
||||
|
||||
# DescribeJobDefinitions
|
||||
@amzn_request_id
|
||||
def describejobdefinitions(self) -> str:
|
||||
job_def_name = self._get_param("jobDefinitionName")
|
||||
job_def_list = self._get_param("jobDefinitions")
|
||||
@ -204,8 +181,6 @@ class BatchResponse(BaseResponse):
|
||||
result = {"jobDefinitions": [job.describe() for job in job_defs]}
|
||||
return json.dumps(result)
|
||||
|
||||
# SubmitJob
|
||||
@amzn_request_id
|
||||
def submitjob(self) -> str:
|
||||
container_overrides = self._get_param("containerOverrides")
|
||||
depends_on = self._get_param("dependsOn")
|
||||
@ -229,15 +204,11 @@ class BatchResponse(BaseResponse):
|
||||
|
||||
return json.dumps(result)
|
||||
|
||||
# DescribeJobs
|
||||
@amzn_request_id
|
||||
def describejobs(self) -> str:
|
||||
jobs = self._get_param("jobs")
|
||||
|
||||
return json.dumps({"jobs": self.batch_backend.describe_jobs(jobs)})
|
||||
|
||||
# ListJobs
|
||||
@amzn_request_id
|
||||
def listjobs(self) -> str:
|
||||
job_queue = self._get_param("jobQueue")
|
||||
job_status = self._get_param("jobStatus")
|
||||
@ -248,8 +219,6 @@ class BatchResponse(BaseResponse):
|
||||
result = {"jobSummaryList": [job.describe_short() for job in jobs]}
|
||||
return json.dumps(result)
|
||||
|
||||
# TerminateJob
|
||||
@amzn_request_id
|
||||
def terminatejob(self) -> str:
|
||||
job_id = self._get_param("jobId")
|
||||
reason = self._get_param("reason")
|
||||
@ -258,8 +227,6 @@ class BatchResponse(BaseResponse):
|
||||
|
||||
return ""
|
||||
|
||||
# CancelJob
|
||||
@amzn_request_id
|
||||
def canceljob(self) -> str:
|
||||
job_id = self._get_param("jobId")
|
||||
reason = self._get_param("reason")
|
||||
@ -267,7 +234,6 @@ class BatchResponse(BaseResponse):
|
||||
|
||||
return ""
|
||||
|
||||
@amzn_request_id
|
||||
def tags(self) -> str:
|
||||
resource_arn = unquote(self.path).split("/v1/tags/")[-1]
|
||||
tags = self._get_param("tags")
|
||||
@ -281,7 +247,6 @@ class BatchResponse(BaseResponse):
|
||||
self.batch_backend.untag_resource(resource_arn, tag_keys) # type: ignore[arg-type]
|
||||
return ""
|
||||
|
||||
@amzn_request_id
|
||||
def createschedulingpolicy(self) -> str:
|
||||
body = json.loads(self.body)
|
||||
name = body.get("name")
|
||||
@ -292,26 +257,22 @@ class BatchResponse(BaseResponse):
|
||||
)
|
||||
return json.dumps(policy.to_dict(create=True))
|
||||
|
||||
@amzn_request_id
|
||||
def describeschedulingpolicies(self) -> str:
|
||||
body = json.loads(self.body)
|
||||
arns = body.get("arns") or []
|
||||
policies = self.batch_backend.describe_scheduling_policies(arns)
|
||||
return json.dumps({"schedulingPolicies": [pol.to_dict() for pol in policies]})
|
||||
|
||||
@amzn_request_id
|
||||
def listschedulingpolicies(self) -> str:
|
||||
arns = self.batch_backend.list_scheduling_policies()
|
||||
return json.dumps({"schedulingPolicies": [{"arn": arn} for arn in arns]})
|
||||
|
||||
@amzn_request_id
|
||||
def deleteschedulingpolicy(self) -> str:
|
||||
body = json.loads(self.body)
|
||||
arn = body["arn"]
|
||||
self.batch_backend.delete_scheduling_policy(arn)
|
||||
return ""
|
||||
|
||||
@amzn_request_id
|
||||
def updateschedulingpolicy(self) -> str:
|
||||
body = json.loads(self.body)
|
||||
arn = body.get("arn")
|
||||
|
@ -8,7 +8,6 @@ from yaml.scanner import ScannerError # pylint:disable=c-extension-no-member
|
||||
|
||||
from moto.core.responses import BaseResponse
|
||||
from moto.s3.exceptions import S3ClientError
|
||||
from moto.utilities.aws_headers import amzn_request_id
|
||||
|
||||
from .exceptions import MissingParameterError, ValidationError
|
||||
from .models import CloudFormationBackend, FakeStack, cloudformation_backends
|
||||
@ -153,7 +152,6 @@ class CloudFormationResponse(BaseResponse):
|
||||
return True
|
||||
return False
|
||||
|
||||
@amzn_request_id
|
||||
def create_change_set(self) -> str:
|
||||
stack_name = self._get_param("StackName")
|
||||
change_set_name = self._get_param("ChangeSetName")
|
||||
@ -220,7 +218,6 @@ class CloudFormationResponse(BaseResponse):
|
||||
template = self.response_template(DESCRIBE_CHANGE_SET_RESPONSE_TEMPLATE)
|
||||
return template.render(change_set=change_set)
|
||||
|
||||
@amzn_request_id
|
||||
def execute_change_set(self) -> str:
|
||||
stack_name = self._get_param("StackName")
|
||||
change_set_name = self._get_param("ChangeSetName")
|
||||
|
@ -4,7 +4,6 @@ from typing import Dict, Iterable, List, Tuple, Union
|
||||
from dateutil.parser import parse as dtparse
|
||||
|
||||
from moto.core.responses import BaseResponse
|
||||
from moto.utilities.aws_headers import amzn_request_id
|
||||
|
||||
from .exceptions import InvalidParameterCombination, ValidationError
|
||||
from .models import (
|
||||
@ -32,7 +31,6 @@ class CloudWatchResponse(BaseResponse):
|
||||
template = self.response_template(ERROR_RESPONSE_TEMPLATE)
|
||||
return template.render(code=code, message=message), dict(status=status)
|
||||
|
||||
@amzn_request_id
|
||||
def put_metric_alarm(self) -> str:
|
||||
name = self._get_param("AlarmName")
|
||||
namespace = self._get_param("Namespace")
|
||||
@ -132,7 +130,6 @@ class CloudWatchResponse(BaseResponse):
|
||||
template = self.response_template(PUT_METRIC_ALARM_TEMPLATE)
|
||||
return template.render(alarm=alarm)
|
||||
|
||||
@amzn_request_id
|
||||
def describe_alarms(self) -> str:
|
||||
action_prefix = self._get_param("ActionPrefix")
|
||||
alarm_name_prefix = self._get_param("AlarmNamePrefix")
|
||||
@ -160,14 +157,12 @@ class CloudWatchResponse(BaseResponse):
|
||||
metric_alarms=metric_alarms, composite_alarms=composite_alarms
|
||||
)
|
||||
|
||||
@amzn_request_id
|
||||
def delete_alarms(self) -> str:
|
||||
alarm_names = self._get_multi_param("AlarmNames.member")
|
||||
self.cloudwatch_backend.delete_alarms(alarm_names)
|
||||
template = self.response_template(DELETE_METRIC_ALARMS_TEMPLATE)
|
||||
return template.render()
|
||||
|
||||
@amzn_request_id
|
||||
def put_metric_data(self) -> str:
|
||||
namespace = self._get_param("Namespace")
|
||||
metric_data = self._get_multi_param("MetricData.member")
|
||||
@ -175,7 +170,6 @@ class CloudWatchResponse(BaseResponse):
|
||||
template = self.response_template(PUT_METRIC_DATA_TEMPLATE)
|
||||
return template.render()
|
||||
|
||||
@amzn_request_id
|
||||
def get_metric_data(self) -> str:
|
||||
params = self._get_params()
|
||||
start = dtparse(params["StartTime"])
|
||||
@ -196,7 +190,6 @@ class CloudWatchResponse(BaseResponse):
|
||||
template = self.response_template(GET_METRIC_DATA_TEMPLATE)
|
||||
return template.render(results=results)
|
||||
|
||||
@amzn_request_id
|
||||
def get_metric_statistics(self) -> str:
|
||||
namespace = self._get_param("Namespace")
|
||||
metric_name = self._get_param("MetricName")
|
||||
@ -228,7 +221,6 @@ class CloudWatchResponse(BaseResponse):
|
||||
template = self.response_template(GET_METRIC_STATISTICS_TEMPLATE)
|
||||
return template.render(label=metric_name, datapoints=datapoints)
|
||||
|
||||
@amzn_request_id
|
||||
def list_metrics(self) -> str:
|
||||
namespace = self._get_param("Namespace")
|
||||
metric_name = self._get_param("MetricName")
|
||||
@ -240,7 +232,6 @@ class CloudWatchResponse(BaseResponse):
|
||||
template = self.response_template(LIST_METRICS_TEMPLATE)
|
||||
return template.render(metrics=metrics, next_token=next_token)
|
||||
|
||||
@amzn_request_id
|
||||
def delete_dashboards(self) -> Union[str, ERROR_RESPONSE]:
|
||||
dashboards = self._get_multi_param("DashboardNames.member")
|
||||
if dashboards is None:
|
||||
@ -253,7 +244,6 @@ class CloudWatchResponse(BaseResponse):
|
||||
template = self.response_template(DELETE_DASHBOARD_TEMPLATE)
|
||||
return template.render()
|
||||
|
||||
@amzn_request_id
|
||||
def describe_alarm_history(self) -> None:
|
||||
raise NotImplementedError()
|
||||
|
||||
@ -268,7 +258,6 @@ class CloudWatchResponse(BaseResponse):
|
||||
metric_filtered_alarms.append(alarm)
|
||||
return metric_filtered_alarms
|
||||
|
||||
@amzn_request_id
|
||||
def describe_alarms_for_metric(self) -> str:
|
||||
alarms = self.cloudwatch_backend.get_all_alarms()
|
||||
namespace = self._get_param("Namespace")
|
||||
@ -277,15 +266,12 @@ class CloudWatchResponse(BaseResponse):
|
||||
template = self.response_template(DESCRIBE_METRIC_ALARMS_TEMPLATE)
|
||||
return template.render(alarms=filtered_alarms)
|
||||
|
||||
@amzn_request_id
|
||||
def disable_alarm_actions(self) -> str:
|
||||
raise NotImplementedError()
|
||||
|
||||
@amzn_request_id
|
||||
def enable_alarm_actions(self) -> str:
|
||||
raise NotImplementedError()
|
||||
|
||||
@amzn_request_id
|
||||
def get_dashboard(self) -> Union[str, ERROR_RESPONSE]:
|
||||
dashboard_name = self._get_param("DashboardName")
|
||||
|
||||
@ -296,7 +282,6 @@ class CloudWatchResponse(BaseResponse):
|
||||
template = self.response_template(GET_DASHBOARD_TEMPLATE)
|
||||
return template.render(dashboard=dashboard)
|
||||
|
||||
@amzn_request_id
|
||||
def list_dashboards(self) -> str:
|
||||
prefix = self._get_param("DashboardNamePrefix", "")
|
||||
|
||||
@ -305,7 +290,6 @@ class CloudWatchResponse(BaseResponse):
|
||||
template = self.response_template(LIST_DASHBOARD_RESPONSE)
|
||||
return template.render(dashboards=dashboards)
|
||||
|
||||
@amzn_request_id
|
||||
def put_dashboard(self) -> Union[str, ERROR_RESPONSE]:
|
||||
name = self._get_param("DashboardName")
|
||||
body = self._get_param("DashboardBody")
|
||||
@ -320,7 +304,6 @@ class CloudWatchResponse(BaseResponse):
|
||||
template = self.response_template(PUT_DASHBOARD_RESPONSE)
|
||||
return template.render()
|
||||
|
||||
@amzn_request_id
|
||||
def set_alarm_state(self) -> str:
|
||||
alarm_name = self._get_param("AlarmName")
|
||||
reason = self._get_param("StateReason")
|
||||
@ -334,7 +317,6 @@ class CloudWatchResponse(BaseResponse):
|
||||
template = self.response_template(SET_ALARM_STATE_TEMPLATE)
|
||||
return template.render()
|
||||
|
||||
@amzn_request_id
|
||||
def list_tags_for_resource(self) -> str:
|
||||
resource_arn = self._get_param("ResourceARN")
|
||||
|
||||
@ -343,7 +325,6 @@ class CloudWatchResponse(BaseResponse):
|
||||
template = self.response_template(LIST_TAGS_FOR_RESOURCE_TEMPLATE)
|
||||
return template.render(tags=tags)
|
||||
|
||||
@amzn_request_id
|
||||
def tag_resource(self) -> str:
|
||||
resource_arn = self._get_param("ResourceARN")
|
||||
tags = self._get_multi_param("Tags.member")
|
||||
@ -353,7 +334,6 @@ class CloudWatchResponse(BaseResponse):
|
||||
template = self.response_template(TAG_RESOURCE_TEMPLATE)
|
||||
return template.render()
|
||||
|
||||
@amzn_request_id
|
||||
def untag_resource(self) -> str:
|
||||
resource_arn = self._get_param("ResourceARN")
|
||||
tag_keys = self._get_multi_param("TagKeys.member")
|
||||
|
@ -37,6 +37,7 @@ from moto.core.utils import (
|
||||
params_sort_function,
|
||||
utcfromtimestamp,
|
||||
)
|
||||
from moto.utilities.aws_headers import gen_amzn_requestid_long
|
||||
from moto.utilities.utils import load_resource, load_resource_as_bytes
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
@ -267,7 +268,15 @@ class BaseResponse(_TemplateEnvironmentMixin, ActionAuthenticatorMixin):
|
||||
|
||||
@functools.wraps(to_call) # type: ignore
|
||||
def _inner(request: Any, full_url: str, headers: Any) -> TYPE_RESPONSE:
|
||||
return getattr(cls(), to_call.__name__)(request, full_url, headers)
|
||||
response = getattr(cls(), to_call.__name__)(request, full_url, headers)
|
||||
if isinstance(response, str):
|
||||
status = 200
|
||||
body = response
|
||||
headers = {}
|
||||
else:
|
||||
status, headers, body = response
|
||||
headers, body = cls._enrich_response(headers, body)
|
||||
return status, headers, body
|
||||
|
||||
return _inner
|
||||
|
||||
@ -538,7 +547,10 @@ class BaseResponse(_TemplateEnvironmentMixin, ActionAuthenticatorMixin):
|
||||
self._authenticate_and_authorize_normal_action(resource)
|
||||
except HTTPException as http_error:
|
||||
response = http_error.description, dict(status=http_error.code)
|
||||
return self._send_response(headers, response)
|
||||
status, headers, body = self._transform_response(headers, response)
|
||||
headers, body = self._enrich_response(headers, body)
|
||||
|
||||
return status, headers, body
|
||||
|
||||
action = camelcase_to_underscores(self._get_action())
|
||||
method_names = method_names_from_class(self.__class__)
|
||||
@ -555,9 +567,14 @@ class BaseResponse(_TemplateEnvironmentMixin, ActionAuthenticatorMixin):
|
||||
response = http_error.description, response_headers # type: ignore[assignment]
|
||||
|
||||
if isinstance(response, str):
|
||||
return 200, headers, response
|
||||
status = 200
|
||||
body = response
|
||||
else:
|
||||
return self._send_response(headers, response)
|
||||
status, headers, body = self._transform_response(headers, response)
|
||||
|
||||
headers, body = self._enrich_response(headers, body)
|
||||
|
||||
return status, headers, body
|
||||
|
||||
if not action:
|
||||
return 404, headers, ""
|
||||
@ -565,19 +582,33 @@ class BaseResponse(_TemplateEnvironmentMixin, ActionAuthenticatorMixin):
|
||||
raise NotImplementedError(f"The {action} action has not been implemented")
|
||||
|
||||
@staticmethod
|
||||
def _send_response(headers: Dict[str, str], response: Any) -> Tuple[int, Dict[str, str], str]: # type: ignore[misc]
|
||||
def _transform_response(headers: Dict[str, str], response: Any) -> TYPE_RESPONSE: # type: ignore[misc]
|
||||
if response is None:
|
||||
response = "", {}
|
||||
if len(response) == 2:
|
||||
body, new_headers = response
|
||||
else:
|
||||
status, new_headers, body = response
|
||||
status = new_headers.get("status", 200)
|
||||
status = int(new_headers.get("status", 200))
|
||||
headers.update(new_headers)
|
||||
return status, headers, body
|
||||
|
||||
@staticmethod
|
||||
def _enrich_response( # type: ignore[misc]
|
||||
headers: Dict[str, str], body: Any
|
||||
) -> Tuple[Dict[str, str], Any]:
|
||||
# Cast status to string
|
||||
if "status" in headers:
|
||||
headers["status"] = str(headers["status"])
|
||||
return status, headers, body
|
||||
# add request id
|
||||
request_id = gen_amzn_requestid_long(headers)
|
||||
|
||||
# Update request ID in XML
|
||||
try:
|
||||
body = re.sub(r"(?<=<RequestId>).*(?=<\/RequestId>)", request_id, body)
|
||||
except Exception: # Will just ignore if it cant work
|
||||
pass
|
||||
return headers, body
|
||||
|
||||
def _get_param(self, param_name: str, if_none: Any = None) -> Any:
|
||||
val = self.querystring.get(param_name)
|
||||
|
@ -3,7 +3,6 @@ from typing import Any, Dict
|
||||
from urllib.parse import unquote
|
||||
|
||||
from moto.core.responses import BaseResponse
|
||||
from moto.utilities.aws_headers import amzn_request_id
|
||||
|
||||
from .models import DataBrewBackend, databrew_backends
|
||||
|
||||
@ -22,7 +21,6 @@ class DataBrewResponse(BaseResponse):
|
||||
def parameters(self) -> Dict[str, Any]: # type: ignore[misc]
|
||||
return json.loads(self.body)
|
||||
|
||||
@amzn_request_id
|
||||
def create_recipe(self) -> str:
|
||||
# https://docs.aws.amazon.com/databrew/latest/dg/API_CreateRecipe.html
|
||||
recipe_description = self.parameters.get("Description")
|
||||
@ -35,7 +33,6 @@ class DataBrewResponse(BaseResponse):
|
||||
).as_dict()
|
||||
)
|
||||
|
||||
@amzn_request_id
|
||||
def delete_recipe_version(self) -> str:
|
||||
# https://docs.aws.amazon.com/databrew/latest/dg/API_DeleteRecipeVersion.html
|
||||
split_path = self._get_path().strip("/").split("/")
|
||||
@ -47,7 +44,6 @@ class DataBrewResponse(BaseResponse):
|
||||
def _get_path(self) -> str:
|
||||
return unquote(self.parsed_url.path)
|
||||
|
||||
@amzn_request_id
|
||||
def list_recipes(self) -> str:
|
||||
# https://docs.aws.amazon.com/databrew/latest/dg/API_ListRecipes.html
|
||||
next_token = self._get_param("NextToken", self._get_param("nextToken"))
|
||||
@ -71,7 +67,6 @@ class DataBrewResponse(BaseResponse):
|
||||
}
|
||||
)
|
||||
|
||||
@amzn_request_id
|
||||
def list_recipe_versions(self) -> str:
|
||||
# https://docs.aws.amazon.com/databrew/latest/dg/API_ListRecipeVersions.html
|
||||
recipe_name = self._get_param("Name", self._get_param("name"))
|
||||
@ -91,7 +86,6 @@ class DataBrewResponse(BaseResponse):
|
||||
}
|
||||
)
|
||||
|
||||
@amzn_request_id
|
||||
def publish_recipe(self) -> str:
|
||||
recipe_name = self._get_path().strip("/").split("/", 2)[1]
|
||||
recipe_description = self.parameters.get("Description")
|
||||
@ -123,7 +117,6 @@ class DataBrewResponse(BaseResponse):
|
||||
|
||||
# region Rulesets
|
||||
|
||||
@amzn_request_id
|
||||
def create_ruleset(self) -> str:
|
||||
ruleset_description = self.parameters.get("Description")
|
||||
ruleset_rules = self.parameters.get("Rules")
|
||||
@ -162,7 +155,6 @@ class DataBrewResponse(BaseResponse):
|
||||
self.databrew_backend.delete_ruleset(ruleset_name)
|
||||
return json.dumps({"Name": ruleset_name})
|
||||
|
||||
@amzn_request_id
|
||||
def list_rulesets(self) -> str:
|
||||
# https://docs.aws.amazon.com/databrew/latest/dg/API_ListRulesets.html
|
||||
next_token = self._get_param("NextToken", self._get_param("nextToken"))
|
||||
@ -185,7 +177,6 @@ class DataBrewResponse(BaseResponse):
|
||||
|
||||
# region Datasets
|
||||
|
||||
@amzn_request_id
|
||||
def create_dataset(self) -> str:
|
||||
dataset_name = self.parameters.get("Name")
|
||||
dataset_format = self.parameters.get("Format")
|
||||
@ -205,7 +196,6 @@ class DataBrewResponse(BaseResponse):
|
||||
).as_dict()
|
||||
)
|
||||
|
||||
@amzn_request_id
|
||||
def list_datasets(self) -> str:
|
||||
next_token = self._get_param("NextToken", self._get_param("nextToken"))
|
||||
max_results = self._get_int_param(
|
||||
@ -224,7 +214,6 @@ class DataBrewResponse(BaseResponse):
|
||||
}
|
||||
)
|
||||
|
||||
@amzn_request_id
|
||||
def update_dataset(self) -> str:
|
||||
dataset_name = self._get_path().split("/")[-1]
|
||||
dataset_format = self.parameters.get("Format")
|
||||
@ -243,13 +232,11 @@ class DataBrewResponse(BaseResponse):
|
||||
)
|
||||
return json.dumps(dataset.as_dict())
|
||||
|
||||
@amzn_request_id
|
||||
def delete_dataset(self) -> str:
|
||||
dataset_name = self._get_path().split("/")[-1]
|
||||
self.databrew_backend.delete_dataset(dataset_name)
|
||||
return json.dumps({"Name": dataset_name})
|
||||
|
||||
@amzn_request_id
|
||||
def describe_dataset(self) -> str:
|
||||
dataset_name = self._get_path().split("/")[-1]
|
||||
dataset = self.databrew_backend.describe_dataset(dataset_name)
|
||||
@ -258,7 +245,6 @@ class DataBrewResponse(BaseResponse):
|
||||
# endregion
|
||||
|
||||
# region Jobs
|
||||
@amzn_request_id
|
||||
def list_jobs(self) -> str:
|
||||
# https://docs.aws.amazon.com/databrew/latest/dg/API_ListJobs.html
|
||||
dataset_name = self._get_param("datasetName")
|
||||
@ -291,7 +277,6 @@ class DataBrewResponse(BaseResponse):
|
||||
self.databrew_backend.delete_job(job_name)
|
||||
return json.dumps({"Name": job_name})
|
||||
|
||||
@amzn_request_id
|
||||
def create_profile_job(self) -> str:
|
||||
# https://docs.aws.amazon.com/databrew/latest/dg/API_CreateProfileJob.html
|
||||
kwargs = {
|
||||
@ -331,7 +316,6 @@ class DataBrewResponse(BaseResponse):
|
||||
}
|
||||
return json.dumps(self.databrew_backend.update_profile_job(**kwargs).as_dict())
|
||||
|
||||
@amzn_request_id
|
||||
def create_recipe_job(self) -> str:
|
||||
# https://docs.aws.amazon.com/databrew/latest/dg/API_CreateRecipeJob.html
|
||||
kwargs = {
|
||||
@ -353,7 +337,6 @@ class DataBrewResponse(BaseResponse):
|
||||
}
|
||||
return json.dumps(self.databrew_backend.create_recipe_job(**kwargs).as_dict())
|
||||
|
||||
@amzn_request_id
|
||||
def update_recipe_job(self) -> str:
|
||||
name = self._get_path().rstrip("/").rsplit("/", 1)[1]
|
||||
# https://docs.aws.amazon.com/databrew/latest/dg/API_UpdateRecipeJob.html
|
||||
|
@ -6,12 +6,11 @@ from typing import Any, Callable, Dict, List, Optional, Union
|
||||
|
||||
from moto.core.common_types import TYPE_RESPONSE
|
||||
from moto.core.responses import BaseResponse
|
||||
from moto.core.utils import camelcase_to_underscores
|
||||
from moto.dynamodb.models import DynamoDBBackend, Table, dynamodb_backends
|
||||
from moto.dynamodb.models.utilities import dynamo_json_dump
|
||||
from moto.dynamodb.parsing.key_condition_expression import parse_expression
|
||||
from moto.dynamodb.parsing.reserved_keywords import ReservedKeywords
|
||||
from moto.utilities.aws_headers import amz_crc32, amzn_request_id
|
||||
from moto.utilities.aws_headers import amz_crc32
|
||||
|
||||
from .exceptions import (
|
||||
KeyIsEmptyStringException,
|
||||
@ -40,10 +39,12 @@ def include_consumed_capacity(
|
||||
expected_capacity = handler.body.get("ReturnConsumedCapacity", "NONE")
|
||||
if expected_capacity not in ["NONE", "TOTAL", "INDEXES"]:
|
||||
type_ = "ValidationException"
|
||||
headers = handler.response_headers.copy()
|
||||
headers["status"] = "400"
|
||||
message = f"1 validation error detected: Value '{expected_capacity}' at 'returnConsumedCapacity' failed to satisfy constraint: Member must satisfy enum value set: [INDEXES, TOTAL, NONE]"
|
||||
return (
|
||||
400,
|
||||
handler.response_headers,
|
||||
headers,
|
||||
dynamo_json_dump({"__type": type_, "message": message}),
|
||||
)
|
||||
table_name = handler.body.get("TableName", "")
|
||||
@ -189,22 +190,9 @@ class DynamoHandler(BaseResponse):
|
||||
return dynamodb_backends[self.current_account][self.region]
|
||||
|
||||
@amz_crc32
|
||||
@amzn_request_id
|
||||
def call_action(self) -> TYPE_RESPONSE:
|
||||
self.body = json.loads(self.body or "{}")
|
||||
endpoint = self.get_endpoint_name(self.headers)
|
||||
if endpoint:
|
||||
endpoint = camelcase_to_underscores(endpoint)
|
||||
response = getattr(self, endpoint)()
|
||||
if isinstance(response, str):
|
||||
return 200, self.response_headers, response
|
||||
|
||||
else:
|
||||
status_code, new_headers, response_content = response
|
||||
self.response_headers.update(new_headers)
|
||||
return status_code, self.response_headers, response_content
|
||||
else:
|
||||
return 404, self.response_headers, ""
|
||||
return super().call_action()
|
||||
|
||||
def list_tables(self) -> str:
|
||||
body = self.body
|
||||
|
@ -1,6 +1,5 @@
|
||||
from moto.core.exceptions import RESTError
|
||||
from moto.core.responses import BaseResponse
|
||||
from moto.utilities.aws_headers import amzn_request_id
|
||||
|
||||
from .exceptions import ListenerOrBalancerMissingError, TargetGroupNotFoundError
|
||||
from .models import ELBv2Backend, elbv2_backends
|
||||
@ -375,7 +374,6 @@ class ELBV2Response(BaseResponse):
|
||||
def elbv2_backend(self) -> ELBv2Backend:
|
||||
return elbv2_backends[self.current_account][self.region]
|
||||
|
||||
@amzn_request_id
|
||||
def create_load_balancer(self) -> str:
|
||||
params = self._get_params()
|
||||
load_balancer_name = params.get("Name")
|
||||
@ -398,7 +396,6 @@ class ELBV2Response(BaseResponse):
|
||||
template = self.response_template(CREATE_LOAD_BALANCER_TEMPLATE)
|
||||
return template.render(load_balancer=load_balancer)
|
||||
|
||||
@amzn_request_id
|
||||
def create_rule(self) -> str:
|
||||
params = self._get_params()
|
||||
rules = self.elbv2_backend.create_rule(
|
||||
@ -412,7 +409,6 @@ class ELBV2Response(BaseResponse):
|
||||
template = self.response_template(CREATE_RULE_TEMPLATE)
|
||||
return template.render(rules=rules)
|
||||
|
||||
@amzn_request_id
|
||||
def create_target_group(self) -> str:
|
||||
params = self._get_params()
|
||||
name = params.get("Name")
|
||||
@ -456,7 +452,6 @@ class ELBV2Response(BaseResponse):
|
||||
template = self.response_template(CREATE_TARGET_GROUP_TEMPLATE)
|
||||
return template.render(target_group=target_group)
|
||||
|
||||
@amzn_request_id
|
||||
def create_listener(self) -> str:
|
||||
params = self._get_params()
|
||||
load_balancer_arn = self._get_param("LoadBalancerArn")
|
||||
@ -486,7 +481,6 @@ class ELBV2Response(BaseResponse):
|
||||
template = self.response_template(CREATE_LISTENER_TEMPLATE)
|
||||
return template.render(listener=listener)
|
||||
|
||||
@amzn_request_id
|
||||
def describe_load_balancers(self) -> str:
|
||||
arns = self._get_multi_param("LoadBalancerArns.member")
|
||||
names = self._get_multi_param("Names.member")
|
||||
@ -510,7 +504,6 @@ class ELBV2Response(BaseResponse):
|
||||
template = self.response_template(DESCRIBE_LOAD_BALANCERS_TEMPLATE)
|
||||
return template.render(load_balancers=load_balancers_resp, marker=next_marker)
|
||||
|
||||
@amzn_request_id
|
||||
def describe_rules(self) -> str:
|
||||
listener_arn = self._get_param("ListenerArn")
|
||||
rule_arns = (
|
||||
@ -539,7 +532,6 @@ class ELBV2Response(BaseResponse):
|
||||
template = self.response_template(DESCRIBE_RULES_TEMPLATE)
|
||||
return template.render(rules=rules_resp, marker=next_marker)
|
||||
|
||||
@amzn_request_id
|
||||
def describe_target_groups(self) -> str:
|
||||
load_balancer_arn = self._get_param("LoadBalancerArn")
|
||||
target_group_arns = self._get_multi_param("TargetGroupArns.member")
|
||||
@ -551,7 +543,6 @@ class ELBV2Response(BaseResponse):
|
||||
template = self.response_template(DESCRIBE_TARGET_GROUPS_TEMPLATE)
|
||||
return template.render(target_groups=target_groups)
|
||||
|
||||
@amzn_request_id
|
||||
def describe_target_group_attributes(self) -> str:
|
||||
target_group_arn = self._get_param("TargetGroupArn")
|
||||
target_group = self.elbv2_backend.target_groups.get(target_group_arn)
|
||||
@ -560,7 +551,6 @@ class ELBV2Response(BaseResponse):
|
||||
template = self.response_template(DESCRIBE_TARGET_GROUP_ATTRIBUTES_TEMPLATE)
|
||||
return template.render(attributes=target_group.attributes)
|
||||
|
||||
@amzn_request_id
|
||||
def describe_listeners(self) -> str:
|
||||
load_balancer_arn = self._get_param("LoadBalancerArn")
|
||||
listener_arns = self._get_multi_param("ListenerArns.member")
|
||||
@ -573,35 +563,30 @@ class ELBV2Response(BaseResponse):
|
||||
template = self.response_template(DESCRIBE_LISTENERS_TEMPLATE)
|
||||
return template.render(listeners=listeners)
|
||||
|
||||
@amzn_request_id
|
||||
def delete_load_balancer(self) -> str:
|
||||
arn = self._get_param("LoadBalancerArn")
|
||||
self.elbv2_backend.delete_load_balancer(arn)
|
||||
template = self.response_template(DELETE_LOAD_BALANCER_TEMPLATE)
|
||||
return template.render()
|
||||
|
||||
@amzn_request_id
|
||||
def delete_rule(self) -> str:
|
||||
arn = self._get_param("RuleArn")
|
||||
self.elbv2_backend.delete_rule(arn)
|
||||
template = self.response_template(DELETE_RULE_TEMPLATE)
|
||||
return template.render()
|
||||
|
||||
@amzn_request_id
|
||||
def delete_target_group(self) -> str:
|
||||
arn = self._get_param("TargetGroupArn")
|
||||
self.elbv2_backend.delete_target_group(arn)
|
||||
template = self.response_template(DELETE_TARGET_GROUP_TEMPLATE)
|
||||
return template.render()
|
||||
|
||||
@amzn_request_id
|
||||
def delete_listener(self) -> str:
|
||||
arn = self._get_param("ListenerArn")
|
||||
self.elbv2_backend.delete_listener(arn)
|
||||
template = self.response_template(DELETE_LISTENER_TEMPLATE)
|
||||
return template.render()
|
||||
|
||||
@amzn_request_id
|
||||
def modify_rule(self) -> str:
|
||||
rule_arn = self._get_param("RuleArn")
|
||||
params = self._get_params()
|
||||
@ -613,7 +598,6 @@ class ELBV2Response(BaseResponse):
|
||||
template = self.response_template(MODIFY_RULE_TEMPLATE)
|
||||
return template.render(rules=rules)
|
||||
|
||||
@amzn_request_id
|
||||
def modify_target_group_attributes(self) -> str:
|
||||
target_group_arn = self._get_param("TargetGroupArn")
|
||||
attrs = self._get_list_prefix("Attributes.member")
|
||||
@ -623,7 +607,6 @@ class ELBV2Response(BaseResponse):
|
||||
template = self.response_template(MODIFY_TARGET_GROUP_ATTRIBUTES_TEMPLATE)
|
||||
return template.render(attributes=attributes)
|
||||
|
||||
@amzn_request_id
|
||||
def register_targets(self) -> str:
|
||||
target_group_arn = self._get_param("TargetGroupArn")
|
||||
targets = self._get_list_prefix("Targets.member")
|
||||
@ -632,7 +615,6 @@ class ELBV2Response(BaseResponse):
|
||||
template = self.response_template(REGISTER_TARGETS_TEMPLATE)
|
||||
return template.render()
|
||||
|
||||
@amzn_request_id
|
||||
def deregister_targets(self) -> str:
|
||||
target_group_arn = self._get_param("TargetGroupArn")
|
||||
targets = self._get_list_prefix("Targets.member")
|
||||
@ -641,7 +623,6 @@ class ELBV2Response(BaseResponse):
|
||||
template = self.response_template(DEREGISTER_TARGETS_TEMPLATE)
|
||||
return template.render()
|
||||
|
||||
@amzn_request_id
|
||||
def describe_target_health(self) -> str:
|
||||
target_group_arn = self._get_param("TargetGroupArn")
|
||||
targets = self._get_list_prefix("Targets.member")
|
||||
@ -652,7 +633,6 @@ class ELBV2Response(BaseResponse):
|
||||
template = self.response_template(DESCRIBE_TARGET_HEALTH_TEMPLATE)
|
||||
return template.render(target_health_descriptions=target_health_descriptions)
|
||||
|
||||
@amzn_request_id
|
||||
def set_rule_priorities(self) -> str:
|
||||
rule_priorities = self._get_list_prefix("RulePriorities.member")
|
||||
for rule_priority in rule_priorities:
|
||||
@ -661,7 +641,6 @@ class ELBV2Response(BaseResponse):
|
||||
template = self.response_template(SET_RULE_PRIORITIES_TEMPLATE)
|
||||
return template.render(rules=rules)
|
||||
|
||||
@amzn_request_id
|
||||
def add_tags(self) -> str:
|
||||
resource_arns = self._get_multi_param("ResourceArns.member")
|
||||
tags = self._get_params().get("Tags")
|
||||
@ -671,7 +650,6 @@ class ELBV2Response(BaseResponse):
|
||||
template = self.response_template(ADD_TAGS_TEMPLATE)
|
||||
return template.render()
|
||||
|
||||
@amzn_request_id
|
||||
def remove_tags(self) -> str:
|
||||
resource_arns = self._get_multi_param("ResourceArns.member")
|
||||
tag_keys = self._get_multi_param("TagKeys.member")
|
||||
@ -681,7 +659,6 @@ class ELBV2Response(BaseResponse):
|
||||
template = self.response_template(REMOVE_TAGS_TEMPLATE)
|
||||
return template.render()
|
||||
|
||||
@amzn_request_id
|
||||
def describe_tags(self) -> str:
|
||||
resource_arns = self._get_multi_param("ResourceArns.member")
|
||||
resource_tags = self.elbv2_backend.describe_tags(resource_arns)
|
||||
@ -689,7 +666,6 @@ class ELBV2Response(BaseResponse):
|
||||
template = self.response_template(DESCRIBE_TAGS_TEMPLATE)
|
||||
return template.render(resource_tags=resource_tags)
|
||||
|
||||
@amzn_request_id
|
||||
def describe_account_limits(self) -> str:
|
||||
# Supports paging but not worth implementing yet
|
||||
# marker = self._get_param('Marker')
|
||||
@ -709,7 +685,6 @@ class ELBV2Response(BaseResponse):
|
||||
template = self.response_template(DESCRIBE_LIMITS_TEMPLATE)
|
||||
return template.render(limits=limits)
|
||||
|
||||
@amzn_request_id
|
||||
def describe_ssl_policies(self) -> str:
|
||||
names = self._get_multi_param("Names.member.")
|
||||
# Supports paging but not worth implementing yet
|
||||
@ -723,7 +698,6 @@ class ELBV2Response(BaseResponse):
|
||||
template = self.response_template(DESCRIBE_SSL_POLICIES_TEMPLATE)
|
||||
return template.render(policies=policies)
|
||||
|
||||
@amzn_request_id
|
||||
def set_ip_address_type(self) -> str:
|
||||
arn = self._get_param("LoadBalancerArn")
|
||||
ip_type = self._get_param("IpAddressType")
|
||||
@ -733,7 +707,6 @@ class ELBV2Response(BaseResponse):
|
||||
template = self.response_template(SET_IP_ADDRESS_TYPE_TEMPLATE)
|
||||
return template.render(ip_type=ip_type)
|
||||
|
||||
@amzn_request_id
|
||||
def set_security_groups(self) -> str:
|
||||
arn = self._get_param("LoadBalancerArn")
|
||||
sec_groups = self._get_multi_param("SecurityGroups.member.")
|
||||
@ -743,7 +716,6 @@ class ELBV2Response(BaseResponse):
|
||||
template = self.response_template(SET_SECURITY_GROUPS_TEMPLATE)
|
||||
return template.render(sec_groups=sec_groups)
|
||||
|
||||
@amzn_request_id
|
||||
def set_subnets(self) -> str:
|
||||
arn = self._get_param("LoadBalancerArn")
|
||||
subnets = self._get_multi_param("Subnets.member.")
|
||||
@ -754,7 +726,6 @@ class ELBV2Response(BaseResponse):
|
||||
template = self.response_template(SET_SUBNETS_TEMPLATE)
|
||||
return template.render(subnets=subnet_zone_list)
|
||||
|
||||
@amzn_request_id
|
||||
def modify_load_balancer_attributes(self) -> str:
|
||||
arn = self._get_param("LoadBalancerArn")
|
||||
attrs = self._get_map_prefix(
|
||||
@ -766,7 +737,6 @@ class ELBV2Response(BaseResponse):
|
||||
template = self.response_template(MODIFY_LOADBALANCER_ATTRS_TEMPLATE)
|
||||
return template.render(attrs=all_attrs)
|
||||
|
||||
@amzn_request_id
|
||||
def describe_load_balancer_attributes(self) -> str:
|
||||
arn = self._get_param("LoadBalancerArn")
|
||||
attrs = self.elbv2_backend.describe_load_balancer_attributes(arn)
|
||||
@ -774,7 +744,6 @@ class ELBV2Response(BaseResponse):
|
||||
template = self.response_template(DESCRIBE_LOADBALANCER_ATTRS_TEMPLATE)
|
||||
return template.render(attrs=attrs)
|
||||
|
||||
@amzn_request_id
|
||||
def modify_target_group(self) -> str:
|
||||
arn = self._get_param("TargetGroupArn")
|
||||
|
||||
@ -806,7 +775,6 @@ class ELBV2Response(BaseResponse):
|
||||
template = self.response_template(MODIFY_TARGET_GROUP_TEMPLATE)
|
||||
return template.render(target_group=target_group)
|
||||
|
||||
@amzn_request_id
|
||||
def modify_listener(self) -> str:
|
||||
arn = self._get_param("ListenerArn")
|
||||
port = self._get_param("Port")
|
||||
@ -828,7 +796,6 @@ class ELBV2Response(BaseResponse):
|
||||
template = self.response_template(MODIFY_LISTENER_TEMPLATE)
|
||||
return template.render(listener=listener)
|
||||
|
||||
@amzn_request_id
|
||||
def add_listener_certificates(self) -> str:
|
||||
arn = self._get_param("ListenerArn")
|
||||
certificates = self._get_list_prefix("Certificates.member")
|
||||
@ -839,7 +806,6 @@ class ELBV2Response(BaseResponse):
|
||||
template = self.response_template(ADD_LISTENER_CERTIFICATES_TEMPLATE)
|
||||
return template.render(certificates=certificate_arns)
|
||||
|
||||
@amzn_request_id
|
||||
def describe_listener_certificates(self) -> str:
|
||||
arn = self._get_param("ListenerArn")
|
||||
certificates = self.elbv2_backend.describe_listener_certificates(arn)
|
||||
@ -847,7 +813,6 @@ class ELBV2Response(BaseResponse):
|
||||
template = self.response_template(DESCRIBE_LISTENER_CERTIFICATES_TEMPLATE)
|
||||
return template.render(certificates=certificates)
|
||||
|
||||
@amzn_request_id
|
||||
def remove_listener_certificates(self) -> str:
|
||||
arn = self._get_param("ListenerArn")
|
||||
certificates = self._get_list_prefix("Certificates.member")
|
||||
|
@ -2,7 +2,6 @@ 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 ForecastBackend, forecast_backends
|
||||
|
||||
@ -15,7 +14,6 @@ class ForecastResponse(BaseResponse):
|
||||
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")
|
||||
@ -31,7 +29,6 @@ class ForecastResponse(BaseResponse):
|
||||
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")
|
||||
|
||||
@ -49,20 +46,17 @@ class ForecastResponse(BaseResponse):
|
||||
}
|
||||
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(
|
||||
[
|
||||
|
@ -21,7 +21,6 @@ from moto.s3bucket_path.utils import (
|
||||
from moto.s3bucket_path.utils import (
|
||||
parse_key_name as bucketpath_parse_key_name,
|
||||
)
|
||||
from moto.utilities.aws_headers import amzn_request_id
|
||||
|
||||
from .exceptions import (
|
||||
AccessForbidden,
|
||||
@ -284,7 +283,6 @@ class S3Response(BaseResponse):
|
||||
# Using path-based buckets
|
||||
return self.bucket_response(request, full_url, headers)
|
||||
|
||||
@amzn_request_id
|
||||
def bucket_response(
|
||||
self, request: Any, full_url: str, headers: Any
|
||||
) -> TYPE_RESPONSE:
|
||||
@ -1246,7 +1244,6 @@ class S3Response(BaseResponse):
|
||||
# last line should equal
|
||||
# amz-checksum-sha256:<..>\r\n
|
||||
|
||||
@amzn_request_id
|
||||
def key_response(
|
||||
self, request: Any, full_url: str, headers: Dict[str, Any]
|
||||
) -> TYPE_RESPONSE:
|
||||
|
@ -7,7 +7,6 @@ from moto.core.common_types import TYPE_RESPONSE
|
||||
from moto.core.responses import BaseResponse
|
||||
from moto.s3.exceptions import S3ClientError
|
||||
from moto.s3.responses import S3_PUBLIC_ACCESS_BLOCK_CONFIGURATION
|
||||
from moto.utilities.aws_headers import amzn_request_id
|
||||
|
||||
from .models import S3ControlBackend, s3control_backends
|
||||
|
||||
@ -20,7 +19,6 @@ class S3ControlResponse(BaseResponse):
|
||||
def backend(self) -> S3ControlBackend:
|
||||
return s3control_backends[self.current_account]["global"]
|
||||
|
||||
@amzn_request_id
|
||||
def public_access_block(self, request: Any, full_url: str, headers: Any) -> TYPE_RESPONSE: # type: ignore
|
||||
self.setup_class(request, full_url, headers)
|
||||
try:
|
||||
|
@ -4,7 +4,6 @@ from typing import Any
|
||||
from moto.core.common_types import TYPE_RESPONSE
|
||||
from moto.core.responses import BaseResponse
|
||||
from moto.sagemaker.exceptions import AWSValidationException
|
||||
from moto.utilities.aws_headers import amzn_request_id
|
||||
|
||||
from .models import SageMakerModelBackend, sagemaker_backends
|
||||
|
||||
@ -52,7 +51,6 @@ class SageMakerResponse(BaseResponse):
|
||||
models = self.sagemaker_backend.list_models()
|
||||
return json.dumps({"Models": [model.response_object for model in models]})
|
||||
|
||||
@amzn_request_id
|
||||
def create_notebook_instance(self) -> TYPE_RESPONSE:
|
||||
sagemaker_notebook = self.sagemaker_backend.create_notebook_instance(
|
||||
notebook_instance_name=self._get_param("NotebookInstanceName"),
|
||||
@ -72,7 +70,6 @@ class SageMakerResponse(BaseResponse):
|
||||
)
|
||||
return 200, {}, json.dumps({"NotebookInstanceArn": sagemaker_notebook.arn})
|
||||
|
||||
@amzn_request_id
|
||||
def describe_notebook_instance(self) -> str:
|
||||
notebook_instance_name = self._get_param("NotebookInstanceName")
|
||||
notebook_instance = self.sagemaker_backend.get_notebook_instance(
|
||||
@ -80,25 +77,21 @@ class SageMakerResponse(BaseResponse):
|
||||
)
|
||||
return json.dumps(notebook_instance.to_dict())
|
||||
|
||||
@amzn_request_id
|
||||
def start_notebook_instance(self) -> TYPE_RESPONSE:
|
||||
notebook_instance_name = self._get_param("NotebookInstanceName")
|
||||
self.sagemaker_backend.start_notebook_instance(notebook_instance_name)
|
||||
return 200, {}, json.dumps("{}")
|
||||
|
||||
@amzn_request_id
|
||||
def stop_notebook_instance(self) -> TYPE_RESPONSE:
|
||||
notebook_instance_name = self._get_param("NotebookInstanceName")
|
||||
self.sagemaker_backend.stop_notebook_instance(notebook_instance_name)
|
||||
return 200, {}, json.dumps("{}")
|
||||
|
||||
@amzn_request_id
|
||||
def delete_notebook_instance(self) -> TYPE_RESPONSE:
|
||||
notebook_instance_name = self._get_param("NotebookInstanceName")
|
||||
self.sagemaker_backend.delete_notebook_instance(notebook_instance_name)
|
||||
return 200, {}, json.dumps("{}")
|
||||
|
||||
@amzn_request_id
|
||||
def list_notebook_instances(self) -> str:
|
||||
sort_by = self._get_param("SortBy", "Name")
|
||||
sort_order = self._get_param("SortOrder", "Ascending")
|
||||
@ -121,7 +114,6 @@ class SageMakerResponse(BaseResponse):
|
||||
}
|
||||
)
|
||||
|
||||
@amzn_request_id
|
||||
def list_tags(self) -> TYPE_RESPONSE:
|
||||
arn = self._get_param("ResourceArn")
|
||||
max_results = self._get_param("MaxResults")
|
||||
@ -134,21 +126,18 @@ class SageMakerResponse(BaseResponse):
|
||||
response["NextToken"] = next_token
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def add_tags(self) -> TYPE_RESPONSE:
|
||||
arn = self._get_param("ResourceArn")
|
||||
tags = self._get_param("Tags")
|
||||
tags = self.sagemaker_backend.add_tags(arn, tags)
|
||||
return 200, {}, json.dumps({"Tags": tags})
|
||||
|
||||
@amzn_request_id
|
||||
def delete_tags(self) -> TYPE_RESPONSE:
|
||||
arn = self._get_param("ResourceArn")
|
||||
tag_keys = self._get_param("TagKeys")
|
||||
self.sagemaker_backend.delete_tags(arn, tag_keys)
|
||||
return 200, {}, json.dumps({})
|
||||
|
||||
@amzn_request_id
|
||||
def create_endpoint_config(self) -> TYPE_RESPONSE:
|
||||
endpoint_config = self.sagemaker_backend.create_endpoint_config(
|
||||
endpoint_config_name=self._get_param("EndpointConfigName"),
|
||||
@ -163,19 +152,16 @@ class SageMakerResponse(BaseResponse):
|
||||
json.dumps({"EndpointConfigArn": endpoint_config.endpoint_config_arn}),
|
||||
)
|
||||
|
||||
@amzn_request_id
|
||||
def describe_endpoint_config(self) -> str:
|
||||
endpoint_config_name = self._get_param("EndpointConfigName")
|
||||
response = self.sagemaker_backend.describe_endpoint_config(endpoint_config_name)
|
||||
return json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def delete_endpoint_config(self) -> TYPE_RESPONSE:
|
||||
endpoint_config_name = self._get_param("EndpointConfigName")
|
||||
self.sagemaker_backend.delete_endpoint_config(endpoint_config_name)
|
||||
return 200, {}, json.dumps("{}")
|
||||
|
||||
@amzn_request_id
|
||||
def create_endpoint(self) -> TYPE_RESPONSE:
|
||||
endpoint = self.sagemaker_backend.create_endpoint(
|
||||
endpoint_name=self._get_param("EndpointName"),
|
||||
@ -184,19 +170,16 @@ class SageMakerResponse(BaseResponse):
|
||||
)
|
||||
return 200, {}, json.dumps({"EndpointArn": endpoint.endpoint_arn})
|
||||
|
||||
@amzn_request_id
|
||||
def describe_endpoint(self) -> str:
|
||||
endpoint_name = self._get_param("EndpointName")
|
||||
response = self.sagemaker_backend.describe_endpoint(endpoint_name)
|
||||
return json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def delete_endpoint(self) -> TYPE_RESPONSE:
|
||||
endpoint_name = self._get_param("EndpointName")
|
||||
self.sagemaker_backend.delete_endpoint(endpoint_name)
|
||||
return 200, {}, json.dumps("{}")
|
||||
|
||||
@amzn_request_id
|
||||
def create_processing_job(self) -> TYPE_RESPONSE:
|
||||
processing_job = self.sagemaker_backend.create_processing_job(
|
||||
app_specification=self._get_param("AppSpecification"),
|
||||
@ -212,13 +195,11 @@ class SageMakerResponse(BaseResponse):
|
||||
response = {"ProcessingJobArn": processing_job.processing_job_arn}
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def describe_processing_job(self) -> str:
|
||||
processing_job_name = self._get_param("ProcessingJobName")
|
||||
response = self.sagemaker_backend.describe_processing_job(processing_job_name)
|
||||
return json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def create_transform_job(self) -> TYPE_RESPONSE:
|
||||
transform_job = self.sagemaker_backend.create_transform_job(
|
||||
transform_job_name=self._get_param("TransformJobName"),
|
||||
@ -241,7 +222,6 @@ class SageMakerResponse(BaseResponse):
|
||||
}
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def describe_transform_job(self) -> str:
|
||||
transform_job_name = self._get_param("TransformJobName")
|
||||
response = self.sagemaker_backend.describe_transform_job(
|
||||
@ -249,7 +229,6 @@ class SageMakerResponse(BaseResponse):
|
||||
)
|
||||
return json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def create_training_job(self) -> TYPE_RESPONSE:
|
||||
training_job = self.sagemaker_backend.create_training_job(
|
||||
training_job_name=self._get_param("TrainingJobName"),
|
||||
@ -280,13 +259,11 @@ class SageMakerResponse(BaseResponse):
|
||||
}
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def describe_training_job(self) -> str:
|
||||
training_job_name = self._get_param("TrainingJobName")
|
||||
response = self.sagemaker_backend.describe_training_job(training_job_name)
|
||||
return json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def create_notebook_instance_lifecycle_config(self) -> TYPE_RESPONSE:
|
||||
lifecycle_configuration = (
|
||||
self.sagemaker_backend.create_notebook_instance_lifecycle_config(
|
||||
@ -302,7 +279,6 @@ class SageMakerResponse(BaseResponse):
|
||||
}
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def describe_notebook_instance_lifecycle_config(self) -> str:
|
||||
response = self.sagemaker_backend.describe_notebook_instance_lifecycle_config(
|
||||
notebook_instance_lifecycle_config_name=self._get_param(
|
||||
@ -311,7 +287,6 @@ class SageMakerResponse(BaseResponse):
|
||||
)
|
||||
return json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def delete_notebook_instance_lifecycle_config(self) -> TYPE_RESPONSE:
|
||||
self.sagemaker_backend.delete_notebook_instance_lifecycle_config(
|
||||
notebook_instance_lifecycle_config_name=self._get_param(
|
||||
@ -320,7 +295,6 @@ class SageMakerResponse(BaseResponse):
|
||||
)
|
||||
return 200, {}, json.dumps("{}")
|
||||
|
||||
@amzn_request_id
|
||||
def search(self) -> TYPE_RESPONSE:
|
||||
response = self.sagemaker_backend.search(
|
||||
resource=self._get_param("Resource"),
|
||||
@ -328,7 +302,6 @@ class SageMakerResponse(BaseResponse):
|
||||
)
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def list_experiments(self) -> TYPE_RESPONSE:
|
||||
MaxResults = self._get_param("MaxResults")
|
||||
NextToken = self._get_param("NextToken")
|
||||
@ -356,28 +329,24 @@ class SageMakerResponse(BaseResponse):
|
||||
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def delete_experiment(self) -> TYPE_RESPONSE:
|
||||
self.sagemaker_backend.delete_experiment(
|
||||
experiment_name=self._get_param("ExperimentName")
|
||||
)
|
||||
return 200, {}, json.dumps({})
|
||||
|
||||
@amzn_request_id
|
||||
def create_experiment(self) -> TYPE_RESPONSE:
|
||||
response = self.sagemaker_backend.create_experiment(
|
||||
experiment_name=self._get_param("ExperimentName")
|
||||
)
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def describe_experiment(self) -> TYPE_RESPONSE:
|
||||
response = self.sagemaker_backend.describe_experiment(
|
||||
experiment_name=self._get_param("ExperimentName")
|
||||
)
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def list_trials(self) -> TYPE_RESPONSE:
|
||||
MaxResults = self._get_param("MaxResults")
|
||||
NextToken = self._get_param("NextToken")
|
||||
@ -408,7 +377,6 @@ class SageMakerResponse(BaseResponse):
|
||||
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def create_trial(self) -> TYPE_RESPONSE:
|
||||
response = self.sagemaker_backend.create_trial(
|
||||
trial_name=self._get_param("TrialName"),
|
||||
@ -416,7 +384,6 @@ class SageMakerResponse(BaseResponse):
|
||||
)
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def list_trial_components(self) -> TYPE_RESPONSE:
|
||||
MaxResults = self._get_param("MaxResults")
|
||||
NextToken = self._get_param("NextToken")
|
||||
@ -446,7 +413,6 @@ class SageMakerResponse(BaseResponse):
|
||||
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def create_trial_component(self) -> TYPE_RESPONSE:
|
||||
response = self.sagemaker_backend.create_trial_component(
|
||||
trial_component_name=self._get_param("TrialComponentName"),
|
||||
@ -454,31 +420,26 @@ class SageMakerResponse(BaseResponse):
|
||||
)
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def describe_trial(self) -> str:
|
||||
trial_name = self._get_param("TrialName")
|
||||
response = self.sagemaker_backend.describe_trial(trial_name)
|
||||
return json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def delete_trial(self) -> TYPE_RESPONSE:
|
||||
trial_name = self._get_param("TrialName")
|
||||
self.sagemaker_backend.delete_trial(trial_name)
|
||||
return 200, {}, json.dumps({})
|
||||
|
||||
@amzn_request_id
|
||||
def delete_trial_component(self) -> TYPE_RESPONSE:
|
||||
trial_component_name = self._get_param("TrialComponentName")
|
||||
self.sagemaker_backend.delete_trial_component(trial_component_name)
|
||||
return 200, {}, json.dumps({})
|
||||
|
||||
@amzn_request_id
|
||||
def describe_trial_component(self) -> str:
|
||||
trial_component_name = self._get_param("TrialComponentName")
|
||||
response = self.sagemaker_backend.describe_trial_component(trial_component_name)
|
||||
return json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def associate_trial_component(self) -> TYPE_RESPONSE:
|
||||
trial_name = self._get_param("TrialName")
|
||||
trial_component_name = self._get_param("TrialComponentName")
|
||||
@ -487,7 +448,6 @@ class SageMakerResponse(BaseResponse):
|
||||
)
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def disassociate_trial_component(self) -> TYPE_RESPONSE:
|
||||
trial_component_name = self._get_param("TrialComponentName")
|
||||
trial_name = self._get_param("TrialName")
|
||||
@ -496,14 +456,12 @@ class SageMakerResponse(BaseResponse):
|
||||
)
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def describe_pipeline(self) -> TYPE_RESPONSE:
|
||||
response = self.sagemaker_backend.describe_pipeline(
|
||||
self._get_param("PipelineName")
|
||||
)
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def start_pipeline_execution(self) -> TYPE_RESPONSE:
|
||||
response = self.sagemaker_backend.start_pipeline_execution(
|
||||
self._get_param("PipelineName"),
|
||||
@ -515,35 +473,30 @@ class SageMakerResponse(BaseResponse):
|
||||
)
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def describe_pipeline_execution(self) -> TYPE_RESPONSE:
|
||||
response = self.sagemaker_backend.describe_pipeline_execution(
|
||||
self._get_param("PipelineExecutionArn")
|
||||
)
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def describe_pipeline_definition_for_execution(self) -> TYPE_RESPONSE:
|
||||
response = self.sagemaker_backend.describe_pipeline_definition_for_execution(
|
||||
self._get_param("PipelineExecutionArn")
|
||||
)
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def list_pipeline_parameters_for_execution(self) -> TYPE_RESPONSE:
|
||||
response = self.sagemaker_backend.list_pipeline_parameters_for_execution(
|
||||
self._get_param("PipelineExecutionArn")
|
||||
)
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def list_pipeline_executions(self) -> TYPE_RESPONSE:
|
||||
response = self.sagemaker_backend.list_pipeline_executions(
|
||||
self._get_param("PipelineName")
|
||||
)
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def create_pipeline(self) -> TYPE_RESPONSE:
|
||||
pipeline = self.sagemaker_backend.create_pipeline(
|
||||
pipeline_name=self._get_param("PipelineName"),
|
||||
@ -563,7 +516,6 @@ class SageMakerResponse(BaseResponse):
|
||||
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def delete_pipeline(self) -> TYPE_RESPONSE:
|
||||
pipeline_arn = self.sagemaker_backend.delete_pipeline(
|
||||
pipeline_name=self._get_param("PipelineName"),
|
||||
@ -571,7 +523,6 @@ class SageMakerResponse(BaseResponse):
|
||||
response = {"PipelineArn": pipeline_arn}
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def update_pipeline(self) -> TYPE_RESPONSE:
|
||||
pipeline_arn = self.sagemaker_backend.update_pipeline(
|
||||
pipeline_name=self._get_param("PipelineName"),
|
||||
@ -588,7 +539,6 @@ class SageMakerResponse(BaseResponse):
|
||||
response = {"PipelineArn": pipeline_arn}
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def list_pipelines(self) -> TYPE_RESPONSE:
|
||||
max_results_range = range(1, 101)
|
||||
allowed_sort_by = ("Name", "CreationTime")
|
||||
@ -631,7 +581,6 @@ class SageMakerResponse(BaseResponse):
|
||||
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def list_processing_jobs(self) -> TYPE_RESPONSE:
|
||||
max_results_range = range(1, 101)
|
||||
allowed_sort_by = ["Name", "CreationTime", "Status"]
|
||||
@ -684,7 +633,6 @@ class SageMakerResponse(BaseResponse):
|
||||
)
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def list_transform_jobs(self) -> TYPE_RESPONSE:
|
||||
max_results_range = range(1, 101)
|
||||
allowed_sort_by = ["Name", "CreationTime", "Status"]
|
||||
@ -737,7 +685,6 @@ class SageMakerResponse(BaseResponse):
|
||||
)
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def list_training_jobs(self) -> TYPE_RESPONSE:
|
||||
max_results_range = range(1, 101)
|
||||
allowed_sort_by = ["Name", "CreationTime", "Status"]
|
||||
|
@ -12,7 +12,7 @@ from moto.core.utils import (
|
||||
camelcase_to_underscores,
|
||||
underscores_to_camelcase,
|
||||
)
|
||||
from moto.utilities.aws_headers import amz_crc32, amzn_request_id
|
||||
from moto.utilities.aws_headers import amz_crc32
|
||||
from moto.utilities.constants import JSON_TYPES
|
||||
|
||||
from .constants import (
|
||||
@ -134,7 +134,6 @@ class SQSResponse(BaseResponse):
|
||||
return visibility_timeout
|
||||
|
||||
@amz_crc32 # crc last as request_id can edit XML
|
||||
@amzn_request_id
|
||||
def call_action(self) -> TYPE_RESPONSE:
|
||||
status_code, headers, body = super().call_action()
|
||||
if status_code == 404:
|
||||
|
@ -2,7 +2,6 @@ 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 StepFunctionBackend, stepfunctions_backends
|
||||
|
||||
@ -15,7 +14,6 @@ class StepFunctionResponse(BaseResponse):
|
||||
def stepfunction_backend(self) -> StepFunctionBackend:
|
||||
return stepfunctions_backends[self.current_account][self.region]
|
||||
|
||||
@amzn_request_id
|
||||
def create_state_machine(self) -> TYPE_RESPONSE:
|
||||
name = self._get_param("name")
|
||||
definition = self._get_param("definition")
|
||||
@ -30,7 +28,6 @@ class StepFunctionResponse(BaseResponse):
|
||||
}
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def list_state_machines(self) -> TYPE_RESPONSE:
|
||||
max_results = self._get_int_param("maxResults")
|
||||
next_token = self._get_param("nextToken")
|
||||
@ -50,12 +47,10 @@ class StepFunctionResponse(BaseResponse):
|
||||
response["nextToken"] = next_token
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def describe_state_machine(self) -> TYPE_RESPONSE:
|
||||
arn = self._get_param("stateMachineArn")
|
||||
return self._describe_state_machine(arn)
|
||||
|
||||
@amzn_request_id
|
||||
def _describe_state_machine(self, state_machine_arn: str) -> TYPE_RESPONSE:
|
||||
state_machine = self.stepfunction_backend.describe_state_machine(
|
||||
state_machine_arn
|
||||
@ -70,13 +65,11 @@ class StepFunctionResponse(BaseResponse):
|
||||
}
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def delete_state_machine(self) -> TYPE_RESPONSE:
|
||||
arn = self._get_param("stateMachineArn")
|
||||
self.stepfunction_backend.delete_state_machine(arn)
|
||||
return 200, {}, json.dumps("{}")
|
||||
|
||||
@amzn_request_id
|
||||
def update_state_machine(self) -> TYPE_RESPONSE:
|
||||
arn = self._get_param("stateMachineArn")
|
||||
definition = self._get_param("definition")
|
||||
@ -89,28 +82,24 @@ class StepFunctionResponse(BaseResponse):
|
||||
}
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def list_tags_for_resource(self) -> TYPE_RESPONSE:
|
||||
arn = self._get_param("resourceArn")
|
||||
tags = self.stepfunction_backend.list_tags_for_resource(arn)
|
||||
response = {"tags": tags}
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def tag_resource(self) -> TYPE_RESPONSE:
|
||||
arn = self._get_param("resourceArn")
|
||||
tags = self._get_param("tags", [])
|
||||
self.stepfunction_backend.tag_resource(arn, tags)
|
||||
return 200, {}, json.dumps({})
|
||||
|
||||
@amzn_request_id
|
||||
def untag_resource(self) -> TYPE_RESPONSE:
|
||||
arn = self._get_param("resourceArn")
|
||||
tag_keys = self._get_param("tagKeys", [])
|
||||
self.stepfunction_backend.untag_resource(arn, tag_keys)
|
||||
return 200, {}, json.dumps({})
|
||||
|
||||
@amzn_request_id
|
||||
def start_execution(self) -> TYPE_RESPONSE:
|
||||
arn = self._get_param("stateMachineArn")
|
||||
name = self._get_param("name")
|
||||
@ -124,7 +113,6 @@ class StepFunctionResponse(BaseResponse):
|
||||
}
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def list_executions(self) -> TYPE_RESPONSE:
|
||||
max_results = self._get_int_param("maxResults")
|
||||
next_token = self._get_param("nextToken")
|
||||
@ -153,7 +141,6 @@ class StepFunctionResponse(BaseResponse):
|
||||
response["nextToken"] = next_token
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def describe_execution(self) -> TYPE_RESPONSE:
|
||||
arn = self._get_param("executionArn")
|
||||
execution = self.stepfunction_backend.describe_execution(arn)
|
||||
@ -168,20 +155,17 @@ class StepFunctionResponse(BaseResponse):
|
||||
}
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def describe_state_machine_for_execution(self) -> TYPE_RESPONSE:
|
||||
arn = self._get_param("executionArn")
|
||||
execution = self.stepfunction_backend.describe_execution(arn)
|
||||
return self._describe_state_machine(execution.state_machine_arn)
|
||||
|
||||
@amzn_request_id
|
||||
def stop_execution(self) -> TYPE_RESPONSE:
|
||||
arn = self._get_param("executionArn")
|
||||
execution = self.stepfunction_backend.stop_execution(arn)
|
||||
response = {"stopDate": execution.stop_date}
|
||||
return 200, {}, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def get_execution_history(self) -> TYPE_RESPONSE:
|
||||
execution_arn = self._get_param("executionArn")
|
||||
execution_history = self.stepfunction_backend.get_execution_history(
|
||||
|
@ -1,7 +1,6 @@
|
||||
import json
|
||||
|
||||
from moto.core.responses import BaseResponse
|
||||
from moto.utilities.aws_headers import amzn_request_id
|
||||
|
||||
from .models import TranscribeBackend, transcribe_backends
|
||||
|
||||
@ -14,7 +13,6 @@ class TranscribeResponse(BaseResponse):
|
||||
def transcribe_backend(self) -> TranscribeBackend:
|
||||
return transcribe_backends[self.current_account][self.region]
|
||||
|
||||
@amzn_request_id
|
||||
def start_transcription_job(self) -> str:
|
||||
name = self._get_param("TranscriptionJobName")
|
||||
response = self.transcribe_backend.start_transcription_job(
|
||||
@ -37,7 +35,6 @@ class TranscribeResponse(BaseResponse):
|
||||
)
|
||||
return json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def start_medical_transcription_job(self) -> str:
|
||||
name = self._get_param("MedicalTranscriptionJobName")
|
||||
response = self.transcribe_backend.start_medical_transcription_job(
|
||||
@ -54,7 +51,6 @@ class TranscribeResponse(BaseResponse):
|
||||
)
|
||||
return json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def list_transcription_jobs(self) -> str:
|
||||
state_equals = self._get_param("Status")
|
||||
job_name_contains = self._get_param("JobNameContains")
|
||||
@ -69,7 +65,6 @@ class TranscribeResponse(BaseResponse):
|
||||
)
|
||||
return json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def list_medical_transcription_jobs(self) -> str:
|
||||
status = self._get_param("Status")
|
||||
job_name_contains = self._get_param("JobNameContains")
|
||||
@ -84,7 +79,6 @@ class TranscribeResponse(BaseResponse):
|
||||
)
|
||||
return json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def get_transcription_job(self) -> str:
|
||||
transcription_job_name = self._get_param("TranscriptionJobName")
|
||||
response = self.transcribe_backend.get_transcription_job(
|
||||
@ -92,7 +86,6 @@ class TranscribeResponse(BaseResponse):
|
||||
)
|
||||
return json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def get_medical_transcription_job(self) -> str:
|
||||
medical_transcription_job_name = self._get_param("MedicalTranscriptionJobName")
|
||||
response = self.transcribe_backend.get_medical_transcription_job(
|
||||
@ -100,7 +93,6 @@ class TranscribeResponse(BaseResponse):
|
||||
)
|
||||
return json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def delete_transcription_job(self) -> str:
|
||||
transcription_job_name = self._get_param("TranscriptionJobName")
|
||||
self.transcribe_backend.delete_transcription_job(
|
||||
@ -108,7 +100,6 @@ class TranscribeResponse(BaseResponse):
|
||||
)
|
||||
return "{}"
|
||||
|
||||
@amzn_request_id
|
||||
def delete_medical_transcription_job(self) -> str:
|
||||
medical_transcription_job_name = self._get_param("MedicalTranscriptionJobName")
|
||||
self.transcribe_backend.delete_medical_transcription_job(
|
||||
@ -116,7 +107,6 @@ class TranscribeResponse(BaseResponse):
|
||||
)
|
||||
return "{}"
|
||||
|
||||
@amzn_request_id
|
||||
def create_vocabulary(self) -> str:
|
||||
vocabulary_name = self._get_param("VocabularyName")
|
||||
language_code = self._get_param("LanguageCode")
|
||||
@ -130,7 +120,6 @@ class TranscribeResponse(BaseResponse):
|
||||
)
|
||||
return json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def create_medical_vocabulary(self) -> str:
|
||||
vocabulary_name = self._get_param("VocabularyName")
|
||||
language_code = self._get_param("LanguageCode")
|
||||
@ -142,7 +131,6 @@ class TranscribeResponse(BaseResponse):
|
||||
)
|
||||
return json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def get_vocabulary(self) -> str:
|
||||
vocabulary_name = self._get_param("VocabularyName")
|
||||
response = self.transcribe_backend.get_vocabulary(
|
||||
@ -150,7 +138,6 @@ class TranscribeResponse(BaseResponse):
|
||||
)
|
||||
return json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def get_medical_vocabulary(self) -> str:
|
||||
vocabulary_name = self._get_param("VocabularyName")
|
||||
response = self.transcribe_backend.get_medical_vocabulary(
|
||||
@ -158,7 +145,6 @@ class TranscribeResponse(BaseResponse):
|
||||
)
|
||||
return json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def list_vocabularies(self) -> str:
|
||||
state_equals = self._get_param("StateEquals")
|
||||
name_contains = self._get_param("NameContains")
|
||||
@ -173,7 +159,6 @@ class TranscribeResponse(BaseResponse):
|
||||
)
|
||||
return json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def list_medical_vocabularies(self) -> str:
|
||||
state_equals = self._get_param("StateEquals")
|
||||
name_contains = self._get_param("NameContains")
|
||||
@ -188,13 +173,11 @@ class TranscribeResponse(BaseResponse):
|
||||
)
|
||||
return json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def delete_vocabulary(self) -> str:
|
||||
vocabulary_name = self._get_param("VocabularyName")
|
||||
self.transcribe_backend.delete_vocabulary(vocabulary_name=vocabulary_name)
|
||||
return "{}"
|
||||
|
||||
@amzn_request_id
|
||||
def delete_medical_vocabulary(self) -> str:
|
||||
vocabulary_name = self._get_param("VocabularyName")
|
||||
self.transcribe_backend.delete_medical_vocabulary(
|
||||
|
@ -7,9 +7,6 @@ else:
|
||||
Protocol = object
|
||||
|
||||
import binascii
|
||||
import re
|
||||
|
||||
from moto.moto_api._internal import mock_random as random
|
||||
|
||||
TypeDec = TypeVar("TypeDec", bound=Callable[..., Any])
|
||||
|
||||
@ -32,6 +29,8 @@ def gen_amz_crc32(response: Any, headerdict: Optional[Dict[str, Any]] = None) ->
|
||||
|
||||
|
||||
def gen_amzn_requestid_long(headerdict: Optional[Dict[str, Any]] = None) -> str:
|
||||
from moto.moto_api._internal import mock_random as random
|
||||
|
||||
req_id = random.get_random_string(length=52)
|
||||
|
||||
if headerdict is not None and isinstance(headerdict, dict):
|
||||
@ -53,7 +52,7 @@ def amz_crc32(f: TypeDec) -> GenericFunction:
|
||||
else:
|
||||
if len(response) == 2:
|
||||
body, new_headers = response
|
||||
status = new_headers.get("status", 200)
|
||||
status = new_headers.get("status", status)
|
||||
else:
|
||||
status, new_headers, body = response
|
||||
headers.update(new_headers)
|
||||
@ -66,34 +65,3 @@ def amz_crc32(f: TypeDec) -> GenericFunction:
|
||||
return status, headers, body
|
||||
|
||||
return _wrapper
|
||||
|
||||
|
||||
def amzn_request_id(f: TypeDec) -> GenericFunction:
|
||||
@wraps(f)
|
||||
def _wrapper(*args: Any, **kwargs: Any) -> Any: # type: ignore[misc]
|
||||
response = f(*args, **kwargs)
|
||||
|
||||
headers = {}
|
||||
status = 200
|
||||
|
||||
if isinstance(response, str):
|
||||
body = response
|
||||
else:
|
||||
if len(response) == 2:
|
||||
body, new_headers = response
|
||||
status = new_headers.get("status", 200)
|
||||
else:
|
||||
status, new_headers, body = response
|
||||
headers.update(new_headers)
|
||||
|
||||
request_id = gen_amzn_requestid_long(headers)
|
||||
|
||||
# Update request ID in XML
|
||||
try:
|
||||
body = re.sub(r"(?<=<RequestId>).*(?=<\/RequestId>)", request_id, body)
|
||||
except Exception: # Will just ignore if it cant work
|
||||
pass
|
||||
|
||||
return status, headers, body
|
||||
|
||||
return _wrapper
|
||||
|
@ -2,7 +2,6 @@ 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 GLOBAL_REGION, WAFV2Backend, wafv2_backends
|
||||
|
||||
@ -15,7 +14,6 @@ class WAFV2Response(BaseResponse):
|
||||
def wafv2_backend(self) -> WAFV2Backend:
|
||||
return wafv2_backends[self.current_account][self.region]
|
||||
|
||||
@amzn_request_id
|
||||
def associate_web_acl(self) -> TYPE_RESPONSE:
|
||||
body = json.loads(self.body)
|
||||
web_acl_arn = body["WebACLArn"]
|
||||
@ -23,14 +21,12 @@ class WAFV2Response(BaseResponse):
|
||||
self.wafv2_backend.associate_web_acl(web_acl_arn, resource_arn)
|
||||
return 200, {}, "{}"
|
||||
|
||||
@amzn_request_id
|
||||
def disassociate_web_acl(self) -> TYPE_RESPONSE:
|
||||
body = json.loads(self.body)
|
||||
resource_arn = body["ResourceArn"]
|
||||
self.wafv2_backend.disassociate_web_acl(resource_arn)
|
||||
return 200, {}, "{}"
|
||||
|
||||
@amzn_request_id
|
||||
def get_web_acl_for_resource(self) -> TYPE_RESPONSE:
|
||||
body = json.loads(self.body)
|
||||
resource_arn = body["ResourceArn"]
|
||||
@ -39,7 +35,6 @@ class WAFV2Response(BaseResponse):
|
||||
response_headers = {"Content-Type": "application/json"}
|
||||
return 200, response_headers, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def create_web_acl(self) -> TYPE_RESPONSE:
|
||||
"""https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html (response syntax section)"""
|
||||
|
||||
@ -64,7 +59,6 @@ class WAFV2Response(BaseResponse):
|
||||
response_headers = {"Content-Type": "application/json"}
|
||||
return 200, response_headers, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def delete_web_acl(self) -> TYPE_RESPONSE:
|
||||
scope = self._get_param("Scope")
|
||||
if scope == "CLOUDFRONT":
|
||||
@ -75,7 +69,6 @@ class WAFV2Response(BaseResponse):
|
||||
response_headers = {"Content-Type": "application/json"}
|
||||
return 200, response_headers, "{}"
|
||||
|
||||
@amzn_request_id
|
||||
def get_web_acl(self) -> TYPE_RESPONSE:
|
||||
scope = self._get_param("Scope")
|
||||
if scope == "CLOUDFRONT":
|
||||
@ -87,7 +80,6 @@ class WAFV2Response(BaseResponse):
|
||||
response_headers = {"Content-Type": "application/json"}
|
||||
return 200, response_headers, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def list_web_ac_ls(self) -> TYPE_RESPONSE:
|
||||
"""https://docs.aws.amazon.com/waf/latest/APIReference/API_ListWebACLs.html (response syntax section)"""
|
||||
|
||||
@ -99,7 +91,6 @@ class WAFV2Response(BaseResponse):
|
||||
response_headers = {"Content-Type": "application/json"}
|
||||
return 200, response_headers, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def list_rule_groups(self) -> TYPE_RESPONSE:
|
||||
scope = self._get_param("Scope")
|
||||
if scope == "CLOUDFRONT":
|
||||
@ -109,7 +100,6 @@ class WAFV2Response(BaseResponse):
|
||||
response_headers = {"Content-Type": "application/json"}
|
||||
return 200, response_headers, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def list_tags_for_resource(self) -> TYPE_RESPONSE:
|
||||
arn = self._get_param("ResourceARN")
|
||||
self.region = arn.split(":")[3]
|
||||
@ -118,7 +108,6 @@ class WAFV2Response(BaseResponse):
|
||||
response_headers = {"Content-Type": "application/json"}
|
||||
return 200, response_headers, json.dumps(response)
|
||||
|
||||
@amzn_request_id
|
||||
def tag_resource(self) -> TYPE_RESPONSE:
|
||||
body = json.loads(self.body)
|
||||
arn = body.get("ResourceARN")
|
||||
@ -127,7 +116,6 @@ class WAFV2Response(BaseResponse):
|
||||
self.wafv2_backend.tag_resource(arn, tags)
|
||||
return 200, {}, "{}"
|
||||
|
||||
@amzn_request_id
|
||||
def untag_resource(self) -> TYPE_RESPONSE:
|
||||
body = json.loads(self.body)
|
||||
arn = body.get("ResourceARN")
|
||||
@ -136,7 +124,6 @@ class WAFV2Response(BaseResponse):
|
||||
self.wafv2_backend.untag_resource(arn, tag_keys)
|
||||
return 200, {}, "{}"
|
||||
|
||||
@amzn_request_id
|
||||
def update_web_acl(self) -> TYPE_RESPONSE:
|
||||
body = json.loads(self.body)
|
||||
name = body.get("Name")
|
||||
|
@ -296,6 +296,7 @@ def test_create_resource():
|
||||
# this is hard to match against, so remove it
|
||||
root_resource["ResponseMetadata"].pop("HTTPHeaders", None)
|
||||
root_resource["ResponseMetadata"].pop("RetryAttempts", None)
|
||||
root_resource["ResponseMetadata"].pop("RequestId")
|
||||
assert root_resource == {
|
||||
"path": "/",
|
||||
"id": root_id,
|
||||
@ -340,6 +341,7 @@ def test_child_resource():
|
||||
# this is hard to match against, so remove it
|
||||
child_resource["ResponseMetadata"].pop("HTTPHeaders", None)
|
||||
child_resource["ResponseMetadata"].pop("RetryAttempts", None)
|
||||
child_resource["ResponseMetadata"].pop("RequestId")
|
||||
assert child_resource == {
|
||||
"path": "/users/tags",
|
||||
"pathPart": "tags",
|
||||
@ -373,6 +375,7 @@ def test_create_method():
|
||||
# this is hard to match against, so remove it
|
||||
response["ResponseMetadata"].pop("HTTPHeaders", None)
|
||||
response["ResponseMetadata"].pop("RetryAttempts", None)
|
||||
response["ResponseMetadata"].pop("RequestId")
|
||||
assert response == {
|
||||
"httpMethod": "GET",
|
||||
"authorizationType": "none",
|
||||
@ -407,6 +410,7 @@ def test_create_method_apikeyrequired():
|
||||
# this is hard to match against, so remove it
|
||||
response["ResponseMetadata"].pop("HTTPHeaders", None)
|
||||
response["ResponseMetadata"].pop("RetryAttempts", None)
|
||||
response["ResponseMetadata"].pop("RequestId")
|
||||
assert response == {
|
||||
"httpMethod": "GET",
|
||||
"authorizationType": "none",
|
||||
@ -431,7 +435,7 @@ def test_create_method_response():
|
||||
restApiId=api_id, resourceId=root_id, httpMethod="GET", authorizationType="none"
|
||||
)
|
||||
|
||||
response = client.get_method(restApiId=api_id, resourceId=root_id, httpMethod="GET")
|
||||
client.get_method(restApiId=api_id, resourceId=root_id, httpMethod="GET")
|
||||
|
||||
response = client.put_method_response(
|
||||
restApiId=api_id, resourceId=root_id, httpMethod="GET", statusCode="200"
|
||||
@ -439,6 +443,7 @@ def test_create_method_response():
|
||||
# this is hard to match against, so remove it
|
||||
response["ResponseMetadata"].pop("HTTPHeaders", None)
|
||||
response["ResponseMetadata"].pop("RetryAttempts", None)
|
||||
response["ResponseMetadata"].pop("RequestId")
|
||||
assert response == {
|
||||
"ResponseMetadata": {"HTTPStatusCode": 201},
|
||||
"statusCode": "200",
|
||||
@ -450,6 +455,7 @@ def test_create_method_response():
|
||||
# this is hard to match against, so remove it
|
||||
response["ResponseMetadata"].pop("HTTPHeaders", None)
|
||||
response["ResponseMetadata"].pop("RetryAttempts", None)
|
||||
response["ResponseMetadata"].pop("RequestId")
|
||||
assert response == {
|
||||
"ResponseMetadata": {"HTTPStatusCode": 200},
|
||||
"statusCode": "200",
|
||||
@ -461,6 +467,7 @@ def test_create_method_response():
|
||||
# this is hard to match against, so remove it
|
||||
response["ResponseMetadata"].pop("HTTPHeaders", None)
|
||||
response["ResponseMetadata"].pop("RetryAttempts", None)
|
||||
response["ResponseMetadata"].pop("RequestId")
|
||||
assert response == {"ResponseMetadata": {"HTTPStatusCode": 204}}
|
||||
|
||||
|
||||
@ -540,6 +547,7 @@ def test_integrations():
|
||||
# this is hard to match against, so remove it
|
||||
response["ResponseMetadata"].pop("HTTPHeaders", None)
|
||||
response["ResponseMetadata"].pop("RetryAttempts", None)
|
||||
response["ResponseMetadata"].pop("RequestId")
|
||||
assert response == {
|
||||
"ResponseMetadata": {"HTTPStatusCode": 201},
|
||||
"httpMethod": "POST",
|
||||
@ -560,6 +568,7 @@ def test_integrations():
|
||||
# this is hard to match against, so remove it
|
||||
response["ResponseMetadata"].pop("HTTPHeaders", None)
|
||||
response["ResponseMetadata"].pop("RetryAttempts", None)
|
||||
response["ResponseMetadata"].pop("RequestId")
|
||||
assert response == {
|
||||
"ResponseMetadata": {"HTTPStatusCode": 200},
|
||||
"httpMethod": "POST",
|
||||
@ -578,6 +587,7 @@ def test_integrations():
|
||||
# this is hard to match against, so remove it
|
||||
response["ResponseMetadata"].pop("HTTPHeaders", None)
|
||||
response["ResponseMetadata"].pop("RetryAttempts", None)
|
||||
response["ResponseMetadata"].pop("RequestId")
|
||||
assert response["resourceMethods"]["GET"]["httpMethod"] == "GET"
|
||||
assert response["resourceMethods"]["GET"]["authorizationType"] == "none"
|
||||
assert response["resourceMethods"]["GET"]["methodIntegration"] == {
|
||||
@ -678,6 +688,7 @@ def test_integration_response():
|
||||
# this is hard to match against, so remove it
|
||||
response["ResponseMetadata"].pop("HTTPHeaders", None)
|
||||
response["ResponseMetadata"].pop("RetryAttempts", None)
|
||||
response["ResponseMetadata"].pop("RequestId")
|
||||
assert response == {
|
||||
"statusCode": "200",
|
||||
"selectionPattern": "foobar",
|
||||
@ -695,6 +706,7 @@ def test_integration_response():
|
||||
# this is hard to match against, so remove it
|
||||
response["ResponseMetadata"].pop("HTTPHeaders", None)
|
||||
response["ResponseMetadata"].pop("RetryAttempts", None)
|
||||
response["ResponseMetadata"].pop("RequestId")
|
||||
assert response == {
|
||||
"statusCode": "200",
|
||||
"selectionPattern": "foobar",
|
||||
@ -710,6 +722,7 @@ def test_integration_response():
|
||||
# this is hard to match against, so remove it
|
||||
response["ResponseMetadata"].pop("HTTPHeaders", None)
|
||||
response["ResponseMetadata"].pop("RetryAttempts", None)
|
||||
response["ResponseMetadata"].pop("RequestId")
|
||||
assert response["methodIntegration"]["integrationResponses"] == {
|
||||
"200": {
|
||||
"responseTemplates": {}, # Note: TF compatibility
|
||||
@ -760,6 +773,7 @@ def test_integration_response():
|
||||
# this is hard to match against, so remove it
|
||||
response["ResponseMetadata"].pop("HTTPHeaders", None)
|
||||
response["ResponseMetadata"].pop("RetryAttempts", None)
|
||||
response["ResponseMetadata"].pop("RequestId")
|
||||
assert response == {
|
||||
"statusCode": "200",
|
||||
"selectionPattern": "foobar",
|
||||
@ -774,6 +788,7 @@ def test_integration_response():
|
||||
# this is hard to match against, so remove it
|
||||
response["ResponseMetadata"].pop("HTTPHeaders", None)
|
||||
response["ResponseMetadata"].pop("RetryAttempts", None)
|
||||
response["ResponseMetadata"].pop("RequestId")
|
||||
assert response == {
|
||||
"statusCode": "200",
|
||||
"selectionPattern": "foobar",
|
||||
@ -810,6 +825,7 @@ def test_update_authorizer_configuration():
|
||||
# this is hard to match against, so remove it
|
||||
response["ResponseMetadata"].pop("HTTPHeaders", None)
|
||||
response["ResponseMetadata"].pop("RetryAttempts", None)
|
||||
response["ResponseMetadata"].pop("RequestId")
|
||||
assert response == {
|
||||
"id": authorizer_id,
|
||||
"name": authorizer_name,
|
||||
@ -903,6 +919,7 @@ def test_create_authorizer():
|
||||
# this is hard to match against, so remove it
|
||||
response["ResponseMetadata"].pop("HTTPHeaders", None)
|
||||
response["ResponseMetadata"].pop("RetryAttempts", None)
|
||||
response["ResponseMetadata"].pop("RequestId")
|
||||
assert response == {
|
||||
"id": authorizer_id,
|
||||
"name": authorizer_name,
|
||||
@ -928,6 +945,7 @@ def test_create_authorizer():
|
||||
# this is hard to match against, so remove it
|
||||
response["ResponseMetadata"].pop("HTTPHeaders", None)
|
||||
response["ResponseMetadata"].pop("RetryAttempts", None)
|
||||
response["ResponseMetadata"].pop("RequestId")
|
||||
|
||||
assert response["items"][0]["id"] in [authorizer_id, authorizer_id2]
|
||||
assert response["items"][1]["id"] in [authorizer_id, authorizer_id2]
|
||||
@ -945,6 +963,7 @@ def test_create_authorizer():
|
||||
# this is hard to match against, so remove it
|
||||
response["ResponseMetadata"].pop("HTTPHeaders", None)
|
||||
response["ResponseMetadata"].pop("RetryAttempts", None)
|
||||
response["ResponseMetadata"].pop("RequestId")
|
||||
|
||||
assert response == {
|
||||
"name": new_authorizer_name_with_vars,
|
||||
@ -992,6 +1011,7 @@ def test_delete_authorizer():
|
||||
# this is hard to match against, so remove it
|
||||
response["ResponseMetadata"].pop("HTTPHeaders", None)
|
||||
response["ResponseMetadata"].pop("RetryAttempts", None)
|
||||
response["ResponseMetadata"].pop("RequestId")
|
||||
assert response == {
|
||||
"id": authorizer_id,
|
||||
"name": authorizer_name,
|
||||
@ -1069,6 +1089,7 @@ def test_put_integration_response_with_response_template():
|
||||
# this is hard to match against, so remove it
|
||||
response["ResponseMetadata"].pop("HTTPHeaders", None)
|
||||
response["ResponseMetadata"].pop("RetryAttempts", None)
|
||||
response["ResponseMetadata"].pop("RequestId")
|
||||
assert response == {
|
||||
"statusCode": "200",
|
||||
"selectionPattern": "foobar",
|
||||
|
@ -187,6 +187,7 @@ def test_create_function_from_zipfile():
|
||||
result["ResponseMetadata"].pop("HTTPHeaders", None)
|
||||
# Botocore inserts retry attempts not seen in Python27
|
||||
result["ResponseMetadata"].pop("RetryAttempts", None)
|
||||
result["ResponseMetadata"].pop("RequestId")
|
||||
result.pop("LastModified")
|
||||
|
||||
assert result == {
|
||||
@ -800,6 +801,7 @@ def test_delete_function():
|
||||
success_result["ResponseMetadata"].pop("HTTPHeaders", None)
|
||||
# Botocore inserts retry attempts not seen in Python27
|
||||
success_result["ResponseMetadata"].pop("RetryAttempts", None)
|
||||
success_result["ResponseMetadata"].pop("RequestId")
|
||||
|
||||
assert success_result == {"ResponseMetadata": {"HTTPStatusCode": 204}}
|
||||
|
||||
@ -1028,6 +1030,7 @@ def test_list_create_list_get_delete_list():
|
||||
func["ResponseMetadata"].pop("HTTPHeaders", None)
|
||||
# Botocore inserts retry attempts not seen in Python27
|
||||
func["ResponseMetadata"].pop("RetryAttempts", None)
|
||||
func["ResponseMetadata"].pop("RequestId")
|
||||
func["Configuration"].pop("LastModified")
|
||||
func["Configuration"].pop("FunctionArn")
|
||||
|
||||
|
@ -36,6 +36,8 @@ def test_create_user_pool():
|
||||
assert result["UserPool"]["Name"] == name
|
||||
assert result["UserPool"]["LambdaConfig"]["PreSignUp"] == value
|
||||
|
||||
assert "RequestId" in result["ResponseMetadata"]
|
||||
|
||||
|
||||
@mock_aws
|
||||
def test_create_user_pool__overwrite_template_messages():
|
||||
|
@ -1985,6 +1985,7 @@ def test_put_evaluations():
|
||||
# this is hard to match against, so remove it
|
||||
response["ResponseMetadata"].pop("HTTPHeaders", None)
|
||||
response["ResponseMetadata"].pop("RetryAttempts", None)
|
||||
response["ResponseMetadata"].pop("RequestId")
|
||||
assert response == {
|
||||
"FailedEvaluations": [],
|
||||
"ResponseMetadata": {"HTTPStatusCode": 200},
|
||||
|
@ -41,7 +41,7 @@ class TestDifferentAccountsDoesNotBreakSeeding:
|
||||
instances = self.ec2_client.run_instances(MaxCount=1, MinCount=1)["Instances"]
|
||||
|
||||
instance_ids = [instance["InstanceId"] for instance in instances]
|
||||
assert instance_ids == ["i-dc50244d2b9e8e0b7"]
|
||||
assert instance_ids == ["i-0df6e943394d7fdb0"]
|
||||
|
||||
def test_1(self) -> None:
|
||||
# Create some data in a different account (111111111111)
|
||||
|
Loading…
Reference in New Issue
Block a user