Big Push to Remove a Lot of Zend Framework (and more!)
This release makes some significant progress in the migration from Zend Framework to Laravel and some of these changes may require manual fixes / changes by you. Please read these release notes carefully.
$ git --no-pager diff --shortstat --no-merges v4.6.0 v4.7.0
461 files changed, 17459 insertions(+), 19632 deletions(-)
Composer Version: before proceeding, please ensure you are running a version of composer that is at least v1.5. You can usually upgrade composer by using its self-update
command.
PHP libraries: the bcmath extension is now required. On Ubuntu, something like: apt install php7.0-bcmath
will take care of this.
This release also migrates from Laravel 5.4 to Laravel 5.5.
To upgrade:
- please follow the official upgrade documentation without skipping any steps.
- complete some manual database changes covered at the end of this release notification.
Inactive code: this release contains code that is not currently available via the UI relating to a new feature which we are working on called core interfaces and some new APIs around automation. This will be officially released and explained in a future version.
New Features and Improvements
For this release, we have created a Laravel based CRUD (CReate, Update, Delete and List) scaffolding framework along the lines as what we were using in Zend Framework (Doctrine2Frontend). We have also including developer documentation for this: http://docs.ixpmanager.org/dev/frontend-crud/
Using this, we have migrating the following CRUD controllers to Laravel (including better documentation, code review and improvements):
- Cabinet / Rack management
- Console server connections
- Customer / colo'd kit
- Facility / location management
- Infrastructure management
- IP Address management
- IRRDB configuration management
- IXP management
- MAC addresses (configured and discovered)
- Vendor management
- VLAN management
Additional non-CRUD controllers that have been migrated to Laravel include:
- the ZF index controller is now handled via the default route in
routes/web.php
- the admin dashboard controller (plus styling and presentation updates)
- mailing list management (see below)
- the admin search controller
- the static content controller was migrated to Laravel and redesigned - see below and the documentation at http://docs.ixpmanager.org/features/static-content/
- statistics for ixp, infrastructure, switch and trunk graphs (includes backward incompatibilities - see below)
- weathermaps
- utilities (mainly
phpinfo()
access) - user API key management
- user login history viewer
- the route server prefix analysis tool
Other improvements:
- Upgraded to Laravel 5.5 (Laravel release notes)
- Terminology change for MAC addresses - closes #344
- IP address management now has a proper CIDR network specification for adding addresses and removing unused addresses
- Big speed improvement for turning OUI MAC addresses into vendor names - see 333c52b and this blog post
- On the presentation layer, we have renamed Locations to Facilities to better match common industry language and Cabinets to Racks.
- handle failures with PeeringDB / IX-F API endpoints gracefully
- now using official parsedown/laravel package for Markdown - closes islandbridgenetworks/IXP-Manager-Archive-Yann#102
Bug Fixes
- Could not delete layer2 address - 60a7551
- Save loopback name and IP as null rather than empty string - 7a86c1c
- Max Prefixes - Required by backend but not in frontend - #342
- Setting ports as prewired - state stays 'available' - 5c3de38
- Various peering manager fixes - 63febeb, a8f5e5c, 7d0bd03 and be4548a
- The presentation of the MAC addresses in the IX-F Member Export function has been fixed to conform to the JSON schema.
- [BF] - Cannot delete infrastrucuture - fixes #359
- [BF] - Cannot access MAC Addresses link (/layer2-address/list) - fixes #360
Housekeeping
-
The older (Zend Framework) method of generating Nagios configuration has been removed (c5ee6b7). If you haven't yet, you now need to migrate to the new APIs for this: http://docs.ixpmanager.org/features/nagios/
-
A number of unused packages were removed from
composer.json
-
We have removed the meeting controller and all associated files. The meeting controller was written in house at INEX for our own particular purposes. It was never documented and was disabled by default. As such, we expect no one is using it and we have stopped for quite a while.
There are other tools ( https://getindico.io/ ) and services (EventBrite) that solve this problem better than we ever did.
-
The tool to export contacts by type/name has been migrated to Laravel. As such the old
./bin/ixptools.php cli.cli-export-group
command has been migrated to artisan the the documentation has been updated to reflect this.
Database Cleanup / Schema Changes
Make sure you have completed any normal schema updates as per the standard upgrade instructions above. These include:
- vlan table: drop
rcvrfname
column as it is not used. Addconfig_name
column which provides the vlan name as it should be used in automation / orchestration.
There are a number of tables that are deprecated and need to be removed. You can see these by running the following and you should see similar output. If your output includes view_*
tables, that is okay:
./artisan doctrine:schema:update --clean --sql
Checking if database connected to default entity manager needs updating...
ALTER TABLE meeting_item DROP FOREIGN KEY FK_F3EADDCC67433D9C;
DROP TABLE change_log;
DROP TABLE meeting;
DROP TABLE meeting_item;
DROP TABLE migrations;
DROP TABLE sec_event
If you are happy with the above, execute it via:
./artisan doctrine:schema:update --clean --force
You now need to recreate/refresh the view tables as follows:
mysql -u root $ixpmanager_database_name <tools/sql/views.sql
We have found more instances of tables that have had 0
or ""
(empty string) used where null
should have been used. Execute the following on your IXP Manager database to clean these up:
UPDATE `cabinet` SET `height` = NULL WHERE `height` = 0 OR `height` = "";
Static Content
The old Zend Framework had an undocumented StaticController
which served static content. This has been replaced and documented at: http://docs.ixpmanager.org/features/static-content/
You need to perform a number of tasks because of this:
- if you had skinned and added your own contact details to the
$IXPROOT/application/views/[_skins/<your skin name>]/static/support.phtml
file, you need to move this as per this documentation and update the template. - if you had created additional static documentation, you also need to migrate these over (e.g. content from
$IXPROOT/application/views/_skins/<your skin name>/static
. - if you changed the documentation menu, update two files (using
$IXPROOT/resources/views/header-documentation.foil.php
as a template):
a. copy the template$IXPROOT/resources/views/header-documentation.foil.php
to$IXPROOT/resources/skins/<your skin name>/header-documentation.foil.php
and update.
b. as some pages still use ZF, also update$IXPROOT/application/views/[_skins/<your skin name>]/header-documentation.phtml
Mailing List Management
Mailing list management was previously available via the ZF CLI (ixptool.php
) interface and the ZF API v1 interface. These have both been migrated to Laravel using artisan
and API v4. The documentation has been updated to reflect this at:
http://docs.ixpmanager.org/features/mailing-lists/
If you are using this, you will need to update your synchronization scripts. IXP Manager will generate new template scripts for you - see these instructions.
Statistics
Commit 9d11d00 converts the old double implemented IXP/Infrastructure, trunk and switch graph pages into a single implemented version in Laravel.
It also improves this by turning POSTs into GETs allowing easier sharing of specific graph links.
The URLs for this have also changed so if you are linking into graphs from other sites, please update those links or set up web server redirects.
Access Authorisation Changes: we previously used a configuration option ixp_fe.statistics.public
defined in configs/ixp_fe.php
to required authentication to access these graphs. That has been removed in favour of using Grapher's authorisation methods.
If you wish to make these graphs private, please see this updated documentation.
NB: by default, all of the IXP, infrastructure, switch and trunk graphs are publically accessible.