From 110a1f1c4fc764d7ec3c553526503ee9c4b150c4 Mon Sep 17 00:00:00 2001 From: Freddy Tan Date: Thu, 24 Nov 2016 15:09:16 +0800 Subject: [PATCH] python-terraform-1 Make option with bool value/ more sense for the caller --- README.md | 6 +---- python_terraform/__init__.py | 45 +++++++++++------------------------- 2 files changed, 15 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index 01c7b0d..8594eb4 100644 --- a/README.md +++ b/README.md @@ -29,10 +29,6 @@ For any terraform command if a value is None, will skip this option :return: ret_code, out, err -For apply/destroy method, the flag options, like, `-no-color` or `-force` -have been implemented as boolean argument. simply use `is_no_color=True/False` for -apply/destroy method - ## Examples ### Have a test.tf file under folder "/home/test" @@ -46,7 +42,7 @@ In python-terraform: from python_terraform import Terraform tf = terraform(working_dir='/home/test') - tf.apply(is_no_color=True, refresh=False, var={'a':'b', 'c':'d'}) + tf.apply(no_color=IsFlagged, refresh=False, var={'a':'b', 'c':'d'}) #### taint command, allow-missing and no color In shell: diff --git a/python_terraform/__init__.py b/python_terraform/__init__.py index 9c7dfb1..63ef189 100644 --- a/python_terraform/__init__.py +++ b/python_terraform/__init__.py @@ -53,57 +53,40 @@ class Terraform: # store the tfstate data self.tfstate = dict() - def apply(self, - dir=None, - is_no_color=True, - is_input=False, - **kwargs): + def apply(self, dir_or_plan=None, **kwargs): """ refer to https://terraform.io/docs/commands/apply.html - :raise RuntimeError when return code is not zero - :param is_no_color: if True, add flag -no-color - :param is_input: if True, add option -input=true - :param dir: folder relative to working folder + no-color is flagged by default + :param dir_or_plan: folder relative to working folder :param kwargs: same as kwags in method 'cmd' :returns return_code, stdout, stderr """ - - args, option_dict = self._create_cmd_args(is_input, - is_no_color, - dir, - kwargs) + default = dict() + args, option_dict = self._create_cmd_args(dir_or_plan, default, kwargs) return self.cmd('apply', *args, **option_dict) - def _create_cmd_args(self, is_input, is_no_color, dir, kwargs): - option_dict = dict() + def _create_cmd_args(self, dir_or_plan, default_dict, kwargs): + option_dict = default_dict option_dict['state'] = self.state option_dict['target'] = self.targets option_dict['var'] = self.variables option_dict['var_file'] = self.var_file option_dict['parallelism'] = self.parallelism - if is_no_color: - option_dict['no_color'] = IsFlagged - option_dict['input'] = is_input + option_dict['no_color'] = IsFlagged + option_dict['input'] = True option_dict.update(kwargs) - args = [dir] if dir else [] + args = [dir_or_plan] if dir_or_plan else [] return args, option_dict - def destroy(self, working_dir=None, is_force=True, - is_no_color=True, is_input=False, **kwargs): + def destroy(self, dir_or_plan=None, **kwargs): """ refer to https://www.terraform.io/docs/commands/destroy.html - :raise RuntimeError when return code is not zero + force/no-color option is flagged by default :return: ret_code, stdout, stderr """ - - args, option_dict = self._create_cmd_args(is_input, - is_no_color, - working_dir, - kwargs) - if is_force: - option_dict['force'] = IsFlagged - + default = {'force': IsFlagged} + args, option_dict = self._create_cmd_args(dir_or_plan, default, kwargs) return self.cmd('destroy', *args, **option_dict) def generate_cmd_string(self, cmd, *args, **kwargs):