Skip to content

Add HTTP backend #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 71 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
adf9a9e
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Oct 19, 2022
66c5e14
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Nov 2, 2022
02f3940
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Nov 17, 2022
28a7e4b
Add workaround for glibc install issue
ljfranklin Nov 18, 2022
8051ea4
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Nov 30, 2022
057024d
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Jan 4, 2023
f12805c
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Feb 9, 2023
36026c7
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Feb 15, 2023
b9d0cd4
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Mar 8, 2023
ee80c91
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Mar 15, 2023
a42add0
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Mar 16, 2023
b577e1d
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Mar 30, 2023
256c123
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Mar 30, 2023
6ac2809
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Apr 12, 2023
acc9203
Bump golang.org/x/crypto
ljfranklin Apr 16, 2023
acc7372
Fix compile error by bumping to go 1.17
ljfranklin Apr 16, 2023
11d9d59
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Apr 26, 2023
ead4993
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Jun 12, 2023
8500fcc
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Jun 21, 2023
29fa520
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Jun 28, 2023
a34aa44
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Jul 12, 2023
577995d
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Jul 26, 2023
f7b97a2
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Aug 9, 2023
bd1410a
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Aug 23, 2023
61e941b
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Sep 7, 2023
274db65
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Oct 4, 2023
edab2df
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Oct 10, 2023
44ecd5d
Fix `Backend configuration changed` error in unit tests
ljfranklin Oct 11, 2023
01aaf3d
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Oct 18, 2023
218c552
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Nov 1, 2023
a7d97d6
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Nov 15, 2023
21926fe
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Nov 29, 2023
41b2975
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Dec 13, 2023
9455c15
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Jan 17, 2024
4f787af
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Jan 24, 2024
c9f8b0a
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Jan 31, 2024
69f4d21
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Feb 8, 2024
3723dd8
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Feb 21, 2024
1c20dfc
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Mar 13, 2024
2df71e7
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Apr 10, 2024
965bcf6
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Apr 17, 2024
fae1b22
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Apr 24, 2024
9c38a56
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin May 8, 2024
5efc7ae
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin May 22, 2024
60ac9eb
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Jun 5, 2024
ceeb20f
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Jun 26, 2024
b5d7c3d
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Jul 3, 2024
2d5e8a9
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Jul 10, 2024
39a9af3
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Jul 24, 2024
60756a4
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Aug 7, 2024
e1a667c
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Aug 20, 2024
f3235fb
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Sep 18, 2024
adfb017
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Oct 2, 2024
be86319
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Oct 16, 2024
953a21b
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Nov 27, 2024
b6a7818
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Dec 4, 2024
9e236da
Fix ephemeral var validation error in fixtures
ljfranklin Dec 9, 2024
33059b0
Fix additional ephemeral outputs
ljfranklin Dec 9, 2024
14f006d
Revert "Fix additional ephemeral outputs"
ljfranklin Dec 10, 2024
a174396
Revert "Fix ephemeral var validation error in fixtures"
ljfranklin Dec 10, 2024
20d7a9c
Another attempt at fixing ephemeral var validation errors
ljfranklin Dec 10, 2024
a2a0cfe
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Dec 11, 2024
a15c7ed
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Dec 18, 2024
713a3bf
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Jan 8, 2025
e93784b
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Jan 22, 2025
080c32b
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Feb 27, 2025
dd6c1bd
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Mar 5, 2025
cf59e40
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Mar 12, 2025
edda302
:airplane: Auto-commit: Bumping Terraform CLI version
ljfranklin Mar 26, 2025
766b780
[Draft] Trying to make HTTP backend work
gaelL Jul 13, 2022
1fda6dc
Refactor: Replace stateful resource with terraform_data
Mar 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion config/terraform-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.3.2
1.11.3
4 changes: 3 additions & 1 deletion docker-dev/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ RUN apk update && \
# https://gist.github.com/ljfranklin/f6a7dfcfb2c573d4a276dad59e58db82
# TODO: Switch back to upstream for ARM64 once supported:
# https://github.com/sgerrand/alpine-pkg-glibc/issues/126
# TODO: Remove --force-overwrite once
# https://github.com/sgerrand/alpine-pkg-glibc/issues/185 is fixed
RUN if [ "${TARGETARCH}" = "amd64" ]; then \
wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub && \
wget -q -O /tmp/glibc.apk https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.32-r0/glibc-2.32-r0.apk && \
Expand All @@ -21,7 +23,7 @@ RUN if [ "${TARGETARCH}" = "amd64" ]; then \
wget -q -O /tmp/glibc.apk https://github.com/ljfranklin/alpine-pkg-glibc/releases/download/2.32-r0-arm64/glibc-2.32-r0.apk && \
wget -q -O /tmp/glibc-bin.apk https://github.com/ljfranklin/alpine-pkg-glibc/releases/download/2.32-r0-arm64/glibc-bin-2.32-r0.apk; \
fi; \
apk add /tmp/glibc.apk && \
apk add --force-overwrite /tmp/glibc.apk && \
apk add /tmp/glibc-bin.apk && \
rm -rf /tmp/glibc.apk && \
rm -rf /tmp/glibc-bin.apk
Expand Down
8 changes: 3 additions & 5 deletions docker-prod/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ RUN apk update && \
# https://gist.github.com/ljfranklin/f6a7dfcfb2c573d4a276dad59e58db82
# TODO: Switch back to upstream for ARM64 once supported:
# https://github.com/sgerrand/alpine-pkg-glibc/issues/126
# TODO: Remove --force-overwrite once
# https://github.com/sgerrand/alpine-pkg-glibc/issues/185 is fixed
RUN if [ "${TARGETARCH}" = "amd64" ]; then \
wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub && \
wget -q -O /tmp/glibc.apk https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.32-r0/glibc-2.32-r0.apk && \
Expand All @@ -20,7 +22,7 @@ RUN if [ "${TARGETARCH}" = "amd64" ]; then \
wget -q -O /tmp/glibc.apk https://github.com/ljfranklin/alpine-pkg-glibc/releases/download/2.32-r0-arm64/glibc-2.32-r0.apk && \
wget -q -O /tmp/glibc-bin.apk https://github.com/ljfranklin/alpine-pkg-glibc/releases/download/2.32-r0-arm64/glibc-bin-2.32-r0.apk; \
fi; \
apk add /tmp/glibc.apk && \
apk add --force-overwrite /tmp/glibc.apk && \
apk add /tmp/glibc-bin.apk && \
rm -rf /tmp/glibc.apk && \
rm -rf /tmp/glibc-bin.apk
Expand All @@ -30,10 +32,6 @@ RUN echo "StrictHostKeyChecking no" >> $HOME/.ssh/config
RUN echo "LogLevel quiet" >> $HOME/.ssh/config
RUN chmod 0600 $HOME/.ssh/config

RUN mkdir -p /usr/local/share/terraform/plugins/github.com/ashald/stateful/1.2.0/linux_${TARGETARCH}/ && \
wget -O /usr/local/share/terraform/plugins/github.com/ashald/stateful/1.2.0/linux_${TARGETARCH}/terraform-provider-stateful_v1.2.0 \
"https://github.com/ashald/terraform-provider-stateful/releases/download/v1.2.0/terraform-provider-stateful_v1.2.0-linux-${TARGETARCH}" && \
chmod +x /usr/local/share/terraform/plugins/github.com/ashald/stateful/1.2.0/linux_${TARGETARCH}/terraform-provider-stateful_v1.2.0
COPY $TARGETARCH/terraform/* /usr/local/bin/
RUN terraform --version
COPY $TARGETARCH/check $TARGETARCH/in $TARGETARCH/out /opt/resource/
14 changes: 12 additions & 2 deletions src/terraform-resource/go.mod
Original file line number Diff line number Diff line change
@@ -1,13 +1,23 @@
module github.com/ljfranklin/terraform-resource

go 1.16
go 1.17

require (
github.com/Pallinder/go-randomdata v1.2.0
github.com/aws/aws-sdk-go v1.37.13
github.com/ghodss/yaml v1.0.0
github.com/onsi/ginkgo v1.15.0
github.com/onsi/gomega v1.10.5
golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad
golang.org/x/crypto v0.8.0
gopkg.in/yaml.v2 v2.4.0
)

require (
github.com/fsnotify/fsnotify v1.4.9 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/nxadm/tail v1.4.4 // indirect
golang.org/x/net v0.9.0 // indirect
golang.org/x/sys v0.7.0 // indirect
golang.org/x/text v0.9.0 // indirect
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
)
44 changes: 37 additions & 7 deletions src/terraform-resource/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ github.com/Pallinder/go-randomdata v1.2.0 h1:DZ41wBchNRb/0GfsePLiSwb0PHZmT67XY00
github.com/Pallinder/go-randomdata v1.2.0/go.mod h1:yHmJgulpD2Nfrm0cR9tI/+oAgRqCQQixsA8HyRZfV9Y=
github.com/aws/aws-sdk-go v1.37.13 h1:7w1gJHJdpMfv+JbedCeOkQrYu46k0j01ULpv7oLfb3U=
github.com/aws/aws-sdk-go v1.37.13/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro=
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
Expand All @@ -14,13 +15,15 @@ github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:x
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0=
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78=
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
Expand All @@ -33,44 +36,69 @@ github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1y
github.com/onsi/gomega v1.10.5 h1:7n6FEkpFmfCoo2t+YYqXH0evK+a9ICQz0xcAy9dYcaQ=
github.com/onsi/gomega v1.10.5/go.mod h1:gza4q3jKQJijlu05nKWRCW/GavJumGt8aNRxWg7mt48=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad h1:DN0cp81fZ3njFcrLCytUHRSUkqBjfTo4Tx9RJTWs0EY=
golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.8.0 h1:pd9TJtTueMTVQXzk8E2XESSMQDj/U7OUu0PqJqPXQjQ=
golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb h1:eBmm0M9fYhWpKZLjQUUKka/LtIxf46G4fxeEz5KJr9U=
golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM=
golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210112080510-489259a85091 h1:DMyOG0U+gKfu8JZzg2UQe9MeaC1X+xQWlAKcRnjxjCw=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU=
golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.7.0 h1:BEvjmm5fURWqcfbSKTdpkDXYBrUS1c0m8agp14W48vQ=
golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
Expand All @@ -80,7 +108,9 @@ google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM=
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
Expand Down
31 changes: 31 additions & 0 deletions src/terraform-resource/helper/helper.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package helper

import (
"net/url"
"path"
"strings"
)

func PlanAddressForHTTPBackend(BackendConfig map[string]interface{}) (string, error) {

if planAddress, ok := BackendConfig["plan_address"]; ok {
return planAddress.(string), nil
}

address := BackendConfig["address"].(string)
// As Terraform HTTP backend don't implement workspaces, we need to define a
// different URL to store the plan file.
u, err := url.Parse(address)
if err != nil {
return "", err
}

// Parse the URL and add -plan suffix to the filename
baseURL, fFullName := path.Split(u.Path)
fExt := path.Ext(u.Path)
fName := strings.TrimSuffix(fFullName, fExt)

fFullName = fName + "-plan" + fExt
u.Path = path.Join(baseURL, fFullName)
return u.String(), nil
}
31 changes: 29 additions & 2 deletions src/terraform-resource/in/in.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
"strings"

"github.com/ljfranklin/terraform-resource/encoder"
"github.com/ljfranklin/terraform-resource/helper"
"github.com/ljfranklin/terraform-resource/logger"
"github.com/ljfranklin/terraform-resource/models"
"github.com/ljfranklin/terraform-resource/storage"
Expand Down Expand Up @@ -101,11 +102,29 @@ func (r Runner) inWithBackend(req models.InRequest, tmpDir string) (models.InRes

targetEnvName := req.Version.EnvName

// If plan and http backend, use plan URL
origBackendConfig := terraformModel.BackendConfig
if req.Version.IsPlan() && terraformModel.BackendType == "http" {
planAddress, err := helper.PlanAddressForHTTPBackend(terraformModel.BackendConfig)
if err != nil {
return models.InResponse{}, err
}
terraformModel.BackendConfig["address"] = planAddress
}

client := terraform.NewClient(
terraformModel,
r.LogWriter,
)

// Rollback address change in case of http backend and tfplan
defer func() {
if req.Version.IsPlan() && terraformModel.BackendType == "http" {
terraformModel.BackendConfig = origBackendConfig
client.SetModel(terraformModel)
}
}()

if err := client.InitWithBackend(); err != nil {
return models.InResponse{}, err
}
Expand Down Expand Up @@ -138,8 +157,16 @@ func (r Runner) inWithBackend(req models.InRequest, tmpDir string) (models.InRes
}

func (r Runner) writeBackendOutputs(req models.InRequest, targetEnvName string, client terraform.Client) (models.InResponse, error) {
if err := r.ensureEnvExistsInBackend(targetEnvName, client); err != nil {
return models.InResponse{}, err
terraformModel := req.Source.Terraform.Merge(req.Params.Terraform)
if err := terraformModel.Validate(); err != nil {
return models.InResponse{}, fmt.Errorf("Failed to validate terraform Model: %s", err)
}
terraformModel.Source = "."

if terraformModel.BackendType != "http" {
if err := r.ensureEnvExistsInBackend(targetEnvName, client); err != nil {
return models.InResponse{}, err
}
}

tfOutput, err := client.Output(targetEnvName)
Expand Down
3 changes: 0 additions & 3 deletions src/terraform-resource/in/in_plan_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,9 +95,6 @@ var _ = Describe("JSON Plan", func() {
fixturesDir := path.Join(helpers.ProjectRoot(), "fixtures")
err = exec.Command("cp", "-r", fixturesDir, workingDir).Run()
Expect(err).ToNot(HaveOccurred())

err = helpers.DownloadStatefulPlugin(workingDir)
Expect(err).ToNot(HaveOccurred())
})

AfterEach(func() {
Expand Down
8 changes: 0 additions & 8 deletions src/terraform-resource/out/out_custom_plugins_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,14 +51,6 @@ var _ = Describe("Out Lifecycle with Custom Plugins", func() {
Expect(err).ToNot(HaveOccurred())
err = helpers.DownloadPlugins(awsPluginDir, awsProviderURL)
Expect(err).ToNot(HaveOccurred())
// In production image the stateful provider is installed in system-wide location, but manually install
// this plugin in plugin dir to avoid needing to run tests as root.
statefulProviderURL := fmt.Sprintf("https://github.com/ashald/terraform-provider-stateful/releases/download/v1.2.0/terraform-provider-stateful_v1.2.0-%s-%s.zip", runtime.GOOS, runtime.GOARCH)
statefulPluginDir := path.Join(pluginDir, "github.com", "ashald", "stateful", "1.2.0", fmt.Sprintf("%s_%s", runtime.GOOS, runtime.GOARCH))
err = os.MkdirAll(statefulPluginDir, 0700)
Expect(err).ToNot(HaveOccurred())
err = helpers.DownloadPlugins(statefulPluginDir, statefulProviderURL)
Expect(err).ToNot(HaveOccurred())

// ensure relative paths resolve correctly
err = os.Chdir(workingDir)
Expand Down
3 changes: 0 additions & 3 deletions src/terraform-resource/out/out_import_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,6 @@ var _ = Describe("Out Import", func() {
fixturesDir := path.Join(helpers.ProjectRoot(), "fixtures")
err = exec.Command("cp", "-r", fixturesDir, workingDir).Run()
Expect(err).ToNot(HaveOccurred())

err = helpers.DownloadStatefulPlugin(workingDir)
Expect(err).ToNot(HaveOccurred())
})

AfterEach(func() {
Expand Down
5 changes: 0 additions & 5 deletions src/terraform-resource/out/out_migrated_from_storage_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -605,11 +605,6 @@ var _ = Describe("Out - Migrated From Storage", func() {
})

Context("when applying a plan", func() {
BeforeEach(func() {
err := helpers.DownloadStatefulPlugin(workingDir)
Expect(err).ToNot(HaveOccurred())
})

It("plan infrastructure and apply it", func() {
planRequest := models.OutRequest{
Source: models.Source{
Expand Down
3 changes: 0 additions & 3 deletions src/terraform-resource/out/out_plan_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,6 @@ var _ = Describe("Out Plan", func() {
fixturesDir := path.Join(helpers.ProjectRoot(), "fixtures")
err = exec.Command("cp", "-r", fixturesDir, workingDir).Run()
Expect(err).ToNot(HaveOccurred())

err = helpers.DownloadStatefulPlugin(workingDir)
Expect(err).ToNot(HaveOccurred())
})

AfterEach(func() {
Expand Down
Loading