Skip to content

Instantly share code, notes, and snippets.

@lorengordon
Created September 22, 2017 18:32
Show Gist options
  • Save lorengordon/f4ceaa95b9fe669ee533a8aa40b955c1 to your computer and use it in GitHub Desktop.
Save lorengordon/f4ceaa95b9fe669ee533a8aa40b955c1 to your computer and use it in GitHub Desktop.
Python helper for a Terraform External provider
import json
class TfExternal(object):
"""Wrap Terraform External provider."""
@staticmethod
def query_args(obj):
"""Load json object from stdin."""
return {} if obj.isatty() else json.load(obj)
@staticmethod
def out_json(result):
"""Print result to stdout."""
print(json.dumps(result))
@lorengordon
Copy link
Author

Usage example:

import sys

from utils import TfExternal  # presumes the class is saved in utils.py


def main(**kwargs):
    # `kwargs` contains the query args passed from Terraform
    # Run your custom logic
    result = kwargs
    return result


if __name__ == "__main__":
    tfe = TfExternal()
    args = tfe.query_args(sys.stdin)
    sys.exit(tfe.out_json(main(**args)))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment