Ravi Nori has uploaded a new change for review.

Change subject: core : Allow redirection of all logs to syslog using extension
......................................................................

core : Allow redirection of all logs to syslog using extension

A custom handler in a new module
org.ovirt.engine.core.logger handles all
logging using extensions.

To use a new extension to handle logging
just pass the name of the extension using
ithe property loggerExtensionName. The syslog
server is passed using property syslogHost
in the custom-handler setting in ovirt-engine.xml.in

ovirt-engine.xml.in needs to modified to add the
custom handler

<custom-handler name="SYSLOG" 
class="org.ovirt.engine.core.logger.LoggerHandler" 
module="org.ovirt.engine.core.logger">
  <level name="ALL"/>
  <properties>
    <property name="pattern" value="%d %-5p [%c] (%t) %s%E%n"/>
    <property name="name" value="Syslog"/>
    <property name="syslogHost" value="192.168.1.124"/>
    <property name="loggerExtensionName" value="builtin-syslog-logger"/>
  </properties>
</custom-handler>

all SYSLOG to root-logger

<root-logger>
  <level name="INFO"/>
  <handlers>
    <handler name="SYSLOG"/>
    <handler name="SERVER"/>
  </handlers>
</root-logger>

all SYSLOG to org.ovirt

<logger category="org.ovirt" use-parent-handlers="false">
  <level name="INFO"/>
  <handlers>
    <handler name="ENGINE"/>
    <handler name="SYSLOG"/>
    #if $getboolean('ENGINE_LOG_TO_CONSOLE')
        <handler name="CONSOLE"/>
    #end if
  </handlers>
</logger>

Change-Id: Ia0dae8ffe53c3489af06d6684c72e6b431002404
Bug-Url: https://bugzilla.redhat.com/1078738
Signed-off-by: Ravi Nori <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java
A 
backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/logger/builtin/SyslogLogger.java
M 
backend/manager/modules/builtin-extensions/src/main/resources/META-INF/services/org.ovirt.engine.api.extensions.Extension
A 
backend/manager/modules/extensions-api-root/extensions-api/src/main/java/org/ovirt/engine/api/extensions/logger/Logger.java
A backend/manager/modules/logger/pom.xml
A 
backend/manager/modules/logger/src/java/org/ovirt/engine/core/logger/LoggerHandler.java
A 
backend/manager/modules/logger/src/main/java/org/ovirt/engine/core/logger/LoggerHandler.java
A 
backend/manager/modules/logger/src/main/modules/org/ovirt/engine/core/logger/main/module.xml
M backend/manager/modules/pom.xml
A logger/pom.xml
10 files changed, 431 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/31/27431/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java
index 2e5e18e..6d2d514 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java
@@ -64,6 +64,7 @@
 
         createInternalAAAConfigurations();
         createKerberosLdapAAAConfigurations();
+        createInternalSysLogConfigurations();
         ExtensionsManager.getInstance().dump();
         AuthenticationProfileRepository.getInstance();
         DbUserCacheManager.getInstance().init();
@@ -193,6 +194,18 @@
         }
     }
 
+    private void createInternalSysLogConfigurations() {
+        Properties syslogConfig = new Properties();
+        syslogConfig.put(Base.ConfigKeys.NAME, "builtin-syslog-logger");
+        syslogConfig.put(Base.ConfigKeys.PROVIDES, 
org.ovirt.engine.api.extensions.logger.Logger.class.getName());
+        syslogConfig.put(Base.ConfigKeys.ENABLED, "true");
+        syslogConfig.put(Base.ConfigKeys.BINDINGS_METHOD, 
Base.ConfigBindingsMethods.JBOSSMODULE);
+        syslogConfig.put(Base.ConfigKeys.BINDINGS_JBOSSMODULE_MODULE, 
"org.ovirt.engine.extensions.builtin");
+        syslogConfig.put(Base.ConfigKeys.BINDINGS_JBOSSMODULE_CLASS,
+                "org.ovirt.engine.extensions.logger.builtin.SyslogLogger");
+        ExtensionsManager.getInstance().load(syslogConfig);
+    }
+
     private String blankIfNull(String value) {
         return value == null ? "" : value;
     }
