mirror of https://github.com/databricks/cli.git
Compare commits
2 Commits
7545a1421a
...
2ff5775ae5
Author | SHA1 | Date |
---|---|---|
|
2ff5775ae5 | |
|
3f87b7fa06 |
|
@ -84,9 +84,14 @@ class Job:
|
||||||
permission["level"] = permission["permission_level"]
|
permission["level"] = permission["permission_level"]
|
||||||
permission.pop("permission_level")
|
permission.pop("permission_level")
|
||||||
|
|
||||||
|
# Filter out keys that are not in the base configuration
|
||||||
|
filtered_ordered_keys = [k for k in ordered_keys if k in obj]
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"resources": {
|
"resources": {
|
||||||
"jobs": {self.normalized_key(): {k: obj[k] for k in ordered_keys}}
|
"jobs": {
|
||||||
|
self.normalized_key(): {k: obj[k] for k in filtered_ordered_keys}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -236,6 +241,40 @@ class LookupRewriter:
|
||||||
return variables
|
return variables
|
||||||
|
|
||||||
|
|
||||||
|
class FileRefRewriter:
|
||||||
|
_prefixes = [
|
||||||
|
"file://",
|
||||||
|
"file:fuse://",
|
||||||
|
]
|
||||||
|
|
||||||
|
def __init__(self, job: Job) -> None:
|
||||||
|
self.job = job
|
||||||
|
|
||||||
|
def rewrite(self):
|
||||||
|
# Now rewrite the job configuration
|
||||||
|
def cb(path, obj):
|
||||||
|
if not isinstance(obj, str):
|
||||||
|
return obj
|
||||||
|
|
||||||
|
for prefix in self._prefixes:
|
||||||
|
if not obj.startswith(prefix):
|
||||||
|
continue
|
||||||
|
|
||||||
|
# DBX anchors paths at the root of the project.
|
||||||
|
# DABs anchors paths relative to the location of the configuration file.
|
||||||
|
# Below we write configuration to the "./resources" directory.
|
||||||
|
# We need to go up one level to get to the root of the project.
|
||||||
|
payload = obj.replace(prefix, "")
|
||||||
|
return f"../{payload}"
|
||||||
|
|
||||||
|
return obj
|
||||||
|
|
||||||
|
for env in self.job.configs.keys():
|
||||||
|
self.job.configs[env] = walk(copy.deepcopy(self.job.configs[env]), cb)
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
def dedup_variables(variables):
|
def dedup_variables(variables):
|
||||||
deduped = dict()
|
deduped = dict()
|
||||||
for v in variables:
|
for v in variables:
|
||||||
|
@ -315,6 +354,11 @@ def main():
|
||||||
lr.add(env)
|
lr.add(env)
|
||||||
var_lookup_variables.extend(lr.rewrite())
|
var_lookup_variables.extend(lr.rewrite())
|
||||||
|
|
||||||
|
# Rewrite file references
|
||||||
|
for job in jobs.values():
|
||||||
|
fr = FileRefRewriter(job)
|
||||||
|
fr.rewrite()
|
||||||
|
|
||||||
for job in jobs.values():
|
for job in jobs.values():
|
||||||
base_job = job.compute_base()
|
base_job = job.compute_base()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue