Include

Non-trivial Jarvis applications will include both environment configuration (e.g. database connection details, authentication server details) and application configuration (plugin and route lists). Distribution of updates to Jarvis configuration files have historically been difficult to automate with these two sets of configuration data within the one file.

To alleviate this burden, it is now possible to split Jarvis configuration files and have the master configuration file <include> additional configuration files.

Note: The copying of configuration from files referenced by <include> is very specific and only applies to the following classes of configuration:

Location Structures Included
<jarvis><app> <plugin *><parameter name= value=></plugin>
<jarvis><app> <plugin *><parameter name= value=></plugin>
<jarvis><app> <exec */>
<jarvis><app><router> <router */>

As an example, your application configuration file may define routes and plugins:

/usr/share/boats/etc/routes.xml

<jarvis>
	<app>
    	<routes>
        	<route path="/api/boats" dataset="boats-list"/>
         </routes>

         <plugin dataset="TransformBoats" access="*" module="Boats::TransformBoats" add_headers="yes"/>
     </app>
</jarvis>

While your environment configuration file might contain directory paths specific to the deployment environment:

/etc/jarvis/boats.xml

<?xml version="1.0" encoding="utf-8"?>
<jarvis>
    <app format="json.rest" debug="yes" dump="yes" retain_null="yes">
        <dataset_dir>/usr/share/boats/datasets</dataset_dir>
        <default_libs>
            <lib path=”/usr/share/boats/lib”/>
        </default_libs>
    </app>
    <include file="/usr/share/boats/etc/routes.xml"/>
</jarvis>

Notes and limitations:

Despite these limitations, this feature significantly simplifies application deployments and it is recommended as a configuration structuring technique.