Search in sources :

Example 1 with ServiceConfiguration

use of org.opennms.netmgt.config.service.ServiceConfiguration in project opennms by OpenNMS.

the class ServiceConfigMigratorOffline method execute.

/* (non-Javadoc)
     * @see org.opennms.upgrade.api.OnmsUpgrade#execute()
     */
@Override
public void execute() throws OnmsUpgradeException {
    if (skipMe)
        return;
    try {
        ServiceConfiguration currentCfg = JaxbUtils.unmarshal(ServiceConfiguration.class, configFile);
        int index = 0;
        for (Service baseSvc : baseConfig.getServices()) {
            Service localSvc = getService(currentCfg, baseSvc.getName());
            if (localSvc == null) {
                if (baseSvc.isEnabled()) {
                    log("Adding new service %s\n", baseSvc.getName());
                } else {
                    log("Marking service %s as disabled\n", baseSvc.getName());
                }
                currentCfg.getServices().add(index, baseSvc);
                continue;
            }
            if (!baseSvc.isEnabled()) {
                log("Disabling service %s because it is not on the default list of enabled services\n", localSvc.getName());
                localSvc.setEnabled(false);
            }
            if (localSvc.getClassName().equals("org.opennms.netmgt.poller.jmx.RemotePollerBackEnd")) {
                log("Fixing the class path for RemotePollerBackEnd.\n");
                localSvc.setClassName("org.opennms.netmgt.poller.remote.jmx.RemotePollerBackEnd");
            }
            if (localSvc.getName().equals("OpenNMS:Name=Linkd")) {
                log("Disabling Linkd (to promote EnhancedLinkd)\n");
                localSvc.setEnabled(false);
            }
            Attribute a = getLoggingPrefix(localSvc);
            if (a != null) {
                String prefix = a.getValue().getContent().toLowerCase();
                // If the logging prefix isn't already lower case...
                if (!a.getValue().getContent().equals(prefix)) {
                    // then set it to the lower case value
                    log("Fixing logging prefix for service %s\n", localSvc.getName());
                    a.getValue().setContent(prefix);
                }
            }
            index++;
        }
        StringWriter sw = new StringWriter();
        sw.write("<?xml version=\"1.0\"?>\n");
        sw.write("<!-- NOTE!!!!!!!!!!!!!!!!!!!\n");
        sw.write("The order in which these services are specified is important - for example, Eventd\n");
        sw.write("will need to come up last so that none of the event topic subcribers loose any event.\n");
        sw.write("\nWhen splitting services to run on mutiple VMs, the order of the services should be\n");
        sw.write("maintained\n");
        sw.write("-->\n");
        JaxbUtils.marshal(currentCfg, sw);
        FileWriter fw = new FileWriter(configFile);
        fw.write(sw.toString());
        fw.close();
    } catch (Exception e) {
        throw new OnmsUpgradeException("Can't fix services configuration because " + e.getMessage(), e);
    }
}
Also used : ServiceConfiguration(org.opennms.netmgt.config.service.ServiceConfiguration) StringWriter(java.io.StringWriter) Attribute(org.opennms.netmgt.config.service.Attribute) FileWriter(java.io.FileWriter) Service(org.opennms.netmgt.config.service.Service) OnmsUpgradeException(org.opennms.upgrade.api.OnmsUpgradeException) IOException(java.io.IOException) OnmsUpgradeException(org.opennms.upgrade.api.OnmsUpgradeException)

Example 2 with ServiceConfiguration

use of org.opennms.netmgt.config.service.ServiceConfiguration in project opennms by OpenNMS.

the class EOLServiceConfigMigratorOfflineTest method testUpgradeConfig.

/**
     * Test fixing the configuration file.
     *
     * @throws Exception the exception
     */
