From: Maros Marsalek Date: Mon, 16 Dec 2013 15:29:58 +0000 (+0100) Subject: Switch initial config files format to xml and add autodetect adapter for config persi... X-Git-Tag: jenkins-controller-bulk-release-prepare-only-2-1~93^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=dea24d658123f9059a3fbb3a650c2dbfdb480fcf Switch initial config files format to xml and add autodetect adapter for config persister. Autodetect adapter allows to read initial configuration from xml as well as plaintext files. The detection of file type is based on file content. Change-Id: I499f0983bbea60f07e2ea7deb93814aa4f9e59e6 Signed-off-by: Maros Marsalek --- diff --git a/opendaylight/config/config-persister-directory-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/directory/DirectoryPersister.java b/opendaylight/config/config-persister-directory-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/directory/DirectoryPersister.java index a123eb981e..eb8ef8cddf 100644 --- a/opendaylight/config/config-persister-directory-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/directory/DirectoryPersister.java +++ b/opendaylight/config/config-persister-directory-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/directory/DirectoryPersister.java @@ -33,21 +33,23 @@ public class DirectoryPersister implements Persister { private static final Logger logger = LoggerFactory.getLogger(DirectoryPersister.class); private static final Charset ENCODING = Charsets.UTF_8; - static final String MODULES_START = "//MODULES START"; + public static final String MODULES_START = "//MODULES START"; static final String SERVICES_START = "//SERVICES START"; static final String CAPABILITIES_START = "//CAPABILITIES START"; private final File storage; - private final String header, middle, footer; + private static final String header, middle, footer; - public DirectoryPersister(File storage) { - checkArgument(storage.exists() && storage.isDirectory(), "Storage directory does not exist: " + storage); - this.storage = storage; + static { header = readResource("header.txt"); middle = readResource("middle.txt"); footer = readResource("footer.txt"); + } + public DirectoryPersister(File storage) { + checkArgument(storage.exists() && storage.isDirectory(), "Storage directory does not exist: " + storage); + this.storage = storage; } private static String readResource(String resource) { @@ -78,13 +80,18 @@ public class DirectoryPersister implements Persister { for (File file : sortedFiles) { logger.trace("Adding file '{}' to combined result", file); - final MyLineProcessor lineProcessor = new MyLineProcessor(file.getAbsolutePath()); - Files.readLines(file, ENCODING, lineProcessor); - result.add(lineProcessor.getConfigSnapshotHolder(header, middle, footer)); + ConfigSnapshotHolder configSnapshotHolder = loadLastConfig(file); + result.add(configSnapshotHolder); } return result; } + public static ConfigSnapshotHolder loadLastConfig(File file) throws IOException { + final MyLineProcessor lineProcessor = new MyLineProcessor(file.getAbsolutePath()); + Files.readLines(file, ENCODING, lineProcessor); + return lineProcessor.getConfigSnapshotHolder(header, middle, footer); + } + @Override public void close() { diff --git a/opendaylight/config/config-persister-directory-autodetect-adapter/pom.xml b/opendaylight/config/config-persister-directory-autodetect-adapter/pom.xml new file mode 100644 index 0000000000..0ec7726e3a --- /dev/null +++ b/opendaylight/config/config-persister-directory-autodetect-adapter/pom.xml @@ -0,0 +1,113 @@ + + + 4.0.0 + + config-subsystem + org.opendaylight.controller + 0.2.3-SNAPSHOT + .. + + config-persister-directory-autodetect-adapter + ${project.artifactId} + bundle + + + + + ${project.groupId} + config-persister-api + + + org.apache.commons + commons-lang3 + + + com.google.guava + guava + + + org.opendaylight.controller + config-persister-directory-adapter + ${config.version} + + + org.opendaylight.controller + config-persister-directory-xml-adapter + ${config.version} + + + + org.slf4j + slf4j-api + + + commons-io + commons-io + + + + + org.opendaylight.bgpcep + mockito-configuration + test + + + + + + + + + org.codehaus.groovy.maven + gmaven-plugin + + + generate-sources + + execute + + + + System.setProperty("osgiversion", "${project.version}".replace('-', '.')) + + + + + + + org.apache.felix + maven-bundle-plugin + + + ${project.groupId}.config-persister-impl;bundle-version=${osgiversion} + + org.opendaylight.controller.config.persister.storage.adapter + + + com.google.common.base, + com.google.common.io, + org.apache.commons.io, + org.opendaylight.controller.config.persist.api, + org.slf4j, + com.google.common.collect, + javax.xml.bind, + javax.xml.bind.annotation, + javax.xml.transform, + javax.xml.transform.stream, + org.eclipse.persistence.jaxb, + org.apache.commons.lang3 + + + org.opendaylight.controller.config.persist.storage.file.xml.model, + org.opendaylight.controller.config.persist.storage.directory, + org.opendaylight.controller.config.persist.storage.directory.xml, + + + + + + + + diff --git a/opendaylight/config/config-persister-directory-autodetect-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/directory/autodetect/AutodetectDirectoryPersister.java b/opendaylight/config/config-persister-directory-autodetect-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/directory/autodetect/AutodetectDirectoryPersister.java new file mode 100644 index 0000000000..f262952281 --- /dev/null +++ b/opendaylight/config/config-persister-directory-autodetect-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/directory/autodetect/AutodetectDirectoryPersister.java @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.controller.config.persist.storage.directory.autodetect; + +import org.opendaylight.controller.config.persist.api.ConfigSnapshotHolder; +import org.opendaylight.controller.config.persist.api.Persister; +import org.opendaylight.controller.config.persist.storage.directory.DirectoryPersister; +import org.opendaylight.controller.config.persist.storage.directory.xml.XmlDirectoryPersister; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.xml.bind.JAXBException; +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import static com.google.common.base.Preconditions.checkArgument; + +public class AutodetectDirectoryPersister implements Persister { + private static final Logger logger = LoggerFactory.getLogger(AutodetectDirectoryPersister.class); + + private final File storage; + + public AutodetectDirectoryPersister(File storage) { + checkArgument(storage.exists() && storage.isDirectory(), "Storage directory does not exist: " + storage); + this.storage = storage; + } + + @Override + public void persistConfig(ConfigSnapshotHolder holder) throws IOException { + throw new UnsupportedOperationException("This adapter is read only. Please set readonly=true on " + getClass()); + } + + @Override + public List loadLastConfigs() throws IOException { + File[] filesArray = storage.listFiles(); + if (filesArray == null || filesArray.length == 0) { + return Collections.emptyList(); + } + List sortedFiles = new ArrayList<>(Arrays.asList(filesArray)); + Collections.sort(sortedFiles); + + // combine all found files + logger.debug("Reading files in following order: {}", sortedFiles); + + List result = new ArrayList<>(); + for (File file : sortedFiles) { + logger.trace("Adding file '{}' to combined result", file); + + FileType fileType = FileType.getFileType(file); + logger.trace("File '{}' detected as {} storage", file, fileType); + + ConfigSnapshotHolder snapshot = loadLastConfig(file, fileType); + result.add(snapshot); + } + return result; + } + + private ConfigSnapshotHolder loadLastConfig(File file, FileType fileType) throws IOException { + switch (fileType) { + case plaintext: + return DirectoryPersister.loadLastConfig(file); + case xml: + try { + return XmlDirectoryPersister.loadLastConfig(file); + } catch (JAXBException e) { + logger.warn("Unable to restore configuration snapshot from {}", file, e); + throw new IllegalStateException("Unable to restore configuration snapshot from " + file, e); + } + default: + throw new IllegalStateException("Unknown storage type " + fileType); + } + } + + @Override + public void close() { + + } + + @Override + public String toString() { + final StringBuffer sb = new StringBuffer("AutodetectDirectoryPersister{"); + sb.append("storage=").append(storage); + sb.append('}'); + return sb.toString(); + } +} diff --git a/opendaylight/config/config-persister-directory-autodetect-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/directory/autodetect/AutodetectDirectoryStorageAdapter.java b/opendaylight/config/config-persister-directory-autodetect-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/directory/autodetect/AutodetectDirectoryStorageAdapter.java new file mode 100644 index 0000000000..f856ddd6cb --- /dev/null +++ b/opendaylight/config/config-persister-directory-autodetect-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/directory/autodetect/AutodetectDirectoryStorageAdapter.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.controller.config.persist.storage.directory.autodetect; + +import com.google.common.base.Preconditions; +import org.opendaylight.controller.config.persist.api.Persister; +import org.opendaylight.controller.config.persist.api.PropertiesProvider; +import org.opendaylight.controller.config.persist.api.StorageAdapter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; + +/** + * StorageAdapter that retrieves initial configuration from a directory. If multiple files are present, snapshot and + * required capabilities will be merged together. Writing to this persister is not supported. + */ +public class AutodetectDirectoryStorageAdapter implements StorageAdapter { + private static final Logger logger = LoggerFactory.getLogger(AutodetectDirectoryStorageAdapter.class); + + public static final String DIRECTORY_STORAGE_PROP = "directoryStorage"; + + + @Override + public Persister instantiate(PropertiesProvider propertiesProvider) { + String fileStorageProperty = propertiesProvider.getProperty(DIRECTORY_STORAGE_PROP); + Preconditions.checkNotNull(fileStorageProperty, "Unable to find " + propertiesProvider.getFullKeyForReporting(DIRECTORY_STORAGE_PROP)); + File storage = new File(fileStorageProperty); + logger.debug("Using {}", storage); + return new AutodetectDirectoryPersister(storage); + } + +} diff --git a/opendaylight/config/config-persister-directory-autodetect-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/directory/autodetect/FileType.java b/opendaylight/config/config-persister-directory-autodetect-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/directory/autodetect/FileType.java new file mode 100644 index 0000000000..03654ebcb2 --- /dev/null +++ b/opendaylight/config/config-persister-directory-autodetect-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/directory/autodetect/FileType.java @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.controller.config.persist.storage.directory.autodetect; + +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Charsets; +import com.google.common.io.Files; +import org.apache.commons.lang3.StringUtils; +import org.opendaylight.controller.config.persist.storage.directory.DirectoryPersister; +import org.opendaylight.controller.config.persist.storage.file.xml.model.ConfigSnapshot; + +import java.io.File; +import java.io.IOException; +import java.util.Arrays; + +enum FileType { + + plaintext, xml; + + public static final String XML_STORAGE_FIRST_LINE = "<" + ConfigSnapshot.SNAPSHOT_ROOT_ELEMENT_NAME + ">"; + + static FileType getFileType(File file) { + String firstLine = readFirstLine(file); + if(isPlaintextStorage(firstLine)) { + return plaintext; + } else if(isXmlStorage(firstLine)) + return xml; + + throw new IllegalArgumentException("File " + file + " is not of permitted storage type: " + Arrays.toString(FileType.values())); + } + + private static boolean isXmlStorage(String firstLine) { + return firstLine.startsWith(XML_STORAGE_FIRST_LINE); + } + + private static boolean isPlaintextStorage(String firstLine) { + return firstLine.startsWith(DirectoryPersister.MODULES_START); + + } + + @VisibleForTesting + static String readFirstLine(File file) { + FirstLineReadingProcessor callback = new FirstLineReadingProcessor(); + try { + return Files.readLines(file, Charsets.UTF_8, callback); + } catch (IOException e) { + throw new IllegalArgumentException("Unable to detect file type of file " + file, e); + } + } + + + private static class FirstLineReadingProcessor implements com.google.common.io.LineProcessor { + private String firstNonBlankLine; + + @Override + public boolean processLine(String line) throws IOException { + if(isEmptyLine(line)) { + return true; + } else { + firstNonBlankLine = line.trim(); + return false; + } + } + + private boolean isEmptyLine(String line) { + return StringUtils.isBlank(line); + } + + @Override + public String getResult() { + return firstNonBlankLine; + } + } +} diff --git a/opendaylight/config/config-persister-directory-autodetect-adapter/src/test/java/org/opendaylight/controller/config/persist/storage/directory/autodetect/AutodetectDirectoryPersisterTest.java b/opendaylight/config/config-persister-directory-autodetect-adapter/src/test/java/org/opendaylight/controller/config/persist/storage/directory/autodetect/AutodetectDirectoryPersisterTest.java new file mode 100644 index 0000000000..7e423914c2 --- /dev/null +++ b/opendaylight/config/config-persister-directory-autodetect-adapter/src/test/java/org/opendaylight/controller/config/persist/storage/directory/autodetect/AutodetectDirectoryPersisterTest.java @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.controller.config.persist.storage.directory.autodetect; + +import junit.framework.Assert; +import org.junit.Test; +import org.junit.matchers.JUnitMatchers; +import org.opendaylight.controller.config.persist.api.ConfigSnapshotHolder; + +import java.io.File; +import java.util.List; + +public class AutodetectDirectoryPersisterTest { + + @Test + public void testCombined() throws Exception { + File resourcePath = FileTypeTest.getResourceAsFile("/combined/1controller.txt.config"); + + AutodetectDirectoryPersister persister = new AutodetectDirectoryPersister(resourcePath.getParentFile()); + List configs = persister.loadLastConfigs(); + + Assert.assertEquals(2, configs.size()); + String snapFromTxt = configs.get(0).getConfigSnapshot(); + org.junit.Assert.assertThat(snapFromTxt, JUnitMatchers.containsString("txt")); + org.junit.Assert.assertThat(snapFromTxt, JUnitMatchers.containsString("txt")); + + String snapFromXml = configs.get(1).getConfigSnapshot(); + org.junit.Assert.assertThat(snapFromXml, JUnitMatchers.containsString("xml")); + + Assert.assertEquals(configs.get(0).getCapabilities(), configs.get(1).getCapabilities()); + } +} diff --git a/opendaylight/config/config-persister-directory-autodetect-adapter/src/test/java/org/opendaylight/controller/config/persist/storage/directory/autodetect/FileTypeTest.java b/opendaylight/config/config-persister-directory-autodetect-adapter/src/test/java/org/opendaylight/controller/config/persist/storage/directory/autodetect/FileTypeTest.java new file mode 100644 index 0000000000..bbc272d388 --- /dev/null +++ b/opendaylight/config/config-persister-directory-autodetect-adapter/src/test/java/org/opendaylight/controller/config/persist/storage/directory/autodetect/FileTypeTest.java @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.controller.config.persist.storage.directory.autodetect; + +import junit.framework.Assert; +import org.junit.Test; +import org.junit.matchers.JUnitMatchers; + +import java.io.File; + +public class FileTypeTest { + + @Test + public void testPlaintext() throws Exception { + File file = getResourceAsFile("/test.txt.config"); + + FileType type = FileType.getFileType(file); + Assert.assertEquals(FileType.plaintext, type); + + } + + @Test + public void testXml() throws Exception { + File file = getResourceAsFile("/test.xml.config"); + + FileType type = FileType.getFileType(file); + Assert.assertEquals(FileType.xml, type); + } + + @Test(expected = IllegalArgumentException.class) + public void testUnknown() throws Exception { + File file = getResourceAsFile("/unknown.config"); + + try { + FileType.getFileType(file); + } catch (IllegalArgumentException e) { + org.junit.Assert.assertThat(e.getMessage(), JUnitMatchers.containsString("File " + file + " is not of permitted storage type")); + throw e; + } + } + + static File getResourceAsFile(String resource) { + String f = FileTypeTest.class.getResource(resource).getFile(); + return new File(f); + } + +} diff --git a/opendaylight/config/config-persister-directory-autodetect-adapter/src/test/resources/combined/1controller.txt.config b/opendaylight/config/config-persister-directory-autodetect-adapter/src/test/resources/combined/1controller.txt.config new file mode 100644 index 0000000000..f72cd1c080 --- /dev/null +++ b/opendaylight/config/config-persister-directory-autodetect-adapter/src/test/resources/combined/1controller.txt.config @@ -0,0 +1,8 @@ +//MODULES START + txt +//SERVICES START + txt +//CAPABILITIES START +cap1&rev +cap2 +capa a \ No newline at end of file diff --git a/opendaylight/config/config-persister-directory-autodetect-adapter/src/test/resources/combined/2controller.xml.config b/opendaylight/config/config-persister-directory-autodetect-adapter/src/test/resources/combined/2controller.xml.config new file mode 100644 index 0000000000..988f86675d --- /dev/null +++ b/opendaylight/config/config-persister-directory-autodetect-adapter/src/test/resources/combined/2controller.xml.config @@ -0,0 +1,10 @@ + + + cap1&rev + cap2 + capa a + + + xml + + \ No newline at end of file diff --git a/opendaylight/config/config-persister-directory-autodetect-adapter/src/test/resources/test.txt.config b/opendaylight/config/config-persister-directory-autodetect-adapter/src/test/resources/test.txt.config new file mode 100644 index 0000000000..edf37caf0e --- /dev/null +++ b/opendaylight/config/config-persister-directory-autodetect-adapter/src/test/resources/test.txt.config @@ -0,0 +1,2 @@ +//MODULES START +configuration \ No newline at end of file diff --git a/opendaylight/config/config-persister-directory-autodetect-adapter/src/test/resources/test.xml.config b/opendaylight/config/config-persister-directory-autodetect-adapter/src/test/resources/test.xml.config new file mode 100644 index 0000000000..fe94299adb --- /dev/null +++ b/opendaylight/config/config-persister-directory-autodetect-adapter/src/test/resources/test.xml.config @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/opendaylight/config/config-persister-directory-autodetect-adapter/src/test/resources/unknown.config b/opendaylight/config/config-persister-directory-autodetect-adapter/src/test/resources/unknown.config new file mode 100644 index 0000000000..c4218c8d64 --- /dev/null +++ b/opendaylight/config/config-persister-directory-autodetect-adapter/src/test/resources/unknown.config @@ -0,0 +1,2 @@ +unknown +file type \ No newline at end of file diff --git a/opendaylight/config/config-persister-directory-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/directory/xml/XmlDirectoryPersister.java b/opendaylight/config/config-persister-directory-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/directory/xml/XmlDirectoryPersister.java index f6f6de9fd5..0ca47edf0e 100644 --- a/opendaylight/config/config-persister-directory-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/directory/xml/XmlDirectoryPersister.java +++ b/opendaylight/config/config-persister-directory-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/directory/xml/XmlDirectoryPersister.java @@ -63,17 +63,21 @@ public class XmlDirectoryPersister implements Persister { private ConfigSnapshotHolder fromXmlSnapshot(File file) { try { - JAXBContext jaxbContext = JAXBContext.newInstance(ConfigSnapshot.class); - Unmarshaller um = jaxbContext.createUnmarshaller(); - - return asHolder((ConfigSnapshot) um.unmarshal(file)); + return loadLastConfig(file); } catch (JAXBException e) { logger.warn("Unable to restore configuration snapshot from {}", file, e); throw new IllegalStateException("Unable to restore configuration snapshot from " + file, e); } } - private ConfigSnapshotHolder asHolder(final ConfigSnapshot unmarshalled) { + public static ConfigSnapshotHolder loadLastConfig(File file) throws JAXBException { + JAXBContext jaxbContext = JAXBContext.newInstance(ConfigSnapshot.class); + Unmarshaller um = jaxbContext.createUnmarshaller(); + + return asHolder((ConfigSnapshot) um.unmarshal(file)); + } + + private static ConfigSnapshotHolder asHolder(final ConfigSnapshot unmarshalled) { return new ConfigSnapshotHolder() { @Override public String getConfigSnapshot() { diff --git a/opendaylight/config/config-persister-file-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/file/xml/model/ConfigSnapshot.java b/opendaylight/config/config-persister-file-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/file/xml/model/ConfigSnapshot.java index 41976000ba..cfc70858c3 100644 --- a/opendaylight/config/config-persister-file-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/file/xml/model/ConfigSnapshot.java +++ b/opendaylight/config/config-persister-file-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/file/xml/model/ConfigSnapshot.java @@ -15,9 +15,11 @@ import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlRootElement; import java.util.SortedSet; -@XmlRootElement(name = "snapshot") +@XmlRootElement(name = ConfigSnapshot.SNAPSHOT_ROOT_ELEMENT_NAME) public class ConfigSnapshot { + public static final String SNAPSHOT_ROOT_ELEMENT_NAME = "snapshot"; + private String configSnapshot; private SortedSet capabilities; diff --git a/opendaylight/config/pom.xml b/opendaylight/config/pom.xml index 36b109fcd1..1a29046e2d 100644 --- a/opendaylight/config/pom.xml +++ b/opendaylight/config/pom.xml @@ -41,6 +41,7 @@ netty-timer-config config-persister-directory-adapter config-persister-directory-xml-adapter + config-persister-directory-autodetect-adapter yang-test-plugin diff --git a/opendaylight/distribution/opendaylight/pom.xml b/opendaylight/distribution/opendaylight/pom.xml index f1eca41dee..9f3862f2ad 100644 --- a/opendaylight/distribution/opendaylight/pom.xml +++ b/opendaylight/distribution/opendaylight/pom.xml @@ -262,6 +262,11 @@ config-persister-directory-xml-adapter ${config.version} + + org.opendaylight.controller + config-persister-directory-autodetect-adapter + ${config.version} + diff --git a/opendaylight/distribution/opendaylight/src/main/resources/configuration/config.ini b/opendaylight/distribution/opendaylight/src/main/resources/configuration/config.ini index 995e4076c2..dccb267f3a 100644 --- a/opendaylight/distribution/opendaylight/src/main/resources/configuration/config.ini +++ b/opendaylight/distribution/opendaylight/src/main/resources/configuration/config.ini @@ -26,7 +26,11 @@ netconf.ssh.pk.path = ./configuration/RSA.pk netconf.config.persister.active=1,2 # read startup configuration -netconf.config.persister.1.storageAdapterClass=org.opendaylight.controller.config.persist.storage.directory.DirectoryStorageAdapter +#netconf.config.persister.1.storageAdapterClass=org.opendaylight.controller.config.persist.storage.directory.DirectoryStorageAdapter +#netconf.config.persister.1.properties.directoryStorage=configuration/initial/ +#netconf.config.persister.1.readonly=true + +netconf.config.persister.1.storageAdapterClass=org.opendaylight.controller.config.persist.storage.directory.autodetect.AutodetectDirectoryStorageAdapter netconf.config.persister.1.properties.directoryStorage=configuration/initial/ netconf.config.persister.1.readonly=true diff --git a/opendaylight/distribution/opendaylight/src/main/resources/configuration/initial/00-netty.conf b/opendaylight/distribution/opendaylight/src/main/resources/configuration/initial/00-netty.conf deleted file mode 100644 index c2f9bc311d..0000000000 --- a/opendaylight/distribution/opendaylight/src/main/resources/configuration/initial/00-netty.conf +++ /dev/null @@ -1,48 +0,0 @@ -//MODULES START - - netty:netty-threadgroup-fixed - global-boss-group - - - netty:netty-threadgroup-fixed - global-worker-group - - - netty:netty-hashed-wheel-timer - global-timer - - - netty:netty-global-event-executor - global-event-executor - -//SERVICES START - - netty:netty-threadgroup - - global-boss-group - /modules/module[type='netty-threadgroup-fixed'][name='global-boss-group'] - - - global-worker-group - /modules/module[type='netty-threadgroup-fixed'][name='global-worker-group'] - - - - netty:netty-event-executor - - global-event-executor - /modules/module[type='netty-global-event-executor'][name='global-event-executor'] - - - - netty:netty-timer - - global-timer - /modules/module[type='netty-hashed-wheel-timer'][name='global-timer'] - - -//CAPABILITIES START -urn:opendaylight:params:xml:ns:yang:controller:netty?module=netty&revision=2013-11-19 -urn:opendaylight:params:xml:ns:yang:controller:netty:eventexecutor?module=netty-event-executor&revision=2013-11-12 -urn:opendaylight:params:xml:ns:yang:controller:netty:threadgroup?module=threadgroup&revision=2013-11-07 -urn:opendaylight:params:xml:ns:yang:controller:netty:timer?module=netty-timer&revision=2013-11-19 diff --git a/opendaylight/distribution/opendaylight/src/main/resources/configuration/initial/00-netty.xml.conf b/opendaylight/distribution/opendaylight/src/main/resources/configuration/initial/00-netty.xml.conf new file mode 100644 index 0000000000..9ba590820a --- /dev/null +++ b/opendaylight/distribution/opendaylight/src/main/resources/configuration/initial/00-netty.xml.conf @@ -0,0 +1,60 @@ + + + urn:opendaylight:params:xml:ns:yang:controller:netty?module=netty&revision=2013-11-19 + urn:opendaylight:params:xml:ns:yang:controller:netty:eventexecutor?module=netty-event-executor&revision=2013-11-12 + urn:opendaylight:params:xml:ns:yang:controller:netty:threadgroup?module=threadgroup&revision=2013-11-07 + urn:opendaylight:params:xml:ns:yang:controller:netty:timer?module=netty-timer&revision=2013-11-19 + + + + + + + netty:netty-threadgroup-fixed + global-boss-group + + + netty:netty-threadgroup-fixed + global-worker-group + + + netty:netty-hashed-wheel-timer + global-timer + + + netty:netty-global-event-executor + global-event-executor + + + + + + netty:netty-threadgroup + + global-boss-group + /modules/module[type='netty-threadgroup-fixed'][name='global-boss-group'] + + + global-worker-group + /modules/module[type='netty-threadgroup-fixed'][name='global-worker-group'] + + + + netty:netty-event-executor + + global-event-executor + /modules/module[type='netty-global-event-executor'][name='global-event-executor'] + + + + netty:netty-timer + + global-timer + /modules/module[type='netty-hashed-wheel-timer'][name='global-timer'] + + + + + + + diff --git a/opendaylight/distribution/opendaylight/src/main/resources/configuration/initial/01-md-sal.conf b/opendaylight/distribution/opendaylight/src/main/resources/configuration/initial/01-md-sal.conf deleted file mode 100644 index edee185c17..0000000000 --- a/opendaylight/distribution/opendaylight/src/main/resources/configuration/initial/01-md-sal.conf +++ /dev/null @@ -1,137 +0,0 @@ -//MODULES START - - prefix:schema-service-singleton - yang-schema-service - - - prefix:hash-map-data-store - hash-map-data-store - - - prefix:dom-clustered-store-impl - cluster-data-store - - - prefix:dom-broker-impl - dom-broker - - dom:dom-data-store - - hash-map-data-store - - - - - prefix:binding-broker-impl - binding-broker-impl - - binding:binding-notification-service - binding-notification-broker - - - binding:binding-data-broker - binding-data-broker - - - - prefix:runtime-generated-mapping - runtime-mapping-singleton - - - prefix:binding-notification-broker - binding-notification-broker - - - prefix:binding-data-broker - binding-data-broker - - dom:dom-broker-osgi-registry - dom-broker - - - binding:binding-dom-mapping-service - runtime-mapping-singleton - - -//SERVICES START - - dom:schema-service - - yang-schema-service - /modules/module[type='schema-service-singleton'][name='yang-schema-service'] - - - - binding:binding-notification-service - - binding-notification-broker - /modules/module[type='binding-notification-broker'][name='binding-notification-broker'] - - - - dom:dom-data-store - - hash-map-data-store - /modules/module[type='hash-map-data-store'][name='hash-map-data-store'] - - - cluster-data-store - /modules/module[type='dom-clustered-store-impl'][name='cluster-data-store'] - - - - binding:binding-broker-osgi-registry - - binding-osgi-broker - /modules/module[type='binding-broker-impl'][name='binding-broker-impl'] - - - - binding:binding-rpc-registry - - binding-rpc-broker - /modules/module[type='binding-broker-impl'][name='binding-broker-impl'] - - - - binding-impl:binding-dom-mapping-service - - runtime-mapping-singleton - /modules/module[type='runtime-generated-mapping'][name='runtime-mapping-singleton'] - - - - dom:dom-broker-osgi-registry - - dom-broker - /modules/module[type='dom-broker-impl'][name='dom-broker'] - - - - binding:binding-data-broker - - binding-data-broker - /modules/module[type='binding-data-broker'][name='binding-data-broker'] - - -//CAPABILITIES START -urn:opendaylight:l2:types?module=opendaylight-l2-types&revision=2013-08-27 -urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding?module=opendaylight-md-sal-binding&revision=2013-10-28 -urn:opendaylight:params:xml:ns:yang:controller:threadpool?module=threadpool&revision=2013-04-09 -urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom?module=opendaylight-md-sal-dom&revision=2013-10-28 -urn:opendaylight:params:xml:ns:yang:controller:config?module=config&revision=2013-04-05 -urn:ietf:params:netconf:capability:candidate:1.0 -urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&revision=2010-10-04 -urn:opendaylight:params:xml:ns:yang:controller:netty:eventexecutor?module=netty-event-executor&revision=2013-11-12 -urn:ietf:params:xml:ns:yang:rpc-context?module=rpc-context&revision=2013-06-17 -urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding:impl?module=opendaylight-sal-binding-broker-impl&revision=2013-10-28 -urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types&revision=2010-09-24 -urn:ietf:params:netconf:capability:rollback-on-error:1.0 -urn:ietf:params:xml:ns:yang:ietf-yang-types?module=ietf-yang-types&revision=2010-09-24 -urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl?module=threadpool-impl&revision=2013-04-05 -urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:impl?module=opendaylight-sal-dom-broker-impl&revision=2013-10-28 -urn:opendaylight:yang:extension:yang-ext?module=yang-ext&revision=2013-07-09 -urn:opendaylight:params:xml:ns:yang:iana?module=iana&revision=2013-08-16 -urn:opendaylight:params:xml:ns:yang:controller:md:sal:common?module=opendaylight-md-sal-common&revision=2013-10-28 -urn:opendaylight:params:xml:ns:yang:ieee754?module=ieee754&revision=2013-08-19 -urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:cluster:store?module=odl-sal-dom-clustered-store-cfg&revision=2013-10-28 diff --git a/opendaylight/distribution/opendaylight/src/main/resources/configuration/initial/01-md-sal.xml.conf b/opendaylight/distribution/opendaylight/src/main/resources/configuration/initial/01-md-sal.xml.conf new file mode 100644 index 0000000000..20f59892c3 --- /dev/null +++ b/opendaylight/distribution/opendaylight/src/main/resources/configuration/initial/01-md-sal.xml.conf @@ -0,0 +1,153 @@ + + + + + + + + prefix:schema-service-singleton + yang-schema-service + + + prefix:hash-map-data-store + hash-map-data-store + + + prefix:dom-clustered-store-impl + cluster-data-store + + + prefix:dom-broker-impl + dom-broker + + dom:dom-data-store + + hash-map-data-store + + + + + prefix:binding-broker-impl + binding-broker-impl + + binding:binding-notification-service + binding-notification-broker + + + binding:binding-data-broker + binding-data-broker + + + + prefix:runtime-generated-mapping + runtime-mapping-singleton + + + prefix:binding-notification-broker + binding-notification-broker + + + prefix:binding-data-broker + binding-data-broker + + dom:dom-broker-osgi-registry + dom-broker + + + binding:binding-dom-mapping-service + runtime-mapping-singleton + + + + + + + dom:schema-service + + yang-schema-service + /modules/module[type='schema-service-singleton'][name='yang-schema-service'] + + + + binding:binding-notification-service + + binding-notification-broker + /modules/module[type='binding-notification-broker'][name='binding-notification-broker'] + + + + dom:dom-data-store + + hash-map-data-store + /modules/module[type='hash-map-data-store'][name='hash-map-data-store'] + + + cluster-data-store + /modules/module[type='dom-clustered-store-impl'][name='cluster-data-store'] + + + + binding:binding-broker-osgi-registry + + binding-osgi-broker + /modules/module[type='binding-broker-impl'][name='binding-broker-impl'] + + + + binding:binding-rpc-registry + + binding-rpc-broker + /modules/module[type='binding-broker-impl'][name='binding-broker-impl'] + + + + binding-impl:binding-dom-mapping-service + + runtime-mapping-singleton + /modules/module[type='runtime-generated-mapping'][name='runtime-mapping-singleton'] + + + + dom:dom-broker-osgi-registry + + dom-broker + /modules/module[type='dom-broker-impl'][name='dom-broker'] + + + + binding:binding-data-broker + + binding-data-broker + /modules/module[type='binding-data-broker'][name='binding-data-broker'] + + + + + + + + + + urn:opendaylight:l2:types?module=opendaylight-l2-types&revision=2013-08-27 + urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding?module=opendaylight-md-sal-binding&revision=2013-10-28 + urn:opendaylight:params:xml:ns:yang:controller:threadpool?module=threadpool&revision=2013-04-09 + urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom?module=opendaylight-md-sal-dom&revision=2013-10-28 + urn:opendaylight:params:xml:ns:yang:controller:config?module=config&revision=2013-04-05 + urn:ietf:params:netconf:capability:candidate:1.0 + urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&revision=2010-10-04 + urn:opendaylight:params:xml:ns:yang:controller:netty:eventexecutor?module=netty-event-executor&revision=2013-11-12 + urn:ietf:params:xml:ns:yang:rpc-context?module=rpc-context&revision=2013-06-17 + urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding:impl?module=opendaylight-sal-binding-broker-impl&revision=2013-10-28 + urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types&revision=2010-09-24 + urn:ietf:params:netconf:capability:rollback-on-error:1.0 + urn:ietf:params:xml:ns:yang:ietf-yang-types?module=ietf-yang-types&revision=2010-09-24 + urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl?module=threadpool-impl&revision=2013-04-05 + urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:impl?module=opendaylight-sal-dom-broker-impl&revision=2013-10-28 + urn:opendaylight:yang:extension:yang-ext?module=yang-ext&revision=2013-07-09 + urn:opendaylight:params:xml:ns:yang:iana?module=iana&revision=2013-08-16 + urn:opendaylight:params:xml:ns:yang:controller:md:sal:common?module=opendaylight-md-sal-common&revision=2013-10-28 + urn:opendaylight:params:xml:ns:yang:ieee754?module=ieee754&revision=2013-08-19 + urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:cluster:store?module=odl-sal-dom-clustered-store-cfg&revision=2013-10-28 + + +