33 lines
No EOL
1.1 KiB
Python
33 lines
No EOL
1.1 KiB
Python
import subprocess, os, glob
|
|
|
|
def workspace_manager():
|
|
branch = subprocess.getoutput("git rev-parse --abbrev-ref HEAD")
|
|
if branch == "master":
|
|
branch = "default"
|
|
else:
|
|
if branch not in get_valid_envs():
|
|
branch = "default"
|
|
|
|
if get_env() != branch:
|
|
print("[INFO]: Terraform workspace & git branch have diverged. Changing workspace to git branch...")
|
|
subprocess.call(["terraform", "workspace", "new", branch], stderr=subprocess.STDOUT, stdout=open(os.devnull, 'w'))
|
|
subprocess.call(["terraform", "workspace", "select", branch], stderr=subprocess.STDOUT, stdout=open(os.devnull, 'w'))
|
|
|
|
def get_valid_envs():
|
|
try:
|
|
# Use var files when present, otherwise default to default
|
|
return [os.path.splitext(os.path.basename(x))[0] for x in glob.glob("vars/*.tfvars")]
|
|
except FileNotFoundError:
|
|
return False
|
|
|
|
def get_env():
|
|
try:
|
|
tf_env = ""
|
|
with open('.terraform/environment', 'r') as f:
|
|
tf_env = f.readline()
|
|
except:
|
|
return("default")
|
|
if str(tf_env) in get_valid_envs():
|
|
return(tf_env)
|
|
else:
|
|
return("default") |