44from click import ClickException
55
66from sqlalchemy import create_engine , MetaData
7- from sqlalchemy .orm import sessionmaker , Session
7+ from sqlalchemy .orm import sessionmaker
88from sqlalchemy_utils import database_exists
99
10+ from process_tracker .logging import console
11+
1012from process_tracker .models .actor import Actor
1113from process_tracker .models .extract import ExtractStatus
1214from process_tracker .models .process import ErrorType , ProcessType , ProcessStatus
@@ -28,9 +30,9 @@ def __init__(self):
2830 Need to initialize the data store connection when starting to access the data store.
2931 """
3032 self .logger = logging .getLogger (__name__ )
31- self .logger .setLevel (os .environ .get ('log_level' , 'DEBUG' ))
3233
3334 data_store = self .verify_and_connect_to_data_store ()
35+ self .engine = data_store ['engine' ]
3436 self .session = data_store ['session' ]
3537 self .meta = data_store ['meta' ]
3638 self .data_store_type = data_store ['data_store_type' ]
@@ -51,10 +53,10 @@ def get_or_create_item(self, model, create=True, **kwargs):
5153 """
5254
5355 instance = self .session .query (model ).filter_by (** kwargs ).first ()
56+
5457 if instance is None :
55- self .logger .info ('instance not found create = ' + str (create )+ '\n ' )
5658 if create :
57- self .logger .info ('creating instance\n ' )
59+ self .logger .info ('creating instance' )
5860 instance = model (** kwargs )
5961 try :
6062 self .session .add (instance )
@@ -77,13 +79,18 @@ def initialize_data_store(self, overwrite=False):
7779 :param overwrite: Only use if data store needs to be wiped and recreated. Default is False.
7880 :type overwrite: bool
7981 """
80-
82+ self . logger . info ( 'Attempting to initialize Process Tracker data store.' )
8183 if overwrite :
82- self .logger .info ('ALERT - DATA STORE TO BE OVERWRITTEN - ALL DATA WILL BE LOST' )
84+ self .logger .warn ('ALERT - DATA STORE TO BE OVERWRITTEN - ALL DATA WILL BE LOST' )
8385 self .meta .reflect ()
84- self .meta .drop_all ()
86+ self .meta .drop_all (bind = self .engine )
87+ self .session .commit ()
8588
86- version = self .session .query (System ).filter (System .session_key == 'version' ).first ()
89+ version = None
90+ else :
91+
92+ self .logger .debug ('Obtaining system version, if exists.' )
93+ version = self .session .query (System ).filter (System .system_key == 'version' ).first ()
8794
8895 if version is None :
8996
@@ -94,30 +101,38 @@ def initialize_data_store(self, overwrite=False):
94101
95102 self .logger .info ('Adding error types...' )
96103 for error_type in preload_error_types :
104+ self .logger .info ('Adding %s' % error_type )
97105 self .session .add (ErrorType (error_type_name = error_type ))
98106 self .session .commit ()
99107
100108 self .logger .info ('Adding extract status types...' )
101109 for extract_status_type in preload_extract_status_types :
110+ self .logger .info ('Adding %s' % extract_status_type )
102111 self .session .add (ExtractStatus (extract_status_name = extract_status_type ))
103112 self .session .commit ()
104113
105114 self .logger .info ('Adding process status types...' )
106115 for process_status_type in preload_process_status_types :
116+ self .logger .info ('Adding %s' % process_status_type )
107117 self .session .add (ProcessStatus (process_status_name = process_status_type ))
108118 self .session .commit ()
109119
110120 self .logger .info ('Adding process types...' )
111121 for process_type in preload_process_types :
122+ self .logger .info ('Adding %s' % process_type )
112123 self .session .add (ProcessType (process_type_name = process_type ))
113124 self .session .commit ()
114125
115126 self .logger .info ('Adding system keys...' )
116127 for system_key , value in preload_system_keys :
128+ self .logger .info ('Adding %s' % system_key )
117129 self .session .add (System (system_key = system_key , system_value = value ))
118130 self .session .commit ()
119131 else :
120- self .logger .info ('It appears the system has already been initialized.' )
132+ self .logger .error ('It appears the system has already been setup.' )
133+ ClickException ('It appears the system has already been setup.' ).show ()
134+
135+ self .logger .debug ('Finished the initialization check.' )
121136
122137 def topic_creator (self , topic , name ):
123138 """
@@ -176,6 +191,7 @@ def topic_deleter(self, topic, name):
176191 self .logger .info ('Attempting to delete %s item %s' % (topic , name ))
177192
178193 if self .topic_validator (topic = topic ):
194+
179195 if topic == 'actor' :
180196 item_delete = True
181197 self .session .query (Actor ).filter (Actor .actor_name == name ).delete ()
@@ -300,7 +316,6 @@ def topic_validator(self, topic):
300316 self .logger .error ('topic type is invalid. Please use one of the following: %s' % valid_topics .keys ())
301317 return False
302318
303-
304319 def verify_and_connect_to_data_store (self ):
305320 """
306321 Based on environment variables, create the data store connection engine.
@@ -372,6 +387,7 @@ def verify_and_connect_to_data_store(self):
372387 meta = ''
373388
374389 data_store = dict ()
390+ data_store ['engine' ] = engine
375391 data_store ['session' ] = session
376392 data_store ['meta' ] = meta
377393 data_store ['data_store_type' ] = data_store_type
0 commit comments