Allow actual use of cloudformation input parameters.
This commit is contained in:
parent
56007660d8
commit
1e4df18c42
7 changed files with 114 additions and 22 deletions
|
|
@ -8,7 +8,7 @@ from moto.elb import models as elb_models
|
|||
from moto.iam import models as iam_models
|
||||
from moto.sqs import models as sqs_models
|
||||
from .utils import random_suffix
|
||||
from .exceptions import UnformattedGetAttTemplateException
|
||||
from .exceptions import MissingParameterError, UnformattedGetAttTemplateException
|
||||
from boto.cloudformation.stack import Output
|
||||
from boto.exception import BotoServerError
|
||||
|
||||
|
|
@ -164,10 +164,12 @@ class ResourceMap(collections.Mapping):
|
|||
each resources is passed this lazy map that it can grab dependencies from.
|
||||
"""
|
||||
|
||||
def __init__(self, stack_id, stack_name, region_name, template):
|
||||
def __init__(self, stack_id, stack_name, parameters, region_name, template):
|
||||
self._template = template
|
||||
self._resource_json_map = template['Resources']
|
||||
self._region_name = region_name
|
||||
self.input_parameters = parameters
|
||||
self.resolved_parameters = {}
|
||||
|
||||
# Create the default resources
|
||||
self._parsed_resources = {
|
||||
|
|
@ -199,10 +201,22 @@ class ResourceMap(collections.Mapping):
|
|||
return self._resource_json_map.keys()
|
||||
|
||||
def load_parameters(self):
|
||||
parameters = self._template.get('Parameters', {})
|
||||
for parameter_name, parameter in parameters.items():
|
||||
# Just initialize parameters to empty string for now.
|
||||
self._parsed_resources[parameter_name] = ""
|
||||
parameter_slots = self._template.get('Parameters', {})
|
||||
for parameter_name, parameter in parameter_slots.items():
|
||||
# Set the default values.
|
||||
self.resolved_parameters[parameter_name] = parameter.get('Default')
|
||||
|
||||
# Set any input parameters that were passed
|
||||
for key, value in self.input_parameters.items():
|
||||
if key in self.resolved_parameters:
|
||||
self.resolved_parameters[key] = value
|
||||
|
||||
# Check if there are any non-default params that were not passed input params
|
||||
for key, value in self.resolved_parameters.items():
|
||||
if value is None:
|
||||
raise MissingParameterError(key)
|
||||
|
||||
self._parsed_resources.update(self.resolved_parameters)
|
||||
|
||||
def create(self):
|
||||
self.load_parameters()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue