def __init__(self, sqlFileName): self.DATAZILLA_DATABASE_NAME = os.environ["DATAZILLA_DATABASE_NAME"] self.DATAZILLA_DATABASE_USER = os.environ["DATAZILLA_DATABASE_USER"] self.DATAZILLA_DATABASE_PASSWORD = os.environ["DATAZILLA_DATABASE_PASSWORD"] self.DATAZILLA_DATABASE_HOST = os.environ["DATAZILLA_DATABASE_HOST"] self.DATAZILLA_DATABASE_PORT = os.environ["DATAZILLA_DATABASE_PORT"] self.sqlFileName = sqlFileName try: self.DEBUG = os.environ["DATAZILLA_DEBUG"] is not None except KeyError: self.DEBUG = False self.rootPath = os.path.dirname(os.path.abspath(__file__)) #### #Configuration of datasource hub: # 1 Build the datasource struct # 2 Add it to the BaseHub # 3 Instantiate a MySQL hub for all derived classes #### dataSource = { self.DATAZILLA_DATABASE_NAME : { "hub":"MySQL", "master_host":{"host":self.DATAZILLA_DATABASE_HOST, "user":self.DATAZILLA_DATABASE_USER, "passwd":self.DATAZILLA_DATABASE_PASSWORD}, "default_db":self.DATAZILLA_DATABASE_NAME, "procs": ["%s%s%s" % (self.rootPath, "/sql/", sqlFileName)] } } BaseHub.addDataSource(dataSource) self.dhub = MySQL(self.DATAZILLA_DATABASE_NAME)
def loadvars(): ##### #Only load the database sources once when the module #is imported ##### if not Model.projectHub: Model.DATAZILLA_DATABASE_NAME = settings.DATAZILLA_DATABASE_NAME Model.DATAZILLA_DATABASE_USER = settings.DATAZILLA_DATABASE_USER Model.DATAZILLA_DATABASE_PASSWORD = settings.DATAZILLA_DATABASE_PASSWORD Model.DATAZILLA_DATABASE_HOST = settings.DATAZILLA_DATABASE_HOST Model.DATAZILLA_DATABASE_PORT = settings.DATAZILLA_DATABASE_PORT #### #Configuration of datasource hub: # 1 Build the datasource struct # 2 Add it to the BaseHub # 3 Instantiate a MySQL hub for all derived classes #### Model.rootPath = os.path.dirname(os.path.abspath(__file__)) dataSource = { Model.DATAZILLA_DATABASE_NAME : { "hub":"MySQL", "master_host": { "host":Model.DATAZILLA_DATABASE_HOST, "user":Model.DATAZILLA_DATABASE_USER, "passwd":Model.DATAZILLA_DATABASE_PASSWORD }, "default_db":Model.DATAZILLA_DATABASE_NAME, "procs": ["%s/%s" % (Model.rootPath, 'sources.json')] } } BaseHub.addDataSource(dataSource) dzHub = MySQL(Model.DATAZILLA_DATABASE_NAME) Model.databaseSources = dzHub.execute(proc='sources.get_datasources', key_column='project', return_type='dict') Model.loadProjectHub(Model.databaseSources)
def loadProjectHub(databaseSources): for s in databaseSources: project = databaseSources[s]['project'] dataSource = { project : { "hub":"MySQL", "master_host":{"host":databaseSources[s]['host'], "user":Model.DATAZILLA_DATABASE_USER, "passwd":Model.DATAZILLA_DATABASE_PASSWORD}, "default_db":databaseSources[s]['name'], "procs": ["%s/%s" % (Model.rootPath, 'graphs.json')] } } BaseHub.addDataSource(dataSource) hub = MySQL( project ) Model.projectHub[ project ] = hub
def _get_dhub(self): dataSource = { self.project : { "hub":"MySQL", "master_host":{ "host": settings.CLOUDSQL_INSTANCE, # FIXME: CloudSQL has no users, but datasource requires it "user": "******", }, "default_db": settings.CLOUDSQL_DATABASE, "procs": [os.path.join(SQL_PATH, self.procs_file_name)] } } BaseHub.addDataSource(dataSource) try: return CloudSQL(self.project) except KeyError: raise KeyError("Failed to create CloudSQL")
def dhub(self, procs_file_name): """ Return a configured ``DataHub`` using the given SQL procs file. """ data_source = { self.key: { "hub": "MySQL", "master_host": { "host": self.host, "user": settings.DATAZILLA_DATABASE_USER, "passwd": settings.DATAZILLA_DATABASE_PASSWORD, }, "default_db": self.name, "procs": [os.path.join(SQL_PATH, procs_file_name)], } } BaseHub.addDataSource(data_source) # @@@ the datahub class should depend on self.type return MySQL(self.key)