Core: Add RequestId-header to all responses (#7210)

This commit is contained in:
Bert Blommers 2024-01-14 13:01:30 +00:00
parent 168b869350
commit 1f1e0caca3
23 changed files with 85 additions and 317 deletions

View File

@ -1,6 +1,7 @@
from moto.core.common_types import TYPE_RESPONSE
from moto.core.responses import BaseResponse from moto.core.responses import BaseResponse
from moto.core.utils import iso_8601_datetime_with_milliseconds 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 from .models import AutoScalingBackend, autoscaling_backends
@ -13,6 +14,10 @@ class AutoScalingResponse(BaseResponse):
def autoscaling_backend(self) -> AutoScalingBackend: def autoscaling_backend(self) -> AutoScalingBackend:
return autoscaling_backends[self.current_account][self.region] 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: def create_launch_configuration(self) -> str:
instance_monitoring_string = self._get_param("InstanceMonitoring.Enabled") instance_monitoring_string = self._get_param("InstanceMonitoring.Enabled")
if instance_monitoring_string == "true": if instance_monitoring_string == "true":
@ -139,8 +144,6 @@ class AutoScalingResponse(BaseResponse):
template = self.response_template(DESCRIBE_SCALING_ACTIVITIES_TEMPLATE) template = self.response_template(DESCRIBE_SCALING_ACTIVITIES_TEMPLATE)
return template.render() return template.render()
@amz_crc32
@amzn_request_id
def attach_instances(self) -> str: def attach_instances(self) -> str:
group_name = self._get_param("AutoScalingGroupName") group_name = self._get_param("AutoScalingGroupName")
instance_ids = self._get_multi_param("InstanceIds.member") instance_ids = self._get_multi_param("InstanceIds.member")
@ -148,8 +151,6 @@ class AutoScalingResponse(BaseResponse):
template = self.response_template(ATTACH_INSTANCES_TEMPLATE) template = self.response_template(ATTACH_INSTANCES_TEMPLATE)
return template.render() return template.render()
@amz_crc32
@amzn_request_id
def set_instance_health(self) -> str: def set_instance_health(self) -> str:
instance_id = self._get_param("InstanceId") instance_id = self._get_param("InstanceId")
health_status = self._get_param("HealthStatus") health_status = self._get_param("HealthStatus")
@ -159,8 +160,6 @@ class AutoScalingResponse(BaseResponse):
template = self.response_template(SET_INSTANCE_HEALTH_TEMPLATE) template = self.response_template(SET_INSTANCE_HEALTH_TEMPLATE)
return template.render() return template.render()
@amz_crc32
@amzn_request_id
def detach_instances(self) -> str: def detach_instances(self) -> str:
group_name = self._get_param("AutoScalingGroupName") group_name = self._get_param("AutoScalingGroupName")
instance_ids = self._get_multi_param("InstanceIds.member") instance_ids = self._get_multi_param("InstanceIds.member")
@ -175,8 +174,6 @@ class AutoScalingResponse(BaseResponse):
template = self.response_template(DETACH_INSTANCES_TEMPLATE) template = self.response_template(DETACH_INSTANCES_TEMPLATE)
return template.render(detached_instances=detached_instances) return template.render(detached_instances=detached_instances)
@amz_crc32
@amzn_request_id
def attach_load_balancer_target_groups(self) -> str: def attach_load_balancer_target_groups(self) -> str:
group_name = self._get_param("AutoScalingGroupName") group_name = self._get_param("AutoScalingGroupName")
target_group_arns = self._get_multi_param("TargetGroupARNs.member") 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) template = self.response_template(ATTACH_LOAD_BALANCER_TARGET_GROUPS_TEMPLATE)
return template.render() return template.render()
@amz_crc32
@amzn_request_id
def describe_load_balancer_target_groups(self) -> str: def describe_load_balancer_target_groups(self) -> str:
group_name = self._get_param("AutoScalingGroupName") group_name = self._get_param("AutoScalingGroupName")
target_group_arns = ( target_group_arns = (
@ -197,8 +192,6 @@ class AutoScalingResponse(BaseResponse):
template = self.response_template(DESCRIBE_LOAD_BALANCER_TARGET_GROUPS) template = self.response_template(DESCRIBE_LOAD_BALANCER_TARGET_GROUPS)
return template.render(target_group_arns=target_group_arns) return template.render(target_group_arns=target_group_arns)
@amz_crc32
@amzn_request_id
def detach_load_balancer_target_groups(self) -> str: def detach_load_balancer_target_groups(self) -> str:
group_name = self._get_param("AutoScalingGroupName") group_name = self._get_param("AutoScalingGroupName")
target_group_arns = self._get_multi_param("TargetGroupARNs.member") target_group_arns = self._get_multi_param("TargetGroupARNs.member")
@ -347,8 +340,6 @@ class AutoScalingResponse(BaseResponse):
template = self.response_template(EXECUTE_POLICY_TEMPLATE) template = self.response_template(EXECUTE_POLICY_TEMPLATE)
return template.render() return template.render()
@amz_crc32
@amzn_request_id
def attach_load_balancers(self) -> str: def attach_load_balancers(self) -> str:
group_name = self._get_param("AutoScalingGroupName") group_name = self._get_param("AutoScalingGroupName")
load_balancer_names = self._get_multi_param("LoadBalancerNames.member") load_balancer_names = self._get_multi_param("LoadBalancerNames.member")
@ -356,16 +347,12 @@ class AutoScalingResponse(BaseResponse):
template = self.response_template(ATTACH_LOAD_BALANCERS_TEMPLATE) template = self.response_template(ATTACH_LOAD_BALANCERS_TEMPLATE)
return template.render() return template.render()
@amz_crc32
@amzn_request_id
def describe_load_balancers(self) -> str: def describe_load_balancers(self) -> str:
group_name = self._get_param("AutoScalingGroupName") group_name = self._get_param("AutoScalingGroupName")
load_balancers = self.autoscaling_backend.describe_load_balancers(group_name) load_balancers = self.autoscaling_backend.describe_load_balancers(group_name)
template = self.response_template(DESCRIBE_LOAD_BALANCERS_TEMPLATE) template = self.response_template(DESCRIBE_LOAD_BALANCERS_TEMPLATE)
return template.render(load_balancers=load_balancers) return template.render(load_balancers=load_balancers)
@amz_crc32
@amzn_request_id
def detach_load_balancers(self) -> str: def detach_load_balancers(self) -> str:
group_name = self._get_param("AutoScalingGroupName") group_name = self._get_param("AutoScalingGroupName")
load_balancer_names = self._get_multi_param("LoadBalancerNames.member") load_balancer_names = self._get_multi_param("LoadBalancerNames.member")
@ -373,8 +360,6 @@ class AutoScalingResponse(BaseResponse):
template = self.response_template(DETACH_LOAD_BALANCERS_TEMPLATE) template = self.response_template(DETACH_LOAD_BALANCERS_TEMPLATE)
return template.render() return template.render()
@amz_crc32
@amzn_request_id
def enter_standby(self) -> str: def enter_standby(self) -> str:
group_name = self._get_param("AutoScalingGroupName") group_name = self._get_param("AutoScalingGroupName")
instance_ids = self._get_multi_param("InstanceIds.member") instance_ids = self._get_multi_param("InstanceIds.member")
@ -399,8 +384,6 @@ class AutoScalingResponse(BaseResponse):
timestamp=iso_8601_datetime_with_milliseconds(), timestamp=iso_8601_datetime_with_milliseconds(),
) )
@amz_crc32
@amzn_request_id
def exit_standby(self) -> str: def exit_standby(self) -> str:
group_name = self._get_param("AutoScalingGroupName") group_name = self._get_param("AutoScalingGroupName")
instance_ids = self._get_multi_param("InstanceIds.member") instance_ids = self._get_multi_param("InstanceIds.member")
@ -445,8 +428,6 @@ class AutoScalingResponse(BaseResponse):
template = self.response_template(SET_INSTANCE_PROTECTION_TEMPLATE) template = self.response_template(SET_INSTANCE_PROTECTION_TEMPLATE)
return template.render() return template.render()
@amz_crc32
@amzn_request_id
def terminate_instance_in_auto_scaling_group(self) -> str: def terminate_instance_in_auto_scaling_group(self) -> str:
instance_id = self._get_param("InstanceId") instance_id = self._get_param("InstanceId")
should_decrement_string = self._get_param("ShouldDecrementDesiredCapacity") should_decrement_string = self._get_param("ShouldDecrementDesiredCapacity")

View File

@ -5,7 +5,7 @@ from urllib.parse import unquote
from moto.core.responses import TYPE_RESPONSE, BaseResponse from moto.core.responses import TYPE_RESPONSE, BaseResponse
from moto.core.utils import path_url 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 ( from .exceptions import (
FunctionAlreadyExists, FunctionAlreadyExists,
@ -129,9 +129,8 @@ class LambdaResponse(BaseResponse):
raise ValueError("Cannot handle request") raise ValueError("Cannot handle request")
@amz_crc32 @amz_crc32
@amzn_request_id def invoke(
def invoke( # type: ignore self, request: Any, full_url: str, headers: Any
self, request=None, full_url="", headers=None
) -> Tuple[int, Dict[str, str], Union[str, bytes]]: ) -> Tuple[int, Dict[str, str], Union[str, bytes]]:
self.setup_class(request, full_url, headers) self.setup_class(request, full_url, headers)
if request.method == "POST": if request.method == "POST":
@ -140,7 +139,6 @@ class LambdaResponse(BaseResponse):
raise ValueError("Cannot handle request") raise ValueError("Cannot handle request")
@amz_crc32 @amz_crc32
@amzn_request_id
def invoke_async( def invoke_async(
self, request: Any, full_url: str, headers: Any self, request: Any, full_url: str, headers: Any
) -> Tuple[int, Dict[str, str], Union[str, bytes]]: ) -> Tuple[int, Dict[str, str], Union[str, bytes]]:

View File

@ -3,7 +3,6 @@ from urllib.parse import unquote, urlsplit
from moto.core.models import default_user_config from moto.core.models import default_user_config
from moto.core.responses import BaseResponse from moto.core.responses import BaseResponse
from moto.utilities.aws_headers import amzn_request_id
from .models import BatchBackend, batch_backends from .models import BatchBackend, batch_backends
@ -25,8 +24,6 @@ class BatchResponse(BaseResponse):
# Return element after the /v1/* # Return element after the /v1/*
return urlsplit(self.uri).path.lstrip("/").split("/")[1] return urlsplit(self.uri).path.lstrip("/").split("/")[1]
# CreateComputeEnvironment
@amzn_request_id
def createcomputeenvironment(self) -> str: def createcomputeenvironment(self) -> str:
compute_env_name = self._get_param("computeEnvironmentName") compute_env_name = self._get_param("computeEnvironmentName")
compute_resource = self._get_param("computeResources") compute_resource = self._get_param("computeResources")
@ -46,8 +43,6 @@ class BatchResponse(BaseResponse):
return json.dumps(result) return json.dumps(result)
# DescribeComputeEnvironments
@amzn_request_id
def describecomputeenvironments(self) -> str: def describecomputeenvironments(self) -> str:
compute_environments = self._get_param("computeEnvironments") compute_environments = self._get_param("computeEnvironments")
@ -56,8 +51,6 @@ class BatchResponse(BaseResponse):
result = {"computeEnvironments": envs} result = {"computeEnvironments": envs}
return json.dumps(result) return json.dumps(result)
# DeleteComputeEnvironment
@amzn_request_id
def deletecomputeenvironment(self) -> str: def deletecomputeenvironment(self) -> str:
compute_environment = self._get_param("computeEnvironment") compute_environment = self._get_param("computeEnvironment")
@ -65,8 +58,6 @@ class BatchResponse(BaseResponse):
return "" return ""
# UpdateComputeEnvironment
@amzn_request_id
def updatecomputeenvironment(self) -> str: def updatecomputeenvironment(self) -> str:
compute_env_name = self._get_param("computeEnvironment") compute_env_name = self._get_param("computeEnvironment")
compute_resource = self._get_param("computeResources") compute_resource = self._get_param("computeResources")
@ -84,8 +75,6 @@ class BatchResponse(BaseResponse):
return json.dumps(result) return json.dumps(result)
# CreateJobQueue
@amzn_request_id
def createjobqueue(self) -> str: def createjobqueue(self) -> str:
compute_env_order = self._get_param("computeEnvironmentOrder") compute_env_order = self._get_param("computeEnvironmentOrder")
queue_name = self._get_param("jobQueueName") queue_name = self._get_param("jobQueueName")
@ -107,8 +96,6 @@ class BatchResponse(BaseResponse):
return json.dumps(result) return json.dumps(result)
# DescribeJobQueues
@amzn_request_id
def describejobqueues(self) -> str: def describejobqueues(self) -> str:
job_queues = self._get_param("jobQueues") job_queues = self._get_param("jobQueues")
@ -117,8 +104,6 @@ class BatchResponse(BaseResponse):
result = {"jobQueues": queues} result = {"jobQueues": queues}
return json.dumps(result) return json.dumps(result)
# UpdateJobQueue
@amzn_request_id
def updatejobqueue(self) -> str: def updatejobqueue(self) -> str:
compute_env_order = self._get_param("computeEnvironmentOrder") compute_env_order = self._get_param("computeEnvironmentOrder")
queue_name = self._get_param("jobQueue") queue_name = self._get_param("jobQueue")
@ -138,8 +123,6 @@ class BatchResponse(BaseResponse):
return json.dumps(result) return json.dumps(result)
# DeleteJobQueue
@amzn_request_id
def deletejobqueue(self) -> str: def deletejobqueue(self) -> str:
queue_name = self._get_param("jobQueue") queue_name = self._get_param("jobQueue")
@ -147,8 +130,6 @@ class BatchResponse(BaseResponse):
return "" return ""
# RegisterJobDefinition
@amzn_request_id
def registerjobdefinition(self) -> str: def registerjobdefinition(self) -> str:
container_properties = self._get_param("containerProperties") container_properties = self._get_param("containerProperties")
node_properties = self._get_param("nodeProperties") node_properties = self._get_param("nodeProperties")
@ -181,8 +162,6 @@ class BatchResponse(BaseResponse):
return json.dumps(result) return json.dumps(result)
# DeregisterJobDefinition
@amzn_request_id
def deregisterjobdefinition(self) -> str: def deregisterjobdefinition(self) -> str:
queue_name = self._get_param("jobDefinition") queue_name = self._get_param("jobDefinition")
@ -190,8 +169,6 @@ class BatchResponse(BaseResponse):
return "" return ""
# DescribeJobDefinitions
@amzn_request_id
def describejobdefinitions(self) -> str: def describejobdefinitions(self) -> str:
job_def_name = self._get_param("jobDefinitionName") job_def_name = self._get_param("jobDefinitionName")
job_def_list = self._get_param("jobDefinitions") job_def_list = self._get_param("jobDefinitions")
@ -204,8 +181,6 @@ class BatchResponse(BaseResponse):
result = {"jobDefinitions": [job.describe() for job in job_defs]} result = {"jobDefinitions": [job.describe() for job in job_defs]}
return json.dumps(result) return json.dumps(result)
# SubmitJob
@amzn_request_id
def submitjob(self) -> str: def submitjob(self) -> str:
container_overrides = self._get_param("containerOverrides") container_overrides = self._get_param("containerOverrides")
depends_on = self._get_param("dependsOn") depends_on = self._get_param("dependsOn")
@ -229,15 +204,11 @@ class BatchResponse(BaseResponse):
return json.dumps(result) return json.dumps(result)
# DescribeJobs
@amzn_request_id
def describejobs(self) -> str: def describejobs(self) -> str:
jobs = self._get_param("jobs") jobs = self._get_param("jobs")
return json.dumps({"jobs": self.batch_backend.describe_jobs(jobs)}) return json.dumps({"jobs": self.batch_backend.describe_jobs(jobs)})
# ListJobs
@amzn_request_id
def listjobs(self) -> str: def listjobs(self) -> str:
job_queue = self._get_param("jobQueue") job_queue = self._get_param("jobQueue")
job_status = self._get_param("jobStatus") job_status = self._get_param("jobStatus")
@ -248,8 +219,6 @@ class BatchResponse(BaseResponse):
result = {"jobSummaryList": [job.describe_short() for job in jobs]} result = {"jobSummaryList": [job.describe_short() for job in jobs]}
return json.dumps(result) return json.dumps(result)
# TerminateJob
@amzn_request_id
def terminatejob(self) -> str: def terminatejob(self) -> str:
job_id = self._get_param("jobId") job_id = self._get_param("jobId")
reason = self._get_param("reason") reason = self._get_param("reason")
@ -258,8 +227,6 @@ class BatchResponse(BaseResponse):
return "" return ""
# CancelJob
@amzn_request_id
def canceljob(self) -> str: def canceljob(self) -> str:
job_id = self._get_param("jobId") job_id = self._get_param("jobId")
reason = self._get_param("reason") reason = self._get_param("reason")
@ -267,7 +234,6 @@ class BatchResponse(BaseResponse):
return "" return ""
@amzn_request_id
def tags(self) -> str: def tags(self) -> str:
resource_arn = unquote(self.path).split("/v1/tags/")[-1] resource_arn = unquote(self.path).split("/v1/tags/")[-1]
tags = self._get_param("tags") 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] self.batch_backend.untag_resource(resource_arn, tag_keys) # type: ignore[arg-type]
return "" return ""
@amzn_request_id
def createschedulingpolicy(self) -> str: def createschedulingpolicy(self) -> str:
body = json.loads(self.body) body = json.loads(self.body)
name = body.get("name") name = body.get("name")
@ -292,26 +257,22 @@ class BatchResponse(BaseResponse):
) )
return json.dumps(policy.to_dict(create=True)) return json.dumps(policy.to_dict(create=True))
@amzn_request_id
def describeschedulingpolicies(self) -> str: def describeschedulingpolicies(self) -> str:
body = json.loads(self.body) body = json.loads(self.body)
arns = body.get("arns") or [] arns = body.get("arns") or []
policies = self.batch_backend.describe_scheduling_policies(arns) policies = self.batch_backend.describe_scheduling_policies(arns)
return json.dumps({"schedulingPolicies": [pol.to_dict() for pol in policies]}) return json.dumps({"schedulingPolicies": [pol.to_dict() for pol in policies]})
@amzn_request_id
def listschedulingpolicies(self) -> str: def listschedulingpolicies(self) -> str:
arns = self.batch_backend.list_scheduling_policies() arns = self.batch_backend.list_scheduling_policies()
return json.dumps({"schedulingPolicies": [{"arn": arn} for arn in arns]}) return json.dumps({"schedulingPolicies": [{"arn": arn} for arn in arns]})
@amzn_request_id
def deleteschedulingpolicy(self) -> str: def deleteschedulingpolicy(self) -> str:
body = json.loads(self.body) body = json.loads(self.body)
arn = body["arn"] arn = body["arn"]
self.batch_backend.delete_scheduling_policy(arn) self.batch_backend.delete_scheduling_policy(arn)
return "" return ""
@amzn_request_id
def updateschedulingpolicy(self) -> str: def updateschedulingpolicy(self) -> str:
body = json.loads(self.body) body = json.loads(self.body)
arn = body.get("arn") arn = body.get("arn")

View File

@ -8,7 +8,6 @@ from yaml.scanner import ScannerError # pylint:disable=c-extension-no-member
from moto.core.responses import BaseResponse from moto.core.responses import BaseResponse
from moto.s3.exceptions import S3ClientError from moto.s3.exceptions import S3ClientError
from moto.utilities.aws_headers import amzn_request_id
from .exceptions import MissingParameterError, ValidationError from .exceptions import MissingParameterError, ValidationError
from .models import CloudFormationBackend, FakeStack, cloudformation_backends from .models import CloudFormationBackend, FakeStack, cloudformation_backends
@ -153,7 +152,6 @@ class CloudFormationResponse(BaseResponse):
return True return True
return False return False
@amzn_request_id
def create_change_set(self) -> str: def create_change_set(self) -> str:
stack_name = self._get_param("StackName") stack_name = self._get_param("StackName")
change_set_name = self._get_param("ChangeSetName") change_set_name = self._get_param("ChangeSetName")
@ -220,7 +218,6 @@ class CloudFormationResponse(BaseResponse):
template = self.response_template(DESCRIBE_CHANGE_SET_RESPONSE_TEMPLATE) template = self.response_template(DESCRIBE_CHANGE_SET_RESPONSE_TEMPLATE)
return template.render(change_set=change_set) return template.render(change_set=change_set)
@amzn_request_id
def execute_change_set(self) -> str: def execute_change_set(self) -> str:
stack_name = self._get_param("StackName") stack_name = self._get_param("StackName")
change_set_name = self._get_param("ChangeSetName") change_set_name = self._get_param("ChangeSetName")

View File

@ -4,7 +4,6 @@ from typing import Dict, Iterable, List, Tuple, Union
from dateutil.parser import parse as dtparse from dateutil.parser import parse as dtparse
from moto.core.responses import BaseResponse from moto.core.responses import BaseResponse
from moto.utilities.aws_headers import amzn_request_id
from .exceptions import InvalidParameterCombination, ValidationError from .exceptions import InvalidParameterCombination, ValidationError
from .models import ( from .models import (
@ -32,7 +31,6 @@ class CloudWatchResponse(BaseResponse):
template = self.response_template(ERROR_RESPONSE_TEMPLATE) template = self.response_template(ERROR_RESPONSE_TEMPLATE)
return template.render(code=code, message=message), dict(status=status) return template.render(code=code, message=message), dict(status=status)
@amzn_request_id
def put_metric_alarm(self) -> str: def put_metric_alarm(self) -> str:
name = self._get_param("AlarmName") name = self._get_param("AlarmName")
namespace = self._get_param("Namespace") namespace = self._get_param("Namespace")
@ -132,7 +130,6 @@ class CloudWatchResponse(BaseResponse):
template = self.response_template(PUT_METRIC_ALARM_TEMPLATE) template = self.response_template(PUT_METRIC_ALARM_TEMPLATE)
return template.render(alarm=alarm) return template.render(alarm=alarm)
@amzn_request_id
def describe_alarms(self) -> str: def describe_alarms(self) -> str:
action_prefix = self._get_param("ActionPrefix") action_prefix = self._get_param("ActionPrefix")
alarm_name_prefix = self._get_param("AlarmNamePrefix") alarm_name_prefix = self._get_param("AlarmNamePrefix")
@ -160,14 +157,12 @@ class CloudWatchResponse(BaseResponse):
metric_alarms=metric_alarms, composite_alarms=composite_alarms metric_alarms=metric_alarms, composite_alarms=composite_alarms
) )
@amzn_request_id
def delete_alarms(self) -> str: def delete_alarms(self) -> str:
alarm_names = self._get_multi_param("AlarmNames.member") alarm_names = self._get_multi_param("AlarmNames.member")
self.cloudwatch_backend.delete_alarms(alarm_names) self.cloudwatch_backend.delete_alarms(alarm_names)
template = self.response_template(DELETE_METRIC_ALARMS_TEMPLATE) template = self.response_template(DELETE_METRIC_ALARMS_TEMPLATE)
return template.render() return template.render()
@amzn_request_id
def put_metric_data(self) -> str: def put_metric_data(self) -> str:
namespace = self._get_param("Namespace") namespace = self._get_param("Namespace")
metric_data = self._get_multi_param("MetricData.member") metric_data = self._get_multi_param("MetricData.member")
@ -175,7 +170,6 @@ class CloudWatchResponse(BaseResponse):
template = self.response_template(PUT_METRIC_DATA_TEMPLATE) template = self.response_template(PUT_METRIC_DATA_TEMPLATE)
return template.render() return template.render()
@amzn_request_id
def get_metric_data(self) -> str: def get_metric_data(self) -> str:
params = self._get_params() params = self._get_params()
start = dtparse(params["StartTime"]) start = dtparse(params["StartTime"])
@ -196,7 +190,6 @@ class CloudWatchResponse(BaseResponse):
template = self.response_template(GET_METRIC_DATA_TEMPLATE) template = self.response_template(GET_METRIC_DATA_TEMPLATE)
return template.render(results=results) return template.render(results=results)
@amzn_request_id
def get_metric_statistics(self) -> str: def get_metric_statistics(self) -> str:
namespace = self._get_param("Namespace") namespace = self._get_param("Namespace")
metric_name = self._get_param("MetricName") metric_name = self._get_param("MetricName")
@ -228,7 +221,6 @@ class CloudWatchResponse(BaseResponse):
template = self.response_template(GET_METRIC_STATISTICS_TEMPLATE) template = self.response_template(GET_METRIC_STATISTICS_TEMPLATE)
return template.render(label=metric_name, datapoints=datapoints) return template.render(label=metric_name, datapoints=datapoints)
@amzn_request_id
def list_metrics(self) -> str: def list_metrics(self) -> str:
namespace = self._get_param("Namespace") namespace = self._get_param("Namespace")
metric_name = self._get_param("MetricName") metric_name = self._get_param("MetricName")
@ -240,7 +232,6 @@ class CloudWatchResponse(BaseResponse):
template = self.response_template(LIST_METRICS_TEMPLATE) template = self.response_template(LIST_METRICS_TEMPLATE)
return template.render(metrics=metrics, next_token=next_token) return template.render(metrics=metrics, next_token=next_token)
@amzn_request_id
def delete_dashboards(self) -> Union[str, ERROR_RESPONSE]: def delete_dashboards(self) -> Union[str, ERROR_RESPONSE]:
dashboards = self._get_multi_param("DashboardNames.member") dashboards = self._get_multi_param("DashboardNames.member")
if dashboards is None: if dashboards is None:
@ -253,7 +244,6 @@ class CloudWatchResponse(BaseResponse):
template = self.response_template(DELETE_DASHBOARD_TEMPLATE) template = self.response_template(DELETE_DASHBOARD_TEMPLATE)
return template.render() return template.render()
@amzn_request_id
def describe_alarm_history(self) -> None: def describe_alarm_history(self) -> None:
raise NotImplementedError() raise NotImplementedError()
@ -268,7 +258,6 @@ class CloudWatchResponse(BaseResponse):
metric_filtered_alarms.append(alarm) metric_filtered_alarms.append(alarm)
return metric_filtered_alarms return metric_filtered_alarms
@amzn_request_id
def describe_alarms_for_metric(self) -> str: def describe_alarms_for_metric(self) -> str:
alarms = self.cloudwatch_backend.get_all_alarms() alarms = self.cloudwatch_backend.get_all_alarms()
namespace = self._get_param("Namespace") namespace = self._get_param("Namespace")
@ -277,15 +266,12 @@ class CloudWatchResponse(BaseResponse):
template = self.response_template(DESCRIBE_METRIC_ALARMS_TEMPLATE) template = self.response_template(DESCRIBE_METRIC_ALARMS_TEMPLATE)
return template.render(alarms=filtered_alarms) return template.render(alarms=filtered_alarms)
@amzn_request_id
def disable_alarm_actions(self) -> str: def disable_alarm_actions(self) -> str:
raise NotImplementedError() raise NotImplementedError()
@amzn_request_id
def enable_alarm_actions(self) -> str: def enable_alarm_actions(self) -> str:
raise NotImplementedError() raise NotImplementedError()
@amzn_request_id
def get_dashboard(self) -> Union[str, ERROR_RESPONSE]: def get_dashboard(self) -> Union[str, ERROR_RESPONSE]:
dashboard_name = self._get_param("DashboardName") dashboard_name = self._get_param("DashboardName")
@ -296,7 +282,6 @@ class CloudWatchResponse(BaseResponse):
template = self.response_template(GET_DASHBOARD_TEMPLATE) template = self.response_template(GET_DASHBOARD_TEMPLATE)
return template.render(dashboard=dashboard) return template.render(dashboard=dashboard)
@amzn_request_id
def list_dashboards(self) -> str: def list_dashboards(self) -> str:
prefix = self._get_param("DashboardNamePrefix", "") prefix = self._get_param("DashboardNamePrefix", "")
@ -305,7 +290,6 @@ class CloudWatchResponse(BaseResponse):
template = self.response_template(LIST_DASHBOARD_RESPONSE) template = self.response_template(LIST_DASHBOARD_RESPONSE)
return template.render(dashboards=dashboards) return template.render(dashboards=dashboards)
@amzn_request_id
def put_dashboard(self) -> Union[str, ERROR_RESPONSE]: def put_dashboard(self) -> Union[str, ERROR_RESPONSE]:
name = self._get_param("DashboardName") name = self._get_param("DashboardName")
body = self._get_param("DashboardBody") body = self._get_param("DashboardBody")
@ -320,7 +304,6 @@ class CloudWatchResponse(BaseResponse):
template = self.response_template(PUT_DASHBOARD_RESPONSE) template = self.response_template(PUT_DASHBOARD_RESPONSE)
return template.render() return template.render()
@amzn_request_id
def set_alarm_state(self) -> str: def set_alarm_state(self) -> str:
alarm_name = self._get_param("AlarmName") alarm_name = self._get_param("AlarmName")
reason = self._get_param("StateReason") reason = self._get_param("StateReason")
@ -334,7 +317,6 @@ class CloudWatchResponse(BaseResponse):
template = self.response_template(SET_ALARM_STATE_TEMPLATE) template = self.response_template(SET_ALARM_STATE_TEMPLATE)
return template.render() return template.render()
@amzn_request_id
def list_tags_for_resource(self) -> str: def list_tags_for_resource(self) -> str:
resource_arn = self._get_param("ResourceARN") resource_arn = self._get_param("ResourceARN")
@ -343,7 +325,6 @@ class CloudWatchResponse(BaseResponse):
template = self.response_template(LIST_TAGS_FOR_RESOURCE_TEMPLATE) template = self.response_template(LIST_TAGS_FOR_RESOURCE_TEMPLATE)
return template.render(tags=tags) return template.render(tags=tags)
@amzn_request_id
def tag_resource(self) -> str: def tag_resource(self) -> str:
resource_arn = self._get_param("ResourceARN") resource_arn = self._get_param("ResourceARN")
tags = self._get_multi_param("Tags.member") tags = self._get_multi_param("Tags.member")
@ -353,7 +334,6 @@ class CloudWatchResponse(BaseResponse):
template = self.response_template(TAG_RESOURCE_TEMPLATE) template = self.response_template(TAG_RESOURCE_TEMPLATE)
return template.render() return template.render()
@amzn_request_id
def untag_resource(self) -> str: def untag_resource(self) -> str:
resource_arn = self._get_param("ResourceARN") resource_arn = self._get_param("ResourceARN")
tag_keys = self._get_multi_param("TagKeys.member") tag_keys = self._get_multi_param("TagKeys.member")

View File

@ -37,6 +37,7 @@ from moto.core.utils import (
params_sort_function, params_sort_function,
utcfromtimestamp, utcfromtimestamp,
) )
from moto.utilities.aws_headers import gen_amzn_requestid_long
from moto.utilities.utils import load_resource, load_resource_as_bytes from moto.utilities.utils import load_resource, load_resource_as_bytes
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@ -267,7 +268,15 @@ class BaseResponse(_TemplateEnvironmentMixin, ActionAuthenticatorMixin):
@functools.wraps(to_call) # type: ignore @functools.wraps(to_call) # type: ignore
def _inner(request: Any, full_url: str, headers: Any) -> TYPE_RESPONSE: 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 return _inner
@ -538,7 +547,10 @@ class BaseResponse(_TemplateEnvironmentMixin, ActionAuthenticatorMixin):
self._authenticate_and_authorize_normal_action(resource) self._authenticate_and_authorize_normal_action(resource)
except HTTPException as http_error: except HTTPException as http_error:
response = http_error.description, dict(status=http_error.code) 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()) action = camelcase_to_underscores(self._get_action())
method_names = method_names_from_class(self.__class__) 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] response = http_error.description, response_headers # type: ignore[assignment]
if isinstance(response, str): if isinstance(response, str):
return 200, headers, response status = 200
body = response
else: 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: if not action:
return 404, headers, "" return 404, headers, ""
@ -565,19 +582,33 @@ class BaseResponse(_TemplateEnvironmentMixin, ActionAuthenticatorMixin):
raise NotImplementedError(f"The {action} action has not been implemented") raise NotImplementedError(f"The {action} action has not been implemented")
@staticmethod @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: if response is None:
response = "", {} response = "", {}
if len(response) == 2: if len(response) == 2:
body, new_headers = response body, new_headers = response
else: else:
status, new_headers, body = response status, new_headers, body = response
status = new_headers.get("status", 200) status = int(new_headers.get("status", 200))
headers.update(new_headers) 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 # Cast status to string
if "status" in headers: if "status" in headers:
headers["status"] = str(headers["status"]) 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: def _get_param(self, param_name: str, if_none: Any = None) -> Any:
val = self.querystring.get(param_name) val = self.querystring.get(param_name)

View File

@ -3,7 +3,6 @@ from typing import Any, Dict
from urllib.parse import unquote from urllib.parse import unquote
from moto.core.responses import BaseResponse from moto.core.responses import BaseResponse
from moto.utilities.aws_headers import amzn_request_id
from .models import DataBrewBackend, databrew_backends from .models import DataBrewBackend, databrew_backends
@ -22,7 +21,6 @@ class DataBrewResponse(BaseResponse):
def parameters(self) -> Dict[str, Any]: # type: ignore[misc] def parameters(self) -> Dict[str, Any]: # type: ignore[misc]
return json.loads(self.body) return json.loads(self.body)
@amzn_request_id
def create_recipe(self) -> str: def create_recipe(self) -> str:
# https://docs.aws.amazon.com/databrew/latest/dg/API_CreateRecipe.html # https://docs.aws.amazon.com/databrew/latest/dg/API_CreateRecipe.html
recipe_description = self.parameters.get("Description") recipe_description = self.parameters.get("Description")
@ -35,7 +33,6 @@ class DataBrewResponse(BaseResponse):
).as_dict() ).as_dict()
) )
@amzn_request_id
def delete_recipe_version(self) -> str: def delete_recipe_version(self) -> str:
# https://docs.aws.amazon.com/databrew/latest/dg/API_DeleteRecipeVersion.html # https://docs.aws.amazon.com/databrew/latest/dg/API_DeleteRecipeVersion.html
split_path = self._get_path().strip("/").split("/") split_path = self._get_path().strip("/").split("/")
@ -47,7 +44,6 @@ class DataBrewResponse(BaseResponse):
def _get_path(self) -> str: def _get_path(self) -> str:
return unquote(self.parsed_url.path) return unquote(self.parsed_url.path)
@amzn_request_id
def list_recipes(self) -> str: def list_recipes(self) -> str:
# https://docs.aws.amazon.com/databrew/latest/dg/API_ListRecipes.html # https://docs.aws.amazon.com/databrew/latest/dg/API_ListRecipes.html
next_token = self._get_param("NextToken", self._get_param("nextToken")) 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: def list_recipe_versions(self) -> str:
# https://docs.aws.amazon.com/databrew/latest/dg/API_ListRecipeVersions.html # https://docs.aws.amazon.com/databrew/latest/dg/API_ListRecipeVersions.html
recipe_name = self._get_param("Name", self._get_param("name")) 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: def publish_recipe(self) -> str:
recipe_name = self._get_path().strip("/").split("/", 2)[1] recipe_name = self._get_path().strip("/").split("/", 2)[1]
recipe_description = self.parameters.get("Description") recipe_description = self.parameters.get("Description")
@ -123,7 +117,6 @@ class DataBrewResponse(BaseResponse):
# region Rulesets # region Rulesets
@amzn_request_id
def create_ruleset(self) -> str: def create_ruleset(self) -> str:
ruleset_description = self.parameters.get("Description") ruleset_description = self.parameters.get("Description")
ruleset_rules = self.parameters.get("Rules") ruleset_rules = self.parameters.get("Rules")
@ -162,7 +155,6 @@ class DataBrewResponse(BaseResponse):
self.databrew_backend.delete_ruleset(ruleset_name) self.databrew_backend.delete_ruleset(ruleset_name)
return json.dumps({"Name": ruleset_name}) return json.dumps({"Name": ruleset_name})
@amzn_request_id
def list_rulesets(self) -> str: def list_rulesets(self) -> str:
# https://docs.aws.amazon.com/databrew/latest/dg/API_ListRulesets.html # https://docs.aws.amazon.com/databrew/latest/dg/API_ListRulesets.html
next_token = self._get_param("NextToken", self._get_param("nextToken")) next_token = self._get_param("NextToken", self._get_param("nextToken"))
@ -185,7 +177,6 @@ class DataBrewResponse(BaseResponse):
# region Datasets # region Datasets
@amzn_request_id
def create_dataset(self) -> str: def create_dataset(self) -> str:
dataset_name = self.parameters.get("Name") dataset_name = self.parameters.get("Name")
dataset_format = self.parameters.get("Format") dataset_format = self.parameters.get("Format")
@ -205,7 +196,6 @@ class DataBrewResponse(BaseResponse):
).as_dict() ).as_dict()
) )
@amzn_request_id
def list_datasets(self) -> str: def list_datasets(self) -> str:
next_token = self._get_param("NextToken", self._get_param("nextToken")) next_token = self._get_param("NextToken", self._get_param("nextToken"))
max_results = self._get_int_param( max_results = self._get_int_param(
@ -224,7 +214,6 @@ class DataBrewResponse(BaseResponse):
} }
) )
@amzn_request_id
def update_dataset(self) -> str: def update_dataset(self) -> str:
dataset_name = self._get_path().split("/")[-1] dataset_name = self._get_path().split("/")[-1]
dataset_format = self.parameters.get("Format") dataset_format = self.parameters.get("Format")
@ -243,13 +232,11 @@ class DataBrewResponse(BaseResponse):
) )
return json.dumps(dataset.as_dict()) return json.dumps(dataset.as_dict())
@amzn_request_id
def delete_dataset(self) -> str: def delete_dataset(self) -> str:
dataset_name = self._get_path().split("/")[-1] dataset_name = self._get_path().split("/")[-1]
self.databrew_backend.delete_dataset(dataset_name) self.databrew_backend.delete_dataset(dataset_name)
return json.dumps({"Name": dataset_name}) return json.dumps({"Name": dataset_name})
@amzn_request_id
def describe_dataset(self) -> str: def describe_dataset(self) -> str:
dataset_name = self._get_path().split("/")[-1] dataset_name = self._get_path().split("/")[-1]
dataset = self.databrew_backend.describe_dataset(dataset_name) dataset = self.databrew_backend.describe_dataset(dataset_name)
@ -258,7 +245,6 @@ class DataBrewResponse(BaseResponse):
# endregion # endregion
# region Jobs # region Jobs
@amzn_request_id
def list_jobs(self) -> str: def list_jobs(self) -> str:
# https://docs.aws.amazon.com/databrew/latest/dg/API_ListJobs.html # https://docs.aws.amazon.com/databrew/latest/dg/API_ListJobs.html
dataset_name = self._get_param("datasetName") dataset_name = self._get_param("datasetName")
@ -291,7 +277,6 @@ class DataBrewResponse(BaseResponse):
self.databrew_backend.delete_job(job_name) self.databrew_backend.delete_job(job_name)
return json.dumps({"Name": job_name}) return json.dumps({"Name": job_name})
@amzn_request_id
def create_profile_job(self) -> str: def create_profile_job(self) -> str:
# https://docs.aws.amazon.com/databrew/latest/dg/API_CreateProfileJob.html # https://docs.aws.amazon.com/databrew/latest/dg/API_CreateProfileJob.html
kwargs = { kwargs = {
@ -331,7 +316,6 @@ class DataBrewResponse(BaseResponse):
} }
return json.dumps(self.databrew_backend.update_profile_job(**kwargs).as_dict()) return json.dumps(self.databrew_backend.update_profile_job(**kwargs).as_dict())
@amzn_request_id
def create_recipe_job(self) -> str: def create_recipe_job(self) -> str:
# https://docs.aws.amazon.com/databrew/latest/dg/API_CreateRecipeJob.html # https://docs.aws.amazon.com/databrew/latest/dg/API_CreateRecipeJob.html
kwargs = { kwargs = {
@ -353,7 +337,6 @@ class DataBrewResponse(BaseResponse):
} }
return json.dumps(self.databrew_backend.create_recipe_job(**kwargs).as_dict()) return json.dumps(self.databrew_backend.create_recipe_job(**kwargs).as_dict())
@amzn_request_id
def update_recipe_job(self) -> str: def update_recipe_job(self) -> str:
name = self._get_path().rstrip("/").rsplit("/", 1)[1] name = self._get_path().rstrip("/").rsplit("/", 1)[1]
# https://docs.aws.amazon.com/databrew/latest/dg/API_UpdateRecipeJob.html # https://docs.aws.amazon.com/databrew/latest/dg/API_UpdateRecipeJob.html

View File

@ -6,12 +6,11 @@ from typing import Any, Callable, Dict, List, Optional, Union
from moto.core.common_types import TYPE_RESPONSE from moto.core.common_types import TYPE_RESPONSE
from moto.core.responses import BaseResponse 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 import DynamoDBBackend, Table, dynamodb_backends
from moto.dynamodb.models.utilities import dynamo_json_dump from moto.dynamodb.models.utilities import dynamo_json_dump
from moto.dynamodb.parsing.key_condition_expression import parse_expression from moto.dynamodb.parsing.key_condition_expression import parse_expression
from moto.dynamodb.parsing.reserved_keywords import ReservedKeywords 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 ( from .exceptions import (
KeyIsEmptyStringException, KeyIsEmptyStringException,
@ -40,10 +39,12 @@ def include_consumed_capacity(
expected_capacity = handler.body.get("ReturnConsumedCapacity", "NONE") expected_capacity = handler.body.get("ReturnConsumedCapacity", "NONE")
if expected_capacity not in ["NONE", "TOTAL", "INDEXES"]: if expected_capacity not in ["NONE", "TOTAL", "INDEXES"]:
type_ = "ValidationException" 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]" 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 ( return (
400, 400,
handler.response_headers, headers,
dynamo_json_dump({"__type": type_, "message": message}), dynamo_json_dump({"__type": type_, "message": message}),
) )
table_name = handler.body.get("TableName", "") table_name = handler.body.get("TableName", "")
@ -189,22 +190,9 @@ class DynamoHandler(BaseResponse):
return dynamodb_backends[self.current_account][self.region] return dynamodb_backends[self.current_account][self.region]
@amz_crc32 @amz_crc32
@amzn_request_id
def call_action(self) -> TYPE_RESPONSE: def call_action(self) -> TYPE_RESPONSE:
self.body = json.loads(self.body or "{}") self.body = json.loads(self.body or "{}")
endpoint = self.get_endpoint_name(self.headers) return super().call_action()
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, ""
def list_tables(self) -> str: def list_tables(self) -> str:
body = self.body body = self.body

View File

@ -1,6 +1,5 @@
from moto.core.exceptions import RESTError from moto.core.exceptions import RESTError
from moto.core.responses import BaseResponse from moto.core.responses import BaseResponse
from moto.utilities.aws_headers import amzn_request_id
from .exceptions import ListenerOrBalancerMissingError, TargetGroupNotFoundError from .exceptions import ListenerOrBalancerMissingError, TargetGroupNotFoundError
from .models import ELBv2Backend, elbv2_backends from .models import ELBv2Backend, elbv2_backends
@ -375,7 +374,6 @@ class ELBV2Response(BaseResponse):
def elbv2_backend(self) -> ELBv2Backend: def elbv2_backend(self) -> ELBv2Backend:
return elbv2_backends[self.current_account][self.region] return elbv2_backends[self.current_account][self.region]
@amzn_request_id
def create_load_balancer(self) -> str: def create_load_balancer(self) -> str:
params = self._get_params() params = self._get_params()
load_balancer_name = params.get("Name") load_balancer_name = params.get("Name")
@ -398,7 +396,6 @@ class ELBV2Response(BaseResponse):
template = self.response_template(CREATE_LOAD_BALANCER_TEMPLATE) template = self.response_template(CREATE_LOAD_BALANCER_TEMPLATE)
return template.render(load_balancer=load_balancer) return template.render(load_balancer=load_balancer)
@amzn_request_id
def create_rule(self) -> str: def create_rule(self) -> str:
params = self._get_params() params = self._get_params()
rules = self.elbv2_backend.create_rule( rules = self.elbv2_backend.create_rule(
@ -412,7 +409,6 @@ class ELBV2Response(BaseResponse):
template = self.response_template(CREATE_RULE_TEMPLATE) template = self.response_template(CREATE_RULE_TEMPLATE)
return template.render(rules=rules) return template.render(rules=rules)
@amzn_request_id
def create_target_group(self) -> str: def create_target_group(self) -> str:
params = self._get_params() params = self._get_params()
name = params.get("Name") name = params.get("Name")
@ -456,7 +452,6 @@ class ELBV2Response(BaseResponse):
template = self.response_template(CREATE_TARGET_GROUP_TEMPLATE) template = self.response_template(CREATE_TARGET_GROUP_TEMPLATE)
return template.render(target_group=target_group) return template.render(target_group=target_group)
@amzn_request_id
def create_listener(self) -> str: def create_listener(self) -> str:
params = self._get_params() params = self._get_params()
load_balancer_arn = self._get_param("LoadBalancerArn") load_balancer_arn = self._get_param("LoadBalancerArn")
@ -486,7 +481,6 @@ class ELBV2Response(BaseResponse):
template = self.response_template(CREATE_LISTENER_TEMPLATE) template = self.response_template(CREATE_LISTENER_TEMPLATE)
return template.render(listener=listener) return template.render(listener=listener)
@amzn_request_id
def describe_load_balancers(self) -> str: def describe_load_balancers(self) -> str:
arns = self._get_multi_param("LoadBalancerArns.member") arns = self._get_multi_param("LoadBalancerArns.member")
names = self._get_multi_param("Names.member") names = self._get_multi_param("Names.member")
@ -510,7 +504,6 @@ class ELBV2Response(BaseResponse):
template = self.response_template(DESCRIBE_LOAD_BALANCERS_TEMPLATE) template = self.response_template(DESCRIBE_LOAD_BALANCERS_TEMPLATE)
return template.render(load_balancers=load_balancers_resp, marker=next_marker) return template.render(load_balancers=load_balancers_resp, marker=next_marker)
@amzn_request_id
def describe_rules(self) -> str: def describe_rules(self) -> str:
listener_arn = self._get_param("ListenerArn") listener_arn = self._get_param("ListenerArn")
rule_arns = ( rule_arns = (
@ -539,7 +532,6 @@ class ELBV2Response(BaseResponse):
template = self.response_template(DESCRIBE_RULES_TEMPLATE) template = self.response_template(DESCRIBE_RULES_TEMPLATE)
return template.render(rules=rules_resp, marker=next_marker) return template.render(rules=rules_resp, marker=next_marker)
@amzn_request_id
def describe_target_groups(self) -> str: def describe_target_groups(self) -> str:
load_balancer_arn = self._get_param("LoadBalancerArn") load_balancer_arn = self._get_param("LoadBalancerArn")
target_group_arns = self._get_multi_param("TargetGroupArns.member") target_group_arns = self._get_multi_param("TargetGroupArns.member")
@ -551,7 +543,6 @@ class ELBV2Response(BaseResponse):
template = self.response_template(DESCRIBE_TARGET_GROUPS_TEMPLATE) template = self.response_template(DESCRIBE_TARGET_GROUPS_TEMPLATE)
return template.render(target_groups=target_groups) return template.render(target_groups=target_groups)
@amzn_request_id
def describe_target_group_attributes(self) -> str: def describe_target_group_attributes(self) -> str:
target_group_arn = self._get_param("TargetGroupArn") target_group_arn = self._get_param("TargetGroupArn")
target_group = self.elbv2_backend.target_groups.get(target_group_arn) 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) template = self.response_template(DESCRIBE_TARGET_GROUP_ATTRIBUTES_TEMPLATE)
return template.render(attributes=target_group.attributes) return template.render(attributes=target_group.attributes)
@amzn_request_id
def describe_listeners(self) -> str: def describe_listeners(self) -> str:
load_balancer_arn = self._get_param("LoadBalancerArn") load_balancer_arn = self._get_param("LoadBalancerArn")
listener_arns = self._get_multi_param("ListenerArns.member") listener_arns = self._get_multi_param("ListenerArns.member")
@ -573,35 +563,30 @@ class ELBV2Response(BaseResponse):
template = self.response_template(DESCRIBE_LISTENERS_TEMPLATE) template = self.response_template(DESCRIBE_LISTENERS_TEMPLATE)
return template.render(listeners=listeners) return template.render(listeners=listeners)
@amzn_request_id
def delete_load_balancer(self) -> str: def delete_load_balancer(self) -> str:
arn = self._get_param("LoadBalancerArn") arn = self._get_param("LoadBalancerArn")
self.elbv2_backend.delete_load_balancer(arn) self.elbv2_backend.delete_load_balancer(arn)
template = self.response_template(DELETE_LOAD_BALANCER_TEMPLATE) template = self.response_template(DELETE_LOAD_BALANCER_TEMPLATE)
return template.render() return template.render()
@amzn_request_id
def delete_rule(self) -> str: def delete_rule(self) -> str:
arn = self._get_param("RuleArn") arn = self._get_param("RuleArn")
self.elbv2_backend.delete_rule(arn) self.elbv2_backend.delete_rule(arn)
template = self.response_template(DELETE_RULE_TEMPLATE) template = self.response_template(DELETE_RULE_TEMPLATE)
return template.render() return template.render()
@amzn_request_id
def delete_target_group(self) -> str: def delete_target_group(self) -> str:
arn = self._get_param("TargetGroupArn") arn = self._get_param("TargetGroupArn")
self.elbv2_backend.delete_target_group(arn) self.elbv2_backend.delete_target_group(arn)
template = self.response_template(DELETE_TARGET_GROUP_TEMPLATE) template = self.response_template(DELETE_TARGET_GROUP_TEMPLATE)
return template.render() return template.render()
@amzn_request_id
def delete_listener(self) -> str: def delete_listener(self) -> str:
arn = self._get_param("ListenerArn") arn = self._get_param("ListenerArn")
self.elbv2_backend.delete_listener(arn) self.elbv2_backend.delete_listener(arn)
template = self.response_template(DELETE_LISTENER_TEMPLATE) template = self.response_template(DELETE_LISTENER_TEMPLATE)
return template.render() return template.render()
@amzn_request_id
def modify_rule(self) -> str: def modify_rule(self) -> str:
rule_arn = self._get_param("RuleArn") rule_arn = self._get_param("RuleArn")
params = self._get_params() params = self._get_params()
@ -613,7 +598,6 @@ class ELBV2Response(BaseResponse):
template = self.response_template(MODIFY_RULE_TEMPLATE) template = self.response_template(MODIFY_RULE_TEMPLATE)
return template.render(rules=rules) return template.render(rules=rules)
@amzn_request_id
def modify_target_group_attributes(self) -> str: def modify_target_group_attributes(self) -> str:
target_group_arn = self._get_param("TargetGroupArn") target_group_arn = self._get_param("TargetGroupArn")
attrs = self._get_list_prefix("Attributes.member") attrs = self._get_list_prefix("Attributes.member")
@ -623,7 +607,6 @@ class ELBV2Response(BaseResponse):
template = self.response_template(MODIFY_TARGET_GROUP_ATTRIBUTES_TEMPLATE) template = self.response_template(MODIFY_TARGET_GROUP_ATTRIBUTES_TEMPLATE)
return template.render(attributes=attributes) return template.render(attributes=attributes)
@amzn_request_id
def register_targets(self) -> str: def register_targets(self) -> str:
target_group_arn = self._get_param("TargetGroupArn") target_group_arn = self._get_param("TargetGroupArn")
targets = self._get_list_prefix("Targets.member") targets = self._get_list_prefix("Targets.member")
@ -632,7 +615,6 @@ class ELBV2Response(BaseResponse):
template = self.response_template(REGISTER_TARGETS_TEMPLATE) template = self.response_template(REGISTER_TARGETS_TEMPLATE)
return template.render() return template.render()
@amzn_request_id
def deregister_targets(self) -> str: def deregister_targets(self) -> str:
target_group_arn = self._get_param("TargetGroupArn") target_group_arn = self._get_param("TargetGroupArn")
targets = self._get_list_prefix("Targets.member") targets = self._get_list_prefix("Targets.member")
@ -641,7 +623,6 @@ class ELBV2Response(BaseResponse):
template = self.response_template(DEREGISTER_TARGETS_TEMPLATE) template = self.response_template(DEREGISTER_TARGETS_TEMPLATE)
return template.render() return template.render()
@amzn_request_id
def describe_target_health(self) -> str: def describe_target_health(self) -> str:
target_group_arn = self._get_param("TargetGroupArn") target_group_arn = self._get_param("TargetGroupArn")
targets = self._get_list_prefix("Targets.member") targets = self._get_list_prefix("Targets.member")
@ -652,7 +633,6 @@ class ELBV2Response(BaseResponse):
template = self.response_template(DESCRIBE_TARGET_HEALTH_TEMPLATE) template = self.response_template(DESCRIBE_TARGET_HEALTH_TEMPLATE)
return template.render(target_health_descriptions=target_health_descriptions) return template.render(target_health_descriptions=target_health_descriptions)
@amzn_request_id
def set_rule_priorities(self) -> str: def set_rule_priorities(self) -> str:
rule_priorities = self._get_list_prefix("RulePriorities.member") rule_priorities = self._get_list_prefix("RulePriorities.member")
for rule_priority in rule_priorities: for rule_priority in rule_priorities:
@ -661,7 +641,6 @@ class ELBV2Response(BaseResponse):
template = self.response_template(SET_RULE_PRIORITIES_TEMPLATE) template = self.response_template(SET_RULE_PRIORITIES_TEMPLATE)
return template.render(rules=rules) return template.render(rules=rules)
@amzn_request_id
def add_tags(self) -> str: def add_tags(self) -> str:
resource_arns = self._get_multi_param("ResourceArns.member") resource_arns = self._get_multi_param("ResourceArns.member")
tags = self._get_params().get("Tags") tags = self._get_params().get("Tags")
@ -671,7 +650,6 @@ class ELBV2Response(BaseResponse):
template = self.response_template(ADD_TAGS_TEMPLATE) template = self.response_template(ADD_TAGS_TEMPLATE)
return template.render() return template.render()
@amzn_request_id
def remove_tags(self) -> str: def remove_tags(self) -> str:
resource_arns = self._get_multi_param("ResourceArns.member") resource_arns = self._get_multi_param("ResourceArns.member")
tag_keys = self._get_multi_param("TagKeys.member") tag_keys = self._get_multi_param("TagKeys.member")
@ -681,7 +659,6 @@ class ELBV2Response(BaseResponse):
template = self.response_template(REMOVE_TAGS_TEMPLATE) template = self.response_template(REMOVE_TAGS_TEMPLATE)
return template.render() return template.render()
@amzn_request_id
def describe_tags(self) -> str: def describe_tags(self) -> str:
resource_arns = self._get_multi_param("ResourceArns.member") resource_arns = self._get_multi_param("ResourceArns.member")
resource_tags = self.elbv2_backend.describe_tags(resource_arns) resource_tags = self.elbv2_backend.describe_tags(resource_arns)
@ -689,7 +666,6 @@ class ELBV2Response(BaseResponse):
template = self.response_template(DESCRIBE_TAGS_TEMPLATE) template = self.response_template(DESCRIBE_TAGS_TEMPLATE)
return template.render(resource_tags=resource_tags) return template.render(resource_tags=resource_tags)
@amzn_request_id
def describe_account_limits(self) -> str: def describe_account_limits(self) -> str:
# Supports paging but not worth implementing yet # Supports paging but not worth implementing yet
# marker = self._get_param('Marker') # marker = self._get_param('Marker')
@ -709,7 +685,6 @@ class ELBV2Response(BaseResponse):
template = self.response_template(DESCRIBE_LIMITS_TEMPLATE) template = self.response_template(DESCRIBE_LIMITS_TEMPLATE)
return template.render(limits=limits) return template.render(limits=limits)
@amzn_request_id
def describe_ssl_policies(self) -> str: def describe_ssl_policies(self) -> str:
names = self._get_multi_param("Names.member.") names = self._get_multi_param("Names.member.")
# Supports paging but not worth implementing yet # Supports paging but not worth implementing yet
@ -723,7 +698,6 @@ class ELBV2Response(BaseResponse):
template = self.response_template(DESCRIBE_SSL_POLICIES_TEMPLATE) template = self.response_template(DESCRIBE_SSL_POLICIES_TEMPLATE)
return template.render(policies=policies) return template.render(policies=policies)
@amzn_request_id
def set_ip_address_type(self) -> str: def set_ip_address_type(self) -> str:
arn = self._get_param("LoadBalancerArn") arn = self._get_param("LoadBalancerArn")
ip_type = self._get_param("IpAddressType") ip_type = self._get_param("IpAddressType")
@ -733,7 +707,6 @@ class ELBV2Response(BaseResponse):
template = self.response_template(SET_IP_ADDRESS_TYPE_TEMPLATE) template = self.response_template(SET_IP_ADDRESS_TYPE_TEMPLATE)
return template.render(ip_type=ip_type) return template.render(ip_type=ip_type)
@amzn_request_id
def set_security_groups(self) -> str: def set_security_groups(self) -> str:
arn = self._get_param("LoadBalancerArn") arn = self._get_param("LoadBalancerArn")
sec_groups = self._get_multi_param("SecurityGroups.member.") sec_groups = self._get_multi_param("SecurityGroups.member.")
@ -743,7 +716,6 @@ class ELBV2Response(BaseResponse):
template = self.response_template(SET_SECURITY_GROUPS_TEMPLATE) template = self.response_template(SET_SECURITY_GROUPS_TEMPLATE)
return template.render(sec_groups=sec_groups) return template.render(sec_groups=sec_groups)
@amzn_request_id
def set_subnets(self) -> str: def set_subnets(self) -> str:
arn = self._get_param("LoadBalancerArn") arn = self._get_param("LoadBalancerArn")
subnets = self._get_multi_param("Subnets.member.") subnets = self._get_multi_param("Subnets.member.")
@ -754,7 +726,6 @@ class ELBV2Response(BaseResponse):
template = self.response_template(SET_SUBNETS_TEMPLATE) template = self.response_template(SET_SUBNETS_TEMPLATE)
return template.render(subnets=subnet_zone_list) return template.render(subnets=subnet_zone_list)
@amzn_request_id
def modify_load_balancer_attributes(self) -> str: def modify_load_balancer_attributes(self) -> str:
arn = self._get_param("LoadBalancerArn") arn = self._get_param("LoadBalancerArn")
attrs = self._get_map_prefix( attrs = self._get_map_prefix(
@ -766,7 +737,6 @@ class ELBV2Response(BaseResponse):
template = self.response_template(MODIFY_LOADBALANCER_ATTRS_TEMPLATE) template = self.response_template(MODIFY_LOADBALANCER_ATTRS_TEMPLATE)
return template.render(attrs=all_attrs) return template.render(attrs=all_attrs)
@amzn_request_id
def describe_load_balancer_attributes(self) -> str: def describe_load_balancer_attributes(self) -> str:
arn = self._get_param("LoadBalancerArn") arn = self._get_param("LoadBalancerArn")
attrs = self.elbv2_backend.describe_load_balancer_attributes(arn) attrs = self.elbv2_backend.describe_load_balancer_attributes(arn)
@ -774,7 +744,6 @@ class ELBV2Response(BaseResponse):
template = self.response_template(DESCRIBE_LOADBALANCER_ATTRS_TEMPLATE) template = self.response_template(DESCRIBE_LOADBALANCER_ATTRS_TEMPLATE)
return template.render(attrs=attrs) return template.render(attrs=attrs)
@amzn_request_id
def modify_target_group(self) -> str: def modify_target_group(self) -> str:
arn = self._get_param("TargetGroupArn") arn = self._get_param("TargetGroupArn")
@ -806,7 +775,6 @@ class ELBV2Response(BaseResponse):
template = self.response_template(MODIFY_TARGET_GROUP_TEMPLATE) template = self.response_template(MODIFY_TARGET_GROUP_TEMPLATE)
return template.render(target_group=target_group) return template.render(target_group=target_group)
@amzn_request_id
def modify_listener(self) -> str: def modify_listener(self) -> str:
arn = self._get_param("ListenerArn") arn = self._get_param("ListenerArn")
port = self._get_param("Port") port = self._get_param("Port")
@ -828,7 +796,6 @@ class ELBV2Response(BaseResponse):
template = self.response_template(MODIFY_LISTENER_TEMPLATE) template = self.response_template(MODIFY_LISTENER_TEMPLATE)
return template.render(listener=listener) return template.render(listener=listener)
@amzn_request_id
def add_listener_certificates(self) -> str: def add_listener_certificates(self) -> str:
arn = self._get_param("ListenerArn") arn = self._get_param("ListenerArn")
certificates = self._get_list_prefix("Certificates.member") certificates = self._get_list_prefix("Certificates.member")
@ -839,7 +806,6 @@ class ELBV2Response(BaseResponse):
template = self.response_template(ADD_LISTENER_CERTIFICATES_TEMPLATE) template = self.response_template(ADD_LISTENER_CERTIFICATES_TEMPLATE)
return template.render(certificates=certificate_arns) return template.render(certificates=certificate_arns)
@amzn_request_id
def describe_listener_certificates(self) -> str: def describe_listener_certificates(self) -> str:
arn = self._get_param("ListenerArn") arn = self._get_param("ListenerArn")
certificates = self.elbv2_backend.describe_listener_certificates(arn) certificates = self.elbv2_backend.describe_listener_certificates(arn)
@ -847,7 +813,6 @@ class ELBV2Response(BaseResponse):
template = self.response_template(DESCRIBE_LISTENER_CERTIFICATES_TEMPLATE) template = self.response_template(DESCRIBE_LISTENER_CERTIFICATES_TEMPLATE)
return template.render(certificates=certificates) return template.render(certificates=certificates)
@amzn_request_id
def remove_listener_certificates(self) -> str: def remove_listener_certificates(self) -> str:
arn = self._get_param("ListenerArn") arn = self._get_param("ListenerArn")
certificates = self._get_list_prefix("Certificates.member") certificates = self._get_list_prefix("Certificates.member")

View File

@ -2,7 +2,6 @@ import json
from moto.core.common_types import TYPE_RESPONSE from moto.core.common_types import TYPE_RESPONSE
from moto.core.responses import BaseResponse from moto.core.responses import BaseResponse
from moto.utilities.aws_headers import amzn_request_id
from .models import ForecastBackend, forecast_backends from .models import ForecastBackend, forecast_backends
@ -15,7 +14,6 @@ class ForecastResponse(BaseResponse):
def forecast_backend(self) -> ForecastBackend: def forecast_backend(self) -> ForecastBackend:
return forecast_backends[self.current_account][self.region] return forecast_backends[self.current_account][self.region]
@amzn_request_id
def create_dataset_group(self) -> TYPE_RESPONSE: def create_dataset_group(self) -> TYPE_RESPONSE:
dataset_group_name = self._get_param("DatasetGroupName") dataset_group_name = self._get_param("DatasetGroupName")
domain = self._get_param("Domain") domain = self._get_param("Domain")
@ -31,7 +29,6 @@ class ForecastResponse(BaseResponse):
response = {"DatasetGroupArn": dataset_group.arn} response = {"DatasetGroupArn": dataset_group.arn}
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def describe_dataset_group(self) -> TYPE_RESPONSE: def describe_dataset_group(self) -> TYPE_RESPONSE:
dataset_group_arn = self._get_param("DatasetGroupArn") dataset_group_arn = self._get_param("DatasetGroupArn")
@ -49,20 +46,17 @@ class ForecastResponse(BaseResponse):
} }
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def delete_dataset_group(self) -> TYPE_RESPONSE: def delete_dataset_group(self) -> TYPE_RESPONSE:
dataset_group_arn = self._get_param("DatasetGroupArn") dataset_group_arn = self._get_param("DatasetGroupArn")
self.forecast_backend.delete_dataset_group(dataset_group_arn) self.forecast_backend.delete_dataset_group(dataset_group_arn)
return 200, {}, "" return 200, {}, ""
@amzn_request_id
def update_dataset_group(self) -> TYPE_RESPONSE: def update_dataset_group(self) -> TYPE_RESPONSE:
dataset_group_arn = self._get_param("DatasetGroupArn") dataset_group_arn = self._get_param("DatasetGroupArn")
dataset_arns = self._get_param("DatasetArns") dataset_arns = self._get_param("DatasetArns")
self.forecast_backend.update_dataset_group(dataset_group_arn, dataset_arns) self.forecast_backend.update_dataset_group(dataset_group_arn, dataset_arns)
return 200, {}, "" return 200, {}, ""
@amzn_request_id
def list_dataset_groups(self) -> TYPE_RESPONSE: def list_dataset_groups(self) -> TYPE_RESPONSE:
list_all = sorted( list_all = sorted(
[ [

View File

@ -21,7 +21,6 @@ from moto.s3bucket_path.utils import (
from moto.s3bucket_path.utils import ( from moto.s3bucket_path.utils import (
parse_key_name as bucketpath_parse_key_name, parse_key_name as bucketpath_parse_key_name,
) )
from moto.utilities.aws_headers import amzn_request_id
from .exceptions import ( from .exceptions import (
AccessForbidden, AccessForbidden,
@ -284,7 +283,6 @@ class S3Response(BaseResponse):
# Using path-based buckets # Using path-based buckets
return self.bucket_response(request, full_url, headers) return self.bucket_response(request, full_url, headers)
@amzn_request_id
def bucket_response( def bucket_response(
self, request: Any, full_url: str, headers: Any self, request: Any, full_url: str, headers: Any
) -> TYPE_RESPONSE: ) -> TYPE_RESPONSE:
@ -1246,7 +1244,6 @@ class S3Response(BaseResponse):
# last line should equal # last line should equal
# amz-checksum-sha256:<..>\r\n # amz-checksum-sha256:<..>\r\n
@amzn_request_id
def key_response( def key_response(
self, request: Any, full_url: str, headers: Dict[str, Any] self, request: Any, full_url: str, headers: Dict[str, Any]
) -> TYPE_RESPONSE: ) -> TYPE_RESPONSE:

View File

@ -7,7 +7,6 @@ from moto.core.common_types import TYPE_RESPONSE
from moto.core.responses import BaseResponse from moto.core.responses import BaseResponse
from moto.s3.exceptions import S3ClientError from moto.s3.exceptions import S3ClientError
from moto.s3.responses import S3_PUBLIC_ACCESS_BLOCK_CONFIGURATION 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 from .models import S3ControlBackend, s3control_backends
@ -20,7 +19,6 @@ class S3ControlResponse(BaseResponse):
def backend(self) -> S3ControlBackend: def backend(self) -> S3ControlBackend:
return s3control_backends[self.current_account]["global"] 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 def public_access_block(self, request: Any, full_url: str, headers: Any) -> TYPE_RESPONSE: # type: ignore
self.setup_class(request, full_url, headers) self.setup_class(request, full_url, headers)
try: try:

View File

@ -4,7 +4,6 @@ from typing import Any
from moto.core.common_types import TYPE_RESPONSE from moto.core.common_types import TYPE_RESPONSE
from moto.core.responses import BaseResponse from moto.core.responses import BaseResponse
from moto.sagemaker.exceptions import AWSValidationException from moto.sagemaker.exceptions import AWSValidationException
from moto.utilities.aws_headers import amzn_request_id
from .models import SageMakerModelBackend, sagemaker_backends from .models import SageMakerModelBackend, sagemaker_backends
@ -52,7 +51,6 @@ class SageMakerResponse(BaseResponse):
models = self.sagemaker_backend.list_models() models = self.sagemaker_backend.list_models()
return json.dumps({"Models": [model.response_object for model in models]}) return json.dumps({"Models": [model.response_object for model in models]})
@amzn_request_id
def create_notebook_instance(self) -> TYPE_RESPONSE: def create_notebook_instance(self) -> TYPE_RESPONSE:
sagemaker_notebook = self.sagemaker_backend.create_notebook_instance( sagemaker_notebook = self.sagemaker_backend.create_notebook_instance(
notebook_instance_name=self._get_param("NotebookInstanceName"), notebook_instance_name=self._get_param("NotebookInstanceName"),
@ -72,7 +70,6 @@ class SageMakerResponse(BaseResponse):
) )
return 200, {}, json.dumps({"NotebookInstanceArn": sagemaker_notebook.arn}) return 200, {}, json.dumps({"NotebookInstanceArn": sagemaker_notebook.arn})
@amzn_request_id
def describe_notebook_instance(self) -> str: def describe_notebook_instance(self) -> str:
notebook_instance_name = self._get_param("NotebookInstanceName") notebook_instance_name = self._get_param("NotebookInstanceName")
notebook_instance = self.sagemaker_backend.get_notebook_instance( notebook_instance = self.sagemaker_backend.get_notebook_instance(
@ -80,25 +77,21 @@ class SageMakerResponse(BaseResponse):
) )
return json.dumps(notebook_instance.to_dict()) return json.dumps(notebook_instance.to_dict())
@amzn_request_id
def start_notebook_instance(self) -> TYPE_RESPONSE: def start_notebook_instance(self) -> TYPE_RESPONSE:
notebook_instance_name = self._get_param("NotebookInstanceName") notebook_instance_name = self._get_param("NotebookInstanceName")
self.sagemaker_backend.start_notebook_instance(notebook_instance_name) self.sagemaker_backend.start_notebook_instance(notebook_instance_name)
return 200, {}, json.dumps("{}") return 200, {}, json.dumps("{}")
@amzn_request_id
def stop_notebook_instance(self) -> TYPE_RESPONSE: def stop_notebook_instance(self) -> TYPE_RESPONSE:
notebook_instance_name = self._get_param("NotebookInstanceName") notebook_instance_name = self._get_param("NotebookInstanceName")
self.sagemaker_backend.stop_notebook_instance(notebook_instance_name) self.sagemaker_backend.stop_notebook_instance(notebook_instance_name)
return 200, {}, json.dumps("{}") return 200, {}, json.dumps("{}")
@amzn_request_id
def delete_notebook_instance(self) -> TYPE_RESPONSE: def delete_notebook_instance(self) -> TYPE_RESPONSE:
notebook_instance_name = self._get_param("NotebookInstanceName") notebook_instance_name = self._get_param("NotebookInstanceName")
self.sagemaker_backend.delete_notebook_instance(notebook_instance_name) self.sagemaker_backend.delete_notebook_instance(notebook_instance_name)
return 200, {}, json.dumps("{}") return 200, {}, json.dumps("{}")
@amzn_request_id
def list_notebook_instances(self) -> str: def list_notebook_instances(self) -> str:
sort_by = self._get_param("SortBy", "Name") sort_by = self._get_param("SortBy", "Name")
sort_order = self._get_param("SortOrder", "Ascending") sort_order = self._get_param("SortOrder", "Ascending")
@ -121,7 +114,6 @@ class SageMakerResponse(BaseResponse):
} }
) )
@amzn_request_id
def list_tags(self) -> TYPE_RESPONSE: def list_tags(self) -> TYPE_RESPONSE:
arn = self._get_param("ResourceArn") arn = self._get_param("ResourceArn")
max_results = self._get_param("MaxResults") max_results = self._get_param("MaxResults")
@ -134,21 +126,18 @@ class SageMakerResponse(BaseResponse):
response["NextToken"] = next_token response["NextToken"] = next_token
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def add_tags(self) -> TYPE_RESPONSE: def add_tags(self) -> TYPE_RESPONSE:
arn = self._get_param("ResourceArn") arn = self._get_param("ResourceArn")
tags = self._get_param("Tags") tags = self._get_param("Tags")
tags = self.sagemaker_backend.add_tags(arn, tags) tags = self.sagemaker_backend.add_tags(arn, tags)
return 200, {}, json.dumps({"Tags": tags}) return 200, {}, json.dumps({"Tags": tags})
@amzn_request_id
def delete_tags(self) -> TYPE_RESPONSE: def delete_tags(self) -> TYPE_RESPONSE:
arn = self._get_param("ResourceArn") arn = self._get_param("ResourceArn")
tag_keys = self._get_param("TagKeys") tag_keys = self._get_param("TagKeys")
self.sagemaker_backend.delete_tags(arn, tag_keys) self.sagemaker_backend.delete_tags(arn, tag_keys)
return 200, {}, json.dumps({}) return 200, {}, json.dumps({})
@amzn_request_id
def create_endpoint_config(self) -> TYPE_RESPONSE: def create_endpoint_config(self) -> TYPE_RESPONSE:
endpoint_config = self.sagemaker_backend.create_endpoint_config( endpoint_config = self.sagemaker_backend.create_endpoint_config(
endpoint_config_name=self._get_param("EndpointConfigName"), endpoint_config_name=self._get_param("EndpointConfigName"),
@ -163,19 +152,16 @@ class SageMakerResponse(BaseResponse):
json.dumps({"EndpointConfigArn": endpoint_config.endpoint_config_arn}), json.dumps({"EndpointConfigArn": endpoint_config.endpoint_config_arn}),
) )
@amzn_request_id
def describe_endpoint_config(self) -> str: def describe_endpoint_config(self) -> str:
endpoint_config_name = self._get_param("EndpointConfigName") endpoint_config_name = self._get_param("EndpointConfigName")
response = self.sagemaker_backend.describe_endpoint_config(endpoint_config_name) response = self.sagemaker_backend.describe_endpoint_config(endpoint_config_name)
return json.dumps(response) return json.dumps(response)
@amzn_request_id
def delete_endpoint_config(self) -> TYPE_RESPONSE: def delete_endpoint_config(self) -> TYPE_RESPONSE:
endpoint_config_name = self._get_param("EndpointConfigName") endpoint_config_name = self._get_param("EndpointConfigName")
self.sagemaker_backend.delete_endpoint_config(endpoint_config_name) self.sagemaker_backend.delete_endpoint_config(endpoint_config_name)
return 200, {}, json.dumps("{}") return 200, {}, json.dumps("{}")
@amzn_request_id
def create_endpoint(self) -> TYPE_RESPONSE: def create_endpoint(self) -> TYPE_RESPONSE:
endpoint = self.sagemaker_backend.create_endpoint( endpoint = self.sagemaker_backend.create_endpoint(
endpoint_name=self._get_param("EndpointName"), endpoint_name=self._get_param("EndpointName"),
@ -184,19 +170,16 @@ class SageMakerResponse(BaseResponse):
) )
return 200, {}, json.dumps({"EndpointArn": endpoint.endpoint_arn}) return 200, {}, json.dumps({"EndpointArn": endpoint.endpoint_arn})
@amzn_request_id
def describe_endpoint(self) -> str: def describe_endpoint(self) -> str:
endpoint_name = self._get_param("EndpointName") endpoint_name = self._get_param("EndpointName")
response = self.sagemaker_backend.describe_endpoint(endpoint_name) response = self.sagemaker_backend.describe_endpoint(endpoint_name)
return json.dumps(response) return json.dumps(response)
@amzn_request_id
def delete_endpoint(self) -> TYPE_RESPONSE: def delete_endpoint(self) -> TYPE_RESPONSE:
endpoint_name = self._get_param("EndpointName") endpoint_name = self._get_param("EndpointName")
self.sagemaker_backend.delete_endpoint(endpoint_name) self.sagemaker_backend.delete_endpoint(endpoint_name)
return 200, {}, json.dumps("{}") return 200, {}, json.dumps("{}")
@amzn_request_id
def create_processing_job(self) -> TYPE_RESPONSE: def create_processing_job(self) -> TYPE_RESPONSE:
processing_job = self.sagemaker_backend.create_processing_job( processing_job = self.sagemaker_backend.create_processing_job(
app_specification=self._get_param("AppSpecification"), app_specification=self._get_param("AppSpecification"),
@ -212,13 +195,11 @@ class SageMakerResponse(BaseResponse):
response = {"ProcessingJobArn": processing_job.processing_job_arn} response = {"ProcessingJobArn": processing_job.processing_job_arn}
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def describe_processing_job(self) -> str: def describe_processing_job(self) -> str:
processing_job_name = self._get_param("ProcessingJobName") processing_job_name = self._get_param("ProcessingJobName")
response = self.sagemaker_backend.describe_processing_job(processing_job_name) response = self.sagemaker_backend.describe_processing_job(processing_job_name)
return json.dumps(response) return json.dumps(response)
@amzn_request_id
def create_transform_job(self) -> TYPE_RESPONSE: def create_transform_job(self) -> TYPE_RESPONSE:
transform_job = self.sagemaker_backend.create_transform_job( transform_job = self.sagemaker_backend.create_transform_job(
transform_job_name=self._get_param("TransformJobName"), transform_job_name=self._get_param("TransformJobName"),
@ -241,7 +222,6 @@ class SageMakerResponse(BaseResponse):
} }
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def describe_transform_job(self) -> str: def describe_transform_job(self) -> str:
transform_job_name = self._get_param("TransformJobName") transform_job_name = self._get_param("TransformJobName")
response = self.sagemaker_backend.describe_transform_job( response = self.sagemaker_backend.describe_transform_job(
@ -249,7 +229,6 @@ class SageMakerResponse(BaseResponse):
) )
return json.dumps(response) return json.dumps(response)
@amzn_request_id
def create_training_job(self) -> TYPE_RESPONSE: def create_training_job(self) -> TYPE_RESPONSE:
training_job = self.sagemaker_backend.create_training_job( training_job = self.sagemaker_backend.create_training_job(
training_job_name=self._get_param("TrainingJobName"), training_job_name=self._get_param("TrainingJobName"),
@ -280,13 +259,11 @@ class SageMakerResponse(BaseResponse):
} }
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def describe_training_job(self) -> str: def describe_training_job(self) -> str:
training_job_name = self._get_param("TrainingJobName") training_job_name = self._get_param("TrainingJobName")
response = self.sagemaker_backend.describe_training_job(training_job_name) response = self.sagemaker_backend.describe_training_job(training_job_name)
return json.dumps(response) return json.dumps(response)
@amzn_request_id
def create_notebook_instance_lifecycle_config(self) -> TYPE_RESPONSE: def create_notebook_instance_lifecycle_config(self) -> TYPE_RESPONSE:
lifecycle_configuration = ( lifecycle_configuration = (
self.sagemaker_backend.create_notebook_instance_lifecycle_config( self.sagemaker_backend.create_notebook_instance_lifecycle_config(
@ -302,7 +279,6 @@ class SageMakerResponse(BaseResponse):
} }
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def describe_notebook_instance_lifecycle_config(self) -> str: def describe_notebook_instance_lifecycle_config(self) -> str:
response = self.sagemaker_backend.describe_notebook_instance_lifecycle_config( response = self.sagemaker_backend.describe_notebook_instance_lifecycle_config(
notebook_instance_lifecycle_config_name=self._get_param( notebook_instance_lifecycle_config_name=self._get_param(
@ -311,7 +287,6 @@ class SageMakerResponse(BaseResponse):
) )
return json.dumps(response) return json.dumps(response)
@amzn_request_id
def delete_notebook_instance_lifecycle_config(self) -> TYPE_RESPONSE: def delete_notebook_instance_lifecycle_config(self) -> TYPE_RESPONSE:
self.sagemaker_backend.delete_notebook_instance_lifecycle_config( self.sagemaker_backend.delete_notebook_instance_lifecycle_config(
notebook_instance_lifecycle_config_name=self._get_param( notebook_instance_lifecycle_config_name=self._get_param(
@ -320,7 +295,6 @@ class SageMakerResponse(BaseResponse):
) )
return 200, {}, json.dumps("{}") return 200, {}, json.dumps("{}")
@amzn_request_id
def search(self) -> TYPE_RESPONSE: def search(self) -> TYPE_RESPONSE:
response = self.sagemaker_backend.search( response = self.sagemaker_backend.search(
resource=self._get_param("Resource"), resource=self._get_param("Resource"),
@ -328,7 +302,6 @@ class SageMakerResponse(BaseResponse):
) )
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def list_experiments(self) -> TYPE_RESPONSE: def list_experiments(self) -> TYPE_RESPONSE:
MaxResults = self._get_param("MaxResults") MaxResults = self._get_param("MaxResults")
NextToken = self._get_param("NextToken") NextToken = self._get_param("NextToken")
@ -356,28 +329,24 @@ class SageMakerResponse(BaseResponse):
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def delete_experiment(self) -> TYPE_RESPONSE: def delete_experiment(self) -> TYPE_RESPONSE:
self.sagemaker_backend.delete_experiment( self.sagemaker_backend.delete_experiment(
experiment_name=self._get_param("ExperimentName") experiment_name=self._get_param("ExperimentName")
) )
return 200, {}, json.dumps({}) return 200, {}, json.dumps({})
@amzn_request_id
def create_experiment(self) -> TYPE_RESPONSE: def create_experiment(self) -> TYPE_RESPONSE:
response = self.sagemaker_backend.create_experiment( response = self.sagemaker_backend.create_experiment(
experiment_name=self._get_param("ExperimentName") experiment_name=self._get_param("ExperimentName")
) )
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def describe_experiment(self) -> TYPE_RESPONSE: def describe_experiment(self) -> TYPE_RESPONSE:
response = self.sagemaker_backend.describe_experiment( response = self.sagemaker_backend.describe_experiment(
experiment_name=self._get_param("ExperimentName") experiment_name=self._get_param("ExperimentName")
) )
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def list_trials(self) -> TYPE_RESPONSE: def list_trials(self) -> TYPE_RESPONSE:
MaxResults = self._get_param("MaxResults") MaxResults = self._get_param("MaxResults")
NextToken = self._get_param("NextToken") NextToken = self._get_param("NextToken")
@ -408,7 +377,6 @@ class SageMakerResponse(BaseResponse):
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def create_trial(self) -> TYPE_RESPONSE: def create_trial(self) -> TYPE_RESPONSE:
response = self.sagemaker_backend.create_trial( response = self.sagemaker_backend.create_trial(
trial_name=self._get_param("TrialName"), trial_name=self._get_param("TrialName"),
@ -416,7 +384,6 @@ class SageMakerResponse(BaseResponse):
) )
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def list_trial_components(self) -> TYPE_RESPONSE: def list_trial_components(self) -> TYPE_RESPONSE:
MaxResults = self._get_param("MaxResults") MaxResults = self._get_param("MaxResults")
NextToken = self._get_param("NextToken") NextToken = self._get_param("NextToken")
@ -446,7 +413,6 @@ class SageMakerResponse(BaseResponse):
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def create_trial_component(self) -> TYPE_RESPONSE: def create_trial_component(self) -> TYPE_RESPONSE:
response = self.sagemaker_backend.create_trial_component( response = self.sagemaker_backend.create_trial_component(
trial_component_name=self._get_param("TrialComponentName"), trial_component_name=self._get_param("TrialComponentName"),
@ -454,31 +420,26 @@ class SageMakerResponse(BaseResponse):
) )
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def describe_trial(self) -> str: def describe_trial(self) -> str:
trial_name = self._get_param("TrialName") trial_name = self._get_param("TrialName")
response = self.sagemaker_backend.describe_trial(trial_name) response = self.sagemaker_backend.describe_trial(trial_name)
return json.dumps(response) return json.dumps(response)
@amzn_request_id
def delete_trial(self) -> TYPE_RESPONSE: def delete_trial(self) -> TYPE_RESPONSE:
trial_name = self._get_param("TrialName") trial_name = self._get_param("TrialName")
self.sagemaker_backend.delete_trial(trial_name) self.sagemaker_backend.delete_trial(trial_name)
return 200, {}, json.dumps({}) return 200, {}, json.dumps({})
@amzn_request_id
def delete_trial_component(self) -> TYPE_RESPONSE: def delete_trial_component(self) -> TYPE_RESPONSE:
trial_component_name = self._get_param("TrialComponentName") trial_component_name = self._get_param("TrialComponentName")
self.sagemaker_backend.delete_trial_component(trial_component_name) self.sagemaker_backend.delete_trial_component(trial_component_name)
return 200, {}, json.dumps({}) return 200, {}, json.dumps({})
@amzn_request_id
def describe_trial_component(self) -> str: def describe_trial_component(self) -> str:
trial_component_name = self._get_param("TrialComponentName") trial_component_name = self._get_param("TrialComponentName")
response = self.sagemaker_backend.describe_trial_component(trial_component_name) response = self.sagemaker_backend.describe_trial_component(trial_component_name)
return json.dumps(response) return json.dumps(response)
@amzn_request_id
def associate_trial_component(self) -> TYPE_RESPONSE: def associate_trial_component(self) -> TYPE_RESPONSE:
trial_name = self._get_param("TrialName") trial_name = self._get_param("TrialName")
trial_component_name = self._get_param("TrialComponentName") trial_component_name = self._get_param("TrialComponentName")
@ -487,7 +448,6 @@ class SageMakerResponse(BaseResponse):
) )
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def disassociate_trial_component(self) -> TYPE_RESPONSE: def disassociate_trial_component(self) -> TYPE_RESPONSE:
trial_component_name = self._get_param("TrialComponentName") trial_component_name = self._get_param("TrialComponentName")
trial_name = self._get_param("TrialName") trial_name = self._get_param("TrialName")
@ -496,14 +456,12 @@ class SageMakerResponse(BaseResponse):
) )
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def describe_pipeline(self) -> TYPE_RESPONSE: def describe_pipeline(self) -> TYPE_RESPONSE:
response = self.sagemaker_backend.describe_pipeline( response = self.sagemaker_backend.describe_pipeline(
self._get_param("PipelineName") self._get_param("PipelineName")
) )
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def start_pipeline_execution(self) -> TYPE_RESPONSE: def start_pipeline_execution(self) -> TYPE_RESPONSE:
response = self.sagemaker_backend.start_pipeline_execution( response = self.sagemaker_backend.start_pipeline_execution(
self._get_param("PipelineName"), self._get_param("PipelineName"),
@ -515,35 +473,30 @@ class SageMakerResponse(BaseResponse):
) )
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def describe_pipeline_execution(self) -> TYPE_RESPONSE: def describe_pipeline_execution(self) -> TYPE_RESPONSE:
response = self.sagemaker_backend.describe_pipeline_execution( response = self.sagemaker_backend.describe_pipeline_execution(
self._get_param("PipelineExecutionArn") self._get_param("PipelineExecutionArn")
) )
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def describe_pipeline_definition_for_execution(self) -> TYPE_RESPONSE: def describe_pipeline_definition_for_execution(self) -> TYPE_RESPONSE:
response = self.sagemaker_backend.describe_pipeline_definition_for_execution( response = self.sagemaker_backend.describe_pipeline_definition_for_execution(
self._get_param("PipelineExecutionArn") self._get_param("PipelineExecutionArn")
) )
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def list_pipeline_parameters_for_execution(self) -> TYPE_RESPONSE: def list_pipeline_parameters_for_execution(self) -> TYPE_RESPONSE:
response = self.sagemaker_backend.list_pipeline_parameters_for_execution( response = self.sagemaker_backend.list_pipeline_parameters_for_execution(
self._get_param("PipelineExecutionArn") self._get_param("PipelineExecutionArn")
) )
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def list_pipeline_executions(self) -> TYPE_RESPONSE: def list_pipeline_executions(self) -> TYPE_RESPONSE:
response = self.sagemaker_backend.list_pipeline_executions( response = self.sagemaker_backend.list_pipeline_executions(
self._get_param("PipelineName") self._get_param("PipelineName")
) )
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def create_pipeline(self) -> TYPE_RESPONSE: def create_pipeline(self) -> TYPE_RESPONSE:
pipeline = self.sagemaker_backend.create_pipeline( pipeline = self.sagemaker_backend.create_pipeline(
pipeline_name=self._get_param("PipelineName"), pipeline_name=self._get_param("PipelineName"),
@ -563,7 +516,6 @@ class SageMakerResponse(BaseResponse):
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def delete_pipeline(self) -> TYPE_RESPONSE: def delete_pipeline(self) -> TYPE_RESPONSE:
pipeline_arn = self.sagemaker_backend.delete_pipeline( pipeline_arn = self.sagemaker_backend.delete_pipeline(
pipeline_name=self._get_param("PipelineName"), pipeline_name=self._get_param("PipelineName"),
@ -571,7 +523,6 @@ class SageMakerResponse(BaseResponse):
response = {"PipelineArn": pipeline_arn} response = {"PipelineArn": pipeline_arn}
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def update_pipeline(self) -> TYPE_RESPONSE: def update_pipeline(self) -> TYPE_RESPONSE:
pipeline_arn = self.sagemaker_backend.update_pipeline( pipeline_arn = self.sagemaker_backend.update_pipeline(
pipeline_name=self._get_param("PipelineName"), pipeline_name=self._get_param("PipelineName"),
@ -588,7 +539,6 @@ class SageMakerResponse(BaseResponse):
response = {"PipelineArn": pipeline_arn} response = {"PipelineArn": pipeline_arn}
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def list_pipelines(self) -> TYPE_RESPONSE: def list_pipelines(self) -> TYPE_RESPONSE:
max_results_range = range(1, 101) max_results_range = range(1, 101)
allowed_sort_by = ("Name", "CreationTime") allowed_sort_by = ("Name", "CreationTime")
@ -631,7 +581,6 @@ class SageMakerResponse(BaseResponse):
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def list_processing_jobs(self) -> TYPE_RESPONSE: def list_processing_jobs(self) -> TYPE_RESPONSE:
max_results_range = range(1, 101) max_results_range = range(1, 101)
allowed_sort_by = ["Name", "CreationTime", "Status"] allowed_sort_by = ["Name", "CreationTime", "Status"]
@ -684,7 +633,6 @@ class SageMakerResponse(BaseResponse):
) )
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def list_transform_jobs(self) -> TYPE_RESPONSE: def list_transform_jobs(self) -> TYPE_RESPONSE:
max_results_range = range(1, 101) max_results_range = range(1, 101)
allowed_sort_by = ["Name", "CreationTime", "Status"] allowed_sort_by = ["Name", "CreationTime", "Status"]
@ -737,7 +685,6 @@ class SageMakerResponse(BaseResponse):
) )
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def list_training_jobs(self) -> TYPE_RESPONSE: def list_training_jobs(self) -> TYPE_RESPONSE:
max_results_range = range(1, 101) max_results_range = range(1, 101)
allowed_sort_by = ["Name", "CreationTime", "Status"] allowed_sort_by = ["Name", "CreationTime", "Status"]

View File

@ -12,7 +12,7 @@ from moto.core.utils import (
camelcase_to_underscores, camelcase_to_underscores,
underscores_to_camelcase, 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 moto.utilities.constants import JSON_TYPES
from .constants import ( from .constants import (
@ -134,7 +134,6 @@ class SQSResponse(BaseResponse):
return visibility_timeout return visibility_timeout
@amz_crc32 # crc last as request_id can edit XML @amz_crc32 # crc last as request_id can edit XML
@amzn_request_id
def call_action(self) -> TYPE_RESPONSE: def call_action(self) -> TYPE_RESPONSE:
status_code, headers, body = super().call_action() status_code, headers, body = super().call_action()
if status_code == 404: if status_code == 404:

View File

@ -2,7 +2,6 @@ import json
from moto.core.common_types import TYPE_RESPONSE from moto.core.common_types import TYPE_RESPONSE
from moto.core.responses import BaseResponse from moto.core.responses import BaseResponse
from moto.utilities.aws_headers import amzn_request_id
from .models import StepFunctionBackend, stepfunctions_backends from .models import StepFunctionBackend, stepfunctions_backends
@ -15,7 +14,6 @@ class StepFunctionResponse(BaseResponse):
def stepfunction_backend(self) -> StepFunctionBackend: def stepfunction_backend(self) -> StepFunctionBackend:
return stepfunctions_backends[self.current_account][self.region] return stepfunctions_backends[self.current_account][self.region]
@amzn_request_id
def create_state_machine(self) -> TYPE_RESPONSE: def create_state_machine(self) -> TYPE_RESPONSE:
name = self._get_param("name") name = self._get_param("name")
definition = self._get_param("definition") definition = self._get_param("definition")
@ -30,7 +28,6 @@ class StepFunctionResponse(BaseResponse):
} }
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def list_state_machines(self) -> TYPE_RESPONSE: def list_state_machines(self) -> TYPE_RESPONSE:
max_results = self._get_int_param("maxResults") max_results = self._get_int_param("maxResults")
next_token = self._get_param("nextToken") next_token = self._get_param("nextToken")
@ -50,12 +47,10 @@ class StepFunctionResponse(BaseResponse):
response["nextToken"] = next_token response["nextToken"] = next_token
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def describe_state_machine(self) -> TYPE_RESPONSE: def describe_state_machine(self) -> TYPE_RESPONSE:
arn = self._get_param("stateMachineArn") arn = self._get_param("stateMachineArn")
return self._describe_state_machine(arn) return self._describe_state_machine(arn)
@amzn_request_id
def _describe_state_machine(self, state_machine_arn: str) -> TYPE_RESPONSE: def _describe_state_machine(self, state_machine_arn: str) -> TYPE_RESPONSE:
state_machine = self.stepfunction_backend.describe_state_machine( state_machine = self.stepfunction_backend.describe_state_machine(
state_machine_arn state_machine_arn
@ -70,13 +65,11 @@ class StepFunctionResponse(BaseResponse):
} }
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def delete_state_machine(self) -> TYPE_RESPONSE: def delete_state_machine(self) -> TYPE_RESPONSE:
arn = self._get_param("stateMachineArn") arn = self._get_param("stateMachineArn")
self.stepfunction_backend.delete_state_machine(arn) self.stepfunction_backend.delete_state_machine(arn)
return 200, {}, json.dumps("{}") return 200, {}, json.dumps("{}")
@amzn_request_id
def update_state_machine(self) -> TYPE_RESPONSE: def update_state_machine(self) -> TYPE_RESPONSE:
arn = self._get_param("stateMachineArn") arn = self._get_param("stateMachineArn")
definition = self._get_param("definition") definition = self._get_param("definition")
@ -89,28 +82,24 @@ class StepFunctionResponse(BaseResponse):
} }
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def list_tags_for_resource(self) -> TYPE_RESPONSE: def list_tags_for_resource(self) -> TYPE_RESPONSE:
arn = self._get_param("resourceArn") arn = self._get_param("resourceArn")
tags = self.stepfunction_backend.list_tags_for_resource(arn) tags = self.stepfunction_backend.list_tags_for_resource(arn)
response = {"tags": tags} response = {"tags": tags}
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def tag_resource(self) -> TYPE_RESPONSE: def tag_resource(self) -> TYPE_RESPONSE:
arn = self._get_param("resourceArn") arn = self._get_param("resourceArn")
tags = self._get_param("tags", []) tags = self._get_param("tags", [])
self.stepfunction_backend.tag_resource(arn, tags) self.stepfunction_backend.tag_resource(arn, tags)
return 200, {}, json.dumps({}) return 200, {}, json.dumps({})
@amzn_request_id
def untag_resource(self) -> TYPE_RESPONSE: def untag_resource(self) -> TYPE_RESPONSE:
arn = self._get_param("resourceArn") arn = self._get_param("resourceArn")
tag_keys = self._get_param("tagKeys", []) tag_keys = self._get_param("tagKeys", [])
self.stepfunction_backend.untag_resource(arn, tag_keys) self.stepfunction_backend.untag_resource(arn, tag_keys)
return 200, {}, json.dumps({}) return 200, {}, json.dumps({})
@amzn_request_id
def start_execution(self) -> TYPE_RESPONSE: def start_execution(self) -> TYPE_RESPONSE:
arn = self._get_param("stateMachineArn") arn = self._get_param("stateMachineArn")
name = self._get_param("name") name = self._get_param("name")
@ -124,7 +113,6 @@ class StepFunctionResponse(BaseResponse):
} }
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def list_executions(self) -> TYPE_RESPONSE: def list_executions(self) -> TYPE_RESPONSE:
max_results = self._get_int_param("maxResults") max_results = self._get_int_param("maxResults")
next_token = self._get_param("nextToken") next_token = self._get_param("nextToken")
@ -153,7 +141,6 @@ class StepFunctionResponse(BaseResponse):
response["nextToken"] = next_token response["nextToken"] = next_token
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def describe_execution(self) -> TYPE_RESPONSE: def describe_execution(self) -> TYPE_RESPONSE:
arn = self._get_param("executionArn") arn = self._get_param("executionArn")
execution = self.stepfunction_backend.describe_execution(arn) execution = self.stepfunction_backend.describe_execution(arn)
@ -168,20 +155,17 @@ class StepFunctionResponse(BaseResponse):
} }
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def describe_state_machine_for_execution(self) -> TYPE_RESPONSE: def describe_state_machine_for_execution(self) -> TYPE_RESPONSE:
arn = self._get_param("executionArn") arn = self._get_param("executionArn")
execution = self.stepfunction_backend.describe_execution(arn) execution = self.stepfunction_backend.describe_execution(arn)
return self._describe_state_machine(execution.state_machine_arn) return self._describe_state_machine(execution.state_machine_arn)
@amzn_request_id
def stop_execution(self) -> TYPE_RESPONSE: def stop_execution(self) -> TYPE_RESPONSE:
arn = self._get_param("executionArn") arn = self._get_param("executionArn")
execution = self.stepfunction_backend.stop_execution(arn) execution = self.stepfunction_backend.stop_execution(arn)
response = {"stopDate": execution.stop_date} response = {"stopDate": execution.stop_date}
return 200, {}, json.dumps(response) return 200, {}, json.dumps(response)
@amzn_request_id
def get_execution_history(self) -> TYPE_RESPONSE: def get_execution_history(self) -> TYPE_RESPONSE:
execution_arn = self._get_param("executionArn") execution_arn = self._get_param("executionArn")
execution_history = self.stepfunction_backend.get_execution_history( execution_history = self.stepfunction_backend.get_execution_history(

View File

@ -1,7 +1,6 @@
import json import json
from moto.core.responses import BaseResponse from moto.core.responses import BaseResponse
from moto.utilities.aws_headers import amzn_request_id
from .models import TranscribeBackend, transcribe_backends from .models import TranscribeBackend, transcribe_backends
@ -14,7 +13,6 @@ class TranscribeResponse(BaseResponse):
def transcribe_backend(self) -> TranscribeBackend: def transcribe_backend(self) -> TranscribeBackend:
return transcribe_backends[self.current_account][self.region] return transcribe_backends[self.current_account][self.region]
@amzn_request_id
def start_transcription_job(self) -> str: def start_transcription_job(self) -> str:
name = self._get_param("TranscriptionJobName") name = self._get_param("TranscriptionJobName")
response = self.transcribe_backend.start_transcription_job( response = self.transcribe_backend.start_transcription_job(
@ -37,7 +35,6 @@ class TranscribeResponse(BaseResponse):
) )
return json.dumps(response) return json.dumps(response)
@amzn_request_id
def start_medical_transcription_job(self) -> str: def start_medical_transcription_job(self) -> str:
name = self._get_param("MedicalTranscriptionJobName") name = self._get_param("MedicalTranscriptionJobName")
response = self.transcribe_backend.start_medical_transcription_job( response = self.transcribe_backend.start_medical_transcription_job(
@ -54,7 +51,6 @@ class TranscribeResponse(BaseResponse):
) )
return json.dumps(response) return json.dumps(response)
@amzn_request_id
def list_transcription_jobs(self) -> str: def list_transcription_jobs(self) -> str:
state_equals = self._get_param("Status") state_equals = self._get_param("Status")
job_name_contains = self._get_param("JobNameContains") job_name_contains = self._get_param("JobNameContains")
@ -69,7 +65,6 @@ class TranscribeResponse(BaseResponse):
) )
return json.dumps(response) return json.dumps(response)
@amzn_request_id
def list_medical_transcription_jobs(self) -> str: def list_medical_transcription_jobs(self) -> str:
status = self._get_param("Status") status = self._get_param("Status")
job_name_contains = self._get_param("JobNameContains") job_name_contains = self._get_param("JobNameContains")
@ -84,7 +79,6 @@ class TranscribeResponse(BaseResponse):
) )
return json.dumps(response) return json.dumps(response)
@amzn_request_id
def get_transcription_job(self) -> str: def get_transcription_job(self) -> str:
transcription_job_name = self._get_param("TranscriptionJobName") transcription_job_name = self._get_param("TranscriptionJobName")
response = self.transcribe_backend.get_transcription_job( response = self.transcribe_backend.get_transcription_job(
@ -92,7 +86,6 @@ class TranscribeResponse(BaseResponse):
) )
return json.dumps(response) return json.dumps(response)
@amzn_request_id
def get_medical_transcription_job(self) -> str: def get_medical_transcription_job(self) -> str:
medical_transcription_job_name = self._get_param("MedicalTranscriptionJobName") medical_transcription_job_name = self._get_param("MedicalTranscriptionJobName")
response = self.transcribe_backend.get_medical_transcription_job( response = self.transcribe_backend.get_medical_transcription_job(
@ -100,7 +93,6 @@ class TranscribeResponse(BaseResponse):
) )
return json.dumps(response) return json.dumps(response)
@amzn_request_id
def delete_transcription_job(self) -> str: def delete_transcription_job(self) -> str:
transcription_job_name = self._get_param("TranscriptionJobName") transcription_job_name = self._get_param("TranscriptionJobName")
self.transcribe_backend.delete_transcription_job( self.transcribe_backend.delete_transcription_job(
@ -108,7 +100,6 @@ class TranscribeResponse(BaseResponse):
) )
return "{}" return "{}"
@amzn_request_id
def delete_medical_transcription_job(self) -> str: def delete_medical_transcription_job(self) -> str:
medical_transcription_job_name = self._get_param("MedicalTranscriptionJobName") medical_transcription_job_name = self._get_param("MedicalTranscriptionJobName")
self.transcribe_backend.delete_medical_transcription_job( self.transcribe_backend.delete_medical_transcription_job(
@ -116,7 +107,6 @@ class TranscribeResponse(BaseResponse):
) )
return "{}" return "{}"
@amzn_request_id
def create_vocabulary(self) -> str: def create_vocabulary(self) -> str:
vocabulary_name = self._get_param("VocabularyName") vocabulary_name = self._get_param("VocabularyName")
language_code = self._get_param("LanguageCode") language_code = self._get_param("LanguageCode")
@ -130,7 +120,6 @@ class TranscribeResponse(BaseResponse):
) )
return json.dumps(response) return json.dumps(response)
@amzn_request_id
def create_medical_vocabulary(self) -> str: def create_medical_vocabulary(self) -> str:
vocabulary_name = self._get_param("VocabularyName") vocabulary_name = self._get_param("VocabularyName")
language_code = self._get_param("LanguageCode") language_code = self._get_param("LanguageCode")
@ -142,7 +131,6 @@ class TranscribeResponse(BaseResponse):
) )
return json.dumps(response) return json.dumps(response)
@amzn_request_id
def get_vocabulary(self) -> str: def get_vocabulary(self) -> str:
vocabulary_name = self._get_param("VocabularyName") vocabulary_name = self._get_param("VocabularyName")
response = self.transcribe_backend.get_vocabulary( response = self.transcribe_backend.get_vocabulary(
@ -150,7 +138,6 @@ class TranscribeResponse(BaseResponse):
) )
return json.dumps(response) return json.dumps(response)
@amzn_request_id
def get_medical_vocabulary(self) -> str: def get_medical_vocabulary(self) -> str:
vocabulary_name = self._get_param("VocabularyName") vocabulary_name = self._get_param("VocabularyName")
response = self.transcribe_backend.get_medical_vocabulary( response = self.transcribe_backend.get_medical_vocabulary(
@ -158,7 +145,6 @@ class TranscribeResponse(BaseResponse):
) )
return json.dumps(response) return json.dumps(response)
@amzn_request_id
def list_vocabularies(self) -> str: def list_vocabularies(self) -> str:
state_equals = self._get_param("StateEquals") state_equals = self._get_param("StateEquals")
name_contains = self._get_param("NameContains") name_contains = self._get_param("NameContains")
@ -173,7 +159,6 @@ class TranscribeResponse(BaseResponse):
) )
return json.dumps(response) return json.dumps(response)
@amzn_request_id
def list_medical_vocabularies(self) -> str: def list_medical_vocabularies(self) -> str:
state_equals = self._get_param("StateEquals") state_equals = self._get_param("StateEquals")
name_contains = self._get_param("NameContains") name_contains = self._get_param("NameContains")
@ -188,13 +173,11 @@ class TranscribeResponse(BaseResponse):
) )
return json.dumps(response) return json.dumps(response)
@amzn_request_id
def delete_vocabulary(self) -> str: def delete_vocabulary(self) -> str:
vocabulary_name = self._get_param("VocabularyName") vocabulary_name = self._get_param("VocabularyName")
self.transcribe_backend.delete_vocabulary(vocabulary_name=vocabulary_name) self.transcribe_backend.delete_vocabulary(vocabulary_name=vocabulary_name)
return "{}" return "{}"
@amzn_request_id
def delete_medical_vocabulary(self) -> str: def delete_medical_vocabulary(self) -> str:
vocabulary_name = self._get_param("VocabularyName") vocabulary_name = self._get_param("VocabularyName")
self.transcribe_backend.delete_medical_vocabulary( self.transcribe_backend.delete_medical_vocabulary(

View File

@ -7,9 +7,6 @@ else:
Protocol = object Protocol = object
import binascii import binascii
import re
from moto.moto_api._internal import mock_random as random
TypeDec = TypeVar("TypeDec", bound=Callable[..., Any]) 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: 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) req_id = random.get_random_string(length=52)
if headerdict is not None and isinstance(headerdict, dict): if headerdict is not None and isinstance(headerdict, dict):
@ -53,7 +52,7 @@ def amz_crc32(f: TypeDec) -> GenericFunction:
else: else:
if len(response) == 2: if len(response) == 2:
body, new_headers = response body, new_headers = response
status = new_headers.get("status", 200) status = new_headers.get("status", status)
else: else:
status, new_headers, body = response status, new_headers, body = response
headers.update(new_headers) headers.update(new_headers)
@ -66,34 +65,3 @@ def amz_crc32(f: TypeDec) -> GenericFunction:
return status, headers, body return status, headers, body
return _wrapper 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

View File

@ -2,7 +2,6 @@ import json
from moto.core.common_types import TYPE_RESPONSE from moto.core.common_types import TYPE_RESPONSE
from moto.core.responses import BaseResponse from moto.core.responses import BaseResponse
from moto.utilities.aws_headers import amzn_request_id
from .models import GLOBAL_REGION, WAFV2Backend, wafv2_backends from .models import GLOBAL_REGION, WAFV2Backend, wafv2_backends
@ -15,7 +14,6 @@ class WAFV2Response(BaseResponse):
def wafv2_backend(self) -> WAFV2Backend: def wafv2_backend(self) -> WAFV2Backend:
return wafv2_backends[self.current_account][self.region] return wafv2_backends[self.current_account][self.region]
@amzn_request_id
def associate_web_acl(self) -> TYPE_RESPONSE: def associate_web_acl(self) -> TYPE_RESPONSE:
body = json.loads(self.body) body = json.loads(self.body)
web_acl_arn = body["WebACLArn"] web_acl_arn = body["WebACLArn"]
@ -23,14 +21,12 @@ class WAFV2Response(BaseResponse):
self.wafv2_backend.associate_web_acl(web_acl_arn, resource_arn) self.wafv2_backend.associate_web_acl(web_acl_arn, resource_arn)
return 200, {}, "{}" return 200, {}, "{}"
@amzn_request_id
def disassociate_web_acl(self) -> TYPE_RESPONSE: def disassociate_web_acl(self) -> TYPE_RESPONSE:
body = json.loads(self.body) body = json.loads(self.body)
resource_arn = body["ResourceArn"] resource_arn = body["ResourceArn"]
self.wafv2_backend.disassociate_web_acl(resource_arn) self.wafv2_backend.disassociate_web_acl(resource_arn)
return 200, {}, "{}" return 200, {}, "{}"
@amzn_request_id
def get_web_acl_for_resource(self) -> TYPE_RESPONSE: def get_web_acl_for_resource(self) -> TYPE_RESPONSE:
body = json.loads(self.body) body = json.loads(self.body)
resource_arn = body["ResourceArn"] resource_arn = body["ResourceArn"]
@ -39,7 +35,6 @@ class WAFV2Response(BaseResponse):
response_headers = {"Content-Type": "application/json"} response_headers = {"Content-Type": "application/json"}
return 200, response_headers, json.dumps(response) return 200, response_headers, json.dumps(response)
@amzn_request_id
def create_web_acl(self) -> TYPE_RESPONSE: def create_web_acl(self) -> TYPE_RESPONSE:
"""https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html (response syntax section)""" """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"} response_headers = {"Content-Type": "application/json"}
return 200, response_headers, json.dumps(response) return 200, response_headers, json.dumps(response)
@amzn_request_id
def delete_web_acl(self) -> TYPE_RESPONSE: def delete_web_acl(self) -> TYPE_RESPONSE:
scope = self._get_param("Scope") scope = self._get_param("Scope")
if scope == "CLOUDFRONT": if scope == "CLOUDFRONT":
@ -75,7 +69,6 @@ class WAFV2Response(BaseResponse):
response_headers = {"Content-Type": "application/json"} response_headers = {"Content-Type": "application/json"}
return 200, response_headers, "{}" return 200, response_headers, "{}"
@amzn_request_id
def get_web_acl(self) -> TYPE_RESPONSE: def get_web_acl(self) -> TYPE_RESPONSE:
scope = self._get_param("Scope") scope = self._get_param("Scope")
if scope == "CLOUDFRONT": if scope == "CLOUDFRONT":
@ -87,7 +80,6 @@ class WAFV2Response(BaseResponse):
response_headers = {"Content-Type": "application/json"} response_headers = {"Content-Type": "application/json"}
return 200, response_headers, json.dumps(response) return 200, response_headers, json.dumps(response)
@amzn_request_id
def list_web_ac_ls(self) -> TYPE_RESPONSE: def list_web_ac_ls(self) -> TYPE_RESPONSE:
"""https://docs.aws.amazon.com/waf/latest/APIReference/API_ListWebACLs.html (response syntax section)""" """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"} response_headers = {"Content-Type": "application/json"}
return 200, response_headers, json.dumps(response) return 200, response_headers, json.dumps(response)
@amzn_request_id
def list_rule_groups(self) -> TYPE_RESPONSE: def list_rule_groups(self) -> TYPE_RESPONSE:
scope = self._get_param("Scope") scope = self._get_param("Scope")
if scope == "CLOUDFRONT": if scope == "CLOUDFRONT":
@ -109,7 +100,6 @@ class WAFV2Response(BaseResponse):
response_headers = {"Content-Type": "application/json"} response_headers = {"Content-Type": "application/json"}
return 200, response_headers, json.dumps(response) return 200, response_headers, json.dumps(response)
@amzn_request_id
def list_tags_for_resource(self) -> TYPE_RESPONSE: def list_tags_for_resource(self) -> TYPE_RESPONSE:
arn = self._get_param("ResourceARN") arn = self._get_param("ResourceARN")
self.region = arn.split(":")[3] self.region = arn.split(":")[3]
@ -118,7 +108,6 @@ class WAFV2Response(BaseResponse):
response_headers = {"Content-Type": "application/json"} response_headers = {"Content-Type": "application/json"}
return 200, response_headers, json.dumps(response) return 200, response_headers, json.dumps(response)
@amzn_request_id
def tag_resource(self) -> TYPE_RESPONSE: def tag_resource(self) -> TYPE_RESPONSE:
body = json.loads(self.body) body = json.loads(self.body)
arn = body.get("ResourceARN") arn = body.get("ResourceARN")
@ -127,7 +116,6 @@ class WAFV2Response(BaseResponse):
self.wafv2_backend.tag_resource(arn, tags) self.wafv2_backend.tag_resource(arn, tags)
return 200, {}, "{}" return 200, {}, "{}"
@amzn_request_id
def untag_resource(self) -> TYPE_RESPONSE: def untag_resource(self) -> TYPE_RESPONSE:
body = json.loads(self.body) body = json.loads(self.body)
arn = body.get("ResourceARN") arn = body.get("ResourceARN")
@ -136,7 +124,6 @@ class WAFV2Response(BaseResponse):
self.wafv2_backend.untag_resource(arn, tag_keys) self.wafv2_backend.untag_resource(arn, tag_keys)
return 200, {}, "{}" return 200, {}, "{}"
@amzn_request_id
def update_web_acl(self) -> TYPE_RESPONSE: def update_web_acl(self) -> TYPE_RESPONSE:
body = json.loads(self.body) body = json.loads(self.body)
name = body.get("Name") name = body.get("Name")

View File

@ -296,6 +296,7 @@ def test_create_resource():
# this is hard to match against, so remove it # this is hard to match against, so remove it
root_resource["ResponseMetadata"].pop("HTTPHeaders", None) root_resource["ResponseMetadata"].pop("HTTPHeaders", None)
root_resource["ResponseMetadata"].pop("RetryAttempts", None) root_resource["ResponseMetadata"].pop("RetryAttempts", None)
root_resource["ResponseMetadata"].pop("RequestId")
assert root_resource == { assert root_resource == {
"path": "/", "path": "/",
"id": root_id, "id": root_id,
@ -340,6 +341,7 @@ def test_child_resource():
# this is hard to match against, so remove it # this is hard to match against, so remove it
child_resource["ResponseMetadata"].pop("HTTPHeaders", None) child_resource["ResponseMetadata"].pop("HTTPHeaders", None)
child_resource["ResponseMetadata"].pop("RetryAttempts", None) child_resource["ResponseMetadata"].pop("RetryAttempts", None)
child_resource["ResponseMetadata"].pop("RequestId")
assert child_resource == { assert child_resource == {
"path": "/users/tags", "path": "/users/tags",
"pathPart": "tags", "pathPart": "tags",
@ -373,6 +375,7 @@ def test_create_method():
# this is hard to match against, so remove it # this is hard to match against, so remove it
response["ResponseMetadata"].pop("HTTPHeaders", None) response["ResponseMetadata"].pop("HTTPHeaders", None)
response["ResponseMetadata"].pop("RetryAttempts", None) response["ResponseMetadata"].pop("RetryAttempts", None)
response["ResponseMetadata"].pop("RequestId")
assert response == { assert response == {
"httpMethod": "GET", "httpMethod": "GET",
"authorizationType": "none", "authorizationType": "none",
@ -407,6 +410,7 @@ def test_create_method_apikeyrequired():
# this is hard to match against, so remove it # this is hard to match against, so remove it
response["ResponseMetadata"].pop("HTTPHeaders", None) response["ResponseMetadata"].pop("HTTPHeaders", None)
response["ResponseMetadata"].pop("RetryAttempts", None) response["ResponseMetadata"].pop("RetryAttempts", None)
response["ResponseMetadata"].pop("RequestId")
assert response == { assert response == {
"httpMethod": "GET", "httpMethod": "GET",
"authorizationType": "none", "authorizationType": "none",
@ -431,7 +435,7 @@ def test_create_method_response():
restApiId=api_id, resourceId=root_id, httpMethod="GET", authorizationType="none" 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( response = client.put_method_response(
restApiId=api_id, resourceId=root_id, httpMethod="GET", statusCode="200" 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 # this is hard to match against, so remove it
response["ResponseMetadata"].pop("HTTPHeaders", None) response["ResponseMetadata"].pop("HTTPHeaders", None)
response["ResponseMetadata"].pop("RetryAttempts", None) response["ResponseMetadata"].pop("RetryAttempts", None)
response["ResponseMetadata"].pop("RequestId")
assert response == { assert response == {
"ResponseMetadata": {"HTTPStatusCode": 201}, "ResponseMetadata": {"HTTPStatusCode": 201},
"statusCode": "200", "statusCode": "200",
@ -450,6 +455,7 @@ def test_create_method_response():
# this is hard to match against, so remove it # this is hard to match against, so remove it
response["ResponseMetadata"].pop("HTTPHeaders", None) response["ResponseMetadata"].pop("HTTPHeaders", None)
response["ResponseMetadata"].pop("RetryAttempts", None) response["ResponseMetadata"].pop("RetryAttempts", None)
response["ResponseMetadata"].pop("RequestId")
assert response == { assert response == {
"ResponseMetadata": {"HTTPStatusCode": 200}, "ResponseMetadata": {"HTTPStatusCode": 200},
"statusCode": "200", "statusCode": "200",
@ -461,6 +467,7 @@ def test_create_method_response():
# this is hard to match against, so remove it # this is hard to match against, so remove it
response["ResponseMetadata"].pop("HTTPHeaders", None) response["ResponseMetadata"].pop("HTTPHeaders", None)
response["ResponseMetadata"].pop("RetryAttempts", None) response["ResponseMetadata"].pop("RetryAttempts", None)
response["ResponseMetadata"].pop("RequestId")
assert response == {"ResponseMetadata": {"HTTPStatusCode": 204}} assert response == {"ResponseMetadata": {"HTTPStatusCode": 204}}
@ -540,6 +547,7 @@ def test_integrations():
# this is hard to match against, so remove it # this is hard to match against, so remove it
response["ResponseMetadata"].pop("HTTPHeaders", None) response["ResponseMetadata"].pop("HTTPHeaders", None)
response["ResponseMetadata"].pop("RetryAttempts", None) response["ResponseMetadata"].pop("RetryAttempts", None)
response["ResponseMetadata"].pop("RequestId")
assert response == { assert response == {
"ResponseMetadata": {"HTTPStatusCode": 201}, "ResponseMetadata": {"HTTPStatusCode": 201},
"httpMethod": "POST", "httpMethod": "POST",
@ -560,6 +568,7 @@ def test_integrations():
# this is hard to match against, so remove it # this is hard to match against, so remove it
response["ResponseMetadata"].pop("HTTPHeaders", None) response["ResponseMetadata"].pop("HTTPHeaders", None)
response["ResponseMetadata"].pop("RetryAttempts", None) response["ResponseMetadata"].pop("RetryAttempts", None)
response["ResponseMetadata"].pop("RequestId")
assert response == { assert response == {
"ResponseMetadata": {"HTTPStatusCode": 200}, "ResponseMetadata": {"HTTPStatusCode": 200},
"httpMethod": "POST", "httpMethod": "POST",
@ -578,6 +587,7 @@ def test_integrations():
# this is hard to match against, so remove it # this is hard to match against, so remove it
response["ResponseMetadata"].pop("HTTPHeaders", None) response["ResponseMetadata"].pop("HTTPHeaders", None)
response["ResponseMetadata"].pop("RetryAttempts", None) response["ResponseMetadata"].pop("RetryAttempts", None)
response["ResponseMetadata"].pop("RequestId")
assert response["resourceMethods"]["GET"]["httpMethod"] == "GET" assert response["resourceMethods"]["GET"]["httpMethod"] == "GET"
assert response["resourceMethods"]["GET"]["authorizationType"] == "none" assert response["resourceMethods"]["GET"]["authorizationType"] == "none"
assert response["resourceMethods"]["GET"]["methodIntegration"] == { assert response["resourceMethods"]["GET"]["methodIntegration"] == {
@ -678,6 +688,7 @@ def test_integration_response():
# this is hard to match against, so remove it # this is hard to match against, so remove it
response["ResponseMetadata"].pop("HTTPHeaders", None) response["ResponseMetadata"].pop("HTTPHeaders", None)
response["ResponseMetadata"].pop("RetryAttempts", None) response["ResponseMetadata"].pop("RetryAttempts", None)
response["ResponseMetadata"].pop("RequestId")
assert response == { assert response == {
"statusCode": "200", "statusCode": "200",
"selectionPattern": "foobar", "selectionPattern": "foobar",
@ -695,6 +706,7 @@ def test_integration_response():
# this is hard to match against, so remove it # this is hard to match against, so remove it
response["ResponseMetadata"].pop("HTTPHeaders", None) response["ResponseMetadata"].pop("HTTPHeaders", None)
response["ResponseMetadata"].pop("RetryAttempts", None) response["ResponseMetadata"].pop("RetryAttempts", None)
response["ResponseMetadata"].pop("RequestId")
assert response == { assert response == {
"statusCode": "200", "statusCode": "200",
"selectionPattern": "foobar", "selectionPattern": "foobar",
@ -710,6 +722,7 @@ def test_integration_response():
# this is hard to match against, so remove it # this is hard to match against, so remove it
response["ResponseMetadata"].pop("HTTPHeaders", None) response["ResponseMetadata"].pop("HTTPHeaders", None)
response["ResponseMetadata"].pop("RetryAttempts", None) response["ResponseMetadata"].pop("RetryAttempts", None)
response["ResponseMetadata"].pop("RequestId")
assert response["methodIntegration"]["integrationResponses"] == { assert response["methodIntegration"]["integrationResponses"] == {
"200": { "200": {
"responseTemplates": {}, # Note: TF compatibility "responseTemplates": {}, # Note: TF compatibility
@ -760,6 +773,7 @@ def test_integration_response():
# this is hard to match against, so remove it # this is hard to match against, so remove it
response["ResponseMetadata"].pop("HTTPHeaders", None) response["ResponseMetadata"].pop("HTTPHeaders", None)
response["ResponseMetadata"].pop("RetryAttempts", None) response["ResponseMetadata"].pop("RetryAttempts", None)
response["ResponseMetadata"].pop("RequestId")
assert response == { assert response == {
"statusCode": "200", "statusCode": "200",
"selectionPattern": "foobar", "selectionPattern": "foobar",
@ -774,6 +788,7 @@ def test_integration_response():
# this is hard to match against, so remove it # this is hard to match against, so remove it
response["ResponseMetadata"].pop("HTTPHeaders", None) response["ResponseMetadata"].pop("HTTPHeaders", None)
response["ResponseMetadata"].pop("RetryAttempts", None) response["ResponseMetadata"].pop("RetryAttempts", None)
response["ResponseMetadata"].pop("RequestId")
assert response == { assert response == {
"statusCode": "200", "statusCode": "200",
"selectionPattern": "foobar", "selectionPattern": "foobar",
@ -810,6 +825,7 @@ def test_update_authorizer_configuration():
# this is hard to match against, so remove it # this is hard to match against, so remove it
response["ResponseMetadata"].pop("HTTPHeaders", None) response["ResponseMetadata"].pop("HTTPHeaders", None)
response["ResponseMetadata"].pop("RetryAttempts", None) response["ResponseMetadata"].pop("RetryAttempts", None)
response["ResponseMetadata"].pop("RequestId")
assert response == { assert response == {
"id": authorizer_id, "id": authorizer_id,
"name": authorizer_name, "name": authorizer_name,
@ -903,6 +919,7 @@ def test_create_authorizer():
# this is hard to match against, so remove it # this is hard to match against, so remove it
response["ResponseMetadata"].pop("HTTPHeaders", None) response["ResponseMetadata"].pop("HTTPHeaders", None)
response["ResponseMetadata"].pop("RetryAttempts", None) response["ResponseMetadata"].pop("RetryAttempts", None)
response["ResponseMetadata"].pop("RequestId")
assert response == { assert response == {
"id": authorizer_id, "id": authorizer_id,
"name": authorizer_name, "name": authorizer_name,
@ -928,6 +945,7 @@ def test_create_authorizer():
# this is hard to match against, so remove it # this is hard to match against, so remove it
response["ResponseMetadata"].pop("HTTPHeaders", None) response["ResponseMetadata"].pop("HTTPHeaders", None)
response["ResponseMetadata"].pop("RetryAttempts", None) response["ResponseMetadata"].pop("RetryAttempts", None)
response["ResponseMetadata"].pop("RequestId")
assert response["items"][0]["id"] in [authorizer_id, authorizer_id2] assert response["items"][0]["id"] in [authorizer_id, authorizer_id2]
assert response["items"][1]["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 # this is hard to match against, so remove it
response["ResponseMetadata"].pop("HTTPHeaders", None) response["ResponseMetadata"].pop("HTTPHeaders", None)
response["ResponseMetadata"].pop("RetryAttempts", None) response["ResponseMetadata"].pop("RetryAttempts", None)
response["ResponseMetadata"].pop("RequestId")
assert response == { assert response == {
"name": new_authorizer_name_with_vars, "name": new_authorizer_name_with_vars,
@ -992,6 +1011,7 @@ def test_delete_authorizer():
# this is hard to match against, so remove it # this is hard to match against, so remove it
response["ResponseMetadata"].pop("HTTPHeaders", None) response["ResponseMetadata"].pop("HTTPHeaders", None)
response["ResponseMetadata"].pop("RetryAttempts", None) response["ResponseMetadata"].pop("RetryAttempts", None)
response["ResponseMetadata"].pop("RequestId")
assert response == { assert response == {
"id": authorizer_id, "id": authorizer_id,
"name": authorizer_name, "name": authorizer_name,
@ -1069,6 +1089,7 @@ def test_put_integration_response_with_response_template():
# this is hard to match against, so remove it # this is hard to match against, so remove it
response["ResponseMetadata"].pop("HTTPHeaders", None) response["ResponseMetadata"].pop("HTTPHeaders", None)
response["ResponseMetadata"].pop("RetryAttempts", None) response["ResponseMetadata"].pop("RetryAttempts", None)
response["ResponseMetadata"].pop("RequestId")
assert response == { assert response == {
"statusCode": "200", "statusCode": "200",
"selectionPattern": "foobar", "selectionPattern": "foobar",

View File

@ -187,6 +187,7 @@ def test_create_function_from_zipfile():
result["ResponseMetadata"].pop("HTTPHeaders", None) result["ResponseMetadata"].pop("HTTPHeaders", None)
# Botocore inserts retry attempts not seen in Python27 # Botocore inserts retry attempts not seen in Python27
result["ResponseMetadata"].pop("RetryAttempts", None) result["ResponseMetadata"].pop("RetryAttempts", None)
result["ResponseMetadata"].pop("RequestId")
result.pop("LastModified") result.pop("LastModified")
assert result == { assert result == {
@ -800,6 +801,7 @@ def test_delete_function():
success_result["ResponseMetadata"].pop("HTTPHeaders", None) success_result["ResponseMetadata"].pop("HTTPHeaders", None)
# Botocore inserts retry attempts not seen in Python27 # Botocore inserts retry attempts not seen in Python27
success_result["ResponseMetadata"].pop("RetryAttempts", None) success_result["ResponseMetadata"].pop("RetryAttempts", None)
success_result["ResponseMetadata"].pop("RequestId")
assert success_result == {"ResponseMetadata": {"HTTPStatusCode": 204}} assert success_result == {"ResponseMetadata": {"HTTPStatusCode": 204}}
@ -1028,6 +1030,7 @@ def test_list_create_list_get_delete_list():
func["ResponseMetadata"].pop("HTTPHeaders", None) func["ResponseMetadata"].pop("HTTPHeaders", None)
# Botocore inserts retry attempts not seen in Python27 # Botocore inserts retry attempts not seen in Python27
func["ResponseMetadata"].pop("RetryAttempts", None) func["ResponseMetadata"].pop("RetryAttempts", None)
func["ResponseMetadata"].pop("RequestId")
func["Configuration"].pop("LastModified") func["Configuration"].pop("LastModified")
func["Configuration"].pop("FunctionArn") func["Configuration"].pop("FunctionArn")

View File

@ -36,6 +36,8 @@ def test_create_user_pool():
assert result["UserPool"]["Name"] == name assert result["UserPool"]["Name"] == name
assert result["UserPool"]["LambdaConfig"]["PreSignUp"] == value assert result["UserPool"]["LambdaConfig"]["PreSignUp"] == value
assert "RequestId" in result["ResponseMetadata"]
@mock_aws @mock_aws
def test_create_user_pool__overwrite_template_messages(): def test_create_user_pool__overwrite_template_messages():

View File

@ -1985,6 +1985,7 @@ def test_put_evaluations():
# this is hard to match against, so remove it # this is hard to match against, so remove it
response["ResponseMetadata"].pop("HTTPHeaders", None) response["ResponseMetadata"].pop("HTTPHeaders", None)
response["ResponseMetadata"].pop("RetryAttempts", None) response["ResponseMetadata"].pop("RetryAttempts", None)
response["ResponseMetadata"].pop("RequestId")
assert response == { assert response == {
"FailedEvaluations": [], "FailedEvaluations": [],
"ResponseMetadata": {"HTTPStatusCode": 200}, "ResponseMetadata": {"HTTPStatusCode": 200},

View File

@ -41,7 +41,7 @@ class TestDifferentAccountsDoesNotBreakSeeding:
instances = self.ec2_client.run_instances(MaxCount=1, MinCount=1)["Instances"] instances = self.ec2_client.run_instances(MaxCount=1, MinCount=1)["Instances"]
instance_ids = [instance["InstanceId"] for instance in instances] instance_ids = [instance["InstanceId"] for instance in instances]
assert instance_ids == ["i-dc50244d2b9e8e0b7"] assert instance_ids == ["i-0df6e943394d7fdb0"]
def test_1(self) -> None: def test_1(self) -> None:
# Create some data in a different account (111111111111) # Create some data in a different account (111111111111)