Skip to content
This repository has been archived by the owner on Jun 29, 2022. It is now read-only.

Commit

Permalink
Merge pull request #323 from kinvolk/surajssd/fix-terraform-ux
Browse files Browse the repository at this point in the history
Show logs when terraform fails in `lokoctl cluster apply/destroy`
  • Loading branch information
surajssd authored Apr 27, 2020
2 parents dc34577 + 3fbacfa commit 23ac97c
Showing 1 changed file with 35 additions and 0 deletions.
35 changes: 35 additions & 0 deletions pkg/terraform/executor.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ const (
failFileSuffix = ".fail"

requiredVersion = ">= 0.12, < 0.13"

noOfLinesOnError = 20
)

// ErrBinaryNotFound denotes the fact that the Terraform binary could not be
Expand Down Expand Up @@ -211,22 +213,55 @@ func (ex *Executor) execute(verbose bool, args ...string) error {
wg.Add(1)

go tailFile(p, done, &wg)
} else {
fmt.Printf("\nYou can find the logs in %q\n", p)
}

wg.Wait()

s, err := ex.Status(pid)
if err != nil {
if !verbose {
showError(p, noOfLinesOnError)
}
return fmt.Errorf("failed checking execution status: %w", err)
}

if s != ExecutionStatusSuccess {
if !verbose {
showError(p, noOfLinesOnError)
}
return fmt.Errorf("executing Terraform failed, check %s for details", p)
}

return nil
}

func showError(path string, noOfLines int) {
// nolint: gosec
data, err := ioutil.ReadFile(path)
if err != nil {
fmt.Printf("error reading file: %v", err)
return
}

text := string(data)
lines := strings.Split(text, "\n")

// Deletion by one is done here to adjust the difference between the user provided number which
// starts counting from 1 and array indices which start counting from 0.
// nolint: gomnd
offset := len(lines) - noOfLines - 1

if offset > 0 {
lines = lines[offset:]
}

for _, line := range lines {
fmt.Println(line)
}
}

// LoadVars is a convenience function to load the tfvars file into memory
// as a JSON object.
func (ex *Executor) LoadVars() (map[string]interface{}, error) {
Expand Down

0 comments on commit 23ac97c

Please sign in to comment.