Merge branch 'release/0.8.3'
This commit is contained in:
commit
6416bdb068
4 changed files with 73 additions and 53 deletions
59
.travis.yml
59
.travis.yml
|
@ -1,60 +1,51 @@
|
|||
language: python
|
||||
python:
|
||||
- "2.7"
|
||||
# - "3.2"
|
||||
# - "3.3"
|
||||
# - "3.4"
|
||||
- "3.5"
|
||||
# - "3.5-dev" # 3.5 development branch
|
||||
# - "3.6-dev" # 3.6 development branch
|
||||
# - "nightly" # currently points to 3.7-dev
|
||||
# command to install dependencies
|
||||
before_install: 'sudo apt-get install unzip'
|
||||
- '2.7'
|
||||
- '3.5'
|
||||
before_install: sudo apt-get install unzip
|
||||
before_script:
|
||||
- 'export TFVER=0.8.1'
|
||||
- 'export TFURL=https://releases.hashicorp.com/terraform/'
|
||||
- 'TFURL+=$TFVER'
|
||||
- 'TFURL+="/terraform_"'
|
||||
- 'TFURL+=$TFVER'
|
||||
- 'TFURL+="_linux_amd64.zip"'
|
||||
- 'wget $TFURL -O terraform_bin.zip'
|
||||
- 'mkdir tf_bin'
|
||||
- 'unzip terraform_bin.zip -d tf_bin'
|
||||
|
||||
- export TFVER=0.8.1
|
||||
- export TFURL=https://releases.hashicorp.com/terraform/
|
||||
- TFURL+=$TFVER
|
||||
- TFURL+="/terraform_"
|
||||
- TFURL+=$TFVER
|
||||
- TFURL+="_linux_amd64.zip"
|
||||
- wget $TFURL -O terraform_bin.zip
|
||||
- mkdir tf_bin
|
||||
- unzip terraform_bin.zip -d tf_bin
|
||||
install:
|
||||
- "curl https://bootstrap.pypa.io/ez_setup.py -o - | python"
|
||||
- "pip install tox-travis"
|
||||
- "pip install ."
|
||||
# command to run tests
|
||||
- curl https://bootstrap.pypa.io/ez_setup.py -o - | python
|
||||
- pip install tox-travis
|
||||
- pip install .
|
||||
script:
|
||||
- "export PATH=$PATH:$PWD/tf_bin"
|
||||
- export PATH=$PATH:$PWD/tf_bin
|
||||
- tox
|
||||
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
- develop
|
||||
- release/**
|
||||
|
||||
deploy:
|
||||
# test pypi
|
||||
- provider: pypi
|
||||
distributions: sdist
|
||||
server: https://testpypi.python.org/pypi
|
||||
user: "beelit94"
|
||||
user: beelit94
|
||||
password:
|
||||
secure: "sWxc+p/gdq3k2WbUGNG2F4TukFNkTkvq6OPaiOvyfgWThYNk6/juRkMd8flmTbh0VGhcjFbpDLeSApb2kFhfiokYJSH1hOOcmXf8xzYH8/+R4DDEiGa5Y/pR9TBvYu4S8eJEfFUFfb1BBpapykj7o43hcaqMExBJIdVJU7aeoEAC1jQeTJh8wWwdJKHy2dNSM+6RVhk3e5+b0LfK7Bk5sU5P+YdEMj79MJU450J4OmZXWzJgvBN5/2QfVa5LrUD00nYuGuiBniz2lVevIHWjUYawUzpPsTa7F0s2WemG9YcV7U8u06xNjY9Ce3CTbxNhc7OIKq+TCkOgR3qZFXVJ8A87G+AT2iQ01VslQ4DJCxnJNTnpqojWnwf6MFL9O8ONioWYO32bhQFKOQ806ASHP4lNMRDKqx8hXtP5In7/r0SARKscv6Bas83rp+FESkKD5vWgkZJG+yx96LlwRLUhSVnVyb/nOJ++zt5RR3BvY2O4p9YAZY3Qt8TQihOdBQKnY3UXsMyNaE25+yvyNWpmyJiePRbTUd+cpLnycnqG9Ll8v6TpFXb6ahFMjlAFfJNQYlREfseClTHSRjZNxfsXGQCsJh6TZAq7jOB5hCk3q41eOUFWARxbyj8j59NBV8fSQrrGJJ9/VZKQeYiQlBB9KpK4PrnH84oeQ8i+VSbVr5w="
|
||||
secure: sWxc+p/gdq3k2WbUGNG2F4TukFNkTkvq6OPaiOvyfgWThYNk6/juRkMd8flmTbh0VGhcjFbpDLeSApb2kFhfiokYJSH1hOOcmXf8xzYH8/+R4DDEiGa5Y/pR9TBvYu4S8eJEfFUFfb1BBpapykj7o43hcaqMExBJIdVJU7aeoEAC1jQeTJh8wWwdJKHy2dNSM+6RVhk3e5+b0LfK7Bk5sU5P+YdEMj79MJU450J4OmZXWzJgvBN5/2QfVa5LrUD00nYuGuiBniz2lVevIHWjUYawUzpPsTa7F0s2WemG9YcV7U8u06xNjY9Ce3CTbxNhc7OIKq+TCkOgR3qZFXVJ8A87G+AT2iQ01VslQ4DJCxnJNTnpqojWnwf6MFL9O8ONioWYO32bhQFKOQ806ASHP4lNMRDKqx8hXtP5In7/r0SARKscv6Bas83rp+FESkKD5vWgkZJG+yx96LlwRLUhSVnVyb/nOJ++zt5RR3BvY2O4p9YAZY3Qt8TQihOdBQKnY3UXsMyNaE25+yvyNWpmyJiePRbTUd+cpLnycnqG9Ll8v6TpFXb6ahFMjlAFfJNQYlREfseClTHSRjZNxfsXGQCsJh6TZAq7jOB5hCk3q41eOUFWARxbyj8j59NBV8fSQrrGJJ9/VZKQeYiQlBB9KpK4PrnH84oeQ8i+VSbVr5w=
|
||||
on:
|
||||
branch: "release/**"
|
||||
branch: release/**
|
||||
tags: false
|
||||
condition: $TRAVIS_PYTHON_VERSION = "3.5"
|
||||
# production pypi
|
||||
- provider: pypi
|
||||
distributions: sdist
|
||||
user: "beelit94"
|
||||
user: beelit94
|
||||
password:
|
||||
secure: "QhCiTLrBvw/Uzt3eiLEmvMP3uHnayVCETqEDA+2+Q9vFavqj0CHA76zqYonBFqnh0a3HFCRIVVt+6ynpZ10kpQ3tAObIw+pY39ZPnpAhOjSpFzzMdpIF9Bhv9A93ng2iSESAZPAOwktHzUwjFx0Zvl0lSYD9rutHgttGgdU2CajiUtwTUhCTjOAVdR2Gm+15H808vzKWnMaKflXxZt+fkt279mQTYAtz6eBWtZwIKry/uAJCSrPSWtbi50O0HsWRMXLXWH5Jn/BVjWSDSM92DssUDq0D+tQyp4M5nQXJ9EyAvEdsKNLx3cvNruznh2ohI2jmcoIjwFiS6+wrEmUiXkP86iyzCSqL/EbcOG0xUh3vbfYtMBp7jENgD405+3SEhPY4PlqUmc+HDtB7FUcHz4y7wGWJRGyQzNnjJ6Tv0Ajdz5mfJubWVIvHjcRqkxTVtUKt50o00xZ62M0ZzQkDTIHQEsZly0XeHAgSvNzWkmjt9BiBrZ9OkoWVkRpSrCBy/EcpDNPCTSfSzOQ0Nq1ePFjkkW1n8QWDW9Pdb+/7/P2y9E2S8CT+nXBkRQeQiO86Qf1Ireg7k9TA5VYisVZ6bEXEc9UV0mAojpSsC7zWhVlbAoltN6ZbjKmqy/wqn2QIcJemcSie0JigzKpdw7l8FPT2lCRyTKlYLpRyKXzSkNI="
|
||||
secure: QhCiTLrBvw/Uzt3eiLEmvMP3uHnayVCETqEDA+2+Q9vFavqj0CHA76zqYonBFqnh0a3HFCRIVVt+6ynpZ10kpQ3tAObIw+pY39ZPnpAhOjSpFzzMdpIF9Bhv9A93ng2iSESAZPAOwktHzUwjFx0Zvl0lSYD9rutHgttGgdU2CajiUtwTUhCTjOAVdR2Gm+15H808vzKWnMaKflXxZt+fkt279mQTYAtz6eBWtZwIKry/uAJCSrPSWtbi50O0HsWRMXLXWH5Jn/BVjWSDSM92DssUDq0D+tQyp4M5nQXJ9EyAvEdsKNLx3cvNruznh2ohI2jmcoIjwFiS6+wrEmUiXkP86iyzCSqL/EbcOG0xUh3vbfYtMBp7jENgD405+3SEhPY4PlqUmc+HDtB7FUcHz4y7wGWJRGyQzNnjJ6Tv0Ajdz5mfJubWVIvHjcRqkxTVtUKt50o00xZ62M0ZzQkDTIHQEsZly0XeHAgSvNzWkmjt9BiBrZ9OkoWVkRpSrCBy/EcpDNPCTSfSzOQ0Nq1ePFjkkW1n8QWDW9Pdb+/7/P2y9E2S8CT+nXBkRQeQiO86Qf1Ireg7k9TA5VYisVZ6bEXEc9UV0mAojpSsC7zWhVlbAoltN6ZbjKmqy/wqn2QIcJemcSie0JigzKpdw7l8FPT2lCRyTKlYLpRyKXzSkNI=
|
||||
on:
|
||||
branch: master
|
||||
tags: false
|
||||
condition: $TRAVIS_PYTHON_VERSION = "3.5"
|
||||
notifications:
|
||||
email:
|
||||
recipients:
|
||||
- beelit94@gmail.com
|
||||
|
|
10
README.md
10
README.md
|
@ -98,6 +98,16 @@ In python-terraform:
|
|||
tf = terraform(working_dir='/home/test')
|
||||
tf.fmt(diff=True)
|
||||
|
||||
# Terraform Output
|
||||
|
||||
By default, stdout and stderr are captured and returned. This causes the application to appear to hang. To print terraform output in real time, provide the `capture_output` option with any value other than `None`. This will cause the output of terraform to be printed to the terminal in real time. The value of `stdout` and `stderr` below will be `None`.
|
||||
|
||||
|
||||
from python_terraform import Terraform
|
||||
t = Terraform()
|
||||
return_code, stdout, stderr = t.<cmd_name>(capture_output=False)
|
||||
|
||||
|
||||
## default values
|
||||
for apply/plan/destroy command, assign with following default value to make
|
||||
caller easier in python
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
import subprocess
|
||||
import os
|
||||
import sys
|
||||
import json
|
||||
import logging
|
||||
import tempfile
|
||||
|
@ -202,15 +203,27 @@ class Terraform(object):
|
|||
if it's a flag could be used multiple times, assign list to it's value
|
||||
if it's a "var" variable flag, assign dictionary to it
|
||||
if a value is None, will skip this option
|
||||
if the option 'capture_output' is passed (with any value other than
|
||||
True), terraform output will be printed to stdout/stderr and
|
||||
"None" will be returned as out and err.
|
||||
:return: ret_code, out, err
|
||||
"""
|
||||
|
||||
capture_output = kwargs.pop('capture_output', True)
|
||||
if capture_output is True:
|
||||
stderr = subprocess.PIPE
|
||||
stdout = subprocess.PIPE
|
||||
else:
|
||||
stderr = sys.stderr
|
||||
stdout = sys.stdout
|
||||
|
||||
cmd_string = self.generate_cmd_string(cmd, *args, **kwargs)
|
||||
log.debug('command: {c}'.format(c=cmd_string))
|
||||
|
||||
working_folder = self.working_dir if self.working_dir else None
|
||||
|
||||
p = subprocess.Popen(cmd_string, stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE, shell=True,
|
||||
p = subprocess.Popen(cmd_string, stdout=stdout,
|
||||
stderr=stderr, shell=True,
|
||||
cwd=working_folder)
|
||||
out, err = p.communicate()
|
||||
ret_code = p.returncode
|
||||
|
@ -222,7 +235,10 @@ class Terraform(object):
|
|||
log.warn('error: {e}'.format(e=err))
|
||||
|
||||
self.temp_var_files.clean_up()
|
||||
if capture_output is True:
|
||||
return ret_code, out.decode('utf-8'), err.decode('utf-8')
|
||||
else:
|
||||
return ret_code, None, None
|
||||
|
||||
def output(self, name):
|
||||
"""
|
||||
|
|
3
setup.py
3
setup.py
|
@ -1,7 +1,10 @@
|
|||
"""
|
||||
This is a python module provide a wrapper of terraform command line tool
|
||||
"""
|
||||
try:
|
||||
from setuptools import setup
|
||||
except ImportError:
|
||||
from distutils.core import setup
|
||||
|
||||
dependencies = []
|
||||
module_name = 'python-terraform'
|
||||
|
|
Loading…
Reference in a new issue