Fix: Golang aws-sdk fails to parse elbv2:CreateLoadBalancer response (#3639)

The `botocore` response parsers are forgiving when it comes to timestamps,
but a real AWS backend does return time zone details for this attribute.

Verified failure/fix using the Go repo included in the issue report.

Fixes #3516
This commit is contained in:
Brian Pandola 2021-01-31 03:39:11 -08:00 committed by GitHub
parent 1037929bf8
commit 779d18e00c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 2 deletions

View File

@ -7,7 +7,11 @@ from botocore.exceptions import ParamValidationError
from moto.compat import OrderedDict from moto.compat import OrderedDict
from moto.core.exceptions import RESTError from moto.core.exceptions import RESTError
from moto.core import BaseBackend, BaseModel, CloudFormationModel from moto.core import BaseBackend, BaseModel, CloudFormationModel
from moto.core.utils import camelcase_to_underscores, underscores_to_camelcase from moto.core.utils import (
camelcase_to_underscores,
underscores_to_camelcase,
iso_8601_datetime_with_milliseconds,
)
from moto.ec2.models import ec2_backends from moto.ec2.models import ec2_backends
from moto.acm.models import acm_backends from moto.acm.models import acm_backends
from .utils import make_arn_for_target_group from .utils import make_arn_for_target_group
@ -380,7 +384,7 @@ class FakeLoadBalancer(CloudFormationModel):
scheme="internet-facing", scheme="internet-facing",
): ):
self.name = name self.name = name
self.created_time = datetime.datetime.now() self.created_time = iso_8601_datetime_with_milliseconds(datetime.datetime.now())
self.scheme = scheme self.scheme = scheme
self.security_groups = security_groups self.security_groups = security_groups
self.subnets = subnets or [] self.subnets = subnets or []

View File

@ -51,6 +51,7 @@ def test_create_load_balancer():
{"SubnetId": subnet2.id, "ZoneName": "us-east-1b"}, {"SubnetId": subnet2.id, "ZoneName": "us-east-1b"},
] ]
) )
lb.get("CreatedTime").tzinfo.should_not.be.none
# Ensure the tags persisted # Ensure the tags persisted
response = conn.describe_tags(ResourceArns=[lb.get("LoadBalancerArn")]) response = conn.describe_tags(ResourceArns=[lb.get("LoadBalancerArn")])