Skip to content
Snippets Groups Projects
Commit af72a814 authored by felmer's avatar felmer
Browse files

SP-122, BIS-81: installer adds/modifies property enabled-technologies in DSS...

SP-122, BIS-81: installer adds/modifies property enabled-technologies in DSS service.properties and ignores 'disabled-core-plugins'.

SVN: 25631
parent a774cdb6
No related branches found
No related tags found
No related merge requests found
......@@ -19,18 +19,12 @@ package ch.systemsx.cisd.openbis.installer.izpack;
import static ch.systemsx.cisd.openbis.installer.izpack.SetTechnologyCheckBoxesAction.ENABLED_TECHNOLOGIES_KEY;
import java.io.File;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import com.izforge.izpack.api.data.AutomatedInstallData;
import com.izforge.izpack.api.data.PanelActionConfiguration;
import com.izforge.izpack.api.handler.AbstractUIHandler;
import com.izforge.izpack.data.PanelAction;
import ch.systemsx.cisd.common.filesystem.FileUtilities;
import ch.systemsx.cisd.common.shared.basic.utils.CommaSeparatedListBuilder;
/**
......@@ -42,8 +36,6 @@ import ch.systemsx.cisd.common.shared.basic.utils.CommaSeparatedListBuilder;
public class SetEnableTechnologiesVariableAction implements PanelAction
{
static final String ENABLED_TECHNOLOGIES_VARNAME = "ENABLED_TECHNOLOGIES";
static final String DISABLED_TECHNOLOGIES_VARNAME = "DISABLED_TECHNOLOGIES";
static final String DISABLED_CORE_PLUGINS_KEY = "disabled-core-plugins";
private final SetTechnologyCheckBoxesAction technologyCheckBoxesAction = new SetTechnologyCheckBoxesAction();
......@@ -71,93 +63,16 @@ public class SetEnableTechnologiesVariableAction implements PanelAction
void updateEnabledTechnologyProperty(AutomatedInstallData data,
boolean isFirstTimeInstallation, File installDir)
{
data.setVariable(DISABLED_TECHNOLOGIES_VARNAME, createListOfDisabledTechnologies(data));
String newTechnologyList = createListOfEnabledTechnologies(data);
data.setVariable(ENABLED_TECHNOLOGIES_VARNAME, newTechnologyList);
if (isFirstTimeInstallation == false)
{
File configFile = new File(installDir, Utils.AS_PATH + Utils.SERVICE_PROPERTIES_PATH);
Utils.updateOrAppendProperty(configFile, ENABLED_TECHNOLOGIES_KEY, newTechnologyList);
updateDisabledDssPluginsProperty(data, installDir);
}
}
private void updateDisabledDssPluginsProperty(AutomatedInstallData data, File installDir)
{
Set<String> disabledTechnologies = new LinkedHashSet<String>();
Set<String> technologies = new LinkedHashSet<String>();
for (String technology : GlobalInstallationContext.TECHNOLOGIES)
{
String technologyFlag = data.getVariable(technology);
if (Boolean.FALSE.toString().equalsIgnoreCase(technologyFlag))
{
disabledTechnologies.add(technology.toLowerCase());
}
technologies.add(technology.toLowerCase());
File asConfigFile = new File(installDir, Utils.AS_PATH + Utils.SERVICE_PROPERTIES_PATH);
Utils.updateOrAppendProperty(asConfigFile, ENABLED_TECHNOLOGIES_KEY, newTechnologyList);
File dssConfigFile =
new File(installDir, Utils.DSS_PATH + Utils.SERVICE_PROPERTIES_PATH);
Utils.updateOrAppendProperty(dssConfigFile, ENABLED_TECHNOLOGIES_KEY, newTechnologyList);
}
File configFile = new File(installDir, Utils.DSS_PATH + Utils.SERVICE_PROPERTIES_PATH);
List<String> list = FileUtilities.loadToStringList(configFile);
updateDisabledDssPluginsProperty(list, technologies, disabledTechnologies, installDir);
Utils.updateConfigFile(configFile, list);
}
private void updateDisabledDssPluginsProperty(List<String> list, Set<String> technologies,
Set<String> disabledTechnologies, File installDir)
{
for (int i = 0; i < list.size(); i++)
{
String line = list.get(i);
if (line.startsWith(DISABLED_CORE_PLUGINS_KEY))
{
String[] property = line.split("=");
String oldPluginsList = property.length < 2 ? "" : property[1];
String pluginsList =
mergeWithDisabledPluginsList(oldPluginsList, technologies,
disabledTechnologies);
list.set(i, DISABLED_CORE_PLUGINS_KEY + " = " + pluginsList);
return;
}
}
String pluginsList;
if (Utils.hasCorePluginsFolder(installDir))
{
pluginsList = mergeWithDisabledPluginsList("", technologies, disabledTechnologies);
} else
{
// A very old openBIS instance does not have a core plugins folder. Thus, all
// core plugins have to be disabled in order to avoid possible conflicts of
// existing DSS service.properties with a core plugin.
pluginsList = mergeWithDisabledPluginsList("", technologies, technologies);
}
list.add(DISABLED_CORE_PLUGINS_KEY + " = " + pluginsList);
}
private String mergeWithDisabledPluginsList(String disabledPlugins, Set<String> technologies,
Set<String> disabledTechnologies)
{
CommaSeparatedListBuilder builder = new CommaSeparatedListBuilder();
Set<String> plugins = new HashSet<String>();
String[] terms = disabledPlugins.split(",");
for (String term : terms)
{
String plugin = term.trim();
if (plugin.length() > 0)
{
if (technologies.contains(plugin) == false || disabledTechnologies.contains(plugin))
{
builder.append(plugin);
plugins.add(plugin);
}
}
}
for (String disabledTechnology : disabledTechnologies)
{
if (plugins.contains(disabledTechnology) == false)
{
builder.append(disabledTechnology);
}
}
return builder.toString();
}
private String createListOfEnabledTechnologies(AutomatedInstallData data)
......@@ -174,18 +89,4 @@ public class SetEnableTechnologiesVariableAction implements PanelAction
return builder.toString();
}
private String createListOfDisabledTechnologies(AutomatedInstallData data)
{
CommaSeparatedListBuilder builder = new CommaSeparatedListBuilder();
for (String technology : GlobalInstallationContext.TECHNOLOGIES)
{
String technologyFlag = data.getVariable(technology);
if (technologyFlag == null || Boolean.FALSE.toString().equalsIgnoreCase(technologyFlag))
{
builder.append(technology.toLowerCase());
}
}
return builder.toString();
}
}
......@@ -18,7 +18,6 @@ package ch.systemsx.cisd.openbis.installer.izpack;
import static ch.systemsx.cisd.openbis.installer.izpack.GlobalInstallationContext.TECHNOLOGY_PROTEOMICS;
import static ch.systemsx.cisd.openbis.installer.izpack.GlobalInstallationContext.TECHNOLOGY_SCREENING;
import static ch.systemsx.cisd.openbis.installer.izpack.SetEnableTechnologiesVariableAction.DISABLED_CORE_PLUGINS_KEY;
import static ch.systemsx.cisd.openbis.installer.izpack.SetEnableTechnologiesVariableAction.ENABLED_TECHNOLOGIES_VARNAME;
import static ch.systemsx.cisd.openbis.installer.izpack.SetTechnologyCheckBoxesAction.ENABLED_TECHNOLOGIES_KEY;
......@@ -133,7 +132,7 @@ public class SetEnableTechnologiesVariableActionTest extends AbstractFileSystemT
assertEquals("[abc = 123, " + ENABLED_TECHNOLOGIES_KEY + "=proteomics]", FileUtilities
.loadToStringList(configFile).toString());
assertEquals("[" + DISABLED_CORE_PLUGINS_KEY + " = proteomics, screening, illumina-ngs]",
assertEquals("[, " + ENABLED_TECHNOLOGIES_KEY + " = proteomics]",
FileUtilities.loadToStringList(dssConfigFile).toString());
}
......@@ -165,7 +164,7 @@ public class SetEnableTechnologiesVariableActionTest extends AbstractFileSystemT
assertEquals("[abc = 123, " + ENABLED_TECHNOLOGIES_KEY + " = proteomics, screening, answer = 42]", FileUtilities
.loadToStringList(configFile).toString());
assertEquals("[" + DISABLED_CORE_PLUGINS_KEY + " = ]", FileUtilities
assertEquals("[, " + ENABLED_TECHNOLOGIES_KEY + " = proteomics, screening]", FileUtilities
.loadToStringList(dssConfigFile).toString());
}
......@@ -181,15 +180,15 @@ public class SetEnableTechnologiesVariableActionTest extends AbstractFileSystemT
assertEquals("[abc = 123, " + ENABLED_TECHNOLOGIES_KEY + " = screening]", FileUtilities
.loadToStringList(configFile).toString());
assertEquals("[" + DISABLED_CORE_PLUGINS_KEY + " = proteomics]", FileUtilities
assertEquals("[, " + ENABLED_TECHNOLOGIES_KEY + " = screening]", FileUtilities
.loadToStringList(dssConfigFile).toString());
}
@Test
public void testUpdateAppendPropertyWithEmptyDisabledCorePluginsProperty()
public void testUpdateAppendPropertyWithEmptyEnabledTechnologyDssProperty()
{
FileUtilities.writeToFile(configFile, "abc = 123");
FileUtilities.writeToFile(dssConfigFile, DISABLED_CORE_PLUGINS_KEY + "= ");
FileUtilities.writeToFile(dssConfigFile, ENABLED_TECHNOLOGIES_KEY + "= ");
Properties variables = new Properties();
variables.setProperty(TECHNOLOGY_PROTEOMICS, "false");
variables.setProperty(TECHNOLOGY_SCREENING, "true");
......@@ -198,23 +197,23 @@ public class SetEnableTechnologiesVariableActionTest extends AbstractFileSystemT
assertEquals("[abc = 123, " + ENABLED_TECHNOLOGIES_KEY + " = screening]", FileUtilities
.loadToStringList(configFile).toString());
assertEquals("[" + DISABLED_CORE_PLUGINS_KEY + " = proteomics]", FileUtilities
assertEquals("[" + ENABLED_TECHNOLOGIES_KEY + " = screening]", FileUtilities
.loadToStringList(dssConfigFile).toString());
}
@Test
public void testUpdateDisabledPluginsForSwitchedTechnologies()
public void testUpdateEnabledTechnologiesDssForSwitchedTechnologies()
{
FileUtilities.writeToFile(configFile, "abc = 123");
FileUtilities.writeToFile(dssConfigFile, "a = b\n" + DISABLED_CORE_PLUGINS_KEY
+ "= screening, proteomics:a:b\n" + "gamma = alpha");
FileUtilities.writeToFile(dssConfigFile, "a = b\n" + ENABLED_TECHNOLOGIES_KEY
+ "= proteomics\n" + "gamma = alpha");
Properties variables = new Properties();
variables.setProperty(TECHNOLOGY_PROTEOMICS, "false");
variables.setProperty(TECHNOLOGY_SCREENING, "true");
updateEnabledTechnologyProperties(variables, false);
assertEquals("[a = b, " + DISABLED_CORE_PLUGINS_KEY + " = proteomics:a:b, proteomics, "
assertEquals("[a = b, " + ENABLED_TECHNOLOGIES_KEY + " = screening, "
+ "gamma = alpha]", FileUtilities.loadToStringList(dssConfigFile).toString());
}
......@@ -222,7 +221,7 @@ public class SetEnableTechnologiesVariableActionTest extends AbstractFileSystemT
public void testUpdateDisabledPluginsForSameTechnology()
{
FileUtilities.writeToFile(configFile, "abc = 123");
FileUtilities.writeToFile(dssConfigFile, "a = b\n" + DISABLED_CORE_PLUGINS_KEY
FileUtilities.writeToFile(dssConfigFile, "a = b\n" + ENABLED_TECHNOLOGIES_KEY
+ "= proteomics, proteomics:a:b\n" + "gamma = alpha");
Properties variables = new Properties();
variables.setProperty(TECHNOLOGY_PROTEOMICS, "false");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment