Elastic Beanstalk - Rename and Add Implementation Coverage
This commit is contained in:
parent
c32c17a13e
commit
7d524eaec9
8 changed files with 74 additions and 53 deletions
|
|
@ -21,7 +21,7 @@ from .datasync import mock_datasync # noqa
|
|||
from .dynamodb import mock_dynamodb, mock_dynamodb_deprecated # noqa
|
||||
from .dynamodb2 import mock_dynamodb2, mock_dynamodb2_deprecated # noqa
|
||||
from .dynamodbstreams import mock_dynamodbstreams # noqa
|
||||
from .eb import mock_eb # noqa
|
||||
from .elasticbeanstalk import mock_elasticbeanstalk # noqa
|
||||
from .ec2 import mock_ec2, mock_ec2_deprecated # noqa
|
||||
from .ec2_instance_connect import mock_ec2_instance_connect # noqa
|
||||
from .ecr import mock_ecr, mock_ecr_deprecated # noqa
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
from .models import eb_backends
|
||||
from moto.core.models import base_decorator
|
||||
|
||||
mock_eb = base_decorator(eb_backends)
|
||||
mock_elasticbeanstalk = base_decorator(eb_backends)
|
||||
|
|
@ -3,7 +3,7 @@ import weakref
|
|||
import boto.beanstalk
|
||||
|
||||
from moto.core import BaseBackend, BaseModel
|
||||
from .exceptions import InvalidParameterValueError
|
||||
from .exceptions import InvalidParameterValueError, ResourceNotFoundException
|
||||
|
||||
|
||||
class FakeEnvironment(BaseModel):
|
||||
|
|
@ -90,6 +90,54 @@ class EBBackend(BaseBackend):
|
|||
self.applications[application_name] = new_app
|
||||
return new_app
|
||||
|
||||
def create_environment(self, app, environment_name, stack_name, tags):
|
||||
return app.create_environment(
|
||||
environment_name=environment_name,
|
||||
solution_stack_name=stack_name,
|
||||
tags=tags,
|
||||
)
|
||||
|
||||
def describe_environments(self):
|
||||
envs = []
|
||||
for app in self.applications.values():
|
||||
for env in app.environments.values():
|
||||
envs.append(env)
|
||||
return envs
|
||||
|
||||
def list_available_solution_stacks(self):
|
||||
# Implemented in response.py
|
||||
pass
|
||||
|
||||
def update_tags_for_resource(self, resource_arn, tags_to_add, tags_to_remove):
|
||||
try:
|
||||
res = self._find_environment_by_arn(resource_arn)
|
||||
except KeyError:
|
||||
raise ResourceNotFoundException(
|
||||
"Resource not found for ARN '{}'.".format(resource_arn)
|
||||
)
|
||||
|
||||
for key, value in tags_to_add.items():
|
||||
res.tags[key] = value
|
||||
|
||||
for key in tags_to_remove:
|
||||
del res.tags[key]
|
||||
|
||||
def list_tags_for_resource(self, resource_arn):
|
||||
try:
|
||||
res = self._find_environment_by_arn(resource_arn)
|
||||
except KeyError:
|
||||
raise ResourceNotFoundException(
|
||||
"Resource not found for ARN '{}'.".format(resource_arn)
|
||||
)
|
||||
return res.tags
|
||||
|
||||
def _find_environment_by_arn(self, arn):
|
||||
for app in self.applications.keys():
|
||||
for env in self.applications[app].environments.values():
|
||||
if env.environment_arn == arn:
|
||||
return env
|
||||
raise KeyError()
|
||||
|
||||
|
||||
eb_backends = dict(
|
||||
(region.name, EBBackend(region.name)) for region in boto.beanstalk.regions()
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
from moto.core.responses import BaseResponse
|
||||
from moto.core.utils import tags_from_query_string
|
||||
from .models import eb_backends
|
||||
from .exceptions import InvalidParameterValueError, ResourceNotFoundException
|
||||
from .exceptions import InvalidParameterValueError
|
||||
|
||||
|
||||
class EBResponse(BaseResponse):
|
||||
|
|
@ -34,9 +34,10 @@ class EBResponse(BaseResponse):
|
|||
)
|
||||
|
||||
tags = tags_from_query_string(self.querystring, prefix="Tags.member")
|
||||
env = app.create_environment(
|
||||
env = self.backend.create_environment(
|
||||
app,
|
||||
environment_name=self._get_param("EnvironmentName"),
|
||||
solution_stack_name=self._get_param("SolutionStackName"),
|
||||
stack_name=self._get_param("SolutionStackName"),
|
||||
tags=tags,
|
||||
)
|
||||
|
||||
|
|
@ -44,11 +45,7 @@ class EBResponse(BaseResponse):
|
|||
return template.render(environment=env, region=self.backend.region,)
|
||||
|
||||
def describe_environments(self):
|
||||
envs = []
|
||||
|
||||
for app in self.backend.applications.values():
|
||||
for env in app.environments.values():
|
||||
envs.append(env)
|
||||
envs = self.backend.describe_environments()
|
||||
|
||||
template = self.response_template(EB_DESCRIBE_ENVIRONMENTS)
|
||||
return template.render(environments=envs,)
|
||||
|
|
@ -57,43 +54,19 @@ class EBResponse(BaseResponse):
|
|||
def list_available_solution_stacks():
|
||||
return EB_LIST_AVAILABLE_SOLUTION_STACKS
|
||||
|
||||
def _find_environment_by_arn(self, arn):
|
||||
for app in self.backend.applications.keys():
|
||||
for env in self.backend.applications[app].environments.values():
|
||||
if env.environment_arn == arn:
|
||||
return env
|
||||
raise KeyError()
|
||||
|
||||
def update_tags_for_resource(self):
|
||||
resource_arn = self._get_param("ResourceArn")
|
||||
try:
|
||||
res = self._find_environment_by_arn(resource_arn)
|
||||
except KeyError:
|
||||
raise ResourceNotFoundException(
|
||||
"Resource not found for ARN '{}'.".format(resource_arn)
|
||||
)
|
||||
|
||||
tags_to_add = tags_from_query_string(
|
||||
self.querystring, prefix="TagsToAdd.member"
|
||||
)
|
||||
for key, value in tags_to_add.items():
|
||||
res.tags[key] = value
|
||||
|
||||
tags_to_remove = self._get_multi_param("TagsToRemove.member")
|
||||
for key in tags_to_remove:
|
||||
del res.tags[key]
|
||||
self.backend.update_tags_for_resource(resource_arn, tags_to_add, tags_to_remove)
|
||||
|
||||
return EB_UPDATE_TAGS_FOR_RESOURCE
|
||||
|
||||
def list_tags_for_resource(self):
|
||||
resource_arn = self._get_param("ResourceArn")
|
||||
try:
|
||||
res = self._find_environment_by_arn(resource_arn)
|
||||
except KeyError:
|
||||
raise ResourceNotFoundException(
|
||||
"Resource not found for ARN '{}'.".format(resource_arn)
|
||||
)
|
||||
tags = res.tags
|
||||
tags = self.backend.list_tags_for_resource(resource_arn)
|
||||
|
||||
template = self.response_template(EB_LIST_TAGS_FOR_RESOURCE)
|
||||
return template.render(tags=tags, arn=resource_arn,)
|
||||
Loading…
Add table
Add a link
Reference in a new issue