Skip to content

Commit 2f4a638

Browse files
authored
Revert "Resolve $resources refs before deployment if set by user" #3423 (#3443)
## Changes - Do not do resolution before deployment, revert to let TF do that. - Keep hasUpdates calculation and acceptance tests. ## Why People might want to model depends_on relationship by introducing an otherwise unnecessary reference.
1 parent ef92c71 commit 2f4a638

File tree

13 files changed

+31
-43
lines changed

13 files changed

+31
-43
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
2+
>>> errcode [CLI] bundle deploy -t dev
3+
Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bundle/dev/files...
4+
Error: reading config: failed to read references from config for pipelines.mypipeline: parsing refs: cannot process reference resources.volumes.foo.catalog_name: only ${resources.<group>.<key>.id} references are supported
5+
6+
7+
Exit code: 1
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
2+
>>> errcode [CLI] bundle deploy -t dev
3+
Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bundle/dev/files...
4+
Deploying resources...
5+
Updating deployment state...
6+
Deployment complete!
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
2+
>>> jq -s .[] | select(.path=="/api/2.0/pipelines") | .body.name out.requests.txt
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
2+
>>> jq -s .[] | select(.path=="/api/2.0/pipelines") | .body.name out.requests.txt
3+
"[dev [USERNAME]] pipeline for mycatalog.myschema.myname"

acceptance/bundle/resource_deps/resources_var/output.txt

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,3 @@
3232
}
3333
}
3434
}
35-
36-
>>> [CLI] bundle deploy -t dev
37-
Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bundle/dev/files...
38-
Deploying resources...
39-
Updating deployment state...
40-
Deployment complete!
41-
42-
>>> jq -s .[] | select(.path=="/api/2.0/pipelines") | .body.name out.requests.txt
43-
"[dev [USERNAME]] pipeline for mycatalog.myschema.myname"
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
trace $CLI bundle validate -t dev -o json | jq .resources
2-
trace $CLI bundle deploy -t dev
3-
trace jq -s '.[] | select(.path=="/api/2.0/pipelines") | .body.name' out.requests.txt
2+
trace errcode $CLI bundle deploy -t dev &> out.deploy.$DATABRICKS_CLI_DEPLOYMENT.txt
3+
trace jq -s '.[] | select(.path=="/api/2.0/pipelines") | .body.name' out.requests.txt &> out.requests.$DATABRICKS_CLI_DEPLOYMENT.txt
44
rm out.requests.txt
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1+
Badness = "direct does not work"
12
RecordRequests = true

acceptance/bundle/resource_deps/resources_var_presets/out.test.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ Local = true
22
Cloud = false
33

44
[EnvMatrix]
5-
DATABRICKS_CLI_DEPLOYMENT = ["terraform", "direct-exp"]
5+
DATABRICKS_CLI_DEPLOYMENT = ["terraform"]
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
RecordRequests = true
22

3-
#EnvMatrix.DATABRICKS_CLI_DEPLOYMENT = ["terraform"] # direct does not support non-id references yet
4-
# Error: reading config: failed to read references from config for volumes.foo: parsing refs: cannot process reference resources.schemas.bar.name: ${resources...} can only refer to field in the config or 'id'
3+
EnvMatrix.DATABRICKS_CLI_DEPLOYMENT = ["terraform"] # direct does not support non-id references yet
4+
# Error: reading config: failed to read references from config for pipelines.mypipeline: parsing refs: cannot process reference resources.schemas.foo.catalog_name: only ${resources.<group>.<key>.id} references are supported

bundle/config/mutator/resolve_variable_references.go

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -229,22 +229,7 @@ func (m *resolveVariableReferences) resolveOnce(b *bundle.Bundle, prefixes []dyn
229229
// Perform resolution only if the path starts with one of the specified prefixes.
230230
for _, prefix := range prefixes {
231231
if path.HasPrefix(prefix) {
232-
isOpt := prefix[0].Key() == "resources"
233-
var value dyn.Value
234-
var err error
235-
if isOpt {
236-
// We don't want injected zero value when resolving $resources.
237-
// We only want entries that are explicitly provided by users, so we're using root not normalized here.
238-
value, err = m.lookupFn(root, path, b)
239-
if !value.IsValid() {
240-
// Not having a value is not an error in this case, it might be resolved at deploy time. For example, output only fields.
241-
// TODO: we still could check whether it's part of the schema or not. If latter, we can reject it right away.
242-
// TODO: This might be better done after we got rid of TF.
243-
return dyn.InvalidValue, dynvar.ErrSkipResolution
244-
}
245-
} else {
246-
value, err = m.lookupFn(normalized, path, b)
247-
}
232+
value, err := m.lookupFn(normalized, path, b)
248233
hasUpdates = hasUpdates || (err == nil && value.IsValid())
249234
return value, err
250235
}

0 commit comments

Comments
 (0)