Skip to content

Commit a05fc98

Browse files
authored
Merge pull request #49 from Spikeophant/develop
Adding workspace support
2 parents c46560e + c6d37cb commit a05fc98

File tree

2 files changed

+76
-1
lines changed

2 files changed

+76
-1
lines changed

python_terraform/__init__.py

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@ def __init__(self, working_dir=None,
4949
parallelism=None,
5050
var_file=None,
5151
terraform_bin_path=None,
52-
is_env_vars_included=True):
52+
is_env_vars_included=True,
53+
):
5354
"""
5455
:param working_dir: the folder of the working folder, if not given,
5556
will be current working folder
@@ -387,6 +388,41 @@ def read_state_file(self, file_path=None):
387388

388389
self.tfstate = Tfstate.load_file(file_path)
389390

391+
def set_workspace(self, workspace):
392+
"""
393+
set workspace
394+
:param workspace: the desired workspace.
395+
:return: status
396+
"""
397+
398+
return self.cmd('workspace' ,'select', workspace)
399+
400+
def create_workspace(self, workspace):
401+
"""
402+
create workspace
403+
:param workspace: the desired workspace.
404+
:return: status
405+
"""
406+
407+
return self.cmd('workspace', 'new', workspace)
408+
409+
def delete_workspace(self, workspace):
410+
"""
411+
delete workspace
412+
:param workspace: the desired workspace.
413+
:return: status
414+
"""
415+
416+
return self.cmd('workspace', 'delete', workspace)
417+
418+
def show_workspace(self):
419+
"""
420+
show workspace
421+
:return: workspace
422+
"""
423+
424+
return self.cmd('workspace', 'show')
425+
390426
def __exit__(self, exc_type, exc_value, traceback):
391427
self.temp_var_files.clean_up()
392428

test/test_terraform.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,3 +320,42 @@ def test_import(self, string_logger):
320320
tf = Terraform(working_dir=current_path)
321321
tf.import_cmd('aws_instance.foo', 'i-abc1234', no_color=IsFlagged)
322322
assert 'command: terraform import -no-color aws_instance.foo i-abc1234' in string_logger()
323+
324+
def test_create_workspace(self):
325+
tf = Terraform(working_dir=current_path)
326+
tf.init()
327+
ret, out, err = tf.create_workspace('test')
328+
tf.set_workspace('default')
329+
tf.delete_workspace('test')
330+
assert ret == 0
331+
assert err == ''
332+
333+
def test_set_workspace(self):
334+
tf = Terraform(working_dir=current_path)
335+
tf.init()
336+
tf.create_workspace('test')
337+
tf.set_workspace('test')
338+
tf.set_workspace('default')
339+
ret, out, err = tf.delete_workspace('test')
340+
assert ret == 0
341+
assert err == ''
342+
343+
def test_show_workspace(self):
344+
tf = Terraform(working_dir=current_path)
345+
tf.init()
346+
tf.create_workspace('test')
347+
ret, out, err = tf.show_workspace()
348+
tf.set_workspace('default')
349+
tf.delete_workspace('test')
350+
assert ret == 0
351+
assert err == ''
352+
353+
def test_delete_workspace(self):
354+
tf = Terraform(working_dir=current_path)
355+
tf.init()
356+
tf.create_workspace('test')
357+
tf.set_workspace('default')
358+
ret, out, err = tf.delete_workspace('test')
359+
tf.show_workspace()
360+
assert ret == 0
361+
assert err == ''

0 commit comments

Comments
 (0)