Skip to content

Commit

Permalink
migration: remove warnings for remote_dir flow (#104)
Browse files Browse the repository at this point in the history
* migration: remove version validate for remote_dir

* migration: only validate dev-url for local

* .github/workflows: restructure tests

* chore: try add test for dev-url

* chore: added test for no-version warning

* chore: added test for remote-dir

* chore: correct tests
  • Loading branch information
giautm authored Nov 20, 2023
1 parent d9c9189 commit 699b4a9
Show file tree
Hide file tree
Showing 14 changed files with 129 additions and 14 deletions.
31 changes: 25 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -145,13 +145,32 @@ jobs:
with:
terraform_version: ${{ matrix.terraform-version }}
terraform_wrapper: false
- name: Create local plugin
run: |
./scripts/local.sh ./examples/testcase 0.0.0-pre.0
- name: Terraform
working-directory: examples/testcase
- name: Terraform (sqlite)
working-directory: integration-tests/sqlite
run: |
../../scripts/local.sh ../../dist 0.0.0-pre.0
terraform init
terraform apply --auto-approve
- name: Terraform (no-dev-url)
working-directory: integration-tests/no-dev-url
run: |
../../scripts/local.sh ../../dist 0.0.0-pre.0
terraform init > /dev/null
terraform plan -no-color | grep --silent "Warning: dev_url is unset"
- name: Terraform (no-version)
working-directory: integration-tests/no-version
run: |
../../scripts/local.sh ../../dist 0.0.0-pre.0
terraform init > /dev/null
terraform plan -no-color | grep --silent "Warning: version is unset"
- name: Terraform (remote_dir)
working-directory: integration-tests/remote-dir
run: |
../../scripts/local.sh ../../dist 0.0.0-pre.0
terraform init > /dev/null
terraform plan -no-color > stdout.txt
cat stdout.txt | grep --silent "Plan: 1 to add, 0 to change, 0 to destroy."
! cat stdout.txt | grep --silent "Warning: dev_url is unset"
! cat stdout.txt | grep --silent "Warning: version is unset"
env:
TF_LOG: DEBUG
TF_VAR_atlas_token: ${{ secrets.ATLAS_TOKEN }}
3 changes: 0 additions & 3 deletions examples/testcase/.gitignore

This file was deleted.

5 changes: 5 additions & 0 deletions integration-tests/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
**/.terraform.lock.hcl
**/.terraform/*
**/terraform.d
**/*.db
**/stdout.txt
18 changes: 18 additions & 0 deletions integration-tests/no-dev-url/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
terraform {
required_providers {
atlas = {
source = "ariga/atlas"
version = "0.0.0-pre.0"
}
}
}

data "atlas_schema" "db" {
src = "file://schema.sql"
dev_url = "sqlite://file?mode=memory"
}

resource "atlas_schema" "db" {
hcl = data.atlas_schema.db.hcl
url = "sqlite://file.db"
}
File renamed without changes.
19 changes: 19 additions & 0 deletions integration-tests/no-version/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
terraform {
required_providers {
atlas = {
source = "ariga/atlas"
version = "0.0.0-pre.0"
}
}
}

data "atlas_migration" "db" {
dir = "./migrations"
url = "sqlite://file.db"
}

resource "atlas_migration" "db" {
dir = "./migrations"
url = "sqlite://file.db"
dev_url = "sqlite://file?mode=memory"
}
6 changes: 6 additions & 0 deletions integration-tests/no-version/migrations/20231120145001.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
CREATE TABLE t1 (
c1 INT,
c2 TEXT,
PRIMARY KEY (c1)
);

6 changes: 6 additions & 0 deletions integration-tests/no-version/migrations/20231120145012.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
CREATE TABLE t2 (
c1 INT,
c2 TEXT,
PRIMARY KEY (c1)
);

3 changes: 3 additions & 0 deletions integration-tests/no-version/migrations/atlas.sum
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
h1:dy0koXujpoUhVPowi2KP9Qoq0Sr6trcEmvrVWWXnN24=
20231120145001.sql h1:08Mdpo805VLOztN/C3vpi/pIyDjMCGFHfA/pmhtcgJI=
20231120145012.sql h1:h1DU3vLKHhhV6ilw6+DQ1plbVpRXQxZi4PYDgDmRDZs=
33 changes: 33 additions & 0 deletions integration-tests/remote-dir/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
terraform {
required_providers {
atlas = {
source = "ariga/atlas"
version = "0.0.0-pre.0"
}
}
}

variable "atlas_token" {
type = string
sensitive = true
}

provider "atlas" {
cloud {
token = var.atlas_token
}
}

data "atlas_migration" "db" {
url = "sqlite://file.db"
remote_dir {
name = "tf-remote-dir"
}
}

resource "atlas_migration" "db" {
url = "sqlite://file.db"
remote_dir {
name = "tf-remote-dir"
}
}
File renamed without changes.
5 changes: 5 additions & 0 deletions integration-tests/sqlite/schema.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
CREATE TABLE t1 (
c1 INT,
c2 TEXT,
PRIMARY KEY (c1)
);
10 changes: 7 additions & 3 deletions internal/provider/atlas_migration_resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -211,9 +211,12 @@ func (r MigrationResource) ValidateConfig(ctx context.Context, req resource.Vali
if resp.Diagnostics.HasError() {
return
}
resp.Diagnostics.Append(r.validateConfig(ctx, req.Config)...)
if resp.Diagnostics.HasError() {
return
if data.RemoteDir == nil {
// Local dir, validate config for dev-url
resp.Diagnostics.Append(r.validateConfig(ctx, req.Config)...)
if resp.Diagnostics.HasError() {
return
}
}
// Validate the remote_dir block
switch {
Expand All @@ -240,6 +243,7 @@ func (r MigrationResource) ValidateConfig(ctx context.Context, req resource.Vali
)
return
}
return
case data.DirURL.IsNull():
resp.Diagnostics.AddError(
"dir is unset",
Expand Down
4 changes: 2 additions & 2 deletions scripts/local.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@ TARGET=$(go env GOOS)_$(go env GOARCH)
PACKED="terraform-provider-${TYPE}_${VERSION}_${TARGET}.zip"

PLUGIN_ADDR="${HOSTNAME}/${NAMESPACE}/${TYPE}"
PLUGIN_PATH="${1}/terraform.d/plugins/${PLUGIN_ADDR}"
PLUGIN_PATH="./terraform.d/plugins/${PLUGIN_ADDR}"
mkdir -p $PLUGIN_PATH
cp ./dist/${PACKED} $PLUGIN_PATH
cp ${1}/${PACKED} $PLUGIN_PATH

0 comments on commit 699b4a9

Please sign in to comment.