68 **extra) |
68 **extra) |
69 try: |
69 try: |
70 cnx.logged_user = user |
70 cnx.logged_user = user |
71 except AttributeError: |
71 except AttributeError: |
72 # C object, __slots__ |
72 # C object, __slots__ |
73 from logilab.db import _SimpleConnectionWrapper |
73 from logilab.database import _SimpleConnectionWrapper |
74 cnx = _SimpleConnectionWrapper(cnx) |
74 cnx = _SimpleConnectionWrapper(cnx) |
75 cnx.logged_user = user |
75 cnx.logged_user = user |
76 return cnx |
76 return cnx |
77 |
77 |
78 def system_source_cnx(source, dbms_system_base=False, |
78 def system_source_cnx(source, dbms_system_base=False, |
81 defined in the given config. If <dbms_system_base> is True, |
81 defined in the given config. If <dbms_system_base> is True, |
82 connect to the dbms system database instead (for task such as |
82 connect to the dbms system database instead (for task such as |
83 create/drop the instance database) |
83 create/drop the instance database) |
84 """ |
84 """ |
85 if dbms_system_base: |
85 if dbms_system_base: |
86 from logilab.db import get_db_helper |
86 from logilab.database import get_db_helper |
87 system_db = get_db_helper(source['db-driver']).system_database() |
87 system_db = get_db_helper(source['db-driver']).system_database() |
88 return source_cnx(source, system_db, special_privs=special_privs, verbose=verbose) |
88 return source_cnx(source, system_db, special_privs=special_privs, verbose=verbose) |
89 return source_cnx(source, special_privs=special_privs, verbose=verbose) |
89 return source_cnx(source, special_privs=special_privs, verbose=verbose) |
90 |
90 |
91 def _db_sys_cnx(source, what, db=None, user=None, verbose=True): |
91 def _db_sys_cnx(source, what, db=None, user=None, verbose=True): |
92 """return a connection on the RDMS system table (to create/drop a user |
92 """return a connection on the RDMS system table (to create/drop a user |
93 or a database |
93 or a database |
94 """ |
94 """ |
95 import logilab.common as lgp |
95 import logilab.common as lgp |
96 from logilab.db import get_db_helper |
96 from logilab.database import get_db_helper |
97 lgp.USE_MX_DATETIME = False |
97 lgp.USE_MX_DATETIME = False |
98 special_privs = '' |
98 special_privs = '' |
99 driver = source['db-driver'] |
99 driver = source['db-driver'] |
100 helper = get_db_helper(driver) |
100 helper = get_db_helper(driver) |
101 if user is not None and helper.users_support: |
101 if user is not None and helper.users_support: |
208 cmdname = 'delete' |
208 cmdname = 'delete' |
209 cfgname = 'repository' |
209 cfgname = 'repository' |
210 |
210 |
211 def cleanup(self): |
211 def cleanup(self): |
212 """remove instance's configuration and database""" |
212 """remove instance's configuration and database""" |
213 from logilab.db import get_db_helper |
213 from logilab.database import get_db_helper |
214 source = self.config.sources()['system'] |
214 source = self.config.sources()['system'] |
215 dbname = source['db-name'] |
215 dbname = source['db-name'] |
216 helper = get_db_helper(source['db-driver']) |
216 helper = get_db_helper(source['db-driver']) |
217 if ASK.confirm('Delete database %s ?' % dbname): |
217 if ASK.confirm('Delete database %s ?' % dbname): |
218 user = source['db-user'] or None |
218 user = source['db-user'] or None |
291 } |
291 } |
292 ), |
292 ), |
293 ) |
293 ) |
294 def run(self, args): |
294 def run(self, args): |
295 """run the command with its specific arguments""" |
295 """run the command with its specific arguments""" |
296 from logilab.db import get_db_helper |
296 from logilab.database import get_db_helper |
297 verbose = self.get('verbose') |
297 verbose = self.get('verbose') |
298 automatic = self.get('automatic') |
298 automatic = self.get('automatic') |
299 appid = pop_arg(args, msg='No instance specified !') |
299 appid = pop_arg(args, msg='No instance specified !') |
300 config = ServerConfiguration.config_for(appid) |
300 config = ServerConfiguration.config_for(appid) |
301 source = config.sources()['system'] |
301 source = config.sources()['system'] |