Skip to content

Commit

Permalink
chore: set UUID of examples DB (apache#15724)
Browse files Browse the repository at this point in the history
  • Loading branch information
betodealmeida committed Jul 27, 2021
1 parent b074f42 commit ff0d370
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 9 deletions.
21 changes: 14 additions & 7 deletions superset/commands/importers/v1/examples.py
Expand Up @@ -70,7 +70,7 @@ def run(self) -> None:
db.session.rollback()
raise self.import_error()

# pylint: disable=too-many-locals, arguments-differ
# pylint: disable=too-many-locals, arguments-differ, too-many-branches
@staticmethod
def _import(
session: Session,
Expand All @@ -86,16 +86,23 @@ def _import(
database_ids[str(database.uuid)] = database.id

# import datasets
# TODO (betodealmeida): once we have all examples being imported we can
# have a stable UUID for the database stored in the dataset YAML; for
# now we need to fetch the current ID.
examples_id = (
db.session.query(Database).filter_by(database_name="examples").one().id
# If database_uuid is not in the list of UUIDs it means that the examples
# database was created before its UUID was frozen, so it has a random UUID.
# We need to determine its ID so we can point the dataset to it.
examples_db = (
db.session.query(Database).filter_by(database_name="examples").first()
)
dataset_info: Dict[str, Dict[str, Any]] = {}
for file_name, config in configs.items():
if file_name.startswith("datasets/"):
config["database_id"] = examples_id
# find the ID of the corresponding database
if config["database_uuid"] not in database_ids:
if examples_db is None:
raise Exception("Cannot find examples database")
config["database_id"] = examples_db.id
else:
config["database_id"] = database_ids[config["database_uuid"]]

dataset = import_dataset(
session, config, overwrite=overwrite, force_data=force_data
)
Expand Down
4 changes: 4 additions & 0 deletions superset/constants.py
Expand Up @@ -21,6 +21,10 @@
NULL_STRING = "<NULL>"


# UUID for the examples database
EXAMPLES_DB_UUID = "a2dc77af-e654-49bb-b321-40f6b559a1ee"


class RouteMethod: # pylint: disable=too-few-public-methods
"""
Route methods are a FAB concept around ModelView and RestModelView
Expand Down
Expand Up @@ -73,4 +73,4 @@ columns:
description: null
python_date_format: null
version: 1.0.0
database_uuid: 566ca280-3da8-967e-4aa4-4b349218736a
database_uuid: a2dc77af-e654-49bb-b321-40f6b559a1ee
10 changes: 9 additions & 1 deletion superset/utils/core.py
Expand Up @@ -85,6 +85,7 @@

import _thread # pylint: disable=C0411
from superset.constants import (
EXAMPLES_DB_UUID,
EXTRA_FORM_DATA_APPEND_KEYS,
EXTRA_FORM_DATA_OVERRIDE_EXTRA_KEYS,
EXTRA_FORM_DATA_OVERRIDE_REGULAR_MAPPINGS,
Expand Down Expand Up @@ -1168,9 +1169,16 @@ def get_or_create_db(
db.session.query(models.Database).filter_by(database_name=database_name).first()
)

# databases with a fixed UUID
uuids = {
"examples": EXAMPLES_DB_UUID,
}

if not database and always_create:
logger.info("Creating database reference for %s", database_name)
database = models.Database(database_name=database_name)
database = models.Database(
database_name=database_name, uuid=uuids.get(database_name)
)
db.session.add(database)

if database:
Expand Down

0 comments on commit ff0d370

Please sign in to comment.