migrate icon indicating copy to clipboard operation
migrate copied to clipboard

A job without an owner fails the import pipeline

Open petrcv-db opened this issue 3 years ago • 1 comments

Apparently, in a legacy workspace it's possible to have a job with no owner:

{
    "object_id": "/jobs/803387",
    "object_type": "job",
    "access_control_list": [
        {
            "group_name": "admins",
            "all_permissions": [
                {
                    "permission_level": "CAN_MANAGE",
                    "inherited": true,
                    "inherited_from_object": [
                        "/jobs/"
                    ]
                }
            ]
        }
    ],
    "http_status_code": 200,
    "job_name": "my job 7"
}

Trying to import the job acl fails with the error:

2022-04-27,08:29:53;DEBUG;https://xxx-play-ground.cloud.databricks.com:443 "PATCH /api/2.0/preview/permissions/jobs/890131015122789 HTTP/1.1" 500 None
Traceback (most recent call last):
  File "migration_pipeline.py", line 328, in <module>
    main()
  File "migration_pipeline.py", line 324, in main
    pipeline.run()
  File "/home/ubuntu/migrate/pipeline/pipeline.py", line 64, in run
    future.result()
  File "/usr/lib/python3.8/concurrent/futures/_base.py", line 444, in result
    return self.__get_result()
  File "/usr/lib/python3.8/concurrent/futures/_base.py", line 389, in __get_result
    raise self._exception
  File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/home/ubuntu/migrate/pipeline/pipeline.py", line 73, in _run_task
    task.run()
  File "/home/ubuntu/migrate/tasks/tasks.py", line 274, in run
    jobs_c.import_job_configs()
  File "/home/ubuntu/migrate/dbclient/JobsClient.py", line 202, in import_job_configs
    acl_resp = self.patch(api, acl_create_args)
  File "/home/ubuntu/migrate/dbclient/dbclient.py", line 265, in patch
    return self.http_req('patch', endpoint, json_params, version, print_json)
  File "/home/ubuntu/migrate/dbclient/dbclient.py", line 243, in http_req
    raise Exception("Error: {0} request failed with code {1}\n{2}".format(http_type,
Exception: Error: patch request failed with code 500
{"error_code":"INTERNAL_ERROR","message":"The job must have exactly one owner."}

I guess if we have a job like this, it should use the current user (admin) as a job owner.

petrcv-db avatar Apr 27 '22 11:04 petrcv-db

@gregwood-db could you take a look at this PR?

mrchristine avatar Jul 07 '22 14:07 mrchristine