diff --git a/acceptance/bundle/artifacts/whl_dynamic/out.plan_update.direct.json b/acceptance/bundle/artifacts/whl_dynamic/out.plan_update.direct.json index 11f5bd424f..ab374309c4 100644 --- a/acceptance/bundle/artifacts/whl_dynamic/out.plan_update.direct.json +++ b/acceptance/bundle/artifacts/whl_dynamic/out.plan_update.direct.json @@ -156,7 +156,7 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "environments[0].spec.dependencies[0]": { @@ -167,7 +167,7 @@ }, "tasks[task_key='ServerlessTestTask'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='ServerlessTestTask'].run_if": { @@ -177,12 +177,12 @@ }, "tasks[task_key='ServerlessTestTask'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "tasks[task_key='TestTask'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='TestTask'].for_each_task.task.libraries[0].whl": { @@ -204,17 +204,17 @@ }, "tasks[task_key='TestTask'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/deploy/readplan/basic/out.plan_skip.json b/acceptance/bundle/deploy/readplan/basic/out.plan_skip.json index 2799d32260..af0a16a10a 100644 --- a/acceptance/bundle/deploy/readplan/basic/out.plan_skip.json +++ b/acceptance/bundle/deploy/readplan/basic/out.plan_skip.json @@ -29,17 +29,17 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/migrate/basic/out.plan_update.json b/acceptance/bundle/migrate/basic/out.plan_update.json index edad921f42..5c7bb6e043 100644 --- a/acceptance/bundle/migrate/basic/out.plan_update.json +++ b/acceptance/bundle/migrate/basic/out.plan_update.json @@ -64,7 +64,7 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "name": { @@ -75,7 +75,7 @@ }, "tasks[task_key='main'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='main'].notebook_task.source": { @@ -90,17 +90,17 @@ }, "tasks[task_key='main'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/migrate/default-python/out.plan_after_deploy.json b/acceptance/bundle/migrate/default-python/out.plan_after_deploy.json index 13e16c6dd1..15e6c7379a 100644 --- a/acceptance/bundle/migrate/default-python/out.plan_after_deploy.json +++ b/acceptance/bundle/migrate/default-python/out.plan_after_deploy.json @@ -226,12 +226,12 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='notebook_task'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='notebook_task'].libraries[0].whl": { @@ -252,12 +252,12 @@ }, "tasks[task_key='notebook_task'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "tasks[task_key='python_wheel_task'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='python_wheel_task'].libraries[0].whl": { @@ -273,12 +273,12 @@ }, "tasks[task_key='python_wheel_task'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "tasks[task_key='refresh_pipeline'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='refresh_pipeline'].run_if": { @@ -288,17 +288,17 @@ }, "tasks[task_key='refresh_pipeline'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/migrate/default-python/out.plan_after_migration.json b/acceptance/bundle/migrate/default-python/out.plan_after_migration.json index c6d2a8042a..527a30cf67 100644 --- a/acceptance/bundle/migrate/default-python/out.plan_after_migration.json +++ b/acceptance/bundle/migrate/default-python/out.plan_after_migration.json @@ -226,12 +226,12 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='notebook_task'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='notebook_task'].libraries[0].whl": { @@ -252,12 +252,12 @@ }, "tasks[task_key='notebook_task'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "tasks[task_key='python_wheel_task'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='python_wheel_task'].libraries[0].whl": { @@ -273,12 +273,12 @@ }, "tasks[task_key='python_wheel_task'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "tasks[task_key='refresh_pipeline'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='refresh_pipeline'].run_if": { @@ -288,17 +288,17 @@ }, "tasks[task_key='refresh_pipeline'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/migrate/default-python/output.txt b/acceptance/bundle/migrate/default-python/output.txt index 5e38584e38..539235fab3 100644 --- a/acceptance/bundle/migrate/default-python/output.txt +++ b/acceptance/bundle/migrate/default-python/output.txt @@ -76,12 +76,12 @@ Building python_artifact... { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='notebook_task'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='notebook_task'].libraries[0].whl": { @@ -102,12 +102,12 @@ Building python_artifact... }, "tasks[task_key='notebook_task'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "tasks[task_key='python_wheel_task'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='python_wheel_task'].libraries[0].whl": { @@ -123,12 +123,12 @@ Building python_artifact... }, "tasks[task_key='python_wheel_task'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "tasks[task_key='refresh_pipeline'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='refresh_pipeline'].run_if": { @@ -138,17 +138,17 @@ Building python_artifact... }, "tasks[task_key='refresh_pipeline'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } @@ -195,12 +195,12 @@ Building python_artifact... { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='notebook_task'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='notebook_task'].libraries[0].whl": { @@ -221,12 +221,12 @@ Building python_artifact... }, "tasks[task_key='notebook_task'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "tasks[task_key='python_wheel_task'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='python_wheel_task'].libraries[0].whl": { @@ -242,12 +242,12 @@ Building python_artifact... }, "tasks[task_key='python_wheel_task'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "tasks[task_key='refresh_pipeline'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='refresh_pipeline'].run_if": { @@ -257,17 +257,17 @@ Building python_artifact... }, "tasks[task_key='refresh_pipeline'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/resource_deps/id_chain/out.plan_skip.direct.json b/acceptance/bundle/resource_deps/id_chain/out.plan_skip.direct.json index e0fc76cefa..340f12d6f3 100644 --- a/acceptance/bundle/resource_deps/id_chain/out.plan_skip.direct.json +++ b/acceptance/bundle/resource_deps/id_chain/out.plan_skip.direct.json @@ -30,17 +30,17 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } @@ -77,17 +77,17 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } @@ -124,17 +124,17 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } @@ -171,17 +171,17 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } @@ -218,17 +218,17 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/resource_deps/id_chain/out.plan_update.direct.json b/acceptance/bundle/resource_deps/id_chain/out.plan_update.direct.json index dee5041a1f..982d34d71c 100644 --- a/acceptance/bundle/resource_deps/id_chain/out.plan_update.direct.json +++ b/acceptance/bundle/resource_deps/id_chain/out.plan_update.direct.json @@ -52,17 +52,17 @@ }, "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } @@ -121,17 +121,17 @@ }, "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } @@ -190,17 +190,17 @@ }, "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } @@ -259,17 +259,17 @@ }, "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } @@ -328,17 +328,17 @@ }, "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/resource_deps/job_id_delete_bar/out.plan_delete.direct.json b/acceptance/bundle/resource_deps/job_id_delete_bar/out.plan_delete.direct.json index 4ddc50baf2..288989ea84 100644 --- a/acceptance/bundle/resource_deps/job_id_delete_bar/out.plan_delete.direct.json +++ b/acceptance/bundle/resource_deps/job_id_delete_bar/out.plan_delete.direct.json @@ -78,7 +78,7 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks": { @@ -105,12 +105,12 @@ }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/resource_deps/job_id_delete_foo/out.plan_delete.direct.json b/acceptance/bundle/resource_deps/job_id_delete_foo/out.plan_delete.direct.json index e9f474296b..8312f1ae76 100644 --- a/acceptance/bundle/resource_deps/job_id_delete_foo/out.plan_delete.direct.json +++ b/acceptance/bundle/resource_deps/job_id_delete_foo/out.plan_delete.direct.json @@ -29,17 +29,17 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/resource_deps/jobs_update_remote/out.plan_update.direct.json b/acceptance/bundle/resource_deps/jobs_update_remote/out.plan_update.direct.json index ebd41d3c67..516e677d84 100644 --- a/acceptance/bundle/resource_deps/jobs_update_remote/out.plan_update.direct.json +++ b/acceptance/bundle/resource_deps/jobs_update_remote/out.plan_update.direct.json @@ -36,17 +36,17 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } @@ -122,17 +122,18 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "job_clusters[0].new_cluster.num_workers": { - "action": "update", + "action": "skip", + "reason": "empty", "old": 0, "new": 0 }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "trigger.periodic.unit": { @@ -143,7 +144,7 @@ }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/resource_deps/pipelines_recreate/out.plan_noop.direct.json b/acceptance/bundle/resource_deps/pipelines_recreate/out.plan_noop.direct.json index 274fd5a4f2..b73b640318 100644 --- a/acceptance/bundle/resource_deps/pipelines_recreate/out.plan_noop.direct.json +++ b/acceptance/bundle/resource_deps/pipelines_recreate/out.plan_noop.direct.json @@ -36,17 +36,17 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/resource_deps/pipelines_recreate/out.plan_update.direct.json b/acceptance/bundle/resource_deps/pipelines_recreate/out.plan_update.direct.json index a1374fabe3..507af1e14f 100644 --- a/acceptance/bundle/resource_deps/pipelines_recreate/out.plan_update.direct.json +++ b/acceptance/bundle/resource_deps/pipelines_recreate/out.plan_update.direct.json @@ -61,17 +61,17 @@ }, "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/resources/jobs/delete_task/out.plan_update.direct.json b/acceptance/bundle/resources/jobs/delete_task/out.plan_update.direct.json index ea4fdfcb7a..f84c096a34 100644 --- a/acceptance/bundle/resources/jobs/delete_task/out.plan_update.direct.json +++ b/acceptance/bundle/resources/jobs/delete_task/out.plan_update.direct.json @@ -105,7 +105,7 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='TestTask1']": { @@ -142,7 +142,7 @@ }, "tasks[task_key='TestTask2'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='TestTask2'].run_if": { @@ -152,17 +152,17 @@ }, "tasks[task_key='TestTask2'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/resources/jobs/on_failure_empty_slice/out.plan.direct.json b/acceptance/bundle/resources/jobs/on_failure_empty_slice/out.plan.direct.json index 7a9e6776ef..00230b72bb 100644 --- a/acceptance/bundle/resources/jobs/on_failure_empty_slice/out.plan.direct.json +++ b/acceptance/bundle/resources/jobs/on_failure_empty_slice/out.plan.direct.json @@ -1,12 +1,12 @@ { "email_notifications.on_failure": { "action": "skip", - "reason": "empty_slice", + "reason": "empty", "new": [] }, "tasks[task_key='usage_logs_grants'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='usage_logs_grants'].notebook_task.source": { @@ -21,17 +21,17 @@ }, "tasks[task_key='usage_logs_grants'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/resources/jobs/remote_add_tag/out.plan_post_update.direct.json b/acceptance/bundle/resources/jobs/remote_add_tag/out.plan_post_update.direct.json index 47e1120354..bf51ae0831 100644 --- a/acceptance/bundle/resources/jobs/remote_add_tag/out.plan_post_update.direct.json +++ b/acceptance/bundle/resources/jobs/remote_add_tag/out.plan_post_update.direct.json @@ -84,7 +84,7 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tags['new_tag']": { @@ -93,7 +93,7 @@ }, "tasks[task_key='TestTask'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='TestTask'].run_if": { @@ -103,17 +103,17 @@ }, "tasks[task_key='TestTask'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/resources/jobs/remote_matches_config/out.plan.direct.json b/acceptance/bundle/resources/jobs/remote_matches_config/out.plan.direct.json index 8072f1470a..61107b5a0c 100644 --- a/acceptance/bundle/resources/jobs/remote_matches_config/out.plan.direct.json +++ b/acceptance/bundle/resources/jobs/remote_matches_config/out.plan.direct.json @@ -55,7 +55,7 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "max_concurrent_runs": { @@ -67,7 +67,7 @@ }, "tasks[task_key='main_task'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='main_task'].new_cluster.aws_attributes": { @@ -85,7 +85,7 @@ }, "tasks[task_key='main_task'].new_cluster.enable_elastic_disk": { "action": "skip", - "reason": "managed", + "reason": "empty", "remote": false }, "tasks[task_key='main_task'].notebook_task.source": { @@ -100,17 +100,17 @@ }, "tasks[task_key='main_task'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/resources/jobs/tags_empty_map/out.plan.direct.json b/acceptance/bundle/resources/jobs/tags_empty_map/out.plan.direct.json index 7ad6854e1c..25c898b90e 100644 --- a/acceptance/bundle/resources/jobs/tags_empty_map/out.plan.direct.json +++ b/acceptance/bundle/resources/jobs/tags_empty_map/out.plan.direct.json @@ -1,22 +1,22 @@ { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tags": { "action": "skip", - "reason": "empty_map", + "reason": "empty", "new": {} }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/resources/jobs/update/out.plan_skip.direct.json b/acceptance/bundle/resources/jobs/update/out.plan_skip.direct.json index 837444604a..ed8ef42944 100644 --- a/acceptance/bundle/resources/jobs/update/out.plan_skip.direct.json +++ b/acceptance/bundle/resources/jobs/update/out.plan_skip.direct.json @@ -45,17 +45,17 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/resources/jobs/update/out.plan_update.direct.json b/acceptance/bundle/resources/jobs/update/out.plan_update.direct.json index 8557f1809a..bdb8e9f5e9 100644 --- a/acceptance/bundle/resources/jobs/update/out.plan_update.direct.json +++ b/acceptance/bundle/resources/jobs/update/out.plan_update.direct.json @@ -76,12 +76,12 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "trigger.periodic.unit": { @@ -92,7 +92,7 @@ }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/resources/jobs/update_single_node/out.plan_skip.direct.json b/acceptance/bundle/resources/jobs/update_single_node/out.plan_skip.direct.json index b62a6e6c1f..7b789f1a55 100644 --- a/acceptance/bundle/resources/jobs/update_single_node/out.plan_skip.direct.json +++ b/acceptance/bundle/resources/jobs/update_single_node/out.plan_skip.direct.json @@ -52,17 +52,17 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/resources/jobs/update_single_node/out.plan_update.direct.json b/acceptance/bundle/resources/jobs/update_single_node/out.plan_update.direct.json index 203c1ee131..a3fe8d211c 100644 --- a/acceptance/bundle/resources/jobs/update_single_node/out.plan_update.direct.json +++ b/acceptance/bundle/resources/jobs/update_single_node/out.plan_update.direct.json @@ -90,12 +90,12 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "trigger.periodic.unit": { @@ -106,7 +106,7 @@ }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/resources/model_serving_endpoints/basic/out.second-plan.direct.json b/acceptance/bundle/resources/model_serving_endpoints/basic/out.second-plan.direct.json index 4c3cf95148..274a9faceb 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/basic/out.second-plan.direct.json +++ b/acceptance/bundle/resources/model_serving_endpoints/basic/out.second-plan.direct.json @@ -31,7 +31,7 @@ "changes": { "description": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": "" }, "name": { @@ -43,7 +43,7 @@ }, "route_optimized": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": false } } diff --git a/acceptance/bundle/resources/model_serving_endpoints/recreate/catalog-name/out.second-plan.direct.json b/acceptance/bundle/resources/model_serving_endpoints/recreate/catalog-name/out.second-plan.direct.json index 40c5d4f670..1c9610dd2f 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/recreate/catalog-name/out.second-plan.direct.json +++ b/acceptance/bundle/resources/model_serving_endpoints/recreate/catalog-name/out.second-plan.direct.json @@ -75,7 +75,7 @@ }, "route_optimized": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": false } } diff --git a/acceptance/bundle/resources/model_serving_endpoints/recreate/name-change/out.second-plan.direct.json b/acceptance/bundle/resources/model_serving_endpoints/recreate/name-change/out.second-plan.direct.json index b46759e28f..63445a9561 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/recreate/name-change/out.second-plan.direct.json +++ b/acceptance/bundle/resources/model_serving_endpoints/recreate/name-change/out.second-plan.direct.json @@ -65,7 +65,7 @@ }, "route_optimized": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": false } } diff --git a/acceptance/bundle/resources/model_serving_endpoints/recreate/schema-name/out.second-plan.direct.json b/acceptance/bundle/resources/model_serving_endpoints/recreate/schema-name/out.second-plan.direct.json index d6b02af6a2..996ec9a09c 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/recreate/schema-name/out.second-plan.direct.json +++ b/acceptance/bundle/resources/model_serving_endpoints/recreate/schema-name/out.second-plan.direct.json @@ -75,7 +75,7 @@ }, "route_optimized": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": false } } diff --git a/acceptance/bundle/resources/model_serving_endpoints/recreate/table-prefix/out.second-plan.direct.json b/acceptance/bundle/resources/model_serving_endpoints/recreate/table-prefix/out.second-plan.direct.json index 5d971aa296..c57e2ac8bb 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/recreate/table-prefix/out.second-plan.direct.json +++ b/acceptance/bundle/resources/model_serving_endpoints/recreate/table-prefix/out.second-plan.direct.json @@ -75,7 +75,7 @@ }, "route_optimized": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": false } } diff --git a/acceptance/bundle/resources/model_serving_endpoints/update/ai-gateway/out.plan.direct.json b/acceptance/bundle/resources/model_serving_endpoints/update/ai-gateway/out.plan.direct.json index 7b88482bc6..b9228ef8c7 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/update/ai-gateway/out.plan.direct.json +++ b/acceptance/bundle/resources/model_serving_endpoints/update/ai-gateway/out.plan.direct.json @@ -74,7 +74,7 @@ }, "route_optimized": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": false } } diff --git a/acceptance/bundle/resources/model_serving_endpoints/update/both_gateway_and_tags/out.plan.direct.json b/acceptance/bundle/resources/model_serving_endpoints/update/both_gateway_and_tags/out.plan.direct.json index ddfcf8bb0c..6dd458695a 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/update/both_gateway_and_tags/out.plan.direct.json +++ b/acceptance/bundle/resources/model_serving_endpoints/update/both_gateway_and_tags/out.plan.direct.json @@ -86,7 +86,7 @@ }, "route_optimized": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": false }, "tags[0].value": { diff --git a/acceptance/bundle/resources/model_serving_endpoints/update/config/out.plan.direct.json b/acceptance/bundle/resources/model_serving_endpoints/update/config/out.plan.direct.json index 08517c1631..7b82abf6da 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/update/config/out.plan.direct.json +++ b/acceptance/bundle/resources/model_serving_endpoints/update/config/out.plan.direct.json @@ -64,7 +64,7 @@ }, "route_optimized": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": false } } diff --git a/acceptance/bundle/resources/model_serving_endpoints/update/email-notifications/out.plan.direct.json b/acceptance/bundle/resources/model_serving_endpoints/update/email-notifications/out.plan.direct.json index 7271c7bc88..26087d4780 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/update/email-notifications/out.plan.direct.json +++ b/acceptance/bundle/resources/model_serving_endpoints/update/email-notifications/out.plan.direct.json @@ -74,7 +74,7 @@ }, "route_optimized": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": false } } diff --git a/acceptance/bundle/resources/model_serving_endpoints/update/tags/out.plan.direct.json b/acceptance/bundle/resources/model_serving_endpoints/update/tags/out.plan.direct.json index 1ebc2142e2..75bcde8e90 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/update/tags/out.plan.direct.json +++ b/acceptance/bundle/resources/model_serving_endpoints/update/tags/out.plan.direct.json @@ -70,7 +70,7 @@ "changes": { "route_optimized": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": false }, "tags[0].value": { diff --git a/acceptance/bundle/resources/permissions/jobs/added_remotely/out.plan.direct.json b/acceptance/bundle/resources/permissions/jobs/added_remotely/out.plan.direct.json index fef3e79f36..941b23e5c8 100644 --- a/acceptance/bundle/resources/permissions/jobs/added_remotely/out.plan.direct.json +++ b/acceptance/bundle/resources/permissions/jobs/added_remotely/out.plan.direct.json @@ -41,12 +41,12 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='main'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='main'].run_if": { @@ -56,17 +56,17 @@ }, "tasks[task_key='main'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/resources/permissions/jobs/current_can_manage_run/out.plan.direct.txt b/acceptance/bundle/resources/permissions/jobs/current_can_manage_run/out.plan.direct.txt index cae78d0fd7..776d729dee 100644 --- a/acceptance/bundle/resources/permissions/jobs/current_can_manage_run/out.plan.direct.txt +++ b/acceptance/bundle/resources/permissions/jobs/current_can_manage_run/out.plan.direct.txt @@ -29,17 +29,17 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/resources/permissions/jobs/delete_one/local/out.plan_update.direct.json b/acceptance/bundle/resources/permissions/jobs/delete_one/local/out.plan_update.direct.json index 7a765f58bb..12cb612f48 100644 --- a/acceptance/bundle/resources/permissions/jobs/delete_one/local/out.plan_update.direct.json +++ b/acceptance/bundle/resources/permissions/jobs/delete_one/local/out.plan_update.direct.json @@ -41,12 +41,12 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='main'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='main'].run_if": { @@ -56,17 +56,17 @@ }, "tasks[task_key='main'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/resources/permissions/jobs/deleted_remotely/out.plan_restore.direct.json b/acceptance/bundle/resources/permissions/jobs/deleted_remotely/out.plan_restore.direct.json index 1017125fd7..f818786292 100644 --- a/acceptance/bundle/resources/permissions/jobs/deleted_remotely/out.plan_restore.direct.json +++ b/acceptance/bundle/resources/permissions/jobs/deleted_remotely/out.plan_restore.direct.json @@ -41,12 +41,12 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='main'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='main'].run_if": { @@ -56,17 +56,17 @@ }, "tasks[task_key='main'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/resources/permissions/jobs/update/out.plan_delete_all.direct.json b/acceptance/bundle/resources/permissions/jobs/update/out.plan_delete_all.direct.json index e78b2011f7..d8aa0e3c54 100644 --- a/acceptance/bundle/resources/permissions/jobs/update/out.plan_delete_all.direct.json +++ b/acceptance/bundle/resources/permissions/jobs/update/out.plan_delete_all.direct.json @@ -41,12 +41,12 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='main'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='main'].run_if": { @@ -56,17 +56,17 @@ }, "tasks[task_key='main'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/resources/permissions/jobs/update/out.plan_delete_one.direct.json b/acceptance/bundle/resources/permissions/jobs/update/out.plan_delete_one.direct.json index af12717d2c..82ecdbde2b 100644 --- a/acceptance/bundle/resources/permissions/jobs/update/out.plan_delete_one.direct.json +++ b/acceptance/bundle/resources/permissions/jobs/update/out.plan_delete_one.direct.json @@ -41,12 +41,12 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='main'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='main'].run_if": { @@ -56,17 +56,17 @@ }, "tasks[task_key='main'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/resources/permissions/jobs/update/out.plan_post_create.direct.json b/acceptance/bundle/resources/permissions/jobs/update/out.plan_post_create.direct.json index a3111e489f..ba7bd1fa01 100644 --- a/acceptance/bundle/resources/permissions/jobs/update/out.plan_post_create.direct.json +++ b/acceptance/bundle/resources/permissions/jobs/update/out.plan_post_create.direct.json @@ -41,12 +41,12 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='main'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='main'].run_if": { @@ -56,17 +56,17 @@ }, "tasks[task_key='main'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/resources/permissions/jobs/update/out.plan_restore.direct.json b/acceptance/bundle/resources/permissions/jobs/update/out.plan_restore.direct.json index 9b21a18751..2fd7740fa3 100644 --- a/acceptance/bundle/resources/permissions/jobs/update/out.plan_restore.direct.json +++ b/acceptance/bundle/resources/permissions/jobs/update/out.plan_restore.direct.json @@ -41,12 +41,12 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='main'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='main'].run_if": { @@ -56,17 +56,17 @@ }, "tasks[task_key='main'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/resources/permissions/jobs/update/out.plan_set_empty.direct.json b/acceptance/bundle/resources/permissions/jobs/update/out.plan_set_empty.direct.json index 1635c3a8d3..ff650d6c00 100644 --- a/acceptance/bundle/resources/permissions/jobs/update/out.plan_set_empty.direct.json +++ b/acceptance/bundle/resources/permissions/jobs/update/out.plan_set_empty.direct.json @@ -41,12 +41,12 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='main'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='main'].run_if": { @@ -56,17 +56,17 @@ }, "tasks[task_key='main'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/resources/permissions/jobs/update/out.plan_update.direct.json b/acceptance/bundle/resources/permissions/jobs/update/out.plan_update.direct.json index 9f35011653..6fdb4e8387 100644 --- a/acceptance/bundle/resources/permissions/jobs/update/out.plan_update.direct.json +++ b/acceptance/bundle/resources/permissions/jobs/update/out.plan_update.direct.json @@ -41,12 +41,12 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='main'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='main'].run_if": { @@ -56,17 +56,17 @@ }, "tasks[task_key='main'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/resources/postgres_branches/update_protected/out.plan.no_change.direct.json b/acceptance/bundle/resources/postgres_branches/update_protected/out.plan.no_change.direct.json index 44879ab7bb..99377fbc4c 100644 --- a/acceptance/bundle/resources/postgres_branches/update_protected/out.plan.no_change.direct.json +++ b/acceptance/bundle/resources/postgres_branches/update_protected/out.plan.no_change.direct.json @@ -25,7 +25,7 @@ "changes": { "is_protected": { "action": "skip", - "reason": "spec:input_only", + "reason": "empty", "old": false, "new": false }, diff --git a/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.no_change.direct.json b/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.no_change.direct.json index 7ba866fee3..20fb27d81d 100644 --- a/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.no_change.direct.json +++ b/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.no_change.direct.json @@ -47,7 +47,7 @@ }, "suspend_timeout_duration": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "old": "300s", "new": "300s" } diff --git a/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.restore.direct.json b/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.restore.direct.json index b5ab07d4a3..1ee4dbdb35 100644 --- a/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.restore.direct.json +++ b/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.restore.direct.json @@ -56,7 +56,7 @@ }, "suspend_timeout_duration": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "old": "300s", "new": "300s" } diff --git a/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.update.direct.json b/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.update.direct.json index 7b1bf7a45e..e00604c949 100644 --- a/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.update.direct.json +++ b/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.update.direct.json @@ -56,7 +56,7 @@ }, "suspend_timeout_duration": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "old": "300s", "new": "300s" } diff --git a/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.no_change.direct.json b/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.no_change.direct.json index 5538371eb7..fa31f42e67 100644 --- a/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.no_change.direct.json +++ b/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.no_change.direct.json @@ -42,7 +42,7 @@ }, "history_retention_duration": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "old": "604800s", "new": "604800s" }, diff --git a/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.restore.direct.json b/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.restore.direct.json index 4647dd0f7d..251db91378 100644 --- a/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.restore.direct.json +++ b/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.restore.direct.json @@ -54,7 +54,7 @@ }, "history_retention_duration": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "old": "604800s", "new": "604800s" }, diff --git a/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.update.direct.json b/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.update.direct.json index b9623f5d28..3ec6524331 100644 --- a/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.update.direct.json +++ b/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.update.direct.json @@ -54,7 +54,7 @@ }, "history_retention_duration": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "old": "604800s", "new": "604800s" }, diff --git a/acceptance/bundle/templates/default-python/classic/out.plan_after_deploy_dev.direct.json b/acceptance/bundle/templates/default-python/classic/out.plan_after_deploy_dev.direct.json index 3606609909..ab9cd13fe9 100644 --- a/acceptance/bundle/templates/default-python/classic/out.plan_after_deploy_dev.direct.json +++ b/acceptance/bundle/templates/default-python/classic/out.plan_after_deploy_dev.direct.json @@ -226,12 +226,12 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='notebook_task'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='notebook_task'].libraries[0].whl": { @@ -252,12 +252,12 @@ }, "tasks[task_key='notebook_task'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "tasks[task_key='python_wheel_task'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='python_wheel_task'].libraries[0].whl": { @@ -273,12 +273,12 @@ }, "tasks[task_key='python_wheel_task'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "tasks[task_key='refresh_pipeline'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='refresh_pipeline'].run_if": { @@ -288,17 +288,17 @@ }, "tasks[task_key='refresh_pipeline'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/templates/default-python/classic/out.plan_after_deploy_prod.direct.json b/acceptance/bundle/templates/default-python/classic/out.plan_after_deploy_prod.direct.json index 36be2ce2fe..fcb6c73404 100644 --- a/acceptance/bundle/templates/default-python/classic/out.plan_after_deploy_prod.direct.json +++ b/acceptance/bundle/templates/default-python/classic/out.plan_after_deploy_prod.direct.json @@ -125,12 +125,12 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='notebook_task'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='notebook_task'].notebook_task.source": { @@ -145,12 +145,12 @@ }, "tasks[task_key='notebook_task'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "tasks[task_key='python_wheel_task'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='python_wheel_task'].run_if": { @@ -160,12 +160,12 @@ }, "tasks[task_key='python_wheel_task'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "tasks[task_key='refresh_pipeline'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='refresh_pipeline'].run_if": { @@ -175,17 +175,17 @@ }, "tasks[task_key='refresh_pipeline'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/templates/default-python/serverless/out.plan_after_deploy_dev.direct.json b/acceptance/bundle/templates/default-python/serverless/out.plan_after_deploy_dev.direct.json index 715a86aa4e..29887dea16 100644 --- a/acceptance/bundle/templates/default-python/serverless/out.plan_after_deploy_dev.direct.json +++ b/acceptance/bundle/templates/default-python/serverless/out.plan_after_deploy_dev.direct.json @@ -114,12 +114,12 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='notebook_task'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='notebook_task'].notebook_task.source": { @@ -134,12 +134,12 @@ }, "tasks[task_key='notebook_task'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "tasks[task_key='python_wheel_task'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='python_wheel_task'].run_if": { @@ -149,12 +149,12 @@ }, "tasks[task_key='python_wheel_task'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "tasks[task_key='refresh_pipeline'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='refresh_pipeline'].run_if": { @@ -164,17 +164,17 @@ }, "tasks[task_key='refresh_pipeline'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/acceptance/bundle/templates/default-python/serverless/out.plan_after_deploy_prod.direct.json b/acceptance/bundle/templates/default-python/serverless/out.plan_after_deploy_prod.direct.json index 5e2bb6fd27..92a6cc7464 100644 --- a/acceptance/bundle/templates/default-python/serverless/out.plan_after_deploy_prod.direct.json +++ b/acceptance/bundle/templates/default-python/serverless/out.plan_after_deploy_prod.direct.json @@ -111,12 +111,12 @@ "changes": { "email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='notebook_task'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='notebook_task'].notebook_task.source": { @@ -131,12 +131,12 @@ }, "tasks[task_key='notebook_task'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "tasks[task_key='python_wheel_task'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='python_wheel_task'].run_if": { @@ -146,12 +146,12 @@ }, "tasks[task_key='python_wheel_task'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "tasks[task_key='refresh_pipeline'].email_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} }, "tasks[task_key='refresh_pipeline'].run_if": { @@ -161,17 +161,17 @@ }, "tasks[task_key='refresh_pipeline'].timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "timeout_seconds": { "action": "skip", - "reason": "server_side_default", + "reason": "empty", "remote": 0 }, "webhook_notifications": { "action": "skip", - "reason": "empty_struct", + "reason": "empty", "remote": {} } } diff --git a/bundle/deployplan/plan.go b/bundle/deployplan/plan.go index 22f7db34c7..7098e63383 100644 --- a/bundle/deployplan/plan.go +++ b/bundle/deployplan/plan.go @@ -101,9 +101,7 @@ const ( ReasonServerSideDefault = "server_side_default" ReasonAlias = "alias" ReasonRemoteAlreadySet = "remote_already_set" - ReasonEmptySlice = "empty_slice" - ReasonEmptyMap = "empty_map" - ReasonEmptyStruct = "empty_struct" + ReasonEmpty = "empty" ReasonCustom = "custom" // Special reason that results in removing this change from the plan diff --git a/bundle/direct/bundle_plan.go b/bundle/direct/bundle_plan.go index b6a60251e3..23cb3cd3ff 100644 --- a/bundle/direct/bundle_plan.go +++ b/bundle/direct/bundle_plan.go @@ -373,18 +373,9 @@ func addPerFieldActions(ctx context.Context, adapter *dresources.Adapter, change if structdiff.IsEqual(ch.Remote, ch.New) { ch.Action = deployplan.Skip ch.Reason = deployplan.ReasonRemoteAlreadySet - } else if isEmptySlice(ch.Old, ch.New, ch.Remote) { - // Empty slice in config should not cause drift when remote has values + } else if allEmpty(ch.Old, ch.New, ch.Remote) { ch.Action = deployplan.Skip - ch.Reason = deployplan.ReasonEmptySlice - } else if isEmptyMap(ch.Old, ch.New, ch.Remote) { - // Empty map in config should not cause drift when remote has values - ch.Action = deployplan.Skip - ch.Reason = deployplan.ReasonEmptyMap - } else if isEmptyStruct(ch.Old, ch.New, ch.Remote) { - // Empty struct in config should not cause drift when remote has values - ch.Action = deployplan.Skip - ch.Reason = deployplan.ReasonEmptyStruct + ch.Reason = deployplan.ReasonEmpty } else if reason, ok := shouldSkip(cfg, path, ch); ok { ch.Action = deployplan.Skip ch.Reason = reason @@ -470,66 +461,72 @@ func shouldUpdateOrRecreate(cfg *dresources.ResourceLifecycleConfig, path *struc return deployplan.Undefined, "" } -// Empty slices and maps cannot be represented in proto and because of that they cannot be represented -// by SDK's JSON encoder. However, they can be provided by users in the config and can be represented in -// Bundle struct (currently libs/structs and libs/dyn use ForceSendFields for maps and slices, unlike SDK). -// Thus we get permanent drift because we see that new config is [] but in the state it is omitted. -func isEmptySlice(values ...any) bool { +func allEmpty(values ...any) bool { for _, v := range values { if v == nil { continue } rv := reflect.ValueOf(v) - if rv.Kind() != reflect.Slice || rv.Len() != 0 { + + if !isEmpty(rv) { return false } + } return true } -func isEmptyMap(values ...any) bool { - for _, v := range values { - if v == nil { - continue - } - rv := reflect.ValueOf(v) - if rv.Kind() != reflect.Map || rv.Len() != 0 { - return false - } +func isEmpty(rv reflect.Value) bool { + // certain fields can change between "" and null when processed by backend. + // in some cases, e.g. model_serving_endpoints.descriptions those fields are also marked as recreate, so we ignore such cases + if rv.IsZero() { + return true } - return true -} -func isEmptyStruct(values ...any) bool { - for _, v := range values { - if v == nil { - continue - } - rv := reflect.ValueOf(v) + // Empty slices and maps cannot be represented in proto and because of that they cannot be represented + // by SDK's JSON encoder. However, they can be provided by users in the config and can be represented in + // Bundle struct (currently libs/structs and libs/dyn use ForceSendFields for maps and slices, unlike SDK). + // Thus we get permanent drift because we see that new config is [] but in the state it is omitted. - if rv.Kind() == reflect.Ptr { - if rv.IsNil() { - continue - } - rv = rv.Elem() - } + if rv.Kind() == reflect.Slice { + return rv.Len() == 0 + } + + if rv.Kind() == reflect.Map { + return rv.Len() == 0 + } + + // Certain structs come up set even if fully empty and and not set by client, e.g. email_notifications and webhook_notifications + if isEmptyStruct(rv) { + return true + } - if rv.Kind() != reflect.Struct { + return false +} + +func isEmptyStruct(rv reflect.Value) bool { + if rv.Kind() == reflect.Ptr { + if rv.IsNil() { return false } + rv = rv.Elem() + } - rt := rv.Type() - for i := range rt.NumField() { - field := rt.Field(i) + if rv.Kind() != reflect.Struct { + return false + } - if !field.IsExported() { - continue - } + rt := rv.Type() + for i := range rt.NumField() { + field := rt.Field(i) - fieldValue := rv.Field(i) - if !fieldValue.IsZero() { - return false - } + if !field.IsExported() { + continue + } + + fieldValue := rv.Field(i) + if !fieldValue.IsZero() { + return false } } return true