diff --git a/internal/provider/atlas_migration_resource.go b/internal/provider/atlas_migration_resource.go index a913c63..b498261 100644 --- a/internal/provider/atlas_migration_resource.go +++ b/internal/provider/atlas_migration_resource.go @@ -392,6 +392,10 @@ func (r *MigrationResource) migrate(ctx context.Context, data *MigrationResource ConfigURL: fmt.Sprintf("file://%s", cfgPath), Env: defaultString(data.EnvName, "tf"), Amount: amount, + Context: &atlas.DeployRunContext{ + TriggerType: atlas.TriggerTypeTerraform, + TriggerVersion: r.version, + }, }) if err != nil { diags.Append(errorDiagnostic(err, "Failed to apply migrations")) diff --git a/internal/provider/atlas_migration_resource_test.go b/internal/provider/atlas_migration_resource_test.go index b784d80..1a53849 100644 --- a/internal/provider/atlas_migration_resource_test.go +++ b/internal/provider/atlas_migration_resource_test.go @@ -11,6 +11,7 @@ import ( "strings" "testing" + "ariga.io/atlas-go-sdk/atlasexec" "ariga.io/atlas/sql/migrate" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -319,17 +320,28 @@ func TestAccMigrationResource_RemoteDir(t *testing.T) { dir = migrate.MemDir{} dbURL = fmt.Sprintf("sqlite://%s?_fk=true", filepath.Join(t.TempDir(), "sqlite.db")) srv = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - var m struct { - Query string `json:"query"` - Variables struct { - Input json.RawMessage `json:"input"` - } `json:"variables"` - } + type ( + Input struct { + Context atlasexec.DeployRunContext `json:"context,omitempty"` + } + GraphQLQuery struct { + Query string `json:"query"` + Variables struct { + Input json.RawMessage `json:"input"` + } `json:"variables"` + } + ) + var m GraphQLQuery require.NoError(t, json.NewDecoder(r.Body).Decode(&m)) switch { case strings.Contains(m.Query, "query"): writeDir(t, &dir, w) case strings.Contains(m.Query, "reportMigration"): + var i Input + err := json.Unmarshal(m.Variables.Input, &i) + require.NoError(t, err) + require.Equal(t, "test", i.Context.TriggerVersion) + require.Equal(t, atlasexec.TriggerTypeTerraform, i.Context.TriggerType) fmt.Fprint(w, `{"data":{"reportMigration":{"success":true}}}`) default: t.Fatalf("unexpected query: %s", m.Query) diff --git a/internal/provider/provider.go b/internal/provider/provider.go index 7bef0ab..3352c0d 100644 --- a/internal/provider/provider.go +++ b/internal/provider/provider.go @@ -59,6 +59,8 @@ type ( devURL string // cloud is the Atlas Cloud configuration. cloud *AtlasCloudBlock + // version is set to the provider version on release + version string } ) @@ -150,7 +152,7 @@ func (p *AtlasProvider) Configure(ctx context.Context, req provider.ConfigureReq if resp.Diagnostics.HasError() { return } - p.data = providerData{client: c, cloud: model.Cloud} + p.data = providerData{client: c, cloud: model.Cloud, version: p.version} if model != nil { p.data.devURL = model.DevURL.ValueString() }