@Test
public void testUpgradeConfig() throws Exception {
    File cfgFile = ConfigFileConstants.getFile(ConfigFileConstants.SERVICE_CONF_FILE_NAME);
    ServiceConfiguration cfg = JaxbUtils.unmarshal(ServiceConfiguration.class, cfgFile);
    // check the total and active services before doing the upgrade
    assertEquals(m_totalBefore, cfg.getServices().size());
    // perform the upgrade
    final EOLServiceConfigMigratorOffline migrator = new EOLServiceConfigMigratorOffline();
    migrator.execute();
    // confirm the total and active services after the upgrade
    cfg = JaxbUtils.unmarshal(ServiceConfiguration.class, cfgFile);
    final ServiceConfigFactory factory = new ServiceConfigFactory();
    Assert.assertEquals(m_totalAfter, cfg.getServices().size());
    Assert.assertEquals(m_enabledAfter, factory.getServices().length);
    for (final Service svc : cfg.getServices()) {
        final String serviceName = svc.getName();
        if (m_disabled.contains(serviceName)) {
            assertFalse("Service " + serviceName + " should be disabled.", svc.isEnabled());
        }
    }
    for (final Service svc : factory.getServices()) {
        final String serviceName = svc.getName();
        assertFalse("Service " + serviceName + " should not be in the active service list.", m_disabled.contains(svc.getName()));
    }
}
Also used : ServiceConfiguration(org.opennms.netmgt.config.service.ServiceConfiguration) ServiceConfigFactory(org.opennms.netmgt.config.ServiceConfigFactory) Service(org.opennms.netmgt.config.service.Service) File(java.io.File) Test(org.junit.Test)

Example 3 with ServiceConfiguration

use of org.opennms.netmgt.config.service.ServiceConfiguration in project opennms by OpenNMS.

the class ServiceConfig1701MigratorOfflineTest method testUpgradeConfig.

/**
     * Test fixing the configuration file.
     *
     * @throws Exception the exception
     */
@Test
public void testUpgradeConfig() throws Exception {
    File cfgFile = ConfigFileConstants.getFile(ConfigFileConstants.SERVICE_CONF_FILE_NAME);
    ServiceConfiguration cfg = JaxbUtils.unmarshal(ServiceConfiguration.class, cfgFile);
    // check the total and active services before doing the upgrade
    assertEquals(m_totalBefore, cfg.getServices().size());
    // perform the upgrade
    final ServiceConfig1701MigratorOffline migrator = new ServiceConfig1701MigratorOffline();
    migrator.execute();
    // confirm the total and active services after the upgrade
    cfg = JaxbUtils.unmarshal(ServiceConfiguration.class, cfgFile);
    final ServiceConfigFactory factory = new ServiceConfigFactory();
    Assert.assertEquals(m_totalAfter, cfg.getServices().size());
    Assert.assertEquals(m_enabledAfter, factory.getServices().length);
    for (final Service svc : cfg.getServices()) {
        final String serviceName = svc.getName();
        if (m_disabled.contains(serviceName)) {
            assertFalse("Service " + serviceName + " should be disabled.", svc.isEnabled());
        }
    }
    for (final Service svc : factory.getServices()) {
        final String serviceName = svc.getName();
        assertFalse("Service " + serviceName + " should not be in the active service list.", m_disabled.contains(svc.getName()));
    }
}
Also used : ServiceConfiguration(org.opennms.netmgt.config.service.ServiceConfiguration) ServiceConfigFactory(org.opennms.netmgt.config.ServiceConfigFactory) Service(org.opennms.netmgt.config.service.Service) File(java.io.File) Test(org.junit.Test)

Example 4 with ServiceConfiguration

use of org.opennms.netmgt.config.service.ServiceConfiguration in project opennms by OpenNMS.

the class ServiceConfigMigratorOfflineTest method testFixingConfig.

/**
     * Test fixing the configuration file.
     *
     * @throws Exception the exception
     */
@Test
public void testFixingConfig() throws Exception {
    ServiceConfigMigratorOffline migrator = new ServiceConfigMigratorOffline();
    migrator.execute();
    // Checking parsing the fixed file (it should contain all the services)
    File cfgFile = ConfigFileConstants.getFile(ConfigFileConstants.SERVICE_CONF_FILE_NAME);
    ServiceConfiguration cfg = JaxbUtils.unmarshal(ServiceConfiguration.class, cfgFile);
    // Do not change this value: the config file behind this test should always contain
    // the content for OpenNMS 14.0.0, regardless of whether or not services are added,
    // changed, or removed in the latest version.
    Assert.assertEquals(38, cfg.getServices().size());
    // Checking Service Factory (it should return only the enabled services)
    ServiceConfigFactory factory = new ServiceConfigFactory();
    Assert.assertEquals(27, factory.getServices().length);
}
Also used : ServiceConfiguration(org.opennms.netmgt.config.service.ServiceConfiguration) ServiceConfigFactory(org.opennms.netmgt.config.ServiceConfigFactory) File(java.io.File) Test(org.junit.Test)

Example 5 with ServiceConfiguration

use of org.opennms.netmgt.config.service.ServiceConfiguration in project opennms by OpenNMS.

the class ServiceConfig1701MigratorOffline method execute.

/* (non-Javadoc)
     * @see org.opennms.upgrade.api.OnmsUpgrade#execute()
     */
@Override
public void execute() throws OnmsUpgradeException {
    try {
        ServiceConfiguration currentCfg = JaxbUtils.unmarshal(ServiceConfiguration.class, configFile);
        log("Current configuration: " + currentCfg.getServices().size() + " services.\n");
        for (int i = currentCfg.getServices().size() - 1; i >= 0; i--) {
            final Service localSvc = (Service) currentCfg.getServices().get(i);
            final String name = localSvc.getName();
            if (oldServices.contains(name)) {
                log("Removing old service %s\n", name);
                currentCfg.getServices().remove(i);
            }
        }
        log("New configuration: " + currentCfg.getServices().size() + " services.\n");
        // now remove 
        final StringWriter sw = new StringWriter();
        sw.write("<?xml version=\"1.0\"?>\n");
        sw.write("<!-- NOTE!!!!!!!!!!!!!!!!!!!\n");
        sw.write("The order in which these services are specified is important - for example, Eventd\n");
        sw.write("will need to come up last so that none of the event topic subcribers loose any event.\n");
        sw.write("\nWhen splitting services to run on mutiple VMs, the order of the services should be\n");
        sw.write("maintained\n");
        sw.write("-->\n");
        JaxbUtils.marshal(currentCfg, sw);
        final FileWriter fw = new FileWriter(configFile);
        fw.write(sw.toString());
        fw.close();
    } catch (Exception e) {
        throw new OnmsUpgradeException("Can't fix services configuration because " + e.getMessage(), e);
    }
}
Also used : ServiceConfiguration(org.opennms.netmgt.config.service.ServiceConfiguration) StringWriter(java.io.StringWriter) FileWriter(java.io.FileWriter) Service(org.opennms.netmgt.config.service.Service) OnmsUpgradeException(org.opennms.upgrade.api.OnmsUpgradeException) IOException(java.io.IOException) OnmsUpgradeException(org.opennms.upgrade.api.OnmsUpgradeException)

Aggregations

ServiceConfiguration (org.opennms.netmgt.config.service.ServiceConfiguration)6 Service (org.opennms.netmgt.config.service.Service)5 File (java.io.File)3 FileWriter (java.io.FileWriter)3 IOException (java.io.IOException)3 StringWriter (java.io.StringWriter)3 Test (org.junit.Test)3 ServiceConfigFactory (org.opennms.netmgt.config.ServiceConfigFactory)3 OnmsUpgradeException (org.opennms.upgrade.api.OnmsUpgradeException)3 Attribute (org.opennms.netmgt.config.service.Attribute)1