|
6 | 6 | from databricks.bundles.core._resource import Resource |
7 | 7 |
|
8 | 8 | if TYPE_CHECKING: |
| 9 | + from databricks.bundles.catalog._models.volume import Volume |
9 | 10 | from databricks.bundles.jobs._models.job import Job |
10 | 11 | from databricks.bundles.pipelines._models.pipeline import Pipeline |
11 | 12 |
|
@@ -127,3 +128,35 @@ def my_pipeline_mutator(bundle: Bundle, pipeline: Pipeline) -> Pipeline: |
127 | 128 | from databricks.bundles.pipelines._models.pipeline import Pipeline |
128 | 129 |
|
129 | 130 | return ResourceMutator(resource_type=Pipeline, function=function) |
| 131 | + |
| 132 | + |
| 133 | +@overload |
| 134 | +def volume_mutator( |
| 135 | + function: Callable[[Bundle, "Volume"], "Volume"], |
| 136 | +) -> ResourceMutator["Volume"]: ... |
| 137 | + |
| 138 | + |
| 139 | +@overload |
| 140 | +def volume_mutator( |
| 141 | + function: Callable[["Volume"], "Volume"], |
| 142 | +) -> ResourceMutator["Volume"]: ... |
| 143 | + |
| 144 | + |
| 145 | +def volume_mutator(function: Callable) -> ResourceMutator["Volume"]: |
| 146 | + """ |
| 147 | + Decorator for defining a volume mutator. Function should return a new instance of the volume with the desired changes, |
| 148 | + instead of mutating the input volume. |
| 149 | +
|
| 150 | + Example: |
| 151 | +
|
| 152 | + .. code-block:: python |
| 153 | +
|
| 154 | + @volume_mutator |
| 155 | + def my_volume_mutator(bundle: Bundle, volume: Volume) -> Volume: |
| 156 | + return replace(volume, name="my_volume") |
| 157 | +
|
| 158 | + :param function: Function that mutates a volume. |
| 159 | + """ |
| 160 | + from databricks.bundles.catalog._models.volume import Volume |
| 161 | + |
| 162 | + return ResourceMutator(resource_type=Volume, function=function) |
0 commit comments