mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 10:47:18 +00:00 
			
		
		
		
	alembic: Add missing queue and CDR table creation scripts.
* Added the queues and queue_members tables to the config alembic scripts. * Added the CDR table alembic creation script. The CDR table is more of an example for new setups since the actual table can be fully customized in cdr_adaptive_odbc.conf. (closes issue ASTERISK-23233) Reported by: jmls Review: https://reviewboard.asterisk.org/r/3227/ ........ Merged revisions 409885 from http://svn.asterisk.org/svn/asterisk/branches/12 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@409889 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		
							
								
								
									
										71
									
								
								contrib/ast-db-manage/cdr/env.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										71
									
								
								contrib/ast-db-manage/cdr/env.py
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,71 @@ | ||||
| from __future__ import with_statement | ||||
| from alembic import context | ||||
| from sqlalchemy import engine_from_config, pool | ||||
| from logging.config import fileConfig | ||||
|  | ||||
| # this is the Alembic Config object, which provides | ||||
| # access to the values within the .ini file in use. | ||||
| config = context.config | ||||
|  | ||||
| # Interpret the config file for Python logging. | ||||
| # This line sets up loggers basically. | ||||
| fileConfig(config.config_file_name) | ||||
|  | ||||
| # add your model's MetaData object here | ||||
| # for 'autogenerate' support | ||||
| # from myapp import mymodel | ||||
| # target_metadata = mymodel.Base.metadata | ||||
| target_metadata = None | ||||
|  | ||||
| # other values from the config, defined by the needs of env.py, | ||||
| # can be acquired: | ||||
| # my_important_option = config.get_main_option("my_important_option") | ||||
| # ... etc. | ||||
|  | ||||
| def run_migrations_offline(): | ||||
|     """Run migrations in 'offline' mode. | ||||
|  | ||||
|     This configures the context with just a URL | ||||
|     and not an Engine, though an Engine is acceptable | ||||
|     here as well.  By skipping the Engine creation | ||||
|     we don't even need a DBAPI to be available. | ||||
|  | ||||
|     Calls to context.execute() here emit the given string to the | ||||
|     script output. | ||||
|  | ||||
|     """ | ||||
|     url = config.get_main_option("sqlalchemy.url") | ||||
|     context.configure(url=url) | ||||
|  | ||||
|     with context.begin_transaction(): | ||||
|         context.run_migrations() | ||||
|  | ||||
| def run_migrations_online(): | ||||
|     """Run migrations in 'online' mode. | ||||
|  | ||||
|     In this scenario we need to create an Engine | ||||
|     and associate a connection with the context. | ||||
|  | ||||
|     """ | ||||
|     engine = engine_from_config( | ||||
|                 config.get_section(config.config_ini_section), | ||||
|                 prefix='sqlalchemy.', | ||||
|                 poolclass=pool.NullPool) | ||||
|  | ||||
|     connection = engine.connect() | ||||
|     context.configure( | ||||
|                 connection=connection, | ||||
|                 target_metadata=target_metadata | ||||
|                 ) | ||||
|  | ||||
|     try: | ||||
|         with context.begin_transaction(): | ||||
|             context.run_migrations() | ||||
|     finally: | ||||
|         connection.close() | ||||
|  | ||||
| if context.is_offline_mode(): | ||||
|     run_migrations_offline() | ||||
| else: | ||||
|     run_migrations_online() | ||||
|  | ||||
							
								
								
									
										22
									
								
								contrib/ast-db-manage/cdr/script.py.mako
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								contrib/ast-db-manage/cdr/script.py.mako
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | ||||
| """${message} | ||||
|  | ||||
| Revision ID: ${up_revision} | ||||
| Revises: ${down_revision} | ||||
| Create Date: ${create_date} | ||||
|  | ||||
| """ | ||||
|  | ||||
| # revision identifiers, used by Alembic. | ||||
| revision = ${repr(up_revision)} | ||||
| down_revision = ${repr(down_revision)} | ||||
|  | ||||
| from alembic import op | ||||
| import sqlalchemy as sa | ||||
| ${imports if imports else ""} | ||||
|  | ||||
| def upgrade(): | ||||
|     ${upgrades if upgrades else "pass"} | ||||
|  | ||||
|  | ||||
| def downgrade(): | ||||
|     ${downgrades if downgrades else "pass"} | ||||
							
								
								
									
										64
									
								
								contrib/ast-db-manage/cdr/versions/210693f3123d_create_cdr_table.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										64
									
								
								contrib/ast-db-manage/cdr/versions/210693f3123d_create_cdr_table.py
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,64 @@ | ||||
| # | ||||
| # Asterisk -- An open source telephony toolkit. | ||||
| # | ||||
| # Copyright (C) 2014, Richard Mudgett | ||||
| # | ||||
| # Richard Mudgett <rmudgett@digium.com> | ||||
| # | ||||
| # See http://www.asterisk.org for more information about | ||||
| # the Asterisk project. Please do not directly contact | ||||
| # any of the maintainers of this project for assistance; | ||||
| # the project provides a web site, mailing lists and IRC | ||||
| # channels for your use. | ||||
| # | ||||
| # This program is free software, distributed under the terms of | ||||
| # the GNU General Public License Version 2. See the LICENSE file | ||||
| # at the top of the source tree. | ||||
| # | ||||
|  | ||||
| """Create CDR table. | ||||
|  | ||||
| Revision ID: 210693f3123d | ||||
| Revises: None | ||||
| Create Date: 2014-02-14 15:11:43.867292 | ||||
|  | ||||
| """ | ||||
|  | ||||
| # revision identifiers, used by Alembic. | ||||
| revision = '210693f3123d' | ||||
| down_revision = None | ||||
|  | ||||
| from alembic import op | ||||
| import sqlalchemy as sa | ||||
|  | ||||
|  | ||||
| def upgrade(): | ||||
|     op.create_table( | ||||
|         'cdr', | ||||
|         sa.Column('accountcode', sa.String(20)), | ||||
|         sa.Column('src', sa.String(80)), | ||||
|         sa.Column('dst', sa.String(80)), | ||||
|         sa.Column('dcontext', sa.String(80)), | ||||
|         sa.Column('clid', sa.String(80)), | ||||
|         sa.Column('channel', sa.String(80)), | ||||
|         sa.Column('dstchannel', sa.String(80)), | ||||
|         sa.Column('lastapp', sa.String(80)), | ||||
|         sa.Column('lastdata', sa.String(80)), | ||||
|         sa.Column('start', sa.DateTime()), | ||||
|         sa.Column('answer', sa.DateTime()), | ||||
|         sa.Column('end', sa.DateTime()), | ||||
|         sa.Column('duration', sa.Integer), | ||||
|         sa.Column('billsec', sa.Integer), | ||||
|         sa.Column('disposition', sa.String(45)), | ||||
|         sa.Column('amaflags', sa.String(45)), | ||||
|         sa.Column('userfield', sa.String(256)), | ||||
|         sa.Column('uniqueid', sa.String(150)), | ||||
|         sa.Column('linkedid', sa.String(150)), | ||||
|         sa.Column('peeraccount', sa.String(20)), | ||||
|         sa.Column('sequence', sa.Integer) | ||||
|     ) | ||||
|  | ||||
|  | ||||
| def downgrade(): | ||||
|     op.drop_table('cdr') | ||||
|  | ||||
		Reference in New Issue
	
	Block a user