Asterisell-5.10.2-test
Posted on Wed 28 November 2018 in new release
Various improvements and bug-fixes respect v5.10-dev. In particular:
- importing of CDRS on remote MySQL databases
- generation of reports without wasting RAM
- improvements to the manual
- minor improvements to the user interface
- bug fixes
It is used in production, but it is still considered "test" because there are a lot of changes respect last stable version, and not all features are covered by regression tests.
Upgrading from v5.10-dev
If you installed the previous dev version, you can not upgrade it, but you had to reinstall this version from scratch. In case you have data to preserve, you can backup the DB and restore it in the new version, because there are no changes in the DB schema. You can use php asterisell.php data backup
.
In case you are installing on the same VM, you had to delete the Asterisell tag files, for forcing a reinstallation from scratch: rm /var/opt/asterisell/SUCCESSFUL_*
Migrating from v5.9 (last stable) to v5.10.2-test
This version changed a lot of things respect last stable version v5.9. In particular the instances are now installed directly on the host/VM, and not anymore inside a Docker container. The management tool is installed on a Docker container.
There is no automatic upgrade like in case of previous release changes. It is more a migration than an upgrade, also if in the end all the data can be transferred.
These are notes on how performing the upgrade, but for understanding them you had to install at least a DEMO version of Asterisell-5.10, otherwise some notes can be too much obscure.
Terms:
- source-host: the host containing the instance to migrate
- source-instance: the instance to migrate
- host: the target host on which install the instance
- instance: the target instance
- management-host: the host containing the Asterisell management tool (it can be also on host)
- asterisell-deploy: the directory of Asterisell management tool (source and dest)
Configure in asterisell_instances.py
the host/instance
and make sure to not execute cron_job on host/instance
, adding this setting in the instance class
install_cron_job = False
Then install using fab install:host/instance
.
Now we can start migration, because we have both source and dest-instance.
# Copy the migration scripts on source-instance
ssh some-user@host
cd scripts/migration_to_v10
scp pass-01-export.sql some-user@source-host:.
# Extract the data from source-instance and send to host
ssh some-user@source-host
cd asterisell-deploy
docker cp ../pass-01-export.sql source-instance:.
fab connect:source-instance
php asterisell.php cron disable
rm -f /var/tmp/*.csv
cat config/databases.yml
# for findng access passwords
mysql -usource-instance -ppassword source-instance < /pass-01-export.sql
cd /
tar cfvz db-instance.tar.gz /var/tmp/*.csv
rm -f /var/tmp/*.csv
scp db-instance.tar.gz some-user@host:.
rm db-instance.tar.gz
exit
# Go to management-host.
fab connect:asterisell/instance
cd /var/tmp
rm -f *.csv
tar xfvz /home/some-user/db-instance.tar.gz
mv var/tmp/*.csv .
rm /home/some-user/db-instance.tar.gz
cd /var/www/instance/admin/scripts/migration_to_v10/
# check access params with
cat ../../config/databases.yml
mysql -uinstance -ppassoword instance < pass-02-import.sql
rm -f /var/tmp/*.csv
cd ..
cd ..
php asterisell.php data update-cached-cdrs
exit
# Now we are again in managemnt-host
# and we enable again triggers,
# that were deleted by pass-02-import.sql
fab upgrade_conf:asterisell/instance
If source-instance has custom holidays set, you had to specify them also in the destination instance, because they are not ported automatically.
If source-instance uses bundle-rates, you had to modify them, removing lines like set-bundle-min-cost: 0
.
You had to copy the LOGO of the source-instance, and upload it again in the instance:
* using the Web UI
* copying the file into directory /var/www/instance/admin/web/uploads/assets
Now you can activate again cron-jobs, removing the install_cron_job
in the Instance configuration file, and then
`
fab upgrade_conf:asterisell/instance
VoIP extension codes
Asterisell 5.11.1 uses simpler extension codes. It is unlikely, but there can be incompatibilities, and some extensions had to be converted to the new format. In this case it is likely that the application will not recognize these old extensions any more, and it will signal the problem during the rating process.
The new extension format is simpler: "X" and "*" can be used only at the end of extensions and not any more in the middle. So:
- in "12XX" the last "X" stays for "match any character"
- in "1X2" the "X" is not a special symbol, and it matches exactly the "X"
- "12*" matches any extension starting with "12"
- "12" is exactly the "12" extension
The version with "X" and "*" in the middle were not used in practice, and now we can use faster data structures in the code, during rating.
Importing CDRS from remote DBMS
The previous method was based on configuration of connections on asterisell_instances.py
file, and custom PHP Jobs retrieving data.
Now remote DBMS are directly supported by the Haskell rating engine, and all params are specified directly in connection params of asterisell_instances.py
, and there are no any more custom PHP jobs.
The new method is more robust and DBMS friendly, because it exploits the properties of auto increment field, and do not use transactions on remote databases, but only on local database.