diff --git a/python_terraform/__init__.py b/python_terraform/__init__.py index f8d769d..709103b 100644 --- a/python_terraform/__init__.py +++ b/python_terraform/__init__.py @@ -49,7 +49,8 @@ class Terraform(object): parallelism=None, var_file=None, terraform_bin_path=None, - is_env_vars_included=True): + is_env_vars_included=True, + ): """ :param working_dir: the folder of the working folder, if not given, will be current working folder @@ -387,6 +388,41 @@ class Terraform(object): self.tfstate = Tfstate.load_file(file_path) + def set_workspace(self, workspace): + """ + set workspace + :param workspace: the desired workspace. + :return: status + """ + + return self.cmd('workspace' ,'select', workspace) + + def create_workspace(self, workspace): + """ + create workspace + :param workspace: the desired workspace. + :return: status + """ + + return self.cmd('workspace', 'new', workspace) + + def delete_workspace(self, workspace): + """ + delete workspace + :param workspace: the desired workspace. + :return: status + """ + + return self.cmd('workspace', 'delete', workspace) + + def show_workspace(self): + """ + show workspace + :return: workspace + """ + + return self.cmd('workspace', 'show') + def __exit__(self, exc_type, exc_value, traceback): self.temp_var_files.clean_up() diff --git a/test/test_terraform.py b/test/test_terraform.py index d787ae6..3b76e32 100644 --- a/test/test_terraform.py +++ b/test/test_terraform.py @@ -320,3 +320,42 @@ class TestTerraform(object): tf = Terraform(working_dir=current_path) tf.import_cmd('aws_instance.foo', 'i-abc1234', no_color=IsFlagged) assert 'command: terraform import -no-color aws_instance.foo i-abc1234' in string_logger() + + def test_create_workspace(self): + tf = Terraform(working_dir=current_path) + tf.init() + ret, out, err = tf.create_workspace('test') + tf.set_workspace('default') + tf.delete_workspace('test') + assert ret == 0 + assert err == '' + + def test_set_workspace(self): + tf = Terraform(working_dir=current_path) + tf.init() + tf.create_workspace('test') + tf.set_workspace('test') + tf.set_workspace('default') + ret, out, err = tf.delete_workspace('test') + assert ret == 0 + assert err == '' + + def test_show_workspace(self): + tf = Terraform(working_dir=current_path) + tf.init() + tf.create_workspace('test') + ret, out, err = tf.show_workspace() + tf.set_workspace('default') + tf.delete_workspace('test') + assert ret == 0 + assert err == '' + + def test_delete_workspace(self): + tf = Terraform(working_dir=current_path) + tf.init() + tf.create_workspace('test') + tf.set_workspace('default') + ret, out, err = tf.delete_workspace('test') + tf.show_workspace() + assert ret == 0 + assert err == ''