Skip to content

file lookup returning <type 'unicode'> where it previously returned <class 'troposphere.AWSHelperFn'> #645

@ITProKyle

Description

@ITProKyle

As of 1.4.0, the use of the ${file parameterized } lookup no longer works with blueprints using variable type of troposphere.AWSHelperFn. This was working in previous versions - most recently 1.3.0.

Error

File "/usr/local/lib/python2.7/site-packages/stacker/plan.py", line 93, in _run_once
  status = self.fn(self.stack, status=self.status)
File "/usr/local/lib/python2.7/site-packages/stacker/actions/build.py", line 321, in _launch_stack
  stack.resolve(self.context, self.provider)
File "/usr/local/lib/python2.7/site-packages/stacker/stack.py", line 196, in resolve
  self.blueprint.resolve_variables(self.variables)
File "/usr/local/lib/python2.7/site-packages/stacker/blueprints/base.py", line 452, in resolve_variables
  self.name
File "/usr/local/lib/python2.7/site-packages/stacker/blueprints/base.py", line 226, in resolve_variable
  value = validate_variable_type(var_name, var_type, value)
File "/usr/local/lib/python2.7/site-packages/stacker/blueprints/base.py", line 147, in validate_variable_type
  "type: %s." % (var_name, var_type, type(value))
ValueError: Value for variable ExampleParameter must be of type <class 'troposphere.AWSHelperFn'>. Actual type: <type 'unicode'>.

System Information

Operating System: Mac OS X 10.13.6 build 17G65
Python Version: 2.7.14
Stacker Version: 1.4.0

Files

├── top-level-folder
│   ├── blueprints
│   │   ├── __init__.py
│   │   └── example_blueprint.py
│   ├── file-to-reference.json
│   ├── example.env
│   └── stacker-config.yaml

stacker-config.yaml

namespace: example
stacker_bucket: ""

sys_path: ./

stacks:
  example-stack:
    class_path: blueprints.example_blueprint.BlueprintClass
    enabled: true
    variables:
      ExampleParameter: ${file parameterized:file://file-to-reference.json}

blueprints/example_blueprint.py

from troposphere import AWSHelperFn
from stacker.blueprints.base import Blueprint

class BlueprintClass(Blueprint):

    VARIABLES = {
        'ExampleParameter': {
            'type': AWSHelperFn
        }
    }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions