src/sitespecific
folder contains materials specific to your site.
You can use the environment variable ARCHAPPL_SITEID
to control which set of sitespecific files are included in the generated WARS.
tests
site.archappl_vx.x.x.tar.gz
available in the Downloads is also built to the tests
site.src/sitespecific/YourSite/classpathfiles
are added to the WEB-INF/classes
of the generated WAR files and should be accessible in the code using servletContext.getResourceAsStream("/WEB-INF/classes/<<fileName>>")
ARCHAPPL_POLICIES
environment variable, the policies.py
for your site is discovered this way
policies.py
specific to your site by setting the ARCHAPPL_SITEID
.policies.py
with your own during deployment.ARCHAPPL_APPLIANCES
environment variable, the appliances.xml
is discovered in a similar fashion.archappl.properties
that is discovered in a similar fashion. The properties in this file are used to control some of the other customizations of the archiver appliance.[ epicsarchiverap ]$ ls -ltr src/sitespecific/
total 0
drwxr-xr-x 3 mshankar cd 28 Jun 21 10:40 tests
drwxr-xr-x 3 mshankar cd 45 Sep 9 16:03 slacdev
[ epicsarchiverap ]$ export ARCHAPPL_SITEID=slacdev
[ epicsarchiverap ]$ ant
Buildfile: /workspace/epicsarchiverap/build.xml
[echo] Building the archiver appliance for the site slacdev
src/sitespecific
folder.
The Gradle build script does not currently support sitespecific builds.
The build.xml
in the src/sitespecific
is called (if it exists) after the compile and staging tasks and before the WAR is packed.
This lets you replace default collateral (like images, phone numbers in messages etc) with your own collateral in the generated WAR file(s).
As outlined in the details page, the archiver appliance support a wide variety of configurations.
Not only that, we also support configuration on a per PV basis.
We avoid exposing all of this complexity to the end user (the one who is requesting PVs to be archived) by using policies to provide intelligent defaults.
Policies are contained in a python/jython script called policies.py
that is typically located in the WEB-INF/classes
of the mgmt
webapp or by using the environment variable ARCHAPPL_POLICIES
.
.NAME
, .ADEL
, .MDEL
, .RTYP
etc are also determined.
All of these parameters are passed to the policies.py
python script as a dictionary argument to a method in policies.py
called determinePolicy
; see the javadoc for more details.
This method is expected to use all of this information to make decisions on various archiving parameters including storage locations, storage technologies used etc and return these decisions as another dictionary.
For example, the resulting dictionary contains a field called dataStores
which is an array of StoragePlugin URL's that can be parsed by the StoragePluginURLParser.
This is converted into a sequence of StoragePlugin's that is used like so
dataStores[0]
Optionally, as part of a policy, we can also archive fields in addition to the VAL field.
That is, one can establish a blanket policy that says something like For all ai's
, in addition to the .VAL
field, also archive the .HIHI, .LOLO
etc
These fields are stored as part of the data for .VAL field.
src/sitespecific/tests/policies.py
that is shipped as part of the tests
site.
In addition to the determinePolicy
method, there are a few more methods that need to be defined. These include
getPolicyList
-- This returns a list of available policy names.getFieldsArchivedAsPartOfStream
-- This returns a list of fields that are to be archived as part of the stream.archappl.properties
that is typically present in WEB-INF/classes
of all the webapps or as the environment variable ARCHAPPL_PROPERTIES_FILENAME
.
This contains various configuration elements that are common to all machines in the cluster and probably common to all deployments of the archiver appliance in your infrastructure.
One of the advantages of having your site specific properties checked into the source repository is that as the system evolves and we add new configuration elements, default values for these new configuration elements can be added to archappl.properties
of all the sites.
The configuration elements present here are configuration decisions that are made during the initial scoping of your archiving project; so, please do look at these configuration elements and make choices appropriate to your installation.
For example, using the default key mapping strategy, data for the PV EIOC:LI30:MP01:HEARTBEAT
for the timeframe 2012-08-24T16:xx:xx.xxxZ
on an hourly partition is stored under the key EIOC/LI30/MP01/HEARTBEAT:2012_08_24_16.pb
.
Data for the same PV in a daily partition is stored under the key EIOC/LI30/MP01/HEARTBEAT:2012_08_24.pb
for the day 2012-08-24Txx:xx:xx.xxxZ
.
To use the default key mapping strategy, it is important (for performance reasons) that the PV names follow a good naming convention that distributes the chunks into many folders - see the Javadoc for more details. If the key/file structure reflecting the PV naming convention feature is not important to you, you can choose to use an alternate key mapping strategy by implementing the PVNameToKeyMapping interface and setting this property to name of the implementing class.