Skip to content

Commit

Permalink
Merge pull request #75 from silinternational/feature/merge-vars-tfvars
Browse files Browse the repository at this point in the history
merge tfvars struct into vars struct
  • Loading branch information
jason-jackson authored May 21, 2024
2 parents 6e02ae9 + 5cf5f17 commit 90f5cc7
Showing 1 changed file with 16 additions and 23 deletions.
39 changes: 16 additions & 23 deletions lib/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -229,24 +229,16 @@ type AllTeamWorkspaceData struct {
Data []TeamWorkspaceData `json:"data"`
}

// TFVar matches the attributes of a terraform environment/workspace's variable
type TFVar struct {
Key string `json:"key"`
Value string `json:"value"`
Hcl bool `json:"hcl"`
Sensitive bool `json:"sensitive"`
}

type WorkspaceUpdateParams struct {
Organization string
WorkspaceFilter string
Attribute string
Value string
}

// ConvertHCLVariable changes a TFVar struct in place by escaping
// ConvertHCLVariable changes a Var struct in place by escaping
// the double quotes and line endings in the Value attribute
func ConvertHCLVariable(tfVar *TFVar) {
func ConvertHCLVariable(tfVar *Var) {
if !tfVar.Hcl {
return
}
Expand All @@ -257,7 +249,7 @@ func ConvertHCLVariable(tfVar *TFVar) {

// GetCreateVariablePayload returns the json needed to make a Post to the
// Terraform vars api
func GetCreateVariablePayload(organization, workspaceName string, tfVar TFVar) string {
func GetCreateVariablePayload(organization, workspaceName string, tfVar Var) string {
return fmt.Sprintf(`
{
"data": {
Expand All @@ -284,7 +276,7 @@ func GetCreateVariablePayload(organization, workspaceName string, tfVar TFVar) s

// GetUpdateVariablePayload returns the json needed to make a Post to the
// Terraform vars api
func GetUpdateVariablePayload(organization, workspaceName, variableID string, tfVar TFVar) string {
func GetUpdateVariablePayload(organization, workspaceName, variableID string, tfVar Var) string {
return fmt.Sprintf(`
{
"data": {
Expand Down Expand Up @@ -566,7 +558,7 @@ func AssignTeamAccess(workspaceID string, allTeamData AllTeamWorkspaceData) {

// CreateVariable makes a Terraform vars API POST to create a variable
// for a given organization and workspace
func CreateVariable(organization, workspaceName string, tfVar TFVar) {
func CreateVariable(organization, workspaceName string, tfVar Var) {
url := baseURL + "/vars"

ConvertHCLVariable(&tfVar)
Expand All @@ -582,7 +574,7 @@ func CreateVariable(organization, workspaceName string, tfVar TFVar) {

// CreateAllVariables makes several Terraform vars API POSTs to create
// variables for a given organization and workspace
func CreateAllVariables(organization, workspaceName string, tfVars []TFVar) {
func CreateAllVariables(organization, workspaceName string, tfVars []Var) {
for _, nextVar := range tfVars {
CreateVariable(organization, workspaceName, nextVar)
}
Expand Down Expand Up @@ -611,7 +603,7 @@ func GetCreateWorkspacePayload(oc OpsConfig, vcsTokenID string) string {

// UpdateVariable makes a Terraform vars API call to update a variable
// for a given organization and workspace
func UpdateVariable(organization, workspaceName, variableID string, tfVar TFVar) {
func UpdateVariable(organization, workspaceName, variableID string, tfVar Var) {
url := fmt.Sprintf(baseURL+"/vars/%s", variableID)

ConvertHCLVariable(&tfVar)
Expand Down Expand Up @@ -789,18 +781,18 @@ func CloneWorkspace(cfg CloneConfig) ([]string, error) {
sensitiveValue := "TF_ENTERPRISE_SENSITIVE_VAR"
defaultValue := "REPLACE_THIS_VALUE"

tfVars := []TFVar{}
var tfVar TFVar
tfVars := []Var{}
var tfVar Var

for _, nextVar := range variables {
if cfg.CopyVariables {
tfVar = TFVar{
tfVar = Var{
Key: nextVar.Key,
Value: nextVar.Value,
Hcl: nextVar.Hcl,
}
} else {
tfVar = TFVar{
tfVar = Var{
Key: nextVar.Key,
Value: defaultValue,
Hcl: nextVar.Hcl,
Expand All @@ -818,7 +810,8 @@ func CloneWorkspace(cfg CloneConfig) ([]string, error) {

if cfg.DifferentDestinationAccount {
config.token = cfg.AtlasTokenDestination
if _, err := CreateWorkspace(oc, cfg.NewVCSTokenID); err != nil {
_, err := CreateWorkspace(oc, cfg.NewVCSTokenID)
if err != nil {
return nil, err
}
CreateAllVariables(oc.NewOrg, oc.NewName, tfVars)
Expand Down Expand Up @@ -879,7 +872,7 @@ func AddOrUpdateVariable(cfg UpdateConfig) (string, error) {
continue
}
// Found a match
tfVar := TFVar{Key: nextVar.Key, Value: cfg.NewValue, Hcl: false, Sensitive: cfg.SensitiveVariable}
tfVar := Var{Key: nextVar.Key, Value: cfg.NewValue, Hcl: false, Sensitive: cfg.SensitiveVariable}
if !config.readOnly {
UpdateVariable(cfg.Organization, cfg.Workspace, nextVar.ID, tfVar)
}
Expand All @@ -897,7 +890,7 @@ func AddOrUpdateVariable(cfg UpdateConfig) (string, error) {
return "", errors.New("addKeyIfNotFound was set to true but a variable already exists with key " + nextVar.Key)
}

tfVar := TFVar{Key: nextVar.Key, Value: cfg.NewValue, Hcl: false, Sensitive: cfg.SensitiveVariable}
tfVar := Var{Key: nextVar.Key, Value: cfg.NewValue, Hcl: false, Sensitive: cfg.SensitiveVariable}

if !config.readOnly {
UpdateVariable(cfg.Organization, cfg.Workspace, nextVar.ID, tfVar)
Expand All @@ -907,7 +900,7 @@ func AddOrUpdateVariable(cfg UpdateConfig) (string, error) {

// At this point, we haven't found a match
if cfg.AddKeyIfNotFound {
tfVar := TFVar{Key: cfg.SearchString, Value: cfg.NewValue, Hcl: false, Sensitive: cfg.SensitiveVariable}
tfVar := Var{Key: cfg.SearchString, Value: cfg.NewValue, Hcl: false, Sensitive: cfg.SensitiveVariable}

if !config.readOnly {
CreateVariable(cfg.Organization, cfg.Workspace, tfVar)
Expand Down

0 comments on commit 90f5cc7

Please sign in to comment.