Changeset 4608


Ignore:
Timestamp:
Oct 3, 2017, 1:15:34 PM (6 years ago)
Author:
Nicklas Nordborg
Message:

References #994: Level 3 exporter

Added a configuration file for relax. So far, the only setting is <server-mode> which can be set to RELAX or LEVEL3.

This information is used to determine default configuration settings for some plug-ins. For example, the Level3ExporterPlugin will not be able to export to the ReleaseArchive server in RELAX mode since that may cause data originating from lorry to be overwritten.

Location:
extensions/net.sf.basedb.relax/trunk
Files:
3 added
7 edited

Legend:

Unmodified
Added
Removed
  • extensions/net.sf.basedb.relax/trunk/.classpath

    r4393 r4608  
    99  <classpathentry kind="lib" path="lib/base-core-3.11.0.jar"/>
    1010  <classpathentry kind="lib" path="lib/base-webclient-3.11.0.jar"/>
     11  <classpathentry kind="lib" path="lib/jdom-2.0.5.jar"/>
    1112  <classpathentry kind="output" path=".build"/>
    1213</classpath>
  • extensions/net.sf.basedb.relax/trunk/build.xml

    r4556 r4608  
    5757    >
    5858    <copy todir="${dist}">
    59       <fileset dir="." includes="README,LICENSE" />
     59      <fileset dir="." includes="README,LICENSE,config/*" />
    6060      <fileset file="${jar.name}" />
    6161    </copy>
  • extensions/net.sf.basedb.relax/trunk/src/net/sf/basedb/relax/Relax.java

    r4577 r4608  
    11package net.sf.basedb.relax;
    22
     3import java.io.InputStream;
     4import java.net.URL;
    35import java.text.SimpleDateFormat;
    46import java.util.Collections;
     
    79import javax.servlet.ServletRequest;
    810
     11import org.jdom2.Document;
    912import org.slf4j.Logger;
    1013import org.slf4j.LoggerFactory;
     
    1215import net.sf.basedb.clients.web.Base;
    1316import net.sf.basedb.core.Application;
     17import net.sf.basedb.core.ConfigurationException;
    1418import net.sf.basedb.core.Include;
    1519import net.sf.basedb.core.ItemQuery;
     
    1721import net.sf.basedb.relax.converter.DateToStringConverter;
    1822import net.sf.basedb.relax.converter.StringToDateConverter;
     23import net.sf.basedb.util.FileUtil;
     24import net.sf.basedb.util.XmlUtil2;
    1925
    2026
     
    8389
    8490 
     91  private static volatile XmlConfig rootConfig;
     92  private static volatile ServerMode serverMode;
     93 
     94  /**
     95    Get the server mode for this server. The mode affects what items that are installed,
     96    various default values, etc.
     97  */
     98  public static ServerMode getServerMode()
     99  {
     100    if (serverMode == null)
     101    {
     102      serverMode = ServerMode.valueOf(getConfig().getConfig("server-mode", null, ServerMode.RELAX.name()));
     103    }
     104    return serverMode;
     105  }
     106 
     107  /**
     108    Get the Relax configuration.
     109  */
     110  public static XmlConfig getConfig()
     111  {
     112    if (rootConfig == null) loadConfig();
     113    return rootConfig;
     114  }
     115 
     116  /**
     117    Force reload the Relax configuration.
     118  */
     119  public static synchronized XmlConfig reloadConfig()
     120  {
     121    unloadConfig();
     122    loadConfig();
     123    return rootConfig;
     124  }
     125 
     126  public static synchronized void unloadConfig()
     127  {
     128    rootConfig = null;
     129    serverMode = null;
     130  }
     131
    85132  /**
    86133    Get an existing session control and check that a user is logged in.
     
    92139        req.getRemoteAddr(), true);
    93140  }
    94 
     141 
     142  private static synchronized void loadConfig()
     143  {
     144    URL configUrl = Relax.class.getResource("/relax-config.xml");
     145    if (rootConfig != null) return;
     146    InputStream is = null;
     147    try
     148    {
     149      logger.debug("Loading configuration from; " + configUrl);
     150      is = configUrl == null ? null : configUrl.openStream();
     151      if (is == null)
     152      {
     153        throw new ConfigurationException("Can't find the configuration file. " +
     154            "Make sure 'relax-config.xml' is in the CLASSPATH.");
     155      }
     156     
     157      Document dom = XmlUtil2.getValidatedXml(configUrl, null);
     158      rootConfig = new XmlConfig(dom.getRootElement(), "[relax]");
     159    }
     160    catch (Exception ex)
     161    {
     162      logger.error("Could not load configuration", ex);
     163      throw new RuntimeException(ex);
     164    }
     165    finally
     166    {
     167      FileUtil.close(is);
     168    }
     169  }
    95170}
  • extensions/net.sf.basedb.relax/trunk/src/net/sf/basedb/relax/plugins/Level3ExporterPlugin.java

    r4579 r4608  
    7575import net.sf.basedb.opengrid.config.ConnectionInfo;
    7676import net.sf.basedb.relax.Relax;
     77import net.sf.basedb.relax.ServerMode;
    7778import net.sf.basedb.relax.dao.Datafiletype;
    7879import net.sf.basedb.relax.dao.Fileserver;
     
    510511        FileServer level3Archive = Fileserver.LEVEL3_ARCHIVE.load(dc);
    511512        if (!fileServers.contains(level3Archive)) fileServers.add(level3Archive);
    512         // We should not store level-3 data on the relax release archive
    513         // IT MAY OVERWRITE DATA FILES COMING FROM REGGIE
    514         fileServers.remove(Fileserver.RELEASE_ARCHIVE.load(dc));
     513        if (Relax.getServerMode() == ServerMode.RELAX)
     514        {
     515          // We should not store level-3 data on the relax release archive
     516          // IT MAY OVERWRITE DATA FILES COMING FROM REGGIE
     517          fileServers.remove(Fileserver.RELEASE_ARCHIVE.load(dc));
     518        }
    515519        fileServers.sort(new NameableComparator<>(false));
    516520 
  • extensions/net.sf.basedb.relax/trunk/src/net/sf/basedb/relax/plugins/ReleaseImporterPlugin.java

    r4487 r4608  
    9696import net.sf.basedb.opengrid.filetransfer.ByteArrayDownloadTarget;
    9797import net.sf.basedb.relax.Relax;
     98import net.sf.basedb.relax.ServerMode;
    9899import net.sf.basedb.relax.converter.StringToDateConverter;
    99100import net.sf.basedb.relax.dao.Fileserver;
     
    363364      try
    364365      {
     366        Fileserver defaultFileServer = Relax.getServerMode() == ServerMode.RELAX ?
     367          Fileserver.RELEASE_ARCHIVE : Fileserver.LEVEL3_ARCHIVE;
     368       
    365369        dc = sc.newDbControl();
    366370       
     
    373377          ));
    374378        List<FileServer> fileServers = new ArrayList<FileServer>(query.list(dc));
    375         FileServer releaseArchive = Fileserver.RELEASE_ARCHIVE.load(dc);
     379        FileServer releaseArchive = defaultFileServer.load(dc);
    376380        if (!fileServers.contains(releaseArchive)) fileServers.add(releaseArchive);
    377381        fileServers.sort(new NameableComparator<>(false));
  • extensions/net.sf.basedb.relax/trunk/src/net/sf/basedb/relax/plugins/ScriptWriter.java

    r4577 r4608  
    1919import net.sf.basedb.opengrid.ScriptBuilder;
    2020import net.sf.basedb.relax.Relax;
     21import net.sf.basedb.relax.ServerMode;
    2122import net.sf.basedb.relax.bash.ScriptUtil;
    2223import net.sf.basedb.relax.dao.Fileserver;
     
    4647  public ScriptWriter(DbControl dc, ReleaseWriterOptions options)
    4748  {
    48     this.releaseArchive = Fileserver.RELEASE_ARCHIVE.load(dc);
     49    this.releaseArchive = Relax.getServerMode() == ServerMode.RELAX ? Fileserver.RELEASE_ARCHIVE.load(dc) : Fileserver.LEVEL3_ARCHIVE.load(dc);
    4950    this.pathsToCreate = new TreeSet<>();
    5051    this.filesToSync = new TreeMap<>();
  • extensions/net.sf.basedb.relax/trunk/src/net/sf/basedb/relax/servlet/InstallServlet.java

    r4578 r4608  
    3838import net.sf.basedb.relax.JsonUtil;
    3939import net.sf.basedb.relax.Relax;
     40import net.sf.basedb.relax.ServerMode;
    4041import net.sf.basedb.relax.dao.Fileserver;
    4142import net.sf.basedb.relax.dao.Subtype;
     
    109110       
    110111        // File servers
    111         jsonChecks.add(checkFileServer(dc, Fileserver.RELEASE_ARCHIVE, createIfMissing, everyoneRead));
     112        if (Relax.getServerMode() == ServerMode.RELAX)
     113        {
     114          // The release archive is only installed on the RELAX server
     115          jsonChecks.add(checkFileServer(dc, Fileserver.RELEASE_ARCHIVE, createIfMissing, everyoneRead));
     116        }
    112117        jsonChecks.add(checkFileServer(dc, Fileserver.LEVEL3_ARCHIVE, createIfMissing, everyoneRead));
    113118       
Note: See TracChangeset for help on using the changeset viewer.