diff options
Diffstat (limited to 'provisioning-scripts.lua')
-rwxr-xr-x | provisioning-scripts.lua | 403 |
1 files changed, 403 insertions, 0 deletions
diff --git a/provisioning-scripts.lua b/provisioning-scripts.lua new file mode 100755 index 0000000..ed953dc --- /dev/null +++ b/provisioning-scripts.lua @@ -0,0 +1,403 @@ +module (..., package.seeall) + +-- if a table_creation_script does not create the named table or throw an exception then you will get an infinite loop, so be careful + +-- List of each device that we manage +provisioning_devices = { + "CREATE TABLE provisioning_devices (device_id SERIAL PRIMARY KEY, name VARCHAR(255) UNIQUE, label VARCHAR(255))", + "CREATE INDEX devices_name_idx ON provisioning_devices (name)", +} + +-- Multi-to-multi mapping of devices to classes +devices_to_classes = { + "CREATE TABLE devices_to_classes (device_id INTEGER REFERENCES provisioning_devices, class_id INTEGER REFERENCES provisioning_classes)", + "CREATE INDEX d2c_device_idx ON devices_to_classes (device_id)", + "CREATE INDEX d2c_class_idx ON devices_to_classes (class_id)", + -- Need to enforce that devices do not contain more than one class in the same class group (using triggers) + -- Theoretically should also check on updates and updates of classes, but not going to bother + "CREATE OR REPLACE FUNCTION check_class_groups() RETURNS TRIGGER AS $$ \ + BEGIN \ + PERFORM * from provisioning_classes join devices_to_classes using(class_id) where device_id=NEW.device_id and class_group_id=(select class_group_id from provisioning_classes where class_id=NEW.class_id); \ + IF FOUND THEN \ + RAISE EXCEPTION 'Device cannot have multiple classes within the same class group'; \ + END IF; \ + RETURN NEW; \ + END; \ + $$ LANGUAGE plpgsql", + "CREATE TRIGGER check_class_trigger BEFORE INSERT ON devices_to_classes FOR EACH ROW EXECUTE PROCEDURE check_class_groups()", +} + +-- List of different class groups +provisioning_class_groups = { + "CREATE TABLE provisioning_class_groups (class_group_id SERIAL PRIMARY KEY, name VARCHAR(255) UNIQUE, label VARCHAR(255) UNIQUE, seq INTEGER)", + "INSERT INTO provisioning_class_groups VALUES(default, 'device', 'Device Model', '1')", + "INSERT INTO provisioning_class_groups VALUES(default, 'services', 'Services', '2')", +} + +-- List of different device classes +provisioning_classes = { + "CREATE TABLE provisioning_classes (class_id SERIAL PRIMARY KEY, class_group_id INTEGER REFERENCES provisioning_class_groups, label VARCHAR(255), seq INTEGER)", + "CREATE INDEX classes_group_idx ON provisioning_classes (class_group_id)", + "CREATE INDEX classes_label_idx ON provisioning_classes (label)", + -- Need to enforce that group/label combo is unique + "CREATE UNIQUE INDEX classes_group_label_idx ON provisioning_classes (class_group_id, label)", + "INSERT INTO provisioning_classes VALUES(default, (SELECT class_group_id FROM provisioning_class_groups WHERE name='device'), 'Polycom SoundStation IP 6000 SIP', '1')", + "INSERT INTO provisioning_classes VALUES(default, (SELECT class_group_id FROM provisioning_class_groups WHERE name='device'), 'Polycom SoundPoint IP 321 SIP', '2')", + "INSERT INTO provisioning_classes VALUES(default, (SELECT class_group_id FROM provisioning_class_groups WHERE name='device'), 'Polycom SoundPoint IP 650 SIP', '3')", + "INSERT INTO provisioning_classes VALUES(default, (SELECT class_group_id FROM provisioning_class_groups WHERE name='device'), 'Linksys Internet Phone Adapter PAP2T', '4')", + "INSERT INTO provisioning_classes VALUES(default, (SELECT class_group_id FROM provisioning_class_groups WHERE name='services'), 'Standard Phone', '1')", + "INSERT INTO provisioning_classes VALUES(default, (SELECT class_group_id FROM provisioning_class_groups WHERE name='services'), 'Standard Phone without Call Forwarding', '2')", + "INSERT INTO provisioning_classes VALUES(default, (SELECT class_group_id FROM provisioning_class_groups WHERE name='services'), 'Hotline', '3')", +} + +-- Multi-to-multi mapping of classes to parameter groups +classes_to_param_groups = { + "CREATE TABLE classes_to_param_groups (class_id INTEGER REFERENCES provisioning_classes, group_id INTEGER REFERENCES provisioning_groups)", + "CREATE INDEX c2g_class_idx ON classes_to_param_groups (class_id)", + "CREATE INDEX c2g_group_idx ON classes_to_param_groups (group_id)", + -- Need to enforce that classes do not contain more than one parameter group with same name (using triggers) + -- Theoretically should also check on updates and updates of groups, but not going to bother + "CREATE OR REPLACE FUNCTION check_group_names() RETURNS TRIGGER AS $$ \ + BEGIN \ + PERFORM * from provisioning_groups join classes_to_param_groups using(group_id) where class_id=NEW.class_id and name=(select name from provisioning_groups where group_id=NEW.group_id); \ + IF FOUND THEN \ + RAISE EXCEPTION 'Classes cannot have multiple parameter groups with the same name'; \ + END IF; \ + RETURN NEW; \ + END; \ + $$ LANGUAGE plpgsql", + "CREATE TRIGGER check_group_trigger BEFORE INSERT ON classes_to_param_groups FOR EACH ROW EXECUTE PROCEDURE check_group_names()", + -- Devices + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundStation IP 6000 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 1'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundStation IP 6000 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Polycom Device'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 321 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 1'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 321 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 2'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 321 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Polycom Device'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 1'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 2'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 3'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 4'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 5'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 6'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 7'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 8'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 9'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 10'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 11'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 12'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 13'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 14'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 15'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 16'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 17'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 18'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 19'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 20'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 21'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 22'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 23'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 24'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 25'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 26'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 27'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 28'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 29'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 30'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 31'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 32'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 33'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 34'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Polycom Device'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Linksys Internet Phone Adapter PAP2T'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 1'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Linksys Internet Phone Adapter PAP2T'), (SELECT group_id FROM provisioning_groups WHERE label='Linksys Device'))", + -- Services + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Standard Phone'), (SELECT group_id FROM provisioning_groups WHERE label='Standard Phone'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Standard Phone without Call Forwarding'), (SELECT group_id FROM provisioning_groups WHERE label='Standard Phone without Call Forwarding'))", + "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Hotline'), (SELECT group_id FROM provisioning_groups WHERE label='Hotline'))", +} + +-- List of different parameter groups +provisioning_groups = { + "CREATE TABLE provisioning_groups (group_id SERIAL PRIMARY KEY, name VARCHAR(255), label VARCHAR(255) UNIQUE, seq INTEGER)", + "CREATE INDEX groups_name_idx ON provisioning_groups (name)", + "INSERT INTO provisioning_groups VALUES(default, 'device', 'Linksys Device', '1')", + "INSERT INTO provisioning_groups VALUES(default, 'device', 'Polycom Device', '1')", + "INSERT INTO provisioning_groups VALUES(default, 'reg1', 'Registration 1', '10')", + "INSERT INTO provisioning_groups VALUES(default, 'reg2', 'Registration 2', '10')", + "INSERT INTO provisioning_groups VALUES(default, 'reg3', 'Registration 3', '10')", + "INSERT INTO provisioning_groups VALUES(default, 'reg4', 'Registration 4', '10')", + "INSERT INTO provisioning_groups VALUES(default, 'reg5', 'Registration 5', '10')", + "INSERT INTO provisioning_groups VALUES(default, 'reg6', 'Registration 6', '10')", + "INSERT INTO provisioning_groups VALUES(default, 'reg7', 'Registration 7', '10')", + "INSERT INTO provisioning_groups VALUES(default, 'reg8', 'Registration 8', '10')", + "INSERT INTO provisioning_groups VALUES(default, 'reg9', 'Registration 9', '10')", + "INSERT INTO provisioning_groups VALUES(default, 'reg10', 'Registration 10', '11')", + "INSERT INTO provisioning_groups VALUES(default, 'reg11', 'Registration 11', '11')", + "INSERT INTO provisioning_groups VALUES(default, 'reg12', 'Registration 12', '11')", + "INSERT INTO provisioning_groups VALUES(default, 'reg13', 'Registration 13', '11')", + "INSERT INTO provisioning_groups VALUES(default, 'reg14', 'Registration 14', '11')", + "INSERT INTO provisioning_groups VALUES(default, 'reg15', 'Registration 15', '11')", + "INSERT INTO provisioning_groups VALUES(default, 'reg16', 'Registration 16', '11')", + "INSERT INTO provisioning_groups VALUES(default, 'reg17', 'Registration 17', '11')", + "INSERT INTO provisioning_groups VALUES(default, 'reg18', 'Registration 18', '11')", + "INSERT INTO provisioning_groups VALUES(default, 'reg19', 'Registration 19', '11')", + "INSERT INTO provisioning_groups VALUES(default, 'reg20', 'Registration 20', '12')", + "INSERT INTO provisioning_groups VALUES(default, 'reg21', 'Registration 21', '12')", + "INSERT INTO provisioning_groups VALUES(default, 'reg22', 'Registration 22', '12')", + "INSERT INTO provisioning_groups VALUES(default, 'reg23', 'Registration 23', '12')", + "INSERT INTO provisioning_groups VALUES(default, 'reg24', 'Registration 24', '12')", + "INSERT INTO provisioning_groups VALUES(default, 'reg25', 'Registration 25', '12')", + "INSERT INTO provisioning_groups VALUES(default, 'reg26', 'Registration 26', '12')", + "INSERT INTO provisioning_groups VALUES(default, 'reg27', 'Registration 27', '12')", + "INSERT INTO provisioning_groups VALUES(default, 'reg28', 'Registration 28', '12')", + "INSERT INTO provisioning_groups VALUES(default, 'reg29', 'Registration 29', '12')", + "INSERT INTO provisioning_groups VALUES(default, 'reg30', 'Registration 30', '13')", + "INSERT INTO provisioning_groups VALUES(default, 'reg31', 'Registration 31', '13')", + "INSERT INTO provisioning_groups VALUES(default, 'reg32', 'Registration 32', '13')", + "INSERT INTO provisioning_groups VALUES(default, 'reg33', 'Registration 33', '13')", + "INSERT INTO provisioning_groups VALUES(default, 'reg34', 'Registration 34', '13')", + "INSERT INTO provisioning_groups VALUES(default, 'services', 'Standard Phone', '21')", + "INSERT INTO provisioning_groups VALUES(default, 'services', 'Standard Phone without Call Forwarding', '22')", + "INSERT INTO provisioning_groups VALUES(default, 'services', 'Hotline', '23')", +} + +-- Multi-to-multi mapping of parameter groups to parameters +param_groups_to_params = { + "CREATE TABLE param_groups_to_params (group_id INTEGER REFERENCES provisioning_groups, param_id INTEGER REFERENCES provisioning_params, value VARCHAR(255), editable BOOLEAN)", + "CREATE INDEX g2p_group_idx ON param_groups_to_params (group_id)", + "CREATE INDEX g2p_param_idx ON param_groups_to_params (param_id)", + "CREATE INDEX g2p_editable_idx ON param_groups_to_params (editable)", + "CREATE UNIQUE INDEX g2p_group_param_idx ON param_groups_to_params (group_id, param_id)", + -- Device + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Linksys ATA Device'), (SELECT param_id FROM provisioning_params WHERE name='template'), '/etc/provisioning/templates/linksysata-template.lua', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Polycom Device'), (SELECT param_id FROM provisioning_params WHERE name='template'), '/etc/provisioning/templates/polycom-template.lua', false)", + -- Registrations + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 1'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 1'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 1'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 1'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 1'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 2'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 2'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 2'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 2'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 2'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 3'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 3'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 3'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 3'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 3'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 4'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 4'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 4'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 4'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 4'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 5'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 5'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 5'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 5'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 5'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 6'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 6'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 6'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 6'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 6'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 7'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 7'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 7'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 7'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 7'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 8'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 8'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 8'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 8'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 8'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 9'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 9'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 9'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 9'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 9'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 10'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 10'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 10'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 10'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 10'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 11'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 11'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 11'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 11'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 11'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 12'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 12'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 12'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 12'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 12'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 13'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 13'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 13'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 13'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 13'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 14'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 14'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 14'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 14'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 14'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 15'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 15'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 15'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 15'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 15'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 16'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 16'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 16'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 16'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 16'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 17'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 17'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 17'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 17'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 17'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 18'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 18'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 18'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 18'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 18'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 19'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 19'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 19'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 19'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 19'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 20'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 20'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 20'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 20'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 20'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 21'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 21'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 21'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 21'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 21'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 22'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 22'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 22'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 22'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 22'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 23'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 23'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 23'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 23'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 23'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 24'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 24'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 24'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 24'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 24'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 25'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 25'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 25'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 25'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 25'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 26'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 26'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 26'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 26'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 26'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 27'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 27'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 27'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 27'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 27'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 28'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 28'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 28'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 28'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 28'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 29'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 29'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 29'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 29'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 29'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 30'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 30'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 30'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 30'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 30'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 31'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 31'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 31'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 31'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 31'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 32'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 32'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 32'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 32'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 32'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 33'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 33'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 33'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 33'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 33'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 34'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 34'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 34'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 34'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 34'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)", + -- Services + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Standard Phone'), (SELECT param_id FROM provisioning_params WHERE name='forwarding'), 'true', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Standard Phone'), (SELECT param_id FROM provisioning_params WHERE name='hotlineenable'), 'false', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Standard Phone'), (SELECT param_id FROM provisioning_params WHERE name='hotlinedestination'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Standard Phone without Call Forwarding'), (SELECT param_id FROM provisioning_params WHERE name='forwarding'), 'false', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Standard Phone without Call Forwarding'), (SELECT param_id FROM provisioning_params WHERE name='hotlineenable'), 'false', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Standard Phone without Call Forwarding'), (SELECT param_id FROM provisioning_params WHERE name='hotlinedestination'), '', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Hotline'), (SELECT param_id FROM provisioning_params WHERE name='forwarding'), 'false', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Hotline'), (SELECT param_id FROM provisioning_params WHERE name='hotlineenable'), 'true', false)", + "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Hotline'), (SELECT param_id FROM provisioning_params WHERE name='hotlinedestination'), '', true)", +} + +-- List of each parameter used in any way for any device - mostly for how to display +provisioning_params = { + "CREATE TABLE provisioning_params (param_id SERIAL PRIMARY KEY, name VARCHAR(255) UNIQUE, type VARCHAR(255), label VARCHAR(255), descr VARCHAR(255), value VARCHAR(255), seq INTEGER, regexp VARCHAR(255))", + "CREATE INDEX params_name_idx ON provisioning_params (name)", + "INSERT INTO provisioning_params VALUES(default, 'template', 'select', 'Template', '', '', '0', '')", + "INSERT INTO provisioning_params VALUES(default, 'extension', 'text', 'Extension', '', '', '1', '^%d*$')", + "INSERT INTO provisioning_params VALUES(default, 'password', 'text', 'Password', '', '', '2', '')", + "INSERT INTO provisioning_params VALUES(default, 'forwardnoanswer', 'text', 'Forward on No-answer Destination', 'Callers will be transferred to this extension when you don''t answer after 20 seconds. Blank disables.', '', '3', '')", + "INSERT INTO provisioning_params VALUES(default, 'forwardbusy', 'text', 'Forward on Busy Destination', 'Callers will be transferred to this extension when the line is busy. Blank disables.', '', '4', '')", + "INSERT INTO provisioning_params VALUES(default, 'forwardall', 'text', 'Forward All Calls Destination', 'All calls will be transferred to this extension. Blank disables.', '', '5', '')", + "INSERT INTO provisioning_params VALUES(default, 'forwarding', 'boolean', 'Forwarding Enable', '', 'true', '11', '')", + "INSERT INTO provisioning_params VALUES(default, 'hotlineenable', 'boolean', 'Hotline Enable', '', 'false', '12', '')", + "INSERT INTO provisioning_params VALUES(default, 'hotlinedestination', 'text', 'Hotline Destination', '', '', '13', '')", +} + +-- All of the (non-default) parameter values for all devices are stored here +provisioning_values = { + -- device_id is a device id from provisioning_devices and param_id is a param id from provisioning_params + "CREATE TABLE provisioning_values (device_id INTEGER REFERENCES provisioning_devices, group_name VARCHAR(255), param_id INTEGER REFERENCES provisioning_params, value VARCHAR(255))", + "CREATE INDEX values_device_idx ON provisioning_values (device_id)", + "CREATE INDEX values_group_idx ON provisioning_values (group_name)", + "CREATE INDEX values_param_idx ON provisioning_values (param_id)", + "CREATE UNIQUE INDEX values_device_group_param_idx ON provisioning_values (device_id, group_name, param_id)", + -- Need to enforce that group_name is a valid name in provisioning_groups (cannot use foreign key because name is not unique in provisioning_groups) + -- Better yet, we'll check for a valid combination of device, group, and param (using triggers) + -- Theoretically should also check on updates and updates of devices, groups, or parameters, but not going to bother + "CREATE OR REPLACE FUNCTION check_valid_param() RETURNS TRIGGER AS $$ \ + BEGIN \ + PERFORM * from devices_to_classes d join provisioning_classes using(class_id) join classes_to_param_groups using(class_id) join provisioning_groups g using(group_id) join param_groups_to_params p using(group_id) where d.device_id=NEW.device_id and g.name=NEW.group_name and p.param_id=NEW.param_id; \ + IF NOT FOUND THEN \ + RAISE EXCEPTION 'Invalid combination of device, group, and parameter'; \ + END IF; \ + RETURN NEW; \ + END; \ + $$ LANGUAGE plpgsql", + "CREATE TRIGGER valid_param_trigger BEFORE INSERT ON provisioning_values FOR EACH ROW EXECUTE PROCEDURE check_valid_param()", +} + +-- List of options for parameters +provisioning_options = { + "CREATE TABLE provisioning_options (param_id INTEGER REFERENCES provisioning_params, label VARCHAR(255), value VARCHAR(255), seq INTEGER)", + "CREATE INDEX options_param_idx ON provisioning_options (param_id)", + "CREATE UNIQUE INDEX options_param_label_idx ON provisioning_options (param_id, label)", + -- Templates + "INSERT INTO provisioning_options VALUES((SELECT param_id FROM provisioning_params WHERE name='template'), 'Polycom', '/etc/provisioning/templates/polycom-template.lua', '1')", + "INSERT INTO provisioning_options VALUES((SELECT param_id FROM provisioning_params WHERE name='template'), 'Linksys', '/etc/provisioning/templates/linksysata-template.lua', '2')", +} |