2
0

get_state.go 688 B

1234567891011121314151617181920212223242526272829303132333435
  1. package client
  2. import (
  3. "context"
  4. "fmt"
  5. "strings"
  6. ptypes "github.com/porter-dev/porter/provisioner/types"
  7. )
  8. var ErrDoesNotExist = fmt.Errorf("state file does not exist")
  9. // CreateResource posts Terraform output to the provisioner service and creates the backing
  10. // resource in the database
  11. func (c *Client) GetState(
  12. ctx context.Context,
  13. projID, infraID uint,
  14. ) (*ptypes.TFState, error) {
  15. resp := &ptypes.TFState{}
  16. err := c.getRequest(
  17. fmt.Sprintf(
  18. "/projects/%d/infras/%d/state",
  19. projID, infraID,
  20. ),
  21. nil,
  22. resp,
  23. )
  24. if err != nil && strings.Contains(err.Error(), "current state file does not exist yet") {
  25. return nil, ErrDoesNotExist
  26. }
  27. return resp, err
  28. }