It looks like the entire create_dashboard method from here should be converted to a method on DashboardMetadata:
def as_lakeview(self) -> Dashboard:
self.validate()
datasets = self.get_datasets() # make get_datasets private
layouts = self.get_layouts() # make get_layouts private
page = Page(
name=dashboard_metadata.display_name,
display_name=dashboard_metadata.display_name,
layout=layouts,
)
return Dashboard(datasets=datasets, pages=[page])