Skip to content

Commit 27beade

Browse files
committed
use existing Ownership classes
1 parent 9c5d569 commit 27beade

File tree

3 files changed

+32
-23
lines changed

3 files changed

+32
-23
lines changed

src/databricks/labs/ucx/assessment/clusters.py

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,18 @@ class ClusterInfo:
4646
creator: str | None = None
4747
"""User-name of the creator of the cluster, if known."""
4848

49+
@classmethod
50+
def from_cluster_details(cls, details: ClusterDetails):
51+
return ClusterInfo(
52+
cluster_id=details.cluster_id if details.cluster_id else "",
53+
cluster_name=details.cluster_name,
54+
policy_id=details.policy_id,
55+
spark_version=details.spark_version,
56+
creator=details.creator_user_name or None,
57+
success=1,
58+
failures="[]",
59+
)
60+
4961

5062
class CheckClusterMixin(CheckInitScriptMixin):
5163
_ws: WorkspaceClient
@@ -152,7 +164,7 @@ def _crawl(self) -> Iterable[ClusterInfo]:
152164
all_clusters = list(self._ws.clusters.list())
153165
return list(self._assess_clusters(all_clusters))
154166

155-
def _assess_clusters(self, all_clusters):
167+
def _assess_clusters(self, all_clusters: Iterable[ClusterDetails]):
156168
for cluster in all_clusters:
157169
if cluster.cluster_source == ClusterSource.JOB:
158170
continue
@@ -162,15 +174,7 @@ def _assess_clusters(self, all_clusters):
162174
f"Cluster {cluster.cluster_id} have Unknown creator, it means that the original creator "
163175
f"has been deleted and should be re-created"
164176
)
165-
cluster_info = ClusterInfo(
166-
cluster_id=cluster.cluster_id if cluster.cluster_id else "",
167-
cluster_name=cluster.cluster_name,
168-
policy_id=cluster.policy_id,
169-
spark_version=cluster.spark_version,
170-
creator=creator,
171-
success=1,
172-
failures="[]",
173-
)
177+
cluster_info = ClusterInfo.from_cluster_details(cluster)
174178
failures = self._check_cluster_failures(cluster, "cluster")
175179
if len(failures) > 0:
176180
cluster_info.success = 0

src/databricks/labs/ucx/assessment/jobs.py

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
RunType,
2121
SparkJarTask,
2222
SqlTask,
23+
Job,
2324
)
2425

2526
from databricks.labs.ucx.assessment.clusters import CheckClusterMixin
@@ -40,6 +41,17 @@ class JobInfo:
4041
creator: str | None = None
4142
"""User-name of the creator of the pipeline, if known."""
4243

44+
@classmethod
45+
def from_job(cls, job: Job):
46+
job_name = job.settings.name if job.settings and job.settings.name else "Unknown"
47+
return JobInfo(
48+
job_id=str(job.job_id),
49+
success=1,
50+
failures="[]",
51+
job_name=job_name,
52+
creator=job.creator_user_name or None,
53+
)
54+
4355

4456
class JobsMixin:
4557
@classmethod
@@ -124,17 +136,7 @@ def _prepare(all_jobs) -> tuple[dict[int, set[str]], dict[int, JobInfo]]:
124136
job_settings = job.settings
125137
if not job_settings:
126138
continue
127-
job_name = job_settings.name
128-
if not job_name:
129-
job_name = "Unknown"
130-
131-
job_details[job.job_id] = JobInfo(
132-
job_id=str(job.job_id),
133-
job_name=job_name,
134-
creator=creator_user_name,
135-
success=1,
136-
failures="[]",
137-
)
139+
job_details[job.job_id] = JobInfo.from_job(job)
138140
return job_assessment, job_details
139141

140142
def _try_fetch(self) -> Iterable[JobInfo]:

src/databricks/labs/ucx/sequencing/sequencing.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
from databricks.sdk import WorkspaceClient
88
from databricks.sdk.service import jobs
99

10+
from databricks.labs.ucx.assessment.clusters import ClusterOwnership, ClusterInfo
11+
from databricks.labs.ucx.assessment.jobs import JobOwnership, JobInfo
12+
from databricks.labs.ucx.framework.owners import AdministratorLocator
1013
from databricks.labs.ucx.source_code.graph import DependencyGraph
1114

1215

@@ -93,7 +96,7 @@ def register_workflow_job(self, job: jobs.Job) -> MigrationNode:
9396
object_type="JOB",
9497
object_id=str(job.job_id),
9598
object_name=job_name,
96-
object_owner=job.creator_user_name or "<UNKNOWN>",
99+
object_owner=JobOwnership(self._admin_locator).owner_of(JobInfo.from_job(job)),
97100
)
98101
self._nodes[job_node.key] = job_node
99102
if job.settings and job.settings.job_clusters:
@@ -121,7 +124,7 @@ def register_cluster(self, cluster_id: str) -> MigrationNode:
121124
object_type="CLUSTER",
122125
object_id=cluster_id,
123126
object_name=object_name,
124-
object_owner=object_owner,
127+
object_owner=ClusterOwnership(self._admin_locator).owner_of(ClusterInfo.from_cluster_details(details)),
125128
)
126129
self._nodes[cluster_node.key] = cluster_node
127130
# TODO register warehouses and policies

0 commit comments

Comments
 (0)