Skip to content

Big Push to Remove a Lot of Zend Framework (and more!)

Compare
Choose a tag to compare
@barryo barryo released this 28 Nov 15:08
· 2697 commits to master since this release

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:

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. Add config_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:

  1. 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.
  2. 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.
  3. 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.