Error listing Lambda layers after layer deletion (#5376)
This commit is contained in:
parent
f743567789
commit
c40c6895ce
@ -364,12 +364,16 @@ class Layer(object):
|
|||||||
self.layer_versions.pop(str(layer_version), None)
|
self.layer_versions.pop(str(layer_version), None)
|
||||||
|
|
||||||
def to_dict(self):
|
def to_dict(self):
|
||||||
|
if not self.layer_versions:
|
||||||
|
return {}
|
||||||
|
|
||||||
|
last_key = sorted(self.layer_versions.keys(), key=lambda version: int(version))[
|
||||||
|
-1
|
||||||
|
]
|
||||||
return {
|
return {
|
||||||
"LayerName": self.name,
|
"LayerName": self.name,
|
||||||
"LayerArn": self.layer_arn,
|
"LayerArn": self.layer_arn,
|
||||||
"LatestMatchingVersion": self.layer_versions[
|
"LatestMatchingVersion": self.layer_versions[last_key].get_layer_version(),
|
||||||
str(self._latest_version)
|
|
||||||
].get_layer_version(),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1242,7 +1246,9 @@ class LayerStorage(object):
|
|||||||
self._layers[layer_version.name].attach_version(layer_version)
|
self._layers[layer_version.name].attach_version(layer_version)
|
||||||
|
|
||||||
def list_layers(self):
|
def list_layers(self):
|
||||||
return [layer.to_dict() for layer in self._layers.values()]
|
return [
|
||||||
|
layer.to_dict() for layer in self._layers.values() if layer.layer_versions
|
||||||
|
]
|
||||||
|
|
||||||
def delete_layer_version(self, layer_name, layer_version):
|
def delete_layer_version(self, layer_name, layer_version):
|
||||||
self._layers[layer_name].delete_version(layer_version)
|
self._layers[layer_name].delete_version(layer_version)
|
||||||
|
@ -230,3 +230,69 @@ def test_delete_layer_version():
|
|||||||
|
|
||||||
result = conn.list_layer_versions(LayerName=layer_name)["LayerVersions"]
|
result = conn.list_layer_versions(LayerName=layer_name)["LayerVersions"]
|
||||||
result.should.equal([])
|
result.should.equal([])
|
||||||
|
|
||||||
|
|
||||||
|
@mock_lambda
|
||||||
|
@mock_s3
|
||||||
|
def test_get_layer_with_no_layer_versions():
|
||||||
|
def get_layer_by_layer_name_from_list_of_layer_dicts(layer_name, layer_list):
|
||||||
|
for layer in layer_list:
|
||||||
|
if layer["LayerName"] == layer_name:
|
||||||
|
return layer
|
||||||
|
return None
|
||||||
|
|
||||||
|
conn = boto3.client("lambda", _lambda_region)
|
||||||
|
layer_name = str(uuid4())[0:6]
|
||||||
|
|
||||||
|
# Publish a new Layer and assert Layer exists and only version 1 is there
|
||||||
|
conn.publish_layer_version(
|
||||||
|
LayerName=layer_name,
|
||||||
|
Content={"ZipFile": get_test_zip_file1()},
|
||||||
|
)
|
||||||
|
assert (
|
||||||
|
get_layer_by_layer_name_from_list_of_layer_dicts(
|
||||||
|
layer_name, conn.list_layers()["Layers"]
|
||||||
|
)["LatestMatchingVersion"]["Version"]
|
||||||
|
== 1
|
||||||
|
)
|
||||||
|
|
||||||
|
# Add a new version of that Layer then delete that version
|
||||||
|
conn.publish_layer_version(
|
||||||
|
LayerName=layer_name,
|
||||||
|
Content={"ZipFile": get_test_zip_file1()},
|
||||||
|
)
|
||||||
|
assert (
|
||||||
|
get_layer_by_layer_name_from_list_of_layer_dicts(
|
||||||
|
layer_name, conn.list_layers()["Layers"]
|
||||||
|
)["LatestMatchingVersion"]["Version"]
|
||||||
|
== 2
|
||||||
|
)
|
||||||
|
|
||||||
|
conn.delete_layer_version(LayerName=layer_name, VersionNumber=2)
|
||||||
|
assert (
|
||||||
|
get_layer_by_layer_name_from_list_of_layer_dicts(
|
||||||
|
layer_name, conn.list_layers()["Layers"]
|
||||||
|
)["LatestMatchingVersion"]["Version"]
|
||||||
|
== 1
|
||||||
|
)
|
||||||
|
|
||||||
|
# Delete the last layer_version and check that the Layer is still in the LayerStorage
|
||||||
|
conn.delete_layer_version(LayerName=layer_name, VersionNumber=1)
|
||||||
|
assert (
|
||||||
|
get_layer_by_layer_name_from_list_of_layer_dicts(
|
||||||
|
layer_name, conn.list_layers()["Layers"]
|
||||||
|
)
|
||||||
|
is None
|
||||||
|
)
|
||||||
|
|
||||||
|
# Assert _latest_version didn't decrement
|
||||||
|
conn.publish_layer_version(
|
||||||
|
LayerName=layer_name,
|
||||||
|
Content={"ZipFile": get_test_zip_file1()},
|
||||||
|
)
|
||||||
|
assert (
|
||||||
|
get_layer_by_layer_name_from_list_of_layer_dicts(
|
||||||
|
layer_name, conn.list_layers()["Layers"]
|
||||||
|
)["LatestMatchingVersion"]["Version"]
|
||||||
|
== 3
|
||||||
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user