Add get_function_configuration support for Lambda (#3562)

* Add get_function_configuration support for Lambda

* remove unnesecary code from test and use _lambda_region when asserting

* rename function and skip coping configuration

* run black formatting
This commit is contained in:
Erez Freiberger 2021-01-10 17:24:04 +02:00 committed by GitHub
commit f749f583ee
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 88 additions and 4 deletions

View file

@ -131,6 +131,8 @@ class LambdaResponse(BaseResponse):
self.setup_class(request, full_url, headers)
if request.method == "PUT":
return self._put_configuration(request)
if request.method == "GET":
return self._get_function_configuration(request, full_url, headers)
else:
raise ValueError("Cannot handle request")
@ -300,6 +302,14 @@ class LambdaResponse(BaseResponse):
else:
return 404, {}, "{}"
@staticmethod
def _set_configuration_qualifier(configuration, qualifier):
if qualifier is None or qualifier == "$LATEST":
configuration["Version"] = "$LATEST"
if qualifier == "$LATEST":
configuration["FunctionArn"] += ":$LATEST"
return configuration
def _get_function(self, request, full_url, headers):
function_name = unquote(self.path.rsplit("/", 1)[-1])
qualifier = self._get_param("Qualifier", None)
@ -308,14 +318,27 @@ class LambdaResponse(BaseResponse):
if fn:
code = fn.get_code()
if qualifier is None or qualifier == "$LATEST":
code["Configuration"]["Version"] = "$LATEST"
if qualifier == "$LATEST":
code["Configuration"]["FunctionArn"] += ":$LATEST"
code["Configuration"] = self._set_configuration_qualifier(
code["Configuration"], qualifier
)
return 200, {}, json.dumps(code)
else:
return 404, {"x-amzn-ErrorType": "ResourceNotFoundException"}, "{}"
def _get_function_configuration(self, request, full_url, headers):
function_name = unquote(self.path.rsplit("/", 2)[-2])
qualifier = self._get_param("Qualifier", None)
fn = self.lambda_backend.get_function(function_name, qualifier)
if fn:
configuration = self._set_configuration_qualifier(
fn.get_configuration(), qualifier
)
return 200, {}, json.dumps(configuration)
else:
return 404, {"x-amzn-ErrorType": "ResourceNotFoundException"}, "{}"
def _get_aws_region(self, full_url):
region = self.region_regex.search(full_url)
if region: