Metalnx is a web application designed to work alongside the iRODS - Integrated Rule-Oriented Data System. It provides a graphical UI that can help simplify most administration, collection management, and metadata management tasks removing the need to memorize the long list of icommands.
Note that this fork adds a schema configuration and migration tool to set up and migrate the database over versions. This actually is a start of a more formalized irods-ext database which will evolve to support an implementation of virtual collections, metadata templates, and the like. See the README.md in the metalnx-tools subproject for details on setting up and migrating the database schema.
Check out Getting-Started for installation instructions.
Check out the Metalnx Wiki for further information.
Copyright © 2015-2017, Dell EMC.
This software is provided under the Software license provided in the LICENSE file.
Add ability to import iRODS SSL self-signed cert into jvm keystore when using SSL transport
Adding formalized database schema setup and migration tools using flywaydb. See the metalnx-tools subproject and its README for a maven based database setup and migration tool.
Added ability to configure SSL negotiation and other properties in metalnx.properties and have them propogate to the settable jargon properties. This may eventually be pulled out to a stand alone utilities package for use across mid tier components.
Switched to the existing standardized /etc/irods-ext method of defining properties picked up by spring for interpolation in bean configuration. This is especially useful for docker deployments as the /etc/irods-ext can be a volume mount for docker
Did some cleanup and temporarily put aside several ticket tests for further assessment at the iRODS and Jargon layer. There maybe some remaining issues with tickets, see DICE-UNC/jargon#266 so this will be revisited at that layer as soon as possible. These changes allow a clean unit test baseline
Normalizing the test setup, properties generation scheme to align with cloud browser, rest, jargon, etc. This will allow easier setup in iRODS CI, etc. Simplified the spring config propertis references to look at the metalnx.properties in /etc/irods-ext for production in issue #10 and #7, and this change utilizes build of test.metalnx.properties and testing.properties from the pom based on settings.xml as in jargon and other libs.
See the DEVELOPER-README.md doc for details on how to set up and run tests.
Add facilities to allow site-specific customization of the browser (css,logo, resource bundles, etc). See CONFIGURATION.md for instructions. This change does require /etc/irods-ext files to be put into place for the resource locations. This may be refactored at a later time, but provides a first clean separation between customizations based on css, messages, images, etc. Some clean up needs to be done to fully internationalize text, etc. This is being addressed in other issues.
Isolated specific queries and reference client hints to determine iRODS catalog type, this uses a factory arrangement to obtain a source for SQL queries. This is now scaffolded with unit tests of existing specific queries. MySql semantics are being added...work in progress
Integrated changes from issue 15 in consortium codebase, mapping to issue #43 in NIEHS.
Remove remaining hard coded text in templates and convert to resource bundle refs mapped to niehs issue #44
Incrementally going through the Selenium tests to unify with the Jargon testing framework and to reactivate ignored selenium tests. See the CONFIGURATION.md file for information on Selenium test setup, which is run from the src/emc-metalnx-web directory. That directoy also includes a test-scripts folder with the required maven settings.xml updates. The current Selenium tests have been refactored to start with basic health checks while the page functions stabilize.
Updated Jargon and controller code to gracefully handle no permission errors with a helpful message and a return to the previous directory view
Add properties based global control of features targeted at first towards removing tickets niehs #52
Add a global config to turn on/off certain features via metalnx.properties. This allows sites to globally turn off features such as tickets.
Add preferences to toggle between normal/advanced view and made dataGridUser.advancedView a model attribute always available in thymeleaf pages so that the interface can show or hide features based on normal or power users
Sidebar nav a thymeleaf fragment to reduce redundancy in custom templates
While it needs more investigation, the upload processing that does resource searching and building of metadata to run file-dependent rules on uploads was getting NPE when a resource was not specified during upload. This now will turn off automatic processing in this case, pending further hardening and clarification of that functionality. In addition, a new metalinx.properties value that can turn off this global rules application on upload.
metalnx.enable.upload.rules=false
This change requires the addition of this property to metalnx.properties,and for unit testing and building this property should be in settings.xml. See the CONFIGURATION.md and DEVELOPER-README.md for details. The sample metalnx.properties in /etc/irods-ext in this repo shows a sample configuration.
Incorporated new TrashOperationsAO code from DICE-UNC/jargon#280
This replaces the rule call, and now functions normally for logged in users. There remains a few issues with empty trash as rodsadmin but that will be addressed at the Jargon or iRODS level.
As a transitional measure, the current favorites, search, and bookmarks functions have a listing that is distinct from the main collections browser view. In order to support deep linking and a reasonably functioning back button, selecting an item from any of these search views opens the collections view using the deep link approach in a new tab. This gives a reasonable experience that can suffice until the collections browser can be refactored to unify all of these searches into the same view. Maps to NIEHS #70
Enhance ability to browse down from root as non-admin user using heuristics and relaxing permission checks for a more intuitive experience
While still somewhat transitional (still some inconsistancies in how URLs and javascript methods operate) this generally improves support for files with embedded spaces and special characters. NIES #134
Add a global configuration setting for a download limit on files for both single file and bundle downloads to metalnx.properties
Added logic in RuleDeploymentService to create the /zone/.rulecache file if it does not exist in an installation. This is done using the iRODS admin account specified in metalnx.properties. The absense of the .rulecache file was causing the errors in MetaLnx collection browsing.
Replaced rule based replication with direct call to work around a possible iRODS rule engine bug
Temporarily turned off collection paging as the jQuery data tables is exhibiting some sort of bug where the paging chrome is displayed, but paging and paging size are not active. This will be revisited in a collection listing cleanup and refactoring effort in a follow up release.
Updated licensing, code to reflect transition of codebase to iRODS Consortium
Community feature adding drag and drop to file uploading. Thanks to Kyle!
Allow Metalnx DB to update user type based on changes to the iRODS role of a user. This bug prevented changing from rodsuser to rodsadmin and would not show admin features.
Fix stack traces that resulted from acquiring list of microservices for the dashboard by switching to calling jargon environment services to obtain the microservice list
Quieted stack traces when MSIs not installed by respecting the metalnx.properties
populate.msi.enabled=false
Add a dropdown that can select an alternative authentication method (currently standard or pam auth). This defaults to the pre-configured auth method in metalnx.properties.
Add clipboard functionality to paths on the info views to allow easy copy to clipboard on the colleciton and data object info pages
Added inheritance flag to the info view for collections and allow modification
Overhaul of handling of session/login timeout behavior. This is complicated by the mixing of 'thymeleaf' server rendered pages mixed with AJAX operations and caused inconsistent behavior where sometimes the operation before the timeout would be remembered and sometimes it would not. In addition, a login exception would cause repeated redisplay of the login screen even when login had succeeded. The javascript 'ajax()' method was overloaded by wrapping the success handling code to look for the login page and record the current location as a ajaxOrigPath parameter That could be used to reposition the browser after a successful login. This was a pretty significant reworking of the timeout handling.
Better handling of special chars and spaces in file names when using the summary pop up right hand panel in the collection browser.
-
#22 fix search text
-
#25 search - default to 'contains'
-
#11 Consider removing Jquery data table search filter as confusing next to the planned global search