diff --git 
a/backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/logger/builtin/SyslogLogger.java
 
b/backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/logger/builtin/SyslogLogger.java
new file mode 100644
index 0000000..3ee97d9
--- /dev/null
+++ 
b/backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/logger/builtin/SyslogLogger.java
@@ -0,0 +1,114 @@
+package org.ovirt.engine.extensions.logger.builtin;
+
+import org.apache.log4j.PatternLayout;
+import org.apache.log4j.net.SyslogAppender;
+import org.apache.log4j.spi.LoggingEvent;
+import org.ovirt.engine.api.extensions.Base;
+import org.ovirt.engine.api.extensions.ExtMap;
+import org.ovirt.engine.api.extensions.Extension;
+import org.ovirt.engine.api.extensions.logger.Logger;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
+
+public class SyslogLogger implements Extension {
+
+    private ExtMap context;
+    private SyslogAppender logAppender;
+    private volatile boolean logHostSet = false;
+    private static final Map<Level, org.apache.log4j.Level> logLevelMap = new 
HashMap<>();
+
+    static {
+        logLevelMap.put(Level.ALL, org.apache.log4j.Level.ALL);
+        logLevelMap.put(Level.CONFIG, org.apache.log4j.Level.INFO);
+        logLevelMap.put(Level.FINE, org.apache.log4j.Level.DEBUG);
+        logLevelMap.put(Level.FINER, org.apache.log4j.Level.TRACE);
+        logLevelMap.put(Level.FINEST, org.apache.log4j.Level.TRACE);
+        logLevelMap.put(Level.INFO, org.apache.log4j.Level.INFO);
+        logLevelMap.put(Level.OFF, org.apache.log4j.Level.OFF);
+        logLevelMap.put(Level.SEVERE, org.apache.log4j.Level.ERROR);
+        logLevelMap.put(Level.WARNING, org.apache.log4j.Level.WARN);
+    }
+
+    public SyslogLogger() {
+        logAppender = new SyslogAppender();
+    }
+
+    @Override
+    public void invoke(ExtMap input, ExtMap output) {
+        try {
+            if 
(input.get(Base.InvokeKeys.COMMAND).equals(Base.InvokeCommands.INITIALIZE)) {
+                doInit(input, output);
+            } else if 
(input.get(Base.InvokeKeys.COMMAND).equals(Logger.InvokeCommands.SET_PATTERN)) {
+                setPattern((String) input.get(Logger.InvokeKeys.PATTERN));
+            } else if 
(input.get(Base.InvokeKeys.COMMAND).equals(Logger.InvokeCommands.PUBLISH)) {
+                publish((LogRecord) input.get(Logger.InvokeKeys.LOG_RECORD));
+            } else if 
(input.get(Base.InvokeKeys.COMMAND).equals(Logger.InvokeCommands.SET_NAME)) {
+                setName((String) input.get(Logger.InvokeKeys.LOG_NAME));
+            } else if 
(input.get(Base.InvokeKeys.COMMAND).equals(Logger.InvokeCommands.SET_SYS_LOG_HOST))
 {
+                setSyslogHost((String) 
input.get(Logger.InvokeKeys.SYS_LOG_HOST));
+            } else if 
(input.get(Base.InvokeKeys.COMMAND).equals(Logger.InvokeCommands.CLOSE)) {
+                close();
+            } else {
+                output.put(Base.InvokeKeys.RESULT, 
Base.InvokeResult.UNSUPPORTED);
+            }
+            output.putIfAbsent(Base.InvokeKeys.RESULT, 
Base.InvokeResult.SUCCESS);
+        } catch (Exception ex) {
+            output.mput(Base.InvokeKeys.RESULT, Base.InvokeResult.FAILED).
+                    mput(Base.InvokeKeys.MESSAGE, ex.getMessage());
+        }
+    }
+
+    private void doInit(ExtMap inputMap, ExtMap outputMap) {
+        context = inputMap.<ExtMap> get(Base.InvokeKeys.CONTEXT);
+        context.mput(
+                Base.ContextKeys.AUTHOR,
+                "The oVirt Project"
+        ).mput(
+                Base.ContextKeys.EXTENSION_NAME,
+                "Internal SyslogLogger (Built-in)"
+        ).mput(
+                Base.ContextKeys.LICENSE,
+                "ASL 2.0"
+        ).mput(
+                Base.ContextKeys.HOME_URL,
+                "http://www.ovirt.org";
+        ).mput(
+                Base.ContextKeys.VERSION,
+                "N/A"
+        ).mput(
+                Base.ContextKeys.BUILD_INTERFACE_VERSION,
+                Base.INTERFACE_VERSION_CURRENT);
+    }
+
+    private void setPattern(String pattern) {
+        PatternLayout patternLayout = new PatternLayout(pattern);
+        logAppender.setLayout(patternLayout);
+    }
+
+    public void publish(LogRecord record) {
+        if (logHostSet) {
+            logAppender.append(new LoggingEvent(record.getSourceClassName(),
+                org.apache.log4j.Logger.getLogger(record.getLoggerName()),
+                logLevelMap.get(record.getLevel()),
+                record.getMessage(),
+                record.getThrown()));
+        }
+    }
+
+    public void close() {
+        logAppender.close();
+    }
+
+    public void setName(String name) {
+        logAppender.setName(name);
+    }
+
+    public void setSyslogHost(String logHost) {
+        logAppender.setSyslogHost(logHost);
+        logHostSet = true;
+    }
+
+}
diff --git 
a/backend/manager/modules/builtin-extensions/src/main/resources/META-INF/services/org.ovirt.engine.api.extensions.Extension
 
b/backend/manager/modules/builtin-extensions/src/main/resources/META-INF/services/org.ovirt.engine.api.extensions.Extension
index 0621446..7d1add6 100644
--- 
a/backend/manager/modules/builtin-extensions/src/main/resources/META-INF/services/org.ovirt.engine.api.extensions.Extension
+++ 
b/backend/manager/modules/builtin-extensions/src/main/resources/META-INF/services/org.ovirt.engine.api.extensions.Extension
@@ -2,3 +2,4 @@
 org.ovirt.engine.extensions.aaa.builtin.internal.InternalAuthz
 org.ovirt.engine.extensions.aaa.builtin.kerberosldap.KerberosLdapAuthz
 org.ovirt.engine.extensions.aaa.builtin.kerberosldap.KerberosLdapAuthn
+org.ovirt.engine.extensions.logger.builtin.SyslogLogger
diff --git 
a/backend/manager/modules/extensions-api-root/extensions-api/src/main/java/org/ovirt/engine/api/extensions/logger/Logger.java
 
b/backend/manager/modules/extensions-api-root/extensions-api/src/main/java/org/ovirt/engine/api/extensions/logger/Logger.java
new file mode 100644
index 0000000..5e9cad1
--- /dev/null
+++ 
b/backend/manager/modules/extensions-api-root/extensions-api/src/main/java/org/ovirt/engine/api/extensions/logger/Logger.java
@@ -0,0 +1,45 @@
+package org.ovirt.engine.api.extensions.logger;
+
+import org.ovirt.engine.api.extensions.ExtKey;
+import org.ovirt.engine.api.extensions.ExtUUID;
+
+import java.util.logging.LogRecord;
+
+public class Logger {
+    /**
+     * Invoke keys.
+     */
+    public static class InvokeKeys {
+        /** Log Record. */
+        public static final ExtKey PATTERN = new ExtKey("LOGGER_PATTERN", 
String.class, "21fc7d4e-6d38-4896-91a1-c07a0dae1741");
+
+        /** Log Record. */
+        public static final ExtKey LOG_RECORD = new 
ExtKey("LOGGER_LOG_RECORD", LogRecord.class, 
"fb624b25-793d-4d83-8c31-2b257ec84438");
+
+        /** Name */
+        public static final ExtKey LOG_NAME = new ExtKey("LOGGER_LOG_NAME", 
String.class, "798b24d8-a56c-46d7-aee3-93b512516b10");
+
+        /** SysLogHost */
+        public static final ExtKey SYS_LOG_HOST = new 
ExtKey("LOGGER_SYS_LOG_HOST", String.class, 
"dd0dfe63-1271-4524-906a-3195cad5d833");
+    }
+
+    /**
+     * Invoke commands.
+     */
+    public static class InvokeCommands {
+        /** Set Logger Pattern. */
+        public static final ExtUUID SET_PATTERN = new 
ExtUUID("LOGGER_SET_PATTERN", "85103ca6-e960-4259-aa9b-1595615822b0");
+
+        /** Publish LogRecord. */
+        public static final ExtUUID PUBLISH = new ExtUUID("LOGGER_PUBLISH", 
"b8b67211-c351-4219-b45e-b2f80a8975a9");
+
+        /** Set Name of Logger. */
+        public static final ExtUUID SET_NAME = new ExtUUID("LOGGER_SET_NAME", 
"4fbd06a8-fde3-4849-a7fa-728cd7a99fd8");
+
+        /** Set SysLogHost. */
+        public static final ExtUUID SET_SYS_LOG_HOST = new 
ExtUUID("LOGGER_SET_SYS_LOG_HOST", "9b4da943-f4f9-440f-af5e-a890aecd5f93");
+
+        /** Close the logger. */
+        public static final ExtUUID CLOSE = new ExtUUID("LOGGER_CLOSE", 
"3b0036ca-1a34-4a69-b47a-5d02ce089a8a");
+    }
+}
diff --git a/backend/manager/modules/logger/pom.xml 
b/backend/manager/modules/logger/pom.xml
new file mode 100644
index 0000000..667c6cb
--- /dev/null
+++ b/backend/manager/modules/logger/pom.xml
@@ -0,0 +1,65 @@
+<project
+  xmlns="http://maven.apache.org/POM/4.0.0";
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.ovirt.engine.core</groupId>
+    <artifactId>manager-modules</artifactId>
+    <version>3.5.0-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>logger</artifactId>
+  <packaging>jar</packaging>
+
+  <name>Custom Logger Using Extensions</name>
+
+  <dependencies>
+
+    <dependency>
+      <groupId>${engine.groupId}</groupId>
+      <artifactId>common</artifactId>
+      <version>${engine.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>${engine.groupId}</groupId>
+      <artifactId>extensions-manager</artifactId>
+      <version>${engine.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.ovirt.engine.api</groupId>
+      <artifactId>ovirt-engine-extensions-api</artifactId>
+      
<version>${org.ovirt.engine.api.ovirt-engine-extensions-api.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.jboss.spec.javax.servlet</groupId>
+      <artifactId>jboss-servlet-api_3.0_spec</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>commons-lang</groupId>
+      <artifactId>commons-lang</artifactId>
+    </dependency>
+
+  </dependencies>
+
+  <build>
+
+    <plugins>
+
+      <!-- Create the JBoss module: -->
+      <plugin>
+        <groupId>org.ovirt.engine</groupId>
+        <artifactId>jboss-modules-maven-plugin</artifactId>
+      </plugin>
+
+    </plugins>
+
+  </build>
+
+</project>
diff --git 
a/backend/manager/modules/logger/src/java/org/ovirt/engine/core/logger/LoggerHandler.java
 
b/backend/manager/modules/logger/src/java/org/ovirt/engine/core/logger/LoggerHandler.java
new file mode 100644
index 0000000..81e5849
--- /dev/null
+++ 
b/backend/manager/modules/logger/src/java/org/ovirt/engine/core/logger/LoggerHandler.java
@@ -0,0 +1,80 @@
+package org.ovirt.engine.core.logger;
+
+
+import org.apache.log4j.PatternLayout;
+import org.apache.log4j.Priority;
+import org.apache.log4j.net.SyslogAppender;
+import org.apache.log4j.spi.LoggingEvent;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.logging.Handler;
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
+
+public class LoggerHandler extends Handler {
+
+    private SyslogAppender syslogAppender;
+    private static final Map<java.util.logging.Level, org.apache.log4j.Level> 
levelMap = new HashMap<>();
+
+    static {
+
+        levelMap.put(Level.OFF, org.apache.log4j.Level.OFF);
+        levelMap.put(Level.SEVERE, org.apache.log4j.Level.ERROR);
+        levelMap.put(Level.WARNING, org.apache.log4j.Level.WARN);
+        levelMap.put(Level.INFO, org.apache.log4j.Level.INFO);
+        levelMap.put(Level.CONFIG, org.apache.log4j.Level.INFO);
+        levelMap.put(Level.FINE, org.apache.log4j.Level.DEBUG);
+        levelMap.put(Level.FINER, org.apache.log4j.Level.TRACE);
+        levelMap.put(Level.FINEST, org.apache.log4j.Level.TRACE);
+        levelMap.put(Level.ALL, org.apache.log4j.Level.ALL);
+
+    }
+
+    public LoggerHandler() {
+        syslogAppender = new SyslogAppender();
+        PatternLayout patternLayout = new PatternLayout("WFA [%c] %m%n");
+        syslogAppender.setLayout(patternLayout);
+    }
+
+    @Override
+    public void publish(LogRecord record) {
+
+        syslogAppender.append(new LoggingEvent(record.getSourceClassName(),
+                org.apache.log4j.Logger.getLogger(record.getLoggerName()),
+                levelMap.get(record.getLevel()),
+                record.getMessage(),
+                record.getThrown()));
+
+    }
+
+    @Override
+    public void flush() {
+    }
+
+    @Override
+    public void close() throws SecurityException {
+        syslogAppender.close();
+    }
+
+    public void setName(String name) {
+        this.syslogAppender.setName(name);
+    }
+
+    public void setSyslogHost(String logHost) {
+        this.syslogAppender.setSyslogHost(logHost);
+    }
+
+    public void setThreshold(Priority threshold) {
+        this.syslogAppender.setThreshold(threshold);
+    }
+
+    public static SyslogHandler getFromLogger(LoggerHandler logger) {
+        for (Handler handler : logger.getHandlers()) {
+            if (handler instanceof SyslogHandler) {
+                return (SyslogHandler)handler;
+            }
+        }
+        return null;
+    }
+}
diff --git 
a/backend/manager/modules/logger/src/main/java/org/ovirt/engine/core/logger/LoggerHandler.java
 
b/backend/manager/modules/logger/src/main/java/org/ovirt/engine/core/logger/LoggerHandler.java
new file mode 100644
index 0000000..339012d
--- /dev/null
+++ 
b/backend/manager/modules/logger/src/main/java/org/ovirt/engine/core/logger/LoggerHandler.java
@@ -0,0 +1,78 @@
+package org.ovirt.engine.core.logger;
+
+
+import org.ovirt.engine.api.extensions.Base;
+import org.ovirt.engine.api.extensions.ExtMap;
+import org.ovirt.engine.api.extensions.logger.Logger;
+import org.ovirt.engine.core.extensions.mgr.ExtensionProxy;
+import org.ovirt.engine.core.extensions.mgr.ExtensionsManager;
+
+import java.util.logging.Handler;
+import java.util.logging.LogRecord;
+
+public class LoggerHandler extends Handler {
+
+    private ExtensionProxy extension;
+    private String loggerExtensionName = "builtin-syslog-logger";
+
+    public LoggerHandler() {}
+
+    @Override
+    public void publish(LogRecord record) {
+        if (getExtension() != null) {
+            extension.invoke(new ExtMap()
+                .mput(Base.InvokeKeys.COMMAND, Logger.InvokeCommands.PUBLISH)
+                .mput(Logger.InvokeKeys.LOG_RECORD, record));
+        }
+    }
+
+    @Override
+    public void flush() {
+    }
+
+    @Override
+    public void close() throws SecurityException {
+        if (getExtension() != null) {
+            extension.invoke(new ExtMap()
+                .mput(Base.InvokeKeys.COMMAND, Logger.InvokeCommands.CLOSE));
+        }
+    }
+
+    public void setPattern(String pattern) {
+        if (getExtension() != null) {
+            extension.invoke(new ExtMap()
+                    .mput(Base.InvokeKeys.COMMAND, 
Logger.InvokeCommands.SET_PATTERN)
+                    .mput(Logger.InvokeKeys.PATTERN, pattern));
+        }
+    }
+
+    public void setName(String name) {
+        if (getExtension() != null) {
+            extension.invoke(new ExtMap()
+                    .mput(Base.InvokeKeys.COMMAND, 
Logger.InvokeCommands.SET_NAME)
+                    .mput(Logger.InvokeKeys.LOG_NAME, name));
+        }
+    }
+
+    public void setSyslogHost(String logHost) {
+        if (getExtension() != null) {
+            extension.invoke(new ExtMap()
+                    .mput(Base.InvokeKeys.COMMAND, 
Logger.InvokeCommands.SET_SYS_LOG_HOST)
+                    .mput(Logger.InvokeKeys.SYS_LOG_HOST, logHost));
+        }
+
+    }
+
+    public void setLoggerExtensionName(String name) {
+        loggerExtensionName = name;
+        extension = null;
+    }
+
+    private ExtensionProxy getExtension() {
+        if (extension == null) {
+            extension = 
ExtensionsManager.getInstance().getExtensionByName(loggerExtensionName);
+        }
+        return extension;
+    }
+
+}
diff --git 
a/backend/manager/modules/logger/src/main/modules/org/ovirt/engine/core/logger/main/module.xml
 
b/backend/manager/modules/logger/src/main/modules/org/ovirt/engine/core/logger/main/module.xml
new file mode 100644
index 0000000..cade316
--- /dev/null
+++ 
b/backend/manager/modules/logger/src/main/modules/org/ovirt/engine/core/logger/main/module.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<module xmlns="urn:jboss:module:1.1" name="org.ovirt.engine.core.logger">
+
+  <resources>
+    <resource-root path="logger.jar"/>
+  </resources>
+
+  <dependencies>
+    <module name="org.apache.commons.collections"/>
+    <module name="org.apache.commons.configuration"/>
+    <module name="org.apache.commons.lang"/>
+    <module name="org.apache.commons.logging"/>
+    <module name="org.apache.log4j"/>
+    <module name="org.ovirt.engine.core.extensions-manager"/>
+    <module name="org.ovirt.engine.api.ovirt-engine-extensions-api"/>
+  </dependencies>
+
+</module>
diff --git a/backend/manager/modules/pom.xml b/backend/manager/modules/pom.xml
index d4938c8..fc5998c 100644
--- a/backend/manager/modules/pom.xml
+++ b/backend/manager/modules/pom.xml
@@ -29,6 +29,7 @@
     <module>extensions-manager</module>
     <module>bll</module>
     <module>restapi</module>
+    <module>logger</module>
     <module>root</module>
     <module>branding</module>
     <module>services</module>
diff --git a/logger/pom.xml b/logger/pom.xml
new file mode 100644
index 0000000..d5e57c1
--- /dev/null
+++ b/logger/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <parent>
+        <artifactId>root</artifactId>
+        <groupId>org.ovirt.engine</groupId>
+        <version>3.5.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>logger</artifactId>
+
+
+</project>
\ No newline at end of file


-- 
To view, visit http://gerrit.ovirt.org/27431
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia0dae8ffe53c3489af06d6684c72e6b431002404
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Ravi Nori <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to