Skip to content

Commit bc41a03

Browse files
pieternari-nz
andauthored
Add missing update_job function to JobsService (#541)
This is a merge of #457 and a regenerated copy of `service.py`. Co-authored-by: Ari Angelo <[email protected]>
1 parent 4197d5b commit bc41a03

File tree

2 files changed

+54
-0
lines changed

2 files changed

+54
-0
lines changed

databricks_cli/sdk/service.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,22 @@ def reset_job(self, job_id, new_settings, headers=None, version=None):
226226
'POST', '/jobs/reset', data=_data, headers=headers, version=version
227227
)
228228

229+
def update_job(
230+
self, job_id, new_settings=None, fields_to_remove=None, headers=None, version=None
231+
):
232+
_data = {}
233+
if job_id is not None:
234+
_data['job_id'] = job_id
235+
if new_settings is not None:
236+
_data['new_settings'] = new_settings
237+
if not isinstance(new_settings, dict):
238+
raise TypeError('Expected databricks.JobSettings() or dict for field new_settings')
239+
if fields_to_remove is not None:
240+
_data['fields_to_remove'] = fields_to_remove
241+
return self.client.perform_query(
242+
'POST', '/jobs/update', data=_data, headers=headers, version=version
243+
)
244+
229245
def delete_job(self, job_id, headers=None, version=None):
230246
_data = {}
231247
if job_id is not None:

tests/sdk/test_service.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,32 @@ def test_get_job(jobs_service):
5656
jobs_service.client.perform_query.assert_called_with('GET', '/jobs/get', data={'job_id': 1}, headers=None, version='2.1')
5757

5858

59+
@provide_conf
60+
def test_update_job(jobs_service):
61+
jobs_service.update_job(None)
62+
jobs_service.client.perform_query.assert_called_with('POST', '/jobs/update', data={}, headers=None, version=None)
63+
64+
jobs_service.update_job(1)
65+
jobs_service.client.perform_query.assert_called_with('POST', '/jobs/update', data={'job_id': 1}, headers=None, version=None)
66+
67+
jobs_service.update_job(1, version='2.1')
68+
jobs_service.client.perform_query.assert_called_with('POST', '/jobs/update', data={'job_id': 1}, headers=None, version='2.1')
69+
70+
# new_settings_argument
71+
new_settings = {
72+
"name": "job1",
73+
"tags": {"cost-center": "engineering","team": "jobs"}
74+
}
75+
jobs_service.update_job(1, version='2.1', new_settings=new_settings)
76+
jobs_service.client.perform_query.assert_called_with('POST', '/jobs/update', data={'job_id': 1, 'new_settings': new_settings}, headers=None, version='2.1')
77+
78+
# fields_to_remove argument
79+
fields_to_remove = ["libraries", "schedule"]
80+
jobs_service.update_job(1, version='2.1', fields_to_remove=fields_to_remove)
81+
jobs_service.client.perform_query.assert_called_with('POST', '/jobs/update', data={'job_id': 1, 'fields_to_remove': fields_to_remove}, headers=None, version='2.1')
82+
83+
84+
5985
@provide_conf
6086
def test_list_jobs(jobs_service):
6187
jobs_service.list_jobs()
@@ -129,6 +155,11 @@ def test_create_job(jobs_service):
129155
jobs_service.create_job(tasks=tasks, version='2.1')
130156
jobs_service.client.perform_query.assert_called_with('POST', '/jobs/create', data={'tasks': tasks}, headers=None, version='2.1')
131157

158+
tasks = {'task_key': '123', 'notebook_task': {'notebook_path': '/test'}}
159+
tags = {"cost-center": "engineering","team": "jobs"}
160+
jobs_service.create_job(tasks=tasks, tags= tags, version='2.1')
161+
jobs_service.client.perform_query.assert_called_with('POST', '/jobs/create', data={'tasks': tasks, 'tags': tags}, headers=None, version='2.1')
162+
132163

133164
@provide_conf
134165
def test_create_dbt_task(jobs_service):
@@ -190,6 +221,13 @@ def test_create_job_invalid_types(jobs_service):
190221
jobs_service.create_job(dbt_task=[])
191222

192223

224+
@provide_conf
225+
def test_update_job_invalid_types(jobs_service):
226+
with pytest.raises(TypeError, match='new_settings'):
227+
jobs_service.update_job(job_id=None, new_settings=[])
228+
229+
230+
193231
@provide_conf
194232
def test_submit_run_invalid_types(jobs_service):
195233
with pytest.raises(TypeError, match='new_cluster'):

0 commit comments

Comments
 (0)