summaryrefslogtreecommitdiff
path: root/contrib/ast-db-manage/config/versions/d39508cb8d8_create_queue_rules.py
diff options
context:
space:
mode:
authorMatthew Jordan <mjordan@digium.com>2014-08-11 00:07:22 +0000
committerMatthew Jordan <mjordan@digium.com>2014-08-11 00:07:22 +0000
commit95871451f638203e8d76049221cbad0cbc930dbf (patch)
tree15a679edda1b3a7f77b42ce675ebe4f91572769a /contrib/ast-db-manage/config/versions/d39508cb8d8_create_queue_rules.py
parent8b411f710b9e972c9a22891d93d2f471197f22eb (diff)
app_queue: Add RealTime support for queue rules
This patch gives the optional ability to keep queue rules in RealTime. It is important to note that with this patch: (a) Queue rules in RealTime are only examined on module load/reload (b) Queue rules are loaded both from the queuerules.conf file as well as the RealTime backend To inform app_queue to examine RealTime for queue rules, a new setting has been added to queuerules.conf's general section "realtime_rules". RealTime queue rules will only be used when this setting is set to "yes". The schema for the database table supports a rule_name, time, min_penalty, and max_penalty columns. min_penalty and max_penalty can be relative, if a '-' or '+' literal is provided. Otherwise, the penalties are treated as constants. For example: rule_name, time, min_penalty, max_penalty 'default', '10', '20', '30' 'test2', '20', '30', '55' 'test2', '25', '-11', '+1111' 'test2', '400', '112', '333' 'test3', '0', '4564', '46546' 'test_rule', '40', '15', '50' which would result in : Rule: default - After 10 seconds, adjust QUEUE_MAX_PENALTY to 30 and adjust QUEUE_MIN_PENALTY to 20 Rule: test2 - After 20 seconds, adjust QUEUE_MAX_PENALTY to 55 and adjust QUEUE_MIN_PENALTY to 30 - After 25 seconds, adjust QUEUE_MAX_PENALTY by 1111 and adjust QUEUE_MIN_PENALTY by -11 - After 400 seconds, adjust QUEUE_MAX_PENALTY to 333 and adjust QUEUE_MIN_PENALTY to 112 Rule: test3 - After 0 seconds, adjust QUEUE_MAX_PENALTY to 46546 and adjust QUEUE_MIN_PENALTY to 4564 Rule: test_rule - After 40 seconds, adjust QUEUE_MAX_PENALTY to 50 and adjust QUEUE_MIN_PENALTY to 15 If you use RealTime, the queue rules will be always reloaded on a module reload, even if the underlying file did not change. With the option disabled, the rules will only be reloaded if the file was modified. Review: https://reviewboard.asterisk.org/r/3607/ ASTERISK-23823 #close Reported by: Michael K patches: app_queue.c_realtime_trunk.patch uploaded by Michael K (License 6621) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@420624 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'contrib/ast-db-manage/config/versions/d39508cb8d8_create_queue_rules.py')
-rw-r--r--contrib/ast-db-manage/config/versions/d39508cb8d8_create_queue_rules.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/contrib/ast-db-manage/config/versions/d39508cb8d8_create_queue_rules.py b/contrib/ast-db-manage/config/versions/d39508cb8d8_create_queue_rules.py
new file mode 100644
index 000000000..740972103
--- /dev/null
+++ b/contrib/ast-db-manage/config/versions/d39508cb8d8_create_queue_rules.py
@@ -0,0 +1,31 @@
+"""Create queue_rules
+
+Revision ID: d39508cb8d8
+Revises: 5139253c0423
+Create Date: 2014-08-10 17:27:32.973571
+
+"""
+
+# revision identifiers, used by Alembic.
+revision = 'd39508cb8d8'
+down_revision = '5139253c0423'
+
+from alembic import op
+import sqlalchemy as sa
+
+
+def upgrade():
+ op.create_table(
+ 'queue_rules',
+ sa.Column('rule_name', sa.String(80), nullable=False),
+ sa.Column('time', sa.String(32), nullable=False),
+ sa.Column('min_penalty', sa.String(32), nullable=False),
+ sa.Column('max_penalty', sa.String(32), nullable=False)
+ )
+
+
+def downgrade():
+ ########################## drop tables ###########################
+
+ op.drop_table('queue_rules')
+