Rework LaunchTemplateBackend to be keep only one copy of a template, and be ordered
The original LaunchTemplateBackend kept two copies of a template, one for referencing it by name and one for referencing it by id. This change switches to using one copy, by id, and adding a lookup dict for mapping names to ids. Additionally, to fix the python2 test ordering issues, the launch template dict was changed to an OrderedDict.
This commit is contained in:
parent
5f80014332
commit
ed82264806
@ -4166,31 +4166,36 @@ class LaunchTemplate(TaggedEC2Resource):
|
|||||||
|
|
||||||
class LaunchTemplateBackend(object):
|
class LaunchTemplateBackend(object):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.launch_templates_by_name = {}
|
self.launch_template_name_to_ids = {}
|
||||||
self.launch_templates_by_id = {}
|
self.launch_templates = OrderedDict()
|
||||||
|
self.launch_template_insert_order = []
|
||||||
super(LaunchTemplateBackend, self).__init__()
|
super(LaunchTemplateBackend, self).__init__()
|
||||||
|
|
||||||
def create_launch_template(self, name, description, template_data):
|
def create_launch_template(self, name, description, template_data):
|
||||||
if name in self.launch_templates_by_name:
|
if name in self.launch_template_name_to_ids:
|
||||||
raise InvalidLaunchTemplateNameError()
|
raise InvalidLaunchTemplateNameError()
|
||||||
template = LaunchTemplate(self, name, template_data, description)
|
template = LaunchTemplate(self, name, template_data, description)
|
||||||
self.launch_templates_by_id[template.id] = template
|
self.launch_templates[template.id] = template
|
||||||
self.launch_templates_by_name[template.name] = template
|
self.launch_template_name_to_ids[template.name] = template.id
|
||||||
|
self.launch_template_insert_order.append(template.id)
|
||||||
return template
|
return template
|
||||||
|
|
||||||
def get_launch_template_by_name(self, name):
|
def get_launch_template(self, template_id):
|
||||||
return self.launch_templates_by_name[name]
|
return self.launch_templates[template_id]
|
||||||
|
|
||||||
def get_launch_template_by_id(self, templ_id):
|
def get_launch_template_by_name(self, name):
|
||||||
return self.launch_templates_by_id[templ_id]
|
return self.get_launch_template(self.launch_template_name_to_ids[name])
|
||||||
|
|
||||||
def get_launch_templates(self, template_names=None, template_ids=None, filters=None):
|
def get_launch_templates(self, template_names=None, template_ids=None, filters=None):
|
||||||
|
if template_names and not template_ids:
|
||||||
|
template_ids = []
|
||||||
|
for name in template_names:
|
||||||
|
template_ids.append(self.launch_template_name_to_ids[name])
|
||||||
|
|
||||||
if template_ids:
|
if template_ids:
|
||||||
templates = [self.launch_templates_by_id[tid] for tid in template_ids]
|
templates = [self.launch_templates[tid] for tid in template_ids]
|
||||||
elif template_names:
|
|
||||||
templates = [self.launch_templates_by_name[name] for name in template_names]
|
|
||||||
else:
|
else:
|
||||||
templates = list(self.launch_templates_by_name.values())
|
templates = list(self.launch_templates.values())
|
||||||
|
|
||||||
return generic_filter(filters, templates)
|
return generic_filter(filters, templates)
|
||||||
|
|
||||||
@ -4260,7 +4265,7 @@ class EC2Backend(BaseBackend, InstanceBackend, TagBackend, EBSBackend,
|
|||||||
self.describe_internet_gateways(
|
self.describe_internet_gateways(
|
||||||
internet_gateway_ids=[resource_id])
|
internet_gateway_ids=[resource_id])
|
||||||
elif resource_prefix == EC2_RESOURCE_TO_PREFIX['launch-template']:
|
elif resource_prefix == EC2_RESOURCE_TO_PREFIX['launch-template']:
|
||||||
self.get_launch_template_by_id(resource_id)
|
self.get_launch_template(resource_id)
|
||||||
elif resource_prefix == EC2_RESOURCE_TO_PREFIX['network-acl']:
|
elif resource_prefix == EC2_RESOURCE_TO_PREFIX['network-acl']:
|
||||||
self.get_all_network_acls()
|
self.get_all_network_acls()
|
||||||
elif resource_prefix == EC2_RESOURCE_TO_PREFIX['network-interface']:
|
elif resource_prefix == EC2_RESOURCE_TO_PREFIX['network-interface']:
|
||||||
|
@ -127,7 +127,7 @@ class LaunchTemplates(BaseResponse):
|
|||||||
if name:
|
if name:
|
||||||
template = self.ec2_backend.get_launch_template_by_name(name)
|
template = self.ec2_backend.get_launch_template_by_name(name)
|
||||||
if tmpl_id:
|
if tmpl_id:
|
||||||
template = self.ec2_backend.get_launch_template_by_id(tmpl_id)
|
template = self.ec2_backend.get_launch_template(tmpl_id)
|
||||||
|
|
||||||
version_description = self._get_param('VersionDescription')
|
version_description = self._get_param('VersionDescription')
|
||||||
|
|
||||||
@ -162,7 +162,7 @@ class LaunchTemplates(BaseResponse):
|
|||||||
if name:
|
if name:
|
||||||
template = self.ec2_backend.get_launch_template_by_name(name)
|
template = self.ec2_backend.get_launch_template_by_name(name)
|
||||||
if template_id:
|
if template_id:
|
||||||
template = self.ec2_backend.get_launch_template_by_id(template_id)
|
template = self.ec2_backend.get_launch_template(template_id)
|
||||||
|
|
||||||
max_results = self._get_int_param("MaxResults", 15)
|
max_results = self._get_int_param("MaxResults", 15)
|
||||||
versions = self._get_multi_param("Versions")
|
versions = self._get_multi_param("Versions")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user