[ovirt-engine/f17] Revert "Update to upstream 3.1 beta"

Juan Hernandez jhernand at fedoraproject.org
Sat Dec 29 17:29:54 UTC 2012


commit 2655206b94c8e4b2616bcdb81c183b8521406849
Author: Juan Hernandez <juan.hernandez at redhat.com>
Date:   Sat Dec 29 10:56:09 2012 +0100

    Revert "Update to upstream 3.1 beta"
    
    This reverts commit e1bbdc923b49a925917d8dbf7221c630a471d884.

 .gitignore                                         |    1 -
 ovirt-engine-add-dummy-hibernate-annotations.patch |  193 +
 ovirt-engine-add-id-to-the-notifier-assembly.patch |   40 +
 ovirt-engine-add-log4j.patch                       |   87 +
 ovirt-engine-add-modules.patch                     |  166 +
 ovirt-engine-add-pghack-missing-methods.patch      |   38 +
 ovirt-engine-add-readme.patch                      |   13 -
 ...t-engine-add-resteasy-listener-to-restapi.patch |   34 +
 ovirt-engine-add-systemd-service.patch             |  421 +++
 ovirt-engine-build-backend-only.patch              |   20 +-
 ...ne-create-database-and-serial-when-needed.patch |   25 +
 ovirt-engine-dont-modify-sysctl.patch              |  100 -
 ovirt-engine-dont-use-activation.patch             |   57 +
 ...t-engine-dont-use-hibernate-string-helper.patch |   48 +
 ovirt-engine-fix-checkstyle-gav.patch              |   28 -
 ...-engine-fix-classpath-building-in-scripts.patch |  296 ++
 ovirt-engine-fix-postgresdbenginedialect.patch     |   12 -
 ovirt-engine-makefile-fixes.patch                  |  369 ++
 ovirt-engine-move-sysprep-files-to-etc.patch       |   33 +
 ...e-remove-dependency-on-jboss-interceptors.patch |   48 +
 ovirt-engine-remove-frontend-from-ear.patch        |   62 +-
 ovirt-engine-remove-hibernate-daos.patch           | 3768 ++++++++++++++++++++
 ovirt-engine-remove-jb5-login-module.patch         |  285 ++
 ...ine-remove-jboss-ejb-specific-annotations.patch |   45 +
 ovirt-engine-remove-jboss-interceptors.patch       |   48 +
 ovirt-engine-remove-jna.patch                      |  659 ++++
 ...t-engine-remove-local-user-authentication.patch |  732 ++++
 ovirt-engine-remove-mockito.patch                  |   73 +
 ovirt-engine-remove-p6spy.patch                    |   32 +
 ovirt-engine-remove-powermock.patch                |  138 +
 ovirt-engine-remove-spring-from-restapi.patch      |  455 +---
 ...-engine-replace-guidtype-with-empty-class.patch |  110 +
 ovirt-engine-replace-index-page.patch              |  164 +-
 ...engine-replace-pubkey2ssh-with-ssh-keygen.patch |  766 ++++
 ovirt-engine-setup-fixes.patch                     |  773 ++++
 ovirt-engine-update-commons-configuration.patch    |   90 +-
 ovirt-engine-update-hibernate.patch                |   64 -
 ovirt-engine-update-spring.patch                   |  258 --
 ovirt-engine-update-to-jackson-1.9.patch           |   63 +
 ovirt-engine-update-to-quartz-2.1.patch            |  328 ++
 ovirt-engine-use-hibernate-jpa-2.0-api.patch       |   34 +
 ovirt-engine-use-maven-jaxb2-plugin.patch          |   32 +
 ...spring-instrument-instead-of-spring-agent.patch |   13 +
 ovirt-engine.spec                                  |  991 ++++--
 sources                                            |    2 +-
 45 files changed, 10604 insertions(+), 1410 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 75ee4bd..c77d3a2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1 @@
 /ovirt-engine-3.0.0_0001.tar.gz
-/ovirt-engine-3.1.0.tar.xz
diff --git a/ovirt-engine-add-dummy-hibernate-annotations.patch b/ovirt-engine-add-dummy-hibernate-annotations.patch
new file mode 100644
index 0000000..70df2a1
--- /dev/null
+++ b/ovirt-engine-add-dummy-hibernate-annotations.patch
@@ -0,0 +1,193 @@
+From 66255172f2178b1332b3226ad39d32ca37d4cdcf Mon Sep 17 00:00:00 2001
+From: Juan Hernandez <juan.hernandez at redhat.com>
+Date: Thu, 9 Feb 2012 17:01:20 +0100
+Subject: [PATCH 7/9] packaging: Add dummy hibernate annotations
+
+Our code will probably in the future use Hibernate and Hibernate
+annotations, but right now the presence of the annotations just
+complicates the build. This patch adds the annotatios required for
+compilation.
+
+Change-Id: I5298c2e8d5b38786b34fe9e555d056265afdeba2
+---
+ .../java/org/hibernate/annotations/Cascade.java    |   16 ++++++++++
+ .../org/hibernate/annotations/CascadeType.java     |   18 +++++++++++
+ .../hibernate/annotations/GenericGenerator.java    |   31 ++++++++++++++++++++
+ .../java/org/hibernate/annotations/Parameter.java  |   19 ++++++++++++
+ .../main/java/org/hibernate/annotations/Type.java  |   21 +++++++++++++
+ .../java/org/hibernate/annotations/TypeDef.java    |   23 ++++++++++++++
+ 6 files changed, 128 insertions(+), 0 deletions(-)
+ create mode 100644 backend/manager/modules/common/src/main/java/org/hibernate/annotations/Cascade.java
+ create mode 100644 backend/manager/modules/common/src/main/java/org/hibernate/annotations/CascadeType.java
+ create mode 100644 backend/manager/modules/common/src/main/java/org/hibernate/annotations/GenericGenerator.java
+ create mode 100644 backend/manager/modules/common/src/main/java/org/hibernate/annotations/Parameter.java
+ create mode 100644 backend/manager/modules/common/src/main/java/org/hibernate/annotations/Type.java
+ create mode 100644 backend/manager/modules/common/src/main/java/org/hibernate/annotations/TypeDef.java
+
+diff --git a/backend/manager/modules/common/src/main/java/org/hibernate/annotations/Cascade.java b/backend/manager/modules/common/src/main/java/org/hibernate/annotations/Cascade.java
+new file mode 100644
+index 0000000..fe1ef09
+--- /dev/null
++++ b/backend/manager/modules/common/src/main/java/org/hibernate/annotations/Cascade.java
+@@ -0,0 +1,16 @@
++package org.hibernate.annotations;
++
++import static java.lang.annotation.ElementType.FIELD;
++import static java.lang.annotation.ElementType.METHOD;
++import java.lang.annotation.Retention;
++import static java.lang.annotation.RetentionPolicy.RUNTIME;
++import java.lang.annotation.Target;
++
++/**
++ * Apply a cascade strategy on an association
++ */
++ at Target({METHOD, FIELD})
++ at Retention(RUNTIME)
++public @interface Cascade {
++    CascadeType[] value();
++}
+diff --git a/backend/manager/modules/common/src/main/java/org/hibernate/annotations/CascadeType.java b/backend/manager/modules/common/src/main/java/org/hibernate/annotations/CascadeType.java
+new file mode 100644
+index 0000000..90be6a0
+--- /dev/null
++++ b/backend/manager/modules/common/src/main/java/org/hibernate/annotations/CascadeType.java
+@@ -0,0 +1,18 @@
++package org.hibernate.annotations;
++
++/**
++ * Cascade types (can override default EJB3 cascades
++ */
++public enum CascadeType {
++    ALL,
++    PERSIST,
++    MERGE,
++    REMOVE,
++    REFRESH,
++    DELETE,
++    SAVE_UPDATE,
++    REPLICATE,
++    DELETE_ORPHAN,
++    LOCK,
++    EVICT
++}
+diff --git a/backend/manager/modules/common/src/main/java/org/hibernate/annotations/GenericGenerator.java b/backend/manager/modules/common/src/main/java/org/hibernate/annotations/GenericGenerator.java
+new file mode 100644
+index 0000000..3615aa1
+--- /dev/null
++++ b/backend/manager/modules/common/src/main/java/org/hibernate/annotations/GenericGenerator.java
+@@ -0,0 +1,31 @@
++//$Id: GenericGenerator.java 14736 2008-06-04 14:23:42Z hardy.ferentschik $
++package org.hibernate.annotations;
++
++import static java.lang.annotation.ElementType.*;
++import java.lang.annotation.Retention;
++import static java.lang.annotation.RetentionPolicy.RUNTIME;
++import java.lang.annotation.Target;
++
++/**
++ * Generator annotation describing any kind of Hibernate
++ * generator in a detyped manner
++ *
++ * @author Emmanuel Bernard
++ */
++ at Target({PACKAGE, TYPE, METHOD, FIELD})
++ at Retention(RUNTIME)
++public @interface GenericGenerator {
++    /**
++     * unique generator name
++     */
++    String name();
++    /**
++     * Generator strategy either a predefined Hibernate
++     * strategy or a fully qualified class name.
++     */
++    String strategy();
++    /**
++     * Optional generator parameters
++     */
++    Parameter[] parameters() default {};
++}
+diff --git a/backend/manager/modules/common/src/main/java/org/hibernate/annotations/Parameter.java b/backend/manager/modules/common/src/main/java/org/hibernate/annotations/Parameter.java
+new file mode 100644
+index 0000000..66e2888
+--- /dev/null
++++ b/backend/manager/modules/common/src/main/java/org/hibernate/annotations/Parameter.java
+@@ -0,0 +1,19 @@
++//$Id: Parameter.java 14736 2008-06-04 14:23:42Z hardy.ferentschik $
++package org.hibernate.annotations;
++
++import java.lang.annotation.Retention;
++import static java.lang.annotation.RetentionPolicy.RUNTIME;
++import java.lang.annotation.Target;
++
++/**
++ * Parameter (basically key/value pattern)
++ *
++ * @author Emmanuel Bernard
++ */
++ at Target({})
++ at Retention(RUNTIME)
++public @interface Parameter {
++    String name();
++
++    String value();
++}
+diff --git a/backend/manager/modules/common/src/main/java/org/hibernate/annotations/Type.java b/backend/manager/modules/common/src/main/java/org/hibernate/annotations/Type.java
+new file mode 100644
+index 0000000..ee8b55c
+--- /dev/null
++++ b/backend/manager/modules/common/src/main/java/org/hibernate/annotations/Type.java
+@@ -0,0 +1,21 @@
++//$Id: Type.java 14736 2008-06-04 14:23:42Z hardy.ferentschik $
++package org.hibernate.annotations;
++
++import static java.lang.annotation.ElementType.FIELD;
++import static java.lang.annotation.ElementType.METHOD;
++import java.lang.annotation.Retention;
++import static java.lang.annotation.RetentionPolicy.RUNTIME;
++import java.lang.annotation.Target;
++
++/**
++ * hibernate type
++ *
++ * @author Emmanuel Bernard
++ */
++ at Target({FIELD, METHOD})
++ at Retention(RUNTIME)
++public @interface Type {
++    String type();
++
++    Parameter[] parameters() default {};
++}
+diff --git a/backend/manager/modules/common/src/main/java/org/hibernate/annotations/TypeDef.java b/backend/manager/modules/common/src/main/java/org/hibernate/annotations/TypeDef.java
+new file mode 100644
+index 0000000..0629e9b
+--- /dev/null
++++ b/backend/manager/modules/common/src/main/java/org/hibernate/annotations/TypeDef.java
+@@ -0,0 +1,23 @@
++//$Id: TypeDef.java 14736 2008-06-04 14:23:42Z hardy.ferentschik $
++package org.hibernate.annotations;
++
++import static java.lang.annotation.ElementType.PACKAGE;
++import static java.lang.annotation.ElementType.TYPE;
++import java.lang.annotation.Retention;
++import static java.lang.annotation.RetentionPolicy.RUNTIME;
++import java.lang.annotation.Target;
++
++/**
++ * Type definition
++ *
++ * @author Emmanuel Bernard
++ */
++ at Target({TYPE, PACKAGE})
++ at Retention(RUNTIME)
++public @interface TypeDef {
++    String name();
++
++    Class typeClass();
++
++    Parameter[] parameters() default {};
++}
+-- 
+1.7.7.6
+
diff --git a/ovirt-engine-add-id-to-the-notifier-assembly.patch b/ovirt-engine-add-id-to-the-notifier-assembly.patch
new file mode 100644
index 0000000..d64ff32
--- /dev/null
+++ b/ovirt-engine-add-id-to-the-notifier-assembly.patch
@@ -0,0 +1,40 @@
+From b3eb4c84e5b27eadb88b37f208b634f412df0294 Mon Sep 17 00:00:00 2001
+From: Juan Hernandez <juan.hernandez at redhat.com>
+Date: Mon, 27 Feb 2012 15:23:13 +0100
+Subject: [PATCH] core: Add an id to the notifier assembly
+
+Newer versions of the assembly plugin (including the one in
+Fedora) complain if this id is missing.
+
+Change-Id: I17a89148c5ce13c05d1f4586be660af78b016983
+---
+ .../engine-notifier-resources/pom.xml              |    1 +
+ .../src/main/assembly/assembly.xml                 |    2 +-
+ 2 files changed, 2 insertions(+), 1 deletions(-)
+
+diff --git a/backend/manager/tools/engine-notifier/engine-notifier-resources/pom.xml b/backend/manager/tools/engine-notifier/engine-notifier-resources/pom.xml
+index c338eee..544f87e 100644
+--- a/backend/manager/tools/engine-notifier/engine-notifier-resources/pom.xml
++++ b/backend/manager/tools/engine-notifier/engine-notifier-resources/pom.xml
+@@ -27,6 +27,7 @@
+           <descriptors>
+             <descriptor>src/main/assembly/assembly.xml</descriptor>
+           </descriptors>
++          <appendAssemblyId>false</appendAssemblyId>
+         </configuration>
+       </plugin>
+     </plugins>
+diff --git a/backend/manager/tools/engine-notifier/engine-notifier-resources/src/main/assembly/assembly.xml b/backend/manager/tools/engine-notifier/engine-notifier-resources/src/main/assembly/assembly.xml
+index a11765d..ad4e3b8 100644
+--- a/backend/manager/tools/engine-notifier/engine-notifier-resources/src/main/assembly/assembly.xml
++++ b/backend/manager/tools/engine-notifier/engine-notifier-resources/src/main/assembly/assembly.xml
+@@ -1,5 +1,5 @@
+ <assembly>
+-    <id></id>
++    <id>resources</id>
+     <includeBaseDirectory>false</includeBaseDirectory>
+     <formats>
+         <format>zip</format>
+-- 
+1.7.7.6
+
diff --git a/ovirt-engine-add-log4j.patch b/ovirt-engine-add-log4j.patch
new file mode 100644
index 0000000..f24cc51
--- /dev/null
+++ b/ovirt-engine-add-log4j.patch
@@ -0,0 +1,87 @@
+From ea4419b76e08e721040211c1be4c9337c9681bf4 Mon Sep 17 00:00:00 2001
+From: Juan Hernandez <juan.hernandez at redhat.com>
+Date: Thu, 15 Mar 2012 10:43:03 +0100
+Subject: [PATCH 05/23] Add log4j
+
+---
+ backend/manager/modules/utils/pom.xml             |    5 +++++
+ backend/manager/tools/engine-config/pom.xml       |    4 ++++
+ backend/manager/tools/engine-tools-common/pom.xml |    5 +++++
+ pom.xml                                           |    7 +++++++
+ 4 files changed, 21 insertions(+)
+
+diff --git a/backend/manager/modules/utils/pom.xml b/backend/manager/modules/utils/pom.xml
+index d47ed1f..bfb2d20 100644
+--- a/backend/manager/modules/utils/pom.xml
++++ b/backend/manager/modules/utils/pom.xml
+@@ -138,6 +138,11 @@
+       <scope>provided</scope>
+     </dependency>
+ 
++    <dependency>
++      <groupId>log4j</groupId>
++      <artifactId>log4j</artifactId>
++    </dependency>
++
+   </dependencies>
+ 
+   <build>
+diff --git a/backend/manager/tools/engine-config/pom.xml b/backend/manager/tools/engine-config/pom.xml
+index 3902f7e..4acc573 100644
+--- a/backend/manager/tools/engine-config/pom.xml
++++ b/backend/manager/tools/engine-config/pom.xml
+@@ -32,6 +32,10 @@
+       <version>${commons-jxpath.version}</version>
+       <scope>provided</scope>
+     </dependency>
++    <dependency>
++      <groupId>log4j</groupId>
++      <artifactId>log4j</artifactId>
++    </dependency>
+   </dependencies>
+   <build>
+     <plugins>
+diff --git a/backend/manager/tools/engine-tools-common/pom.xml b/backend/manager/tools/engine-tools-common/pom.xml
+index 9e56602..412dc15 100644
+--- a/backend/manager/tools/engine-tools-common/pom.xml
++++ b/backend/manager/tools/engine-tools-common/pom.xml
+@@ -37,6 +37,11 @@
+       <version>${commons-jxpath.version}</version>
+       <scope>provided</scope>
+     </dependency>
++    <dependency>
++      <groupId>log4j</groupId>
++      <artifactId>log4j</artifactId>
++      <scope>provided</scope>
++    </dependency>
+   </dependencies>
+ 
+   <build>
+diff --git a/pom.xml b/pom.xml
+index a83acea..aa90150 100644
+--- a/pom.xml
++++ b/pom.xml
+@@ -68,6 +68,7 @@
+     <commons-jxpath.version>1.3</commons-jxpath.version>
+     <jaxb-impl.version>2.2</jaxb-impl.version>
+     <jbosssx-bare.version>2.0.4</jbosssx-bare.version>
++    <log4j.version>1.2.16</log4j.version>
+   </properties>
+ 
+   <dependencyManagement>
+@@ -240,6 +241,12 @@
+         <artifactId>jackson-mapper-asl</artifactId>
+         <version>${jackson-mapper-asl.version}</version>
+       </dependency>
++
++      <dependency>
++        <groupId>log4j</groupId>
++        <artifactId>log4j</artifactId>
++        <version>${log4j.version}</version>
++      </dependency>
+     </dependencies>
+   </dependencyManagement>
+ 
+-- 
+1.7.9.3
+
diff --git a/ovirt-engine-add-modules.patch b/ovirt-engine-add-modules.patch
new file mode 100644
index 0000000..ca02a40
--- /dev/null
+++ b/ovirt-engine-add-modules.patch
@@ -0,0 +1,166 @@
+commit 6d8504a86f3783dddfae3763b23baa4022faea00
+Author: Juan Hernandez <juan.hernandez at redhat.com>
+Date:   Tue Apr 24 19:50:46 2012 +0200
+
+    modules
+
+diff --git a/deployment/modules/com/sun/xml/bind/main/module.xml b/deployment/modules/com/sun/xml/bind/main/module.xml
+new file mode 100644
+index 0000000..22d4fad
+--- /dev/null
++++ b/deployment/modules/com/sun/xml/bind/main/module.xml
+@@ -0,0 +1,39 @@
++<?xml version="1.0" encoding="UTF-8"?>
++
++<!--
++       ~ JBoss, Home of Professional Open Source.
++  ~ Copyright 2011, Red Hat, Inc., and individual contributors
++  ~ as indicated by the @author tags. See the copyright.txt file in the
++  ~ distribution for a full listing of individual contributors.
++  ~
++  ~ This is free software; you can redistribute it and/or modify it
++  ~ under the terms of the GNU Lesser General Public License as
++  ~ published by the Free Software Foundation; either version 2.1 of
++  ~ the License, or (at your option) any later version.
++  ~
++  ~ This software is distributed in the hope that it will be useful,
++  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
++  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++  ~ Lesser General Public License for more details.
++  ~
++  ~ You should have received a copy of the GNU Lesser General Public
++  ~ License along with this software; if not, write to the Free
++  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
++  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
++  -->
++
++<module xmlns="urn:jboss:module:1.1" name="com.sun.xml.bind">
++
++    <resources>
++        <resource-root path="jaxb-impl.jar"/>
++        <resource-root path="jaxb-xjc.jar"/>
++        <!-- Insert resources here -->
++    </resources>
++
++    <dependencies>
++        <module name="javax.api" />
++        <module name="javax.xml.bind.api" />
++        <module name="javax.xml.stream.api" />
++    </dependencies>
++</module>
++
+diff --git a/deployment/modules/org/hibernate/validator/main/module.xml b/deployment/modules/org/hibernate/validator/main/module.xml
+new file mode 100644
+index 0000000..69355b0
+--- /dev/null
++++ b/deployment/modules/org/hibernate/validator/main/module.xml
+@@ -0,0 +1,45 @@
++<?xml version="1.0" encoding="UTF-8"?>
++
++<!--
++  ~ JBoss, Home of Professional Open Source.
++  ~ Copyright 2010, Red Hat, Inc., and individual contributors
++  ~ as indicated by the @author tags. See the copyright.txt file in the
++  ~ distribution for a full listing of individual contributors.
++  ~
++  ~ This is free software; you can redistribute it and/or modify it
++  ~ under the terms of the GNU Lesser General Public License as
++  ~ published by the Free Software Foundation; either version 2.1 of
++  ~ the License, or (at your option) any later version.
++  ~
++  ~ This software is distributed in the hope that it will be useful,
++  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
++  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++  ~ Lesser General Public License for more details.
++  ~
++  ~ You should have received a copy of the GNU Lesser General Public
++  ~ License along with this software; if not, write to the Free
++  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
++  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
++  -->
++
++<module xmlns="urn:jboss:module:1.1" name="org.hibernate.validator">
++  <resources>
++    <resource-root path="hibernate-validator.jar"/>
++    <resource-root path="jtype.jar"/>
++        <!-- Insert resources here -->
++  </resources>
++
++  <dependencies>
++    <module name="javax.api"/>
++    <module name="javax.persistence.api"/>
++    <module name="javax.validation.api"/>
++    <module name="javax.persistence.api"/>
++    <module name="javax.xml.bind.api"/>
++    <module name="org.jboss.logging"/>
++    <module name="org.jboss.common-core"/>
++    <module name="org.joda.time"/>
++    <module name="org.slf4j"/>
++    <module name="org.apache.xerces" services="import"/>
++    <module name="sun.jdk" services="import"/>
++  </dependencies>
++</module>
+diff --git a/deployment/modules/sun/jdk/main/module.xml b/deployment/modules/sun/jdk/main/module.xml
+deleted file mode 100644
+index 090b542..0000000
+--- a/deployment/modules/sun/jdk/main/module.xml
++++ /dev/null
+@@ -1,58 +0,0 @@
+-<?xml version="1.0" encoding="UTF-8"?>
+-
+-<!--
+-  ~ JBoss, Home of Professional Open Source.
+-  ~ Copyright 2010, Red Hat, Inc., and individual contributors
+-  ~ as indicated by the @author tags. See the copyright.txt file in the
+-  ~ distribution for a full listing of individual contributors.
+-  ~
+-  ~ This is free software; you can redistribute it and/or modify it
+-  ~ under the terms of the GNU Lesser General Public License as
+-  ~ published by the Free Software Foundation; either version 2.1 of
+-  ~ the License, or (at your option) any later version.
+-  ~
+-  ~ This software is distributed in the hope that it will be useful,
+-  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+-  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+-  ~ Lesser General Public License for more details.
+-  ~
+-  ~ You should have received a copy of the GNU Lesser General Public
+-  ~ License along with this software; if not, write to the Free
+-  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+-  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-  -->
+-<module xmlns="urn:jboss:module:1.1" name="sun.jdk">
+-    <resources>
+-        <!-- currently jboss modules has not way of importing services from
+-        classes.jar so we duplicate them here -->
+-        <resource-root path="service-loader-resources"/>
+-    </resources>
+-    <dependencies>
+-        <system export="true">
+-            <paths>
+-                <path name="com/sun/script/javascript"/>
+-                <path name="com/sun/jndi/dns"/>
+-                <path name="com/sun/jndi/url"/>
+-                <path name="com/sun/jndi/url/dns"/>
+-                <path name="com/sun/jndi/ldap"/>
+-                <path name="com/sun/security/auth"/>
+-                <path name="com/sun/security/auth/login"/>
+-                <path name="com/sun/security/auth/module"/>
+-                <path name="sun/misc"/>
+-                <path name="sun/security"/>
+-                <path name="sun/security/krb5"/>
+-                <path name="sun/nio"/>
+-                <path name="sun/nio/ch"/>
+-                <path name="sun/util"/>
+-                <path name="sun/util/calendar"/>
+-                <path name="sun/security/provider"/>
+-                <path name="META-INF/services"/>
+-            </paths>
+-            <exports>
+-                <include-set>
+-                    <path name="META-INF/services"/>
+-                </include-set>
+-            </exports>
+-        </system>
+-    </dependencies>
+-</module>
diff --git a/ovirt-engine-add-pghack-missing-methods.patch b/ovirt-engine-add-pghack-missing-methods.patch
new file mode 100644
index 0000000..938ef24
--- /dev/null
+++ b/ovirt-engine-add-pghack-missing-methods.patch
@@ -0,0 +1,38 @@
+From 91067d4ccfbbc654fe09bdfcc251b59fd0182443 Mon Sep 17 00:00:00 2001
+From: Juan Hernandez <juan.hernandez at redhat.com>
+Date: Thu, 16 Feb 2012 13:58:36 +0100
+Subject: [PATCH] Add missing methods from PGHack
+
+The method "getParentLogger" has been added in Java 7.
+
+Change-Id: Ife2279fb8a64e8078905128a8f0f16a120453e70
+---
+ .../org/ovirt/engine/core/dal/dbbroker/PGHack.java |    7 +++++++
+ 1 files changed, 7 insertions(+), 0 deletions(-)
+
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/PGHack.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/PGHack.java
+index 14e725d..dafbee8 100644
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/PGHack.java
++++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/PGHack.java
+@@ -3,6 +3,8 @@ package org.ovirt.engine.core.dal.dbbroker;
+ import java.io.PrintWriter;
+ import java.sql.Connection;
+ import java.sql.SQLException;
++import java.sql.SQLFeatureNotSupportedException;
++import java.util.logging.Logger;
+ 
+ import javax.sql.DataSource;
+ 
+@@ -60,4 +62,9 @@ public class PGHack implements DataSource {
+         return real.unwrap(iface);
+     }
+ 
++    @Override
++    public Logger getParentLogger() throws SQLFeatureNotSupportedException {
++        return real.getParentLogger();
++    }
++
+ }
+-- 
+1.7.7.6
+
diff --git a/ovirt-engine-add-readme.patch b/ovirt-engine-add-readme.patch
index d124283..70e09e5 100644
--- a/ovirt-engine-add-readme.patch
+++ b/ovirt-engine-add-readme.patch
@@ -1,13 +1,3 @@
-From 30265235214f59e7f55878bcfaa45b012b83e1f2 Mon Sep 17 00:00:00 2001
-From: Juan Hernandez <juan.hernandez at redhat.com>
-Date: Sat, 9 Jun 2012 15:04:01 +0200
-Subject: [PATCH] core: Add README
-
----
- README |   20 ++++++++++++++++++++
- 1 file changed, 20 insertions(+)
- create mode 100644 README
-
 diff --git a/README b/README
 new file mode 100644
 index 0000000..8dc7f39
@@ -34,6 +24,3 @@ index 0000000..8dc7f39
 +In addition oVirt provides a crucial venue for user and developer cooperation,
 +and is the first truly open and comprehensive data centre virtualization
 +management initiative.
--- 
-1.7.10.2
-
diff --git a/ovirt-engine-add-resteasy-listener-to-restapi.patch b/ovirt-engine-add-resteasy-listener-to-restapi.patch
new file mode 100644
index 0000000..2bcabcc
--- /dev/null
+++ b/ovirt-engine-add-resteasy-listener-to-restapi.patch
@@ -0,0 +1,34 @@
+diff --git a/backend/manager/modules/restapi/webapp/src/main/webapp/WEB-INF/web.xml b/backend/manager/modules/restapi/webapp/src/main/webapp/WEB-INF/web.xml
+index 3f77945..5ed3ceb 100644
+--- a/backend/manager/modules/restapi/webapp/src/main/webapp/WEB-INF/web.xml
++++ b/backend/manager/modules/restapi/webapp/src/main/webapp/WEB-INF/web.xml
+@@ -6,6 +6,29 @@
+   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
+   version="3.0">
+ 
++  <listener>
++    <listener-class>
++      org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
++    </listener-class>
++  </listener>
++
++  <servlet>
++    <servlet-name>Resteasy</servlet-name>
++    <servlet-class>
++      org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
++    </servlet-class>
++    <init-param>
++      <param-name>javax.ws.rs.Application</param-name>
++      <param-value>org.ovirt.engine.api.restapi.BackendApplication</param-value>
++    </init-param>
++  </servlet>
++
++  <servlet-mapping>
++    <servlet-name>Resteasy</servlet-name>
++    <url-pattern>/*</url-pattern>
++  </servlet-mapping>
++
++
+    <!-- <security-constraint>
+       <web-resource-collection>
+         <web-resource-name>Protected Context</web-resource-name>
diff --git a/ovirt-engine-add-systemd-service.patch b/ovirt-engine-add-systemd-service.patch
new file mode 100644
index 0000000..2765377
--- /dev/null
+++ b/ovirt-engine-add-systemd-service.patch
@@ -0,0 +1,421 @@
+commit 5d5282f63c2284453e8a6ab254359eb6ad97c788
+Author: Juan Hernandez <juan.hernandez at redhat.com>
+Date:   Wed Apr 18 16:39:13 2012 +0200
+
+    add-fedora-service
+
+diff --git a/packaging/fedora/ovirt-engine-logging.properties b/packaging/fedora/ovirt-engine-logging.properties
+new file mode 100644
+index 0000000..49a22bf
+--- /dev/null
++++ b/packaging/fedora/ovirt-engine-logging.properties
+@@ -0,0 +1,23 @@
++# Additional logger names to configure (root logger is always configured)
++loggers=org.jboss.as.config
++
++# Dump system environment at boot by default
++logger.org.jboss.as.config.level=DEBUG
++
++# Root logger level
++logger.level=INFO
++# Root logger handlers
++logger.handlers=FILE
++
++# File handler configuration
++handler.FILE=org.jboss.logmanager.handlers.FileHandler
++handler.FILE.level=DEBUG
++handler.FILE.properties=autoFlush,fileName
++handler.FILE.autoFlush=true
++handler.FILE.fileName=/var/log/ovirt-engine/boot.log
++handler.FILE.formatter=PATTERN
++
++# Formatter pattern configuration
++formatter.PATTERN=org.jboss.logmanager.formatters.PatternFormatter
++formatter.PATTERN.properties=pattern
++formatter.PATTERN.pattern=%d{HH:mm:ss,SSS} %-5p [%c] %s%E%n
+diff --git a/packaging/fedora/ovirt-engine-users.properties b/packaging/fedora/ovirt-engine-users.properties
+new file mode 100644
+index 0000000..d0807d7
+--- /dev/null
++++ b/packaging/fedora/ovirt-engine-users.properties
+@@ -0,0 +1,22 @@
++#
++# Properties declaration of users for the realm 'ManagementRealm' which is the default realm
++# for new AS 7.1 installations. Further authentication mechanism can be configured
++# as part of the <management /> in standalone.xml.
++#
++# Users can be added to this properties file at any time, updates after the server has started
++# will be automatically detected.
++#
++# By default the properties realm expects the entries to be in the format: -
++# username=HEX( MD5( username ':' realm ':' password))
++#
++# A utility script is provided which can be executed from the bin folder to add the users: -
++# - Linux
++#  bin/add-user.sh
++#
++# - Windows
++#  bin\add-user.bat
++
++# The following illustrates how an admin user could be defined, this
++# is for illustration only and does not correspond to a usable password.
++#
++#admin=2a0923285184943425d1f53ddd58ec7a
+diff --git a/packaging/fedora/ovirt-engine.service b/packaging/fedora/ovirt-engine.service
+new file mode 100644
+index 0000000..53d988f
+--- /dev/null
++++ b/packaging/fedora/ovirt-engine.service
+@@ -0,0 +1,11 @@
++[Unit]
++Description=oVirt Engine
++After=network.service
++
++[Service]
++EnvironmentFile=/etc/sysconfig/ovirt-engine
++ExecStart=/usr/share/ovirt-engine/bin/ovirt-engine.sh
++User=ovirt
++
++[Install]
++WantedBy=multi-user.target
+diff --git a/packaging/fedora/ovirt-engine.sh b/packaging/fedora/ovirt-engine.sh
+new file mode 100755
+index 0000000..b4567a5
+--- /dev/null
++++ b/packaging/fedora/ovirt-engine.sh
+@@ -0,0 +1,53 @@
++#!/bin/sh
++
++# Base directories for the engine and for the application server:
++JBOSS_BASE=${JBOSS_BASE:-/usr/share/jboss-as}
++ENGINE_BASE=${ENGINE_BASE:-/usr/share/ovirt-engine}
++
++# Defaults for the heap size:
++ENGINE_MIN_HEAP=${ENGINE_HEAP_MIN:-1g}
++ENGINE_MAX_HEAP=${ENGINE_HEAP_MIN:-1g}
++
++# Module path should include first the engine modules so that they can override
++# those provided by the application server if needed:
++ENGINE_MODULEPATH=${ENGINE_MODULEPATH:-${ENGINE_BASE}/modules:${JBOSS_BASE}/modules}
++
++# Virtual machine options:
++OPTIONS="-server"
++OPTIONS="${OPTIONS} -XX:+UseCompressedOops"
++OPTIONS="${OPTIONS} -XX:+TieredCompilation"
++OPTIONS="${OPTIONS} -Xms${ENGINE_MIN_HEAP}"
++OPTIONS="${OPTIONS} -Xms${ENGINE_MAX_HEAP}"
++OPTIONS="${OPTIONS} -XX:MaxPermSize=256m"
++OPTIONS="${OPTIONS} -Djava.net.preferIPv4Stack=true"
++OPTIONS="${OPTIONS} -Dsun.rmi.dgc.client.gcInterval=3600000"
++OPTIONS="${OPTIONS} -Dsun.rmi.dgc.server.gcInterval=3600000"
++OPTIONS="${OPTIONS} -Djava.awt.headless=true"
++
++# Application server options:
++OPTIONS="${OPTIONS} -Dlogging.configuration=file:///etc/ovirt-engine/ovirt-engine-logging.properties"
++OPTIONS="${OPTIONS} -Dorg.jboss.resolver.warning=true"
++OPTIONS="${OPTIONS} -Djboss.modules.system.pkgs=org.jboss.byteman"
++OPTIONS="${OPTIONS} -Djboss.server.default.config=ovirt-engine.xml"
++OPTIONS="${OPTIONS} -Djboss.home.dir=${JBOSS_BASE}"
++OPTIONS="${OPTIONS} -Djboss.server.base.dir=${ENGINE_BASE}"
++OPTIONS="${OPTIONS} -Djboss.server.config.dir=/etc/ovirt-engine"
++OPTIONS="${OPTIONS} -Djboss.server.data.dir=/var/lib/ovirt-engine"
++OPTIONS="${OPTIONS} -Djboss.server.log.dir=/var/log/ovirt-engine"
++OPTIONS="${OPTIONS} -Djboss.server.temp.dir=/var/cache/ovirt-engine"
++OPTIONS="${OPTIONS} -Djboss.controller.temp.dir=/var/cache/ovirt-engine"
++
++# Remove and recreate deployment markers:
++/bin/rm -f ${ENGINE_BASE}/deployments/engine.ear.*
++/bin/touch ${ENGINE_BASE}/deployments/engine.ear.dodeploy
++/bin/rm -f ${ENGINE_BASE}/deployments/ROOT.war.*
++/bin/touch ${ENGINE_BASE}/deployments/ROOT.war.dodeploy
++
++# Start the java virtual machine:
++exec /bin/java \
++  ${OPTIONS} \
++  -jar ${JBOSS_BASE}/jboss-modules.jar \
++  -mp ${ENGINE_MODULEPATH} \
++  -jaxpmodule javax.xml.jaxp-provider \
++  org.jboss.as.standalone \
++  -c ovirt-engine.xml
+diff --git a/packaging/fedora/ovirt-engine.sysconfig b/packaging/fedora/ovirt-engine.sysconfig
+new file mode 100644
+index 0000000..fe0565e
+--- /dev/null
++++ b/packaging/fedora/ovirt-engine.sysconfig
+@@ -0,0 +1,5 @@
++# These variables control the amount of memory used by the java virtual machine
++# where the engine runs:
++#
++#ENGINE_MIN_HEAP=1g
++#ENGINE_MAX_HEAP=1g
+diff --git a/packaging/fedora/ovirt-engine.xml b/packaging/fedora/ovirt-engine.xml
+new file mode 100644
+index 0000000..2a9b8c8
+--- /dev/null
++++ b/packaging/fedora/ovirt-engine.xml
+@@ -0,0 +1,265 @@
++<?xml version="1.0" ?>
++
++<server xmlns="urn:jboss:domain:1.1">
++
++  <extensions>
++    <extension module="org.jboss.as.connector"/>
++    <extension module="org.jboss.as.deployment-scanner"/>
++    <extension module="org.jboss.as.ee"/>
++    <extension module="org.jboss.as.ejb3"/>
++    <extension module="org.jboss.as.jmx"/>
++    <extension module="org.jboss.as.jpa"/>
++    <extension module="org.jboss.as.logging"/>
++    <extension module="org.jboss.as.naming"/>
++    <extension module="org.jboss.as.remoting"/>
++    <extension module="org.jboss.as.security"/>
++    <extension module="org.jboss.as.threads"/>
++    <extension module="org.jboss.as.transactions"/>
++    <extension module="org.jboss.as.web"/>
++  </extensions>
++
++  <management>
++    <security-realms>
++      <security-realm name="ManagementRealm">
++        <authentication>
++          <properties path="/etc/ovirt-engine/ovirt-engine-users.properties"/>
++        </authentication>
++      </security-realm>
++    </security-realms>
++    <management-interfaces>
++      <native-interface security-realm="ManagementRealm">
++        <socket-binding native="management-native"/>
++      </native-interface>
++      <http-interface security-realm="ManagementRealm" console-enabled="false">
++        <socket-binding http="management-http"/>
++      </http-interface>
++    </management-interfaces>
++  </management>
++
++  <profile>
++    <subsystem xmlns="urn:jboss:domain:logging:1.1">
++      <periodic-rotating-file-handler name="FILE" autoflush="true">
++        <level name="INFO"/>
++        <formatter>
++          <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
++        </formatter>
++        <file path="/var/log/ovirt-engine/server.log"/>
++        <suffix value=".yyyy-MM-dd"/>
++      </periodic-rotating-file-handler>
++      <size-rotating-file-handler name="ENGINE" autoflush="true">
++        <level name="INFO"/>
++        <formatter>
++          <pattern-formatter pattern="%d %-5p [%c] (%t) %s%E%n"/>
++        </formatter>
++        <file path="/var/log/ovirt-engine/engine.log"/>
++        <rotate-size value="1M"/>
++        <max-backup-index value="30"/>
++        <append value="true"/>
++      </size-rotating-file-handler>
++      <logger category="com.arjuna">
++        <level name="WARN"/>
++      </logger>
++      <logger category="org.apache.tomcat.util.modeler">
++        <level name="WARN"/>
++      </logger>
++      <logger category="sun.rmi">
++        <level name="WARN"/>
++      </logger>
++      <logger category="org.ovirt">
++        <level name="INFO"/>
++        <handlers>
++          <handler name="ENGINE"/>
++        </handlers>
++      </logger>
++      <logger category="org.ovirt.engine.core.bll">
++        <level name="INFO"/>
++      </logger>
++      <logger category="org.ovirt.engine.core.dal.dbbroker.PostgresDbEngineDialect$PostgresJdbcTemplate">
++        <level name="WARN"/>
++      </logger>
++      <logger category="org.springframework.ldap">
++        <level name="ERROR"/>
++      </logger>
++      <root-logger>
++        <level name="INFO"/>
++        <handlers>
++          <handler name="FILE"/>
++        </handlers>
++      </root-logger>
++    </subsystem>
++    <subsystem xmlns="urn:jboss:domain:datasources:1.0">
++      <datasources>
++        <datasource jndi-name="java:/ENGINEDataSource" pool-name="ENGINEDataSource" enabled="true">
++          <connection-url>jdbc:postgresql://localhost:5432/engine</connection-url>
++          <driver>postgresql</driver>
++          <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
++          <pool>
++            <min-pool-size>1</min-pool-size>
++            <max-pool-size>100</max-pool-size>
++            <prefill>true</prefill>
++          </pool>
++          <security>
++            <user-name>engine</user-name>
++            <security-domain>EncryptDBPassword</security-domain>
++          </security>
++          <statement>
++            <prepared-statement-cache-size>100</prepared-statement-cache-size>
++          </statement>
++        </datasource>
++        <drivers>
++          <driver name="postgresql" module="org.postgresql">
++            <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
++          </driver>
++        </drivers>
++      </datasources>
++    </subsystem>
++    <subsystem xmlns="urn:jboss:domain:deployment-scanner:1.1">
++      <deployment-scanner path="/usr/share/ovirt-engine/deployments" scan-enabled="true" scan-interval="5000" auto-deploy-zipped="false" deployment-timeout="60"/>
++    </subsystem>
++    <subsystem xmlns="urn:jboss:domain:ee:1.0"/>
++    <subsystem xmlns="urn:jboss:domain:ejb3:1.2">
++      <session-bean>
++        <stateless>
++          <bean-instance-pool-ref pool-name="slsb-strict-max-pool"/>
++        </stateless>
++        <stateful default-access-timeout="300000" cache-ref="simple"/>
++        <singleton default-access-timeout="300000"/>
++      </session-bean>
++      <mdb>
++        <resource-adapter-ref resource-adapter-name="hornetq-ra"/>
++        <bean-instance-pool-ref pool-name="mdb-strict-max-pool"/>
++      </mdb>
++      <pools>
++        <bean-instance-pools>
++          <strict-max-pool name="slsb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>
++          <strict-max-pool name="mdb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>
++        </bean-instance-pools>
++      </pools>
++      <caches>
++        <cache name="simple" aliases="NoPassivationCache"/>
++      </caches>
++      <async thread-pool-name="default"/>
++      <timer-service thread-pool-name="default">
++        <data-store path="timer-service-data" relative-to="jboss.server.data.dir"/>
++      </timer-service>
++      <remote connector-ref="remoting-connector" thread-pool-name="default"/>
++      <thread-pools>
++        <thread-pool name="default">
++          <max-threads count="10"/>
++          <keepalive-time time="100" unit="milliseconds"/>
++        </thread-pool>
++      </thread-pools>
++    </subsystem>
++    <subsystem xmlns="urn:jboss:domain:jca:1.1">
++      <archive-validation enabled="false" fail-on-error="false" fail-on-warn="false"/>
++      <bean-validation enabled="true"/>
++      <default-workmanager>
++        <short-running-threads>
++          <core-threads count="50"/>
++          <queue-length count="50"/>
++          <max-threads count="50"/>
++          <keepalive-time time="10" unit="seconds"/>
++        </short-running-threads>
++        <long-running-threads>
++          <core-threads count="50"/>
++          <queue-length count="50"/>
++          <max-threads count="50"/>
++          <keepalive-time time="10" unit="seconds"/>
++        </long-running-threads>
++      </default-workmanager>
++    </subsystem>
++    <subsystem xmlns="urn:jboss:domain:jmx:1.1">
++      <show-model value="true"/>
++      <remoting-connector/>
++    </subsystem>
++    <subsystem xmlns="urn:jboss:domain:jpa:1.0">
++      <jpa default-datasource=""/>
++    </subsystem>
++    <subsystem xmlns="urn:jboss:domain:naming:1.1"/>
++    <subsystem xmlns="urn:jboss:domain:remoting:1.1">
++      <connector name="remoting-connector" socket-binding="remoting"/>
++    </subsystem>
++    <subsystem xmlns="urn:jboss:domain:resource-adapters:1.0"/>
++    <subsystem xmlns="urn:jboss:domain:security:1.1">
++      <security-domains>
++        <security-domain name="other" cache-type="default">
++          <authentication>
++            <login-module code="Remoting" flag="optional">
++              <module-option name="password-stacking" value="useFirstPass"/>
++            </login-module>
++            <login-module code="RealmUsersRoles" flag="required">
++              <module-option name="usersProperties" value="${jboss.server.config.dir}/application-users.properties"/>
++              <module-option name="rolesProperties" value="${jboss.server.config.dir}/application-roles.properties"/>
++              <module-option name="realm" value="ApplicationRealm"/>
++              <module-option name="password-stacking" value="useFirstPass"/>
++            </login-module>
++          </authentication>
++        </security-domain>
++        <security-domain name="jboss-web-policy" cache-type="default">
++          <authorization>
++            <policy-module code="Delegating" flag="required"/>
++          </authorization>
++        </security-domain>
++        <security-domain name="jboss-ejb-policy" cache-type="default">
++          <authorization>
++            <policy-module code="Delegating" flag="required"/>
++          </authorization>
++        </security-domain>
++        <security-domain name="EngineKerberosAuth">
++          <authentication>
++            <login-module code="com.sun.security.auth.module.Krb5LoginModule" flag="required"/>
++          </authentication>
++        </security-domain>
++        <security-domain name="EncryptDBPassword">
++          <authentication>
++            <login-module code="org.picketbox.datasource.security.SecureIdentityLoginModule" flag="required">
++              <module-option name="username" value="engine"/>
++              <module-option name="password" value=""/>
++              <module-option name="managedConnectionFactoryName" value="jboss.jca:name=ENGINEDataSource,service=LocalTxCM"/>
++            </login-module>
++          </authentication>
++        </security-domain>
++      </security-domains>
++    </subsystem>
++    <subsystem xmlns="urn:jboss:domain:transactions:1.1">
++      <core-environment>
++        <process-id>
++          <uuid/>
++        </process-id>
++      </core-environment>
++      <recovery-environment socket-binding="txn-recovery-environment" status-socket-binding="txn-status-manager"/>
++      <coordinator-environment default-timeout="300"/>
++    </subsystem>
++    <subsystem xmlns="urn:jboss:domain:threads:1.1"/>
++    <subsystem xmlns="urn:jboss:domain:web:1.1" native="false" default-virtual-server="default-host">
++      <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
++      <connector name="https" protocol="HTTP/1.1" scheme="https" socket-binding="https" enable-lookups="false" secure="true">
++        <ssl name="ssl" password="mypass" certificate-key-file="/etc/pki/ovirt-engine/.keystore" protocol="TLSv1" verify-client="false"/>
++      </connector>
++      <virtual-server name="default-host" enable-welcome-root="false">
++        <alias name="localhost"/>
++        <alias name="example.com"/>
++      </virtual-server>
++    </subsystem>
++  </profile>
++
++  <interfaces>
++    <interface name="management">
++      <inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
++    </interface>
++    <interface name="public">
++      <any-address/>
++    </interface>
++  </interfaces>
++
++  <socket-binding-group name="standard-sockets" default-interface="public">
++    <socket-binding name="http" port="8080"/>
++    <socket-binding name="https" port="8443"/>
++    <socket-binding name="management-native" interface="management" port="9999"/>
++    <socket-binding name="management-http" interface="management" port="9990"/>
++    <socket-binding name="remoting" port="4447"/>
++    <socket-binding name="txn-recovery-environment" port="4712"/>
++    <socket-binding name="txn-status-manager" port="4713"/>
++  </socket-binding-group>
++
++</server>
diff --git a/ovirt-engine-build-backend-only.patch b/ovirt-engine-build-backend-only.patch
index dcaa80f..1b2d0ca 100644
--- a/ovirt-engine-build-backend-only.patch
+++ b/ovirt-engine-build-backend-only.patch
@@ -1,25 +1,13 @@
-From 07eb6a6ca8ba8481951104e651fd553bfe3b2ba3 Mon Sep 17 00:00:00 2001
-From: Juan Hernandez <juan.hernandez at redhat.com>
-Date: Fri, 25 May 2012 15:39:51 +0200
-Subject: [PATCH 01/11] build-backend-only
-
----
- pom.xml |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
 diff --git a/pom.xml b/pom.xml
-index 6afb328..4750981 100644
+index 835d89c..f9218e4 100644
 --- a/pom.xml
 +++ b/pom.xml
-@@ -9,7 +9,7 @@
+@@ -11,7 +11,7 @@
    <modules>
-     <module>build-tools-root</module>
+     <module>build-tools</module>
      <module>backend</module>
 -    <module>frontend</module>
 +    <!-- <module>frontend</module> -->
      <module>ear</module>
    </modules>
-   <properties>
--- 
-1.7.10.2
-
+ 
diff --git a/ovirt-engine-create-database-and-serial-when-needed.patch b/ovirt-engine-create-database-and-serial-when-needed.patch
new file mode 100644
index 0000000..8c07f78
--- /dev/null
+++ b/ovirt-engine-create-database-and-serial-when-needed.patch
@@ -0,0 +1,25 @@
+diff --git a/backend/manager/conf/ca/CreateCA.sh b/backend/manager/conf/ca/CreateCA.sh
+index 3d26267..4297861 100755
+--- a/backend/manager/conf/ca/CreateCA.sh
++++ b/backend/manager/conf/ca/CreateCA.sh
+@@ -27,6 +27,20 @@ echo C = $1 >> cacert.conf
+ echo O = $2 >> cacert.conf
+ echo CN = $3 >> cacert.conf
+ 
++# Create the database.txt and serial.txt files if they don't
++# exist, making sure that the application server can read and
++# write them:
++if [ ! -f database.txt ]
++then
++  touch database.txt
++  chown jboss-as database.txt
++fi
++if [ ! -f serial.txt ]
++then
++  echo 01 > serial.txt
++  chown jboss-as serial.txt
++fi
++
+ openssl genrsa -out private/ca.pem 1024 && openssl req -new -key private/ca.pem -config cacert.conf -out requests/ca.csr && openssl ca -selfsign -out ca.pem -in requests/ca.csr -keyfile private/ca.pem -days 3650 -startdate $4 -config openssl.conf -extfile cacert.conf -extensions v3_ca -batch
+ 
+ exit $?
diff --git a/ovirt-engine-dont-use-activation.patch b/ovirt-engine-dont-use-activation.patch
new file mode 100644
index 0000000..fd4888b
--- /dev/null
+++ b/ovirt-engine-dont-use-activation.patch
@@ -0,0 +1,57 @@
+From 55cebc3c95fa3b4c270fdfa9a97866c80487e381 Mon Sep 17 00:00:00 2001
+From: Juan Hernandez <juan.hernandez at redhat.com>
+Date: Mon, 27 Feb 2012 11:52:44 +0100
+Subject: [PATCH 1/4] Don't use activation
+
+Change-Id: I152b4091300666a10e7d608404207998157f6d75
+---
+ .../engine-notifier-service/pom.xml                |    7 -------
+ pom.xml                                            |    7 -------
+ 2 files changed, 0 insertions(+), 14 deletions(-)
+
+diff --git a/backend/manager/tools/engine-notifier/engine-notifier-service/pom.xml b/backend/manager/tools/engine-notifier/engine-notifier-service/pom.xml
+index f1a4eff..b8a969f 100644
+--- a/backend/manager/tools/engine-notifier/engine-notifier-service/pom.xml
++++ b/backend/manager/tools/engine-notifier/engine-notifier-service/pom.xml
+@@ -42,13 +42,6 @@
+     </dependency>
+ 
+     <dependency>
+-        <groupId>javax.activation</groupId>
+-        <artifactId>activation</artifactId>
+-        <version>${activation.version}</version>
+-        <scope>provided</scope>
+-    </dependency>
+-
+-    <dependency>
+       <groupId>commons-configuration</groupId>
+       <artifactId>commons-configuration</artifactId>
+       <version>${commons-configuration.version}</version>
+diff --git a/pom.xml b/pom.xml
+index 835d89c..53d788c 100644
+--- a/pom.xml
++++ b/pom.xml
+@@ -58,7 +58,6 @@
+     <easymock.version>3.0</easymock.version>
+     <javassist.version>3.12.0.GA</javassist.version>
+     <javax.mail.version>1.4.4</javax.mail.version>
+-    <activation.version>1.1</activation.version>
+     <hibernate-core.version>3.3.0.SP1</hibernate-core.version>
+     <hibernate-validator.version>4.0.2.GA</hibernate-validator.version>
+     <hibernate-annotations.version>3.4.0.GA</hibernate-annotations.version>
+@@ -196,12 +195,6 @@
+       </dependency>
+ 
+       <dependency>
+-        <groupId>javax.activation</groupId>
+-        <artifactId>activation</artifactId>
+-        <version>${activation.version}</version>
+-      </dependency>
+-
+-      <dependency>
+         <groupId>org.hibernate</groupId>
+         <artifactId>hibernate-core</artifactId>
+         <version>${hibernate-core.version}</version>
+-- 
+1.7.7.6
+
diff --git a/ovirt-engine-dont-use-hibernate-string-helper.patch b/ovirt-engine-dont-use-hibernate-string-helper.patch
new file mode 100644
index 0000000..d555fd5
--- /dev/null
+++ b/ovirt-engine-dont-use-hibernate-string-helper.patch
@@ -0,0 +1,48 @@
+From 0be1c6eeac7bd3cf46be8666129d74ed2ec4ff5f Mon Sep 17 00:00:00 2001
+From: Juan Hernandez <juan.hernandez at redhat.com>
+Date: Thu, 16 Feb 2012 17:36:21 +0100
+Subject: [PATCH] Don't use hibernate string helper
+
+Change-Id: If891e2693032d8f747cdbbdb1e842fb84711640b
+---
+ .../engine/core/bll/ChangeVMClusterCommand.java    |    8 ++++----
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeVMClusterCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeVMClusterCommand.java
+index cdc870e..c2a1e55 100644
+--- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeVMClusterCommand.java
++++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeVMClusterCommand.java
+@@ -5,7 +5,6 @@ import java.util.HashMap;
+ import java.util.List;
+ import java.util.Map;
+ 
+-import org.hibernate.annotations.common.util.StringHelper;
+ import org.ovirt.engine.core.common.AuditLogType;
+ import org.ovirt.engine.core.common.VdcObjectType;
+ import org.ovirt.engine.core.common.action.ChangeVMClusterParameters;
+@@ -83,10 +82,11 @@ public class ChangeVMClusterCommand<T extends ChangeVMClusterParameters> extends
+                 List<network> networks = DbFacade.getInstance().getNetworkDAO().getAllForCluster(getParameters().getClusterId());
+                 StringBuilder missingNets = new StringBuilder();
+                 for (VmNetworkInterface iface: interfaces) {
+-                    if (!StringHelper.isEmpty(iface.getNetworkName())) {
++                    String netName = iface.getNetworkName();
++                    if (!"".equals(netName)) {
+                         boolean exists = false;
+                         for (network net: networks) {
+-                            if (net.getname().equals(iface.getNetworkName())) {
++                            if (net.getname().equals(netName)) {
+                                 exists = true;
+                                 break;
+                             }
+@@ -95,7 +95,7 @@ public class ChangeVMClusterCommand<T extends ChangeVMClusterParameters> extends
+                             if (missingNets.length() > 0) {
+                                 missingNets.append(", ");
+                             }
+-                            missingNets.append(iface.getNetworkName());
++                            missingNets.append(netName);
+                         }
+                     }
+                 }
+-- 
+1.7.7.6
+
diff --git a/ovirt-engine-fix-classpath-building-in-scripts.patch b/ovirt-engine-fix-classpath-building-in-scripts.patch
new file mode 100644
index 0000000..688b01f
--- /dev/null
+++ b/ovirt-engine-fix-classpath-building-in-scripts.patch
@@ -0,0 +1,296 @@
+diff --git a/backend/manager/conf/ca/generate-ssh-keys b/backend/manager/conf/ca/generate-ssh-keys
+index f4e2112..7ab45c0 100755
+--- a/backend/manager/conf/ca/generate-ssh-keys
++++ b/backend/manager/conf/ca/generate-ssh-keys
+@@ -5,9 +5,12 @@ CA_DIR=`dirname ${0}`
+ KEY_STORE="${CA_DIR}/.keystore"
+ KEY_ALIAS="engine"
+ STORE_PASS="NoSoup4U"
+-JBOSS_HOME="/usr/share/jboss-as"
+-EAR_LIB="${JBOSS_HOME}/standalone/deployments/engine.ear/lib"
+-CLASS_PATH="${EAR_LIB}/engineencryptutils-3.0.0-0001.jar:${EAR_LIB}/engine-compat.jar:${JBOSS_HOME}/modules/org/jboss/logging/main/jboss-logging-3.1.0.CR2.jar:${EAR_LIB}/commons-codec-1.4.jar"
++CLASS_PATH=$(build-classpath \
++ovirt-engine/engineencryptutils \
++ovirt-engine/compat \
++jboss-logging \
++apache-commons-codec \
++)
+ SSH_PRIV_KEY="${CA_DIR}/keys/engine_id_rsa"
+ PKEY_8="${CA_DIR}/keys/privatekey.pkcs8"
+ 
+diff --git a/backend/manager/conf/ca/store-utils.sh b/backend/manager/conf/ca/store-utils.sh
+index d6d518e..0b6ab71 100755
+--- a/backend/manager/conf/ca/store-utils.sh
++++ b/backend/manager/conf/ca/store-utils.sh
+@@ -37,7 +37,12 @@ else
+         EAR_LIB=$6
+ fi
+ 
+-CP=$EAR_LIB/engineencryptutils-3.0.0-0001.jar:$EAR_LIB/engine-compat.jar:$JB_HOME/common/lib/commons-logging.jar:$EAR_LIB/commons-codec-1.4.jar
++CP=$(build-classpath \
++ovirt-engine/engineencryptutils \
++ovirt-engine/compat \
++apache-commons-logging \
++apache-commons-codec \
++)
+ 
+ if [ "$1" == "-pfx" ]; then
+ 	PKEY_8=privatekey.pkcs8
+diff --git a/backend/manager/conf/kerberos/engine-manage-domains b/backend/manager/conf/kerberos/engine-manage-domains
+index 4258d61..73f687e 100755
+--- a/backend/manager/conf/kerberos/engine-manage-domains
++++ b/backend/manager/conf/kerberos/engine-manage-domains
+@@ -90,20 +90,26 @@ if [ "$1" == "--help" -o "$1" == "-h" ]; then
+         exit 0
+ fi
+ 
+-# Take configuration from configuration file
+-ENGINE_LIB_PATH=$engineLibPath
+-JAVA_LIB_HOME=/usr/share/java
+-LOCAL_LIB=lib
+-
+-if [ ! -d $ENGINE_LIB_PATH ]; then
+-		die "Error: oVirt Engine library path does not exist"
+-fi
+-
+-if [ ! -d $JAVA_LIB_HOME ]; then
+-		die "Error: java library path does not exist"
+-fi
+-
+-CP=$CONF_DIR:$JAVA_LIB_HOME/commons-logging.jar:$JAVA_LIB_HOME/commons-collections.jar:$JAVA_LIB_HOME/commons-lang.jar:$JAVA_LIB_HOME/commons-configuration.jar:$JAVA_LIB_HOME/commons-jxpath.jar:$JAVA_LIB_HOME/log4j.jar:$JAVA_LIB_HOME/commons-codec.jar:$JAVA_LIB_HOME/postgresql-jdbc.jar:$LOCAL_LIB/engine-compat.jar:$JAVA_LIB_HOME/engine-tools-common.jar:$ENGINE_LIB_PATH/utils-3.0.0-0001.jar:$ENGINE_LIB_PATH/engine-common.jar:$ENGINE_LIB_PATH/spring-tx-2.5.6.SEC02.jar:$ENGINE_LIB_PATH/commons-lang-2.4.jar:$ENGINE_LIB_PATH/spring-beans-2.5.6.SEC02.jar:$ENGINE_LIB_PATH/spring-core-2.5.6.SEC02.jar:$ENGINE_LIB_PATH/spring-ldap-core-1.3.0.RELEASE.jar:$ENGINE_LIB_PATH/engineencryptutils-3.0.0-0001.jar
++CP=$CONF_DIR:$(build-classpath \
++apache-commons-logging.jar \
++apache-commons-collections \
++apache-commons-lang \
++apache-commons-configuration \
++apache-commons-jxpath \
++log4j \
++apache-commons-codec \
++postgresql-jdbc \
++ovirt-engine/compat \
++ovirt-engine/engine-tools-common \
++ovirt-engine/utils \
++ovirt-engine/common \
++springframework/spring-tx \
++apache-commons-lang \
++springframework/spring-beans \
++springframework/spring-core \
++spring-ldap/spring-ldap-core \
++ovirt-engine/engineencryptutils
++)
+ 
+ for f in $(echo $CP|sed 's/:/ /g')
+ do
+diff --git a/backend/manager/conf/kerberos/kerberos-util.sh b/backend/manager/conf/kerberos/kerberos-util.sh
+index 8e8269c..641127e 100755
+--- a/backend/manager/conf/kerberos/kerberos-util.sh
++++ b/backend/manager/conf/kerberos/kerberos-util.sh
+@@ -26,18 +26,7 @@ if [ $1 == '-?' ]; then
+     exit 1
+ fi
+ 
+-JB_HOME=$6
+-if [ -z "$JB_HOME" ]; then
+-    JB_HOME=/usr/local/jboss-eap-5.0/jboss-as
+-fi
+-
+-if [ -z "$5" ]; then
+-        EAR_LIB=$JB_HOME/server/engine-slimmed/deploy/engine.ear/lib
+-else
+-        EAR_LIB=$5
+-fi
+-
+-CP=$EAR_LIB/utils-3.0.0-0001.jar:$EAR_LIB/engine-compat.jar:$JB_HOME/common/lib/commons-logging.jar
++CP=$(build-classpath ovirt-engine/utils ovirt-engine/compat apache-commons-logging)
+ 
+ java -cp $CP org.ovirt.engine.core.utils.kerberos.KerberosUtil -realm="$1" -user="$2" -pass="$3" -conf="$4"  -Dsun.security.krb5.debug=true
+ 
+diff --git a/backend/manager/conf/kerberos/kerberosInstaller.sh b/backend/manager/conf/kerberos/kerberosInstaller.sh
+index 291cd61..18561b8 100755
+--- a/backend/manager/conf/kerberos/kerberosInstaller.sh
++++ b/backend/manager/conf/kerberos/kerberosInstaller.sh
+@@ -41,7 +41,7 @@ fi
+ # Jboss is not extracted yet.
+ DEVELOPER_MODE=y
+ if [ -z "$DEVELOPER_MODE" ]; then
+-    CLASSPATH=$JB_HOME/utils-3.0.0-0001.jar:$JB_HOME/engine-compat.jar:$JB_HOME/commons-logging.jar
++    CLASSPATH=$(build-classpath ovirt-engine/utils ovirt-engine/compat apache-commons-logging)
+ else
+     echo -e "\n### running in developer mode ###"
+ 	if [ ! -d $JB_HOME/$EAR_LIB ]; then
+diff --git a/backend/manager/conf/kerberos/kerberosUpdater.sh b/backend/manager/conf/kerberos/kerberosUpdater.sh
+index 689d30d..559886a 100755
+--- a/backend/manager/conf/kerberos/kerberosUpdater.sh
++++ b/backend/manager/conf/kerberos/kerberosUpdater.sh
+@@ -40,7 +40,7 @@ fi
+ # This is used during installation where Jboss is not extracted yet.
+  DEVELOPER_MODE=y
+ if [ -z $DEVELOPER_MODE ]; then
+-    CLASSPATH=$JB_HOME/utils-3.0.0-0001.jar:$JB_HOME/engine-compat.jar:$JB_HOME/commons-logging.jar:$JB_HOME/sqljdbc4.jar:$JB_HOME/engineencryptutils-3.0.0-0001.jar:$JB_HOME/commons-codec-1.4.jar
++    CLASSPATH=$(build-classpath ovirt-engine/utils ovirt-engine/compat apache-commons-logging ovirt-engine/engineencryptutils apache-commons-codec)
+ else
+     CLASSPATH=$JB_HOME/$EAR_LIB/utils-3.0.0-0001.jar:$JB_HOME/$EAR_LIB/engine-compat.jar:$JB_HOME/common/lib/commons-logging.jar:$JB_HOME/common/lib/sqljdbc4.jar:$JB_HOME/$EAR_LIB/engineencryptutils-3.0.0-0001.jar:$JB_HOME/$EAR_LIB/commons-codec-1.4.jar
+     echo ### running in developer mode ###
+diff --git a/backend/manager/tools/engine-config/src/main/resources/engine-config b/backend/manager/tools/engine-config/src/main/resources/engine-config
+index e7ca3e9..7422ee2 100755
+--- a/backend/manager/tools/engine-config/src/main/resources/engine-config
++++ b/backend/manager/tools/engine-config/src/main/resources/engine-config
+@@ -92,7 +92,20 @@ fi
+ # Verify all classpath elements available
+ JAVA_LIB_HOME=/usr/share/java
+ LOCAL_LIB=lib
+-CP=$JAVA_LIB_HOME/commons-logging.jar:$JAVA_LIB_HOME/commons-collections.jar:$JAVA_LIB_HOME/commons-lang.jar:$JAVA_LIB_HOME/commons-configuration.jar:$JAVA_LIB_HOME/commons-jxpath.jar:$JAVA_LIB_HOME/log4j.jar:$JAVA_LIB_HOME/commons-codec.jar:$JAVA_LIB_HOME/postgresql-jdbc.jar:$LOCAL_LIB/engineencryptutils-3.0.0-0001.jar:$LOCAL_LIB/engine-compat.jar:$LOCAL_LIB/engine-config.jar:$JAVA_LIB_HOME/engine-tools-common.jar
++CP=$(build-classpath \
++apache-commons-logging \
++apache-commons-collections \
++apache-commons-lang \
++apache-commons-configuration \
++apache-commons-jxpath \
++log4j \
++apache-commons-codec \
++postgresql-jdbc \
++ovirt-engine/engineencryptutils \
++ovirt-engine/compat \
++ovirt-engine/engine-config \
++ovirt-engine/engine-tools-common \
++)
+ 
+ for f in $(echo $CP|sed 's/:/ /g')
+ do
+diff --git a/backend/manager/tools/engine-notifier/engine-notifier-resources/src/main/resources/notifier.sh b/backend/manager/tools/engine-notifier/engine-notifier-resources/src/main/resources/notifier.sh
+index da54a88..7c456a8 100755
+--- a/backend/manager/tools/engine-notifier/engine-notifier-resources/src/main/resources/notifier.sh
++++ b/backend/manager/tools/engine-notifier/engine-notifier-resources/src/main/resources/notifier.sh
+@@ -221,7 +221,6 @@ else
+ fi
+ 
+ # Configure classpath for engine-notifier
+-JAVA_LIB_HOME=/usr/share/java
+ #JAVA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=127.0.0.1:8787"
+ 
+ # Add the configuration directory to the classpath so that configuration
+@@ -229,74 +228,31 @@ JAVA_LIB_HOME=/usr/share/java
+ CP=/etc/engine/notifier/.
+ 
+ # Add the required jar files from the system wide jars directory:
+-jar_names='
+-    commons-logging
+-    commons-collections
+-    commons-lang
+-    log4j
+-    commons-codec
+-    commons-configuration
+-    commons-jxpath
+-    postgresql-jdbc
+-    javamail
+-    activation
+-    engine-tools-common
+-'
+-for jar_name in ${jar_names}
+-do
+-    jar_file=${JAVA_LIB_HOME}/${jar_name}.jar
+-    if [ ! -s "${jar_file}" ]
+-    then
+-        die "Error: can't run without missing JAR file: ${jar_file}\n" 5
+-    fi
+-    CP=${CP}:${jar_file}
+-done
+-
+-# Add all the needed jar files from the oVirt Engine EAR to the classpath, but
+-# try to locate them using the name and not the version. This is important
+-# in order to make the script less dependent on the version of oVirt Engine
+-# installed:
+-jar_names='
+-    stax-api
+-    jaxb-api
+-    slf4j-api
+-    validation-api
+-    hibernate-validator
+-    hibernate-commons-annotations
+-    hibernate-core
+-    antlr
+-    dom4j
+-    xml-apis
+-    ejb3-persistence
+-    hibernate-annotations
+-    jaxb-impl
+-    engine-common
+-    engine-compat
+-    engineencryptutils
+-'
+-for jar_name in ${jar_names}
+-do
+-    jar_file=$(find ${engineLib} -regex ".*/${jar_name}.*\.jar")
+-    if [ -z "${jar_file}" -o ! -s "${jar_file}" ]
+-    then
+-        die "Error: can't run without missing JAR file: ${engineLib}/${jar_name}*.jar\n" 5
+-    fi
+-    CP=${CP}:${jar_file}
+-done
+-
+-# Add the jar files specific to the notifier:
+-jar_names='
+-    engine-notifier
+-'
+-for jar_name in ${jar_names}
+-do
+-    jar_file=${NOTIFIER_HOME}/${jar_name}.jar
+-    if [ ! -s "${jar_file}" ]
+-    then
+-        die "Error: can't run without missing JAR file: ${jar_file}\n" 5
+-    fi
+-    CP=${CP}:${jar_file}
+-done
++CP=${CP}:$(build-classpath \
++apache-commons-logging \
++apache-commons-collections \
++apache-commons-lang \
++log4j \
++apache-commons-codec \
++apache-commons-configuration \
++apache-commons-jxpath \
++postgresql-jdbc \
++javamail \
++ovirt-engine/engine-tools-common \
++stax2-api \
++jaxb-api \
++slf4j/api \
++geronimo-validation \
++hibernate-validator \
++hibernate/hibernate-commons-annotations \
++antlr \
++dom4j \
++glassfish-jaxb/jaxb-impl \
++ovirt-engine/common \
++ovirt-engine/compat \
++ovirt-engine/engineencryptutils \
++ovirt-engine/engine-notifier-service \
++)
+ 
+ if [ -z "$NOTIFIER_PID" ]
+ then
+diff --git a/backend/manager/conf/ca/encryptpasswd.sh b/backend/manager/conf/ca/encryptpasswd.sh
+index b134849..48ff11b 100644
+--- a/backend/manager/conf/ca/encryptpasswd.sh
++++ b/backend/manager/conf/ca/encryptpasswd.sh
+@@ -26,19 +26,6 @@ if [[ "x${JAVA_HOME}" != "x" ]] ;then
+     JAVA_BIN=$JAVA_HOME/bin/java
+ fi
+ 
+-
+-pushd  $JBOSS_HOME
+-#if [ -e "common/lib/jbosssx.jar" ]; then
+-#    $JAVA_BIN -cp client/jboss-logging-spi.jar:common/lib/jbosssx.jar org.jboss.resource.security.SecureIdentityLoginModule $1
+-#elif [ -e "lib/jbosssx.jar" ]; then
+-#	$JAVA_BIN -cp client/jboss-logging-spi.jar:lib/jbosssx.jar org.jboss.resource.security.SecureIdentityLoginModule $1
+-#else
+-#        echo "unable to find jbosssx jar..."
+-#        exit 1
+-#fi
+-
+-$JAVA_BIN -cp "./modules/org/jboss/logging/main/jboss-logging-3.1.0.CR2.jar:./modules/org/picketbox/main/picketbox-4.0.6.Beta1.jar" org.picketbox.datasource.security.SecureIdentityLoginModule $1
+-
+-popd
++$JAVA_BIN -cp $(build-classpath jboss-logging picketbox/picketbox) org.picketbox.datasource.security.SecureIdentityLoginModule $1
+ 
+ exit $?
diff --git a/ovirt-engine-fix-postgresdbenginedialect.patch b/ovirt-engine-fix-postgresdbenginedialect.patch
index 3a24546..663ac09 100644
--- a/ovirt-engine-fix-postgresdbenginedialect.patch
+++ b/ovirt-engine-fix-postgresdbenginedialect.patch
@@ -1,12 +1,3 @@
-From 0d52f36461c5b9419b3da426802e56744383b2a6 Mon Sep 17 00:00:00 2001
-From: Juan Hernandez <juan.hernandez at redhat.com>
-Date: Sat, 9 Jun 2012 14:58:43 +0200
-Subject: [PATCH] core: Update to Spring 3
-
----
- .../org/ovirt/engine/core/dal/dbbroker/PostgresDbEngineDialect.java  |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
 diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/PostgresDbEngineDialect.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/PostgresDbEngineDialect.java
 index ec9f8e8..6c8e9c7 100644
 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/PostgresDbEngineDialect.java
@@ -20,6 +11,3 @@ index ec9f8e8..6c8e9c7 100644
              // Have only the declared parameters participate in the function metadata extraction, otherwise the
              // CallMetaDataContext thinks that the returned column names are parameters.
              getInParameterNames().addAll(args.keySet());
--- 
-1.7.10.2
-
diff --git a/ovirt-engine-makefile-fixes.patch b/ovirt-engine-makefile-fixes.patch
new file mode 100644
index 0000000..6cc1353
--- /dev/null
+++ b/ovirt-engine-makefile-fixes.patch
@@ -0,0 +1,369 @@
+commit ca9001dbc05473cfc99db64945fe8e8fee0dcbf6
+Author: Juan Hernandez <juan.hernandez at redhat.com>
+Date:   Wed Apr 18 22:14:55 2012 +0200
+
+    makefile-fixes
+
+diff --git a/Makefile b/Makefile
+index a1d04b5..9f5c02f 100644
+--- a/Makefile
++++ b/Makefile
+@@ -9,7 +9,7 @@ MVN=$(shell which mvn)
+ BUILD_FLAGS=-P gwt-admin,gwt-user
+ DEPLOY_FLAGS=-f deploy.xml
+ JBOSS_HOME=/usr/share/jboss-as
+-EAR_DIR=/usr/share/ovirt-engine/engine.ear
++EAR_DIR=/usr/share/ovirt-engine/deployments/engine.ear
+ EAR_SRC_DIR=ear/target/engine
+ PY_SITE_PKGS:=$(shell python -c "from distutils.sysconfig import get_python_lib as f;print f()")
+ APP_VERSION:=$(shell cat pom.xml | grep '<engine.version>' | awk -F\> '{print $$2}' | awk -F\< '{print $$1}')
+@@ -41,10 +41,12 @@ clean:
+ test:
+ 	$(MVN) install $(BUILD_FLAGS)
+ 
+-install: build_mvn create_dirs install_ear install_quartz install_tools \
++install: build_mvn create_dirs install_ear install_tools \
+ 		install_config install_log_collector install_iso_uploader \
+ 		install_sysprep install_notification_service install_db_scripts \
+-		install_misc install_setup install_sec
++		install_misc install_setup install_jboss_modules install_sec \
++		install_root_webapp \
++		install_systemd_service
+ 
+ tarball: $(TARBALL)
+ $(TARBALL):
+@@ -71,7 +73,9 @@ rpm: $(SRPM)
+ 
+ create_dirs:
+ 	@echo "*** Creating Directories"
+-	@mkdir -p $(PREFIX)/usr/share/ovirt-engine/{sysprep,kerberos,scripts,3rd-party-lib,engine.ear,conf,dbscripts,resources,ovirt-isos,iso-uploader,log-collector,db-backups,engine.ear}
++	@mkdir -p $(PREFIX)/usr/share/ovirt-engine/{kerberos,scripts,3rd-party-lib,conf,dbscripts,resources,ovirt-isos,iso-uploader,log-collector,db-backups}
++	@mkdir -p $(PREFIX)/usr/share/ovirt-engine/bin
++	@mkdir -p $(PREFIX)/usr/share/ovirt-engine/deployments
+ 	@mkdir -p $(PREFIX)/usr/share/ovirt-engine/engine-config/lib
+ 	@mkdir -p $(PREFIX)/usr/share/ovirt-engine/notifier/lib
+ 	@mkdir -p $(PREFIX)/usr/share/ovirt-engine/engine-manage-domains/lib
+@@ -86,20 +90,21 @@ create_dirs:
+ 	@mkdir -p $(PREFIX)/var/run/ovirt-engine/notifier
+ 	@mkdir -p $(PREFIX)/var/lock/ovirt-engine
+ 	@mkdir -p $(PREFIX)/etc/{init.d,tmpfiles.d,cron.daily}
+-	@mkdir -p $(PREFIX)/etc/ovirt-engine/{engine-config,engine-manage-domains}
++	@mkdir -p $(PREFIX)/etc/ovirt-engine/{engine-config,engine-manage-domains,sysprep}
+ 	@mkdir -p $(PREFIX)$(EAR_DIR)
+-	@mkdir -p $(PREFIX)$(JBOSS_HOME)/modules/org/postgresql/main/
+-	@mkdir -p $(PREFIX)/usr/share/ovirt-engine/resources/jboss/modules/org
++	@mkdir -p $(PREFIX)/usr/share/ovirt-engine/resources/jboss
+ 	@mkdir -p $(PREFIX)/etc/pki/ovirt-engine/{keys,private,requests,certs}
++	@mkdir -p $(PREFIX)/etc/sysconfig
++	@mkdir -p $(PREFIX)/usr/lib/systemd/system
++	@mkdir -p $(PREFIX)/var/lib/ovirt-engine
++	@mkdir -p $(PREFIX)/var/cache/ovirt-engine
+ 
+ install_ear:
+ 	@echo "*** Deploying EAR to $(PREFIX)"
+-	mkdir -p $(PREFIX)$(EAR_DIR)
+-	cp -rf $(EAR_SRC_DIR)/* $(PREFIX)$(EAR_DIR)
+-
+-install_quartz:
+-	@echo "*** Deploying quartz.jar to $(PREFIX)"
+-#	cp -f ear/target/quartz/quartz*.jar $(PREFIX)$(JBOSS_HOME)/common/lib/
++	install -dm 755 $(PREFIX)$(EAR_DIR)
++	cp -r $(EAR_SRC_DIR)/* $(PREFIX)$(EAR_DIR)
++	find $(PREFIX)$(EAR_DIR) -type d -exec chmod 755 {} \;
++	find $(PREFIX)$(EAR_DIR) -type f -exec chmod 644 {} \;
+ 
+ install_tools:
+ 	@echo "*** Installing Common Tools"
+@@ -109,120 +114,146 @@ install_tools:
+ 
+ install_setup:
+ 	@echo "*** Deploying setup executables"
+-	cp -f ./packaging/fedora/setup/engine-config-install.properties $(PREFIX)/usr/share/ovirt-engine/conf
+-	chmod 644 $(PREFIX)/usr/share/ovirt-engine/conf/engine-config-install.properties
+-	cp -f ./packaging/fedora/setup/iptables.default $(PREFIX)/usr/share/ovirt-engine/conf
+-	chmod 755 $(PREFIX)/usr/share/ovirt-engine/conf/iptables.default
+-	cp -f ./packaging/fedora/setup/nfs.sysconfig $(PREFIX)/usr/share/ovirt-engine/conf
+-	chmod 755 $(PREFIX)/usr/share/ovirt-engine/conf/nfs.sysconfig
+-	cp -f ./packaging/fedora/setup/engine-setup.py $(PREFIX)/usr/share/ovirt-engine/scripts
+-	chmod 755 $(PREFIX)/usr/share/ovirt-engine/scripts/engine-setup.py
+-	cp -f ./packaging/fedora/setup/nfsutils.py $(PREFIX)/usr/share/ovirt-engine/scripts
+-	chmod 755 $(PREFIX)/usr/share/ovirt-engine/scripts/nfsutils.py
+-	cp -f ./packaging/fedora/setup/basedefs.py $(PREFIX)/usr/share/ovirt-engine/scripts
+-	chmod 755 $(PREFIX)/usr/share/ovirt-engine/scripts/basedefs.py
+-	cp -f ./packaging/fedora/setup/engine_validators.py $(PREFIX)/usr/share/ovirt-engine/scripts
+-	chmod 755 $(PREFIX)/usr/share/ovirt-engine/scripts/engine_validators.py
+-	cp -f ./packaging/fedora/setup/common_utils.py $(PREFIX)/usr/share/ovirt-engine/scripts
+-	chmod 755 $(PREFIX)/usr/share/ovirt-engine/scripts/common_utils.py
+-	cp -f ./packaging/fedora/setup/resources/jboss/web-conf.js $(PREFIX)/etc/ovirt-engine
+-	chmod 755 $(PREFIX)/etc/ovirt-engine/web-conf.js
+-	cp -f ./packaging/fedora/setup/output_messages.py $(PREFIX)/usr/share/ovirt-engine/scripts
+-	chmod 755 $(PREFIX)/usr/share/ovirt-engine/scripts/output_messages.py
++
++	# Configuration files templates for engine-setup:
++	install -m 644 packaging/fedora/setup/engine-config-install.properties $(PREFIX)/usr/share/ovirt-engine/conf
++	install -m 644 packaging/fedora/setup/iptables.default $(PREFIX)/usr/share/ovirt-engine/conf
++	install -m 644 packaging/fedora/setup/nfs.sysconfig $(PREFIX)/usr/share/ovirt-engine/conf
++
++	# Python modules shared by the setup and cleanup tools:
++	install -m 644 packaging/fedora/setup/basedefs.py $(PREFIX)/usr/share/ovirt-engine/scripts
++	install -m 644 packaging/fedora/setup/common_utils.py $(PREFIX)/usr/share/ovirt-engine/scripts
++	install -m 644 packaging/fedora/setup/engine_validators.py $(PREFIX)/usr/share/ovirt-engine/scripts
++	install -m 644 packaging/fedora/setup/nfsutils.py $(PREFIX)/usr/share/ovirt-engine/scripts
++	install -m 644 packaging/fedora/setup/output_messages.py $(PREFIX)/usr/share/ovirt-engine/scripts
++
++	# Python main programs for the engine setup and cleanup tools:
++	install -m 755 packaging/fedora/setup/engine-setup.py $(PREFIX)/usr/share/ovirt-engine/scripts
+ 	ln -s /usr/share/ovirt-engine/scripts/engine-setup.py $(PREFIX)/usr/bin/engine-setup
+-	cp -af ./packaging/fedora/setup/resources/jboss/* $(PREFIX)/usr/share/ovirt-engine/resources/jboss/
+-	cp -af ./deployment/modules/org/* $(PREFIX)/usr/share/ovirt-engine/resources/jboss/modules/org/
+-	ln -s /usr/share/java/postgresql-jdbc.jar $(PREFIX)/usr/share/ovirt-engine/resources/jboss/modules/org/postgresql/main/
+-	cp -f ./packaging/fedora/setup/engine-cleanup.py $(PREFIX)/usr/share/ovirt-engine/scripts
+-	chmod 755 $(PREFIX)/usr/share/ovirt-engine/scripts/engine-cleanup.py
++	install -m 755 packaging/fedora/setup/engine-cleanup.py $(PREFIX)/usr/share/ovirt-engine/scripts
+ 	ln -s /usr/share/ovirt-engine/scripts/engine-cleanup.py $(PREFIX)/usr/bin/engine-cleanup
+-	sed -i "s/MYVERSION/$(RPM_VERSION)/" $(PREFIX)/usr/share/ovirt-engine/resources/jboss/ROOT.war/engineVersion.js
++
++
++install_jboss_modules:
++	# Copy the module definitions:
++	install -dm 755 $(PREFIX)/usr/share/ovirt-engine/modules
++	cp -r deployment/modules/* $(PREFIX)/usr/share/ovirt-engine/modules
++	find $(PREFIX)/usr/share/ovirt-engine/modules -type d -exec chmod 755 {} \;
++	find $(PREFIX)/usr/share/ovirt-engine/modules -type f -exec chmod 644 {} \;
++
++	# PostgreSQL:
++	ln -s /usr/share/java/postgresql-jdbc.jar $(PREFIX)/usr/share/ovirt-engine/modules/org/postgresql/main/.
++
++	# JAXB:
++	ln -s /usr/share/java/glassfish-jaxb/jaxb-impl.jar $(PREFIX)/usr/share/ovirt-engine/modules/com/sun/xml/bind/main/.
++	ln -s /usr/share/java/glassfish-jaxb/jaxb-xjc.jar $(PREFIX)/usr/share/ovirt-engine/modules/com/sun/xml/bind/main/.
++
++	# Hibernate validator needs to be overriden because it is missing the
++	# jtype library:
++	ln -s /usr/share/java/hibernate-validator.jar $(PREFIX)/usr/share/ovirt-engine/modules/org/hibernate/validator/main/.
++	ln -s /usr/share/java/jtype.jar $(PREFIX)/usr/share/ovirt-engine/modules/org/hibernate/validator/main/.
+ 
+ install_sec:
+-	cd backend/manager/3rdparty/pub2ssh/; chmod +x pubkey2ssh.sh; mkdir -p bin; ./pubkey2ssh.sh; cd -
+-	rm -rf $(PREFIX)/etc/pki/engine-config/*.bat
+-	cp -f ./backend/manager/3rdparty/pub2ssh/bin/pubkey2ssh $(PREFIX)/etc/pki/ovirt-engine
+-	chmod 755 $(PREFIX)/etc/pki/ovirt-engine
+-	cp -a  ./backend/manager/conf/ca/* $(PREFIX)/etc/pki/ovirt-engine
++	# Create the directories:
++	install -dm 755 $(PREFIX)/etc/pki/ovirt-engine
++	install -dm 755 $(PREFIX)/etc/pki/ovirt-engine/certs
++	install -dm 755 $(PREFIX)/etc/pki/ovirt-engine/keys
++	install -dm 755 $(PREFIX)/etc/pki/ovirt-engine/private
++	install -dm 755 $(PREFIX)/etc/pki/ovirt-engine/requests
++
++	# Configuration files:
++	install -m 644 backend/manager/conf/ca/openssl.conf $(PREFIX)/etc/pki/ovirt-engine
++	install -m 644 backend/manager/conf/ca/cacert.template $(PREFIX)/etc/pki/ovirt-engine
++	install -m 644 backend/manager/conf/ca/cert.template $(PREFIX)/etc/pki/ovirt-engine
++
++	# Certificate database:
++	install -m 644 backend/manager/conf/ca/database.txt $(PREFIX)/etc/pki/ovirt-engine
++	install -m 644 backend/manager/conf/ca/serial.txt $(PREFIX)/etc/pki/ovirt-engine
++
++	# Scripts:
++	install -m 755 backend/manager/conf/ca/*.sh $(PREFIX)/etc/pki/ovirt-engine
++	install -m 755 backend/manager/conf/ca/generate-ssh-keys $(PREFIX)/etc/pki/ovirt-engine
+ 
+ install_config:
+ 	@echo "*** Deploying engine-config & engine-manage-domains"
+-	cp -f ./backend/manager/tools/engine-config/src/main/resources/engine-config $(PREFIX)/usr/share/ovirt-engine/engine-config/
+-	chmod 750 $(PREFIX)/usr/share/ovirt-engine/engine-config/engine-config
+-	cp -f ./backend/manager/tools/engine-config/src/main/resources/engine-config.conf $(PREFIX)/etc/ovirt-engine/engine-config/
+-	chmod 755 $(PREFIX)/etc/ovirt-engine/engine-config/engine-config.conf
+-	cp -f ./backend/manager/tools/engine-config/src/main/resources/engine-config.*properties $(PREFIX)/etc/ovirt-engine/engine-config/
+-	chmod 644 $(PREFIX)/etc/ovirt-engine/engine-config/engine-config.*properties
+-	cp -f ./backend/manager/tools/engine-config/src/main/resources/log4j.xml $(PREFIX)/etc/ovirt-engine/engine-config/
+-	chmod 644 $(PREFIX)/etc/ovirt-engine/engine-config/log4j.xml
+-	cp -f ./backend/manager/tools/engine-config/target/engine-config-$(APP_VERSION).jar $(PREFIX)/usr/share/ovirt-engine/engine-config/lib/
+-	rm -f $(PREFIX)/usr/share/ovirt-engine/engine-config/lib/engine-config.jar
+-	ln -s /usr/share/ovirt-engine/engine-config/lib/engine-config-$(APP_VERSION).jar $(PREFIX)/usr/share/ovirt-engine/engine-config/lib/engine-config.jar
+-	cp -f ./backend/manager/modules/engineencryptutils/target/engineencryptutils-$(APP_VERSION).jar $(PREFIX)/usr/share/ovirt-engine/engine-config/lib/
+-	cp -f ./ear/target/engine/lib/engine-compat.jar $(PREFIX)/usr/share/ovirt-engine/engine-config/lib/
+-	rm -f $(PREFIX)/usr/bin/engine-config
++
++	# Configuration files for the configuration tool:
++	install -m 644 backend/manager/tools/engine-config/src/main/resources/engine-config.conf $(PREFIX)/etc/ovirt-engine/engine-config/
++	install -m 644 backend/manager/tools/engine-config/src/main/resources/engine-config.*properties $(PREFIX)/etc/ovirt-engine/engine-config/
++	install -m 644 backend/manager/tools/engine-config/src/main/resources/log4j.xml $(PREFIX)/etc/ovirt-engine/engine-config/
++
++	# Main program for the configuraiton tool:
++	install -m 755 backend/manager/tools/engine-config/src/main/resources/engine-config $(PREFIX)/usr/share/ovirt-engine/engine-config/
+ 	ln -s /usr/share/ovirt-engine/engine-config/engine-config $(PREFIX)/usr/bin/engine-config
+ 
+-	cp -f ./backend/manager/conf/kerberos/engine-manage-domains $(PREFIX)/usr/share/ovirt-engine/engine-manage-domains/
+-	chmod 750 $(PREFIX)/usr/share/ovirt-engine/engine-manage-domains/engine-manage-domains
+-	cp -f ./backend/manager/modules/utils/src/main/resources/engine-manage-domains.conf $(PREFIX)/etc/ovirt-engine/engine-manage-domains/
+-	chmod 755 $(PREFIX)/etc/ovirt-engine/engine-manage-domains/engine-manage-domains.conf
+-	cp -f ./backend/manager/modules/utils/src/main/resources/engine-manage-domains/log4j.xml $(PREFIX)/etc/ovirt-engine/engine-manage-domains/
+-	chmod 644 $(PREFIX)/etc/ovirt-engine/engine-manage-domains/log4j.xml
+-	cp -f ./ear/target/engine/lib/engine-compat.jar $(PREFIX)/usr/share/ovirt-engine/engine-manage-domains/lib/
+-	rm -f $(PREFIX)/usr/bin/engine-manage-domains
++	# Configuration files for the domain management tool (no execution
++	install -m 644 backend/manager/modules/utils/src/main/resources/engine-manage-domains.conf $(PREFIX)/etc/ovirt-engine/engine-manage-domains/
++	install -m 644 backend/manager/modules/utils/src/main/resources/engine-manage-domains/log4j.xml $(PREFIX)/etc/ovirt-engine/engine-manage-domains/
++
++	# Main program for the domain management tool (needs execution
++	install -m 755 backend/manager/conf/kerberos/engine-manage-domains $(PREFIX)/usr/share/ovirt-engine/engine-manage-domains/
+ 	ln -s /usr/share/ovirt-engine/engine-manage-domains/engine-manage-domains $(PREFIX)/usr/bin/engine-manage-domains
+ 
+ install_log_collector:
+ 	@echo "*** Deploying log collector"
+-	cp -f ./backend/manager/tools/engine-logcollector/src/rhev/logcollector.py $(PREFIX)/usr/share/ovirt-engine/log-collector/
+-	chmod 755 $(PREFIX)/usr/share/ovirt-engine/log-collector/logcollector.py
+-	/usr/bin/gzip -c ./backend/manager/tools/engine-logcollector/src/rhev/engine-log-collector.8 > $(PREFIX)/usr/share/man/man8/engine-log-collector.8.gz
++
++	# Python modules shouldn't have execution permission:
++	install -m 644 backend/manager/tools/engine-tools-common-lib/src/rhev/schemas/api.py $(PREFIX)/usr/share/ovirt-engine/log-collector/schemas
++	install -m 644 backend/manager/tools/engine-tools-common-lib/src/rhev/schemas/hypervisors.py $(PREFIX)/usr/share/ovirt-engine/log-collector/schemas
++	install -m 644 backend/manager/tools/engine-tools-common-lib/src/rhev/schemas/__init__.py $(PREFIX)/usr/share/ovirt-engine/log-collector/schemas
++
++	# Then main program needs execution permission:
++	install -m 755 backend/manager/tools/engine-logcollector/src/rhev/logcollector.py $(PREFIX)/usr/share/ovirt-engine/log-collector/
++	ln -s /usr/share/ovirt-engine/log-collector/logcollector.py $(PREFIX)/usr/bin/engine-log-collector
++
++	# The configuration file should be readable only by root as it may
++	# contain passwords:
++	install -m 600 backend/manager/tools/engine-logcollector/src/rhev/logcollector.conf $(PREFIX)/etc/ovirt-engine/
++
++	# Manual page:
++	gzip -c backend/manager/tools/engine-logcollector/src/rhev/engine-log-collector.8 > $(PREFIX)/usr/share/man/man8/engine-log-collector.8.gz
+ 	chmod 644 $(PREFIX)/usr/share/man/man8/engine-log-collector.8.gz
+-	cp -f ./backend/manager/tools/engine-logcollector/src/rhev/logcollector.conf $(PREFIX)/etc/ovirt-engine/
+-	chmod 600 $(PREFIX)/etc/ovirt-engine/logcollector.conf
+-	cp -f ./backend/manager/tools/engine-tools-common-lib/src/rhev/schemas/api.py $(PREFIX)/usr/share/ovirt-engine/log-collector/schemas
+-	cp -f ./backend/manager/tools/engine-tools-common-lib/src/rhev/schemas/hypervisors.py $(PREFIX)/usr/share/ovirt-engine/log-collector/schemas
+-	cp -f ./backend/manager/tools/engine-tools-common-lib/src/rhev/schemas/__init__.py $(PREFIX)/usr/share/ovirt-engine/log-collector/schemas
+-	chmod 755 $(PREFIX)/usr/share/ovirt-engine/log-collector/schemas/*
+-	cp -f ./backend/manager/tools/engine-logcollector/src/sos/plugins/jboss.py $(PREFIX)$(PY_SITE_PKGS)/sos/plugins
+-	cp -f ./backend/manager/tools/engine-logcollector/src/sos/plugins/engine.py $(PREFIX)$(PY_SITE_PKGS)/sos/plugins
+-	cp -f ./backend/manager/tools/engine-logcollector/src/sos/plugins/postgresql.py $(PREFIX)$(PY_SITE_PKGS)/sos/plugins
+-	chmod 755 $(PREFIX)$(PY_SITE_PKGS)/sos/plugins/*
+-	rm -f $(PREFIX)/usr/bin/engine-log-collector
+-	ln -s /usr/share/ovirt-engine/log-collector/logcollector.py $(PREFIX)/usr/bin/engine-log-collector	
++
++	# SOS plugins:
++	install -m 755 backend/manager/tools/engine-logcollector/src/sos/plugins/jboss.py $(PREFIX)$(PY_SITE_PKGS)/sos/plugins
++	install -m 755 backend/manager/tools/engine-logcollector/src/sos/plugins/engine.py $(PREFIX)$(PY_SITE_PKGS)/sos/plugins
++	install -m 755 backend/manager/tools/engine-logcollector/src/sos/plugins/postgresql.py $(PREFIX)$(PY_SITE_PKGS)/sos/plugins
+ 
+ install_iso_uploader:
+ 	@echo "*** Deploying iso uploader"
+-	cp -f ./backend/manager/tools/engine-iso-uploader/src/engine-iso-uploader.py $(PREFIX)/usr/share/ovirt-engine/iso-uploader/
+-	chmod 755 $(PREFIX)/usr/share/ovirt-engine/iso-uploader/engine-iso-uploader.py
+-	/usr/bin/gzip -c ./backend/manager/tools/engine-iso-uploader/src/engine-iso-uploader.8 > $(PREFIX)/usr/share/man/man8/engine-iso-uploader.8.gz
+-	chmod 644 $(PREFIX)/usr/share/man/man8/engine-iso-uploader.8.gz
+-	cp -f ./backend/manager/tools/engine-iso-uploader/src/isouploader.conf $(PREFIX)/etc/ovirt-engine/
+-	chmod 600 $(PREFIX)/etc/ovirt-engine/isouploader.conf
+-	cp -f ./backend/manager/tools/engine-tools-common-lib/src/rhev/schemas/api.py $(PREFIX)/usr/share/ovirt-engine/iso-uploader/schemas
+-	cp -f ./backend/manager/tools/engine-tools-common-lib/src/rhev/schemas/__init__.py $(PREFIX)/usr/share/ovirt-engine/iso-uploader/schemas
+-	chmod 755 $(PREFIX)/usr/share/ovirt-engine/iso-uploader/schemas/*
+-	rm -f $(PREFIX)/usr/bin/engine-iso-uploader
++
++	# Python modules shouldn't have execution permission:
++	install -m 644 backend/manager/tools/engine-tools-common-lib/src/rhev/schemas/api.py $(PREFIX)/usr/share/ovirt-engine/iso-uploader/schemas
++	install -m 644 backend/manager/tools/engine-tools-common-lib/src/rhev/schemas/__init__.py $(PREFIX)/usr/share/ovirt-engine/iso-uploader/schemas
++
++	# Then main program needs execution permission:
++	install -m 755 backend/manager/tools/engine-iso-uploader/src/engine-iso-uploader.py $(PREFIX)/usr/share/ovirt-engine/iso-uploader/
+ 	ln -s /usr/share/ovirt-engine/iso-uploader/engine-iso-uploader.py $(PREFIX)/usr/bin/engine-iso-uploader
+ 
++	# The configuration file should be readable only by root because it may
++	# contain passwords used to connect with SSH to the file servers:
++	install -m 600 backend/manager/tools/engine-iso-uploader/src/isouploader.conf $(PREFIX)/etc/ovirt-engine/
++
++	# Manual page:
++	gzip -c backend/manager/tools/engine-iso-uploader/src/engine-iso-uploader.8 > $(PREFIX)/usr/share/man/man8/engine-iso-uploader.8.gz
++	chmod 644 $(PREFIX)/usr/share/man/man8/engine-iso-uploader.8.gz
++
+ install_sysprep:
+-	@echo "*** Deploying sysperp"
+-	cp -f ./backend/manager/conf/sysprep/* $(PREFIX)/usr/share/ovirt-engine/sysprep
+-	chmod 644 $(PREFIX)/usr/share/ovirt-engine/sysprep/*
++	@echo "*** Deploying sysprep"
++	cp -f ./backend/manager/conf/sysprep/* $(PREFIX)/etc/ovirt-engine/sysprep
++	chmod 644 $(PREFIX)/etc/ovirt-engine/sysprep/*
+ 
+ install_notification_service:
+ 	@echo "*** Deploying notification service"
+-	cp -f ./backend/manager/tools/engine-notifier/engine-notifier-resources/src/main/resources/log4j.xml $(PREFIX)/etc/ovirt-engine/notifier/
+-	chmod 644 $(PREFIX)/etc/ovirt-engine/notifier/log4j.xml
+-	cp -f ./backend/manager/tools/engine-notifier/engine-notifier-resources/src/main/resources/notifier.conf $(PREFIX)/etc/ovirt-engine/notifier/
+-	chmod 640 $(PREFIX)/etc/ovirt-engine/notifier/notifier.conf
+-	cp -f ./backend/manager/tools/engine-notifier/engine-notifier-resources/src/main/resources/notifier.sh $(PREFIX)/usr/share/ovirt-engine/notifier/
+-	chmod 755 $(PREFIX)/usr/share/ovirt-engine/notifier/notifier.sh
+-	cp -f ./backend/manager/tools/engine-notifier/engine-notifier-resources/src/main/resources/engine-notifierd $(PREFIX)/etc/init.d/
+-	chmod 755 $(PREFIX)/etc/init.d/engine-notifierd
+-	cp -f ./backend/manager/tools/engine-notifier/engine-notifier-service/target/engine-notifier-service-$(APP_VERSION).jar $(PREFIX)/usr/share/ovirt-engine/notifier/engine-notifier.jar
+-	chmod 644 $(PREFIX)/usr/share/ovirt-engine/notifier/engine-notifier.jar
++
++	# The main program and the startup script need execution permission:
++	install -m 755 backend/manager/tools/engine-notifier/engine-notifier-resources/src/main/resources/notifier.sh $(PREFIX)/usr/share/ovirt-engine/notifier/
++	install -m 755 backend/manager/tools/engine-notifier/engine-notifier-resources/src/main/resources/engine-notifierd $(PREFIX)/etc/init.d/
++
++	# The configuration file should be readable only by root and ovirt
++	# because it may contain credentials used to connect to mail servers:
++	install -m 640 backend/manager/tools/engine-notifier/engine-notifier-resources/src/main/resources/notifier.conf $(PREFIX)/etc/ovirt-engine/notifier/
++	install -m 644 backend/manager/tools/engine-notifier/engine-notifier-resources/src/main/resources/log4j.xml $(PREFIX)/etc/ovirt-engine/notifier/
+ 
+ install_db_scripts:
+ 	@echo "*** Deploying Database scripts"
+@@ -230,24 +261,35 @@ install_db_scripts:
+ 
+ install_misc:
+ 	@echo "*** Copying additional files"
+-	cp -f ./backend/manager/conf/jaas.conf $(PREFIX)/usr/share/ovirt-engine/conf
+-	chmod 644 $(PREFIX)/usr/share/ovirt-engine/conf/jaas.conf
+-	cp -f ./backend/manager/conf/engine.conf $(PREFIX)/etc/ovirt-engine/
+-	chmod 640 $(PREFIX)/etc/ovirt-engine/engine.conf
+-	cp -f ./backend/manager/conf/jboss-log4j.xml $(PREFIX)/usr/share/ovirt-engine/conf
+-	chmod 644 $(PREFIX)/usr/share/ovirt-engine/conf/jboss-log4j.xml
+-	cp -f ./backend/manager/conf/kerberos/* $(PREFIX)/usr/share/ovirt-engine/kerberos
+-	chmod 644 $(PREFIX)/usr/share/ovirt-engine/kerberos/*
+-	rm -rf $(PREFIX)/usr/share/ovirt-engine/keberos/*.bat
+-	cp -f ./backend/manager/conf/vds_installer.py $(PREFIX)/usr/share/ovirt-engine/scripts
+-	cp -f ./packaging/ovirtlogrot.sh $(PREFIX)/usr/share/ovirt-engine/scripts
+-	chmod 755 $(PREFIX)/usr/share/ovirt-engine/scripts/vds_installer.py
+-	ln -s /usr/share/java/postgresql-jdbc.jar $(PREFIX)$(JBOSS_HOME)/modules/org/postgresql/main/postgresql-jdbc.jar
+-	cp -f ./backend/manager/conf/jboss-log4j.xml $(PREFIX)/usr/share/ovirt-engine/conf
+-	cp -f ./packaging/fedora/setup/resources/postgres/postgres-ds.xml $(PREFIX)/usr/share/ovirt-engine/conf
+-	cp -f ./LICENSE $(PREFIX)/usr/share/ovirt-engine
+-	cp -f ./packaging/ovirtlogrot.sh ${PREFIX}/usr/share/ovirt-engine/scripts/
+-	cp -f ./packaging/resources/ovirt-cron ${PREFIX}/etc/cron.daily/
+-	cp -f ./packaging/resources/ovirt-tmpfilesd ${PREFIX}/etc/tmpfiles.d/ovirt-engine.conf
++	install -m 644 backend/manager/conf/jaas.conf $(PREFIX)/usr/share/ovirt-engine/conf
++	install -m 640 backend/manager/conf/engine.conf $(PREFIX)/etc/ovirt-engine
++	install -m 644 backend/manager/conf/jboss-log4j.xml $(PREFIX)/usr/share/ovirt-engine/conf
++	install -m 755 backend/manager/conf/kerberos/*.sh $(PREFIX)/usr/share/ovirt-engine/kerberos
++	install -m 644 backend/manager/conf/vds_installer.py $(PREFIX)/usr/share/ovirt-engine/scripts
++	install -m 644 backend/manager/conf/jboss-log4j.xml $(PREFIX)/usr/share/ovirt-engine/conf
++	install -m 644 packaging/fedora/setup/resources/postgres/postgres-ds.xml $(PREFIX)/usr/share/ovirt-engine/conf
++	install -m 644 packaging/fedora/ovirt-engine.xml $(PREFIX)/etc/ovirt-engine
++	install -m 644 packaging/fedora/ovirt-engine-logging.properties $(PREFIX)/etc/ovirt-engine
++	install -m 644 packaging/fedora/ovirt-engine-users.properties $(PREFIX)/etc/ovirt-engine
++	install -m 755 packaging/ovirtlogrot.sh ${PREFIX}/usr/share/ovirt-engine/scripts/
++	install -m 755 packaging/resources/ovirt-cron ${PREFIX}/etc/cron.daily
++	install -m 644 packaging/resources/ovirt-tmpfilesd ${PREFIX}/etc/tmpfiles.d/ovirt-engine.conf
++
++install_root_webapp:
++	@echo "*** Deploying root webapp"
++
++	# Copy the root web application to the deployments directory (the web-conf.js file will be
++	# copied inside by engine-setup):
++	cp -r packaging/fedora/setup/resources/jboss/ROOT.war $(PREFIX)/usr/share/ovirt-engine/deployments
++	find $(PREFIX)/usr/share/ovirt-engine/deployments/ROOT.war -type d -exec chmod 755 {} \;
++	find $(PREFIX)/usr/share/ovirt-engine/deployments/ROOT.war -type f -exec chmod 644 {} \;
++	install -m 644 packaging/fedora/setup/resources/jboss/web-conf.js $(PREFIX)/etc/ovirt-engine
+ 
++	# XXX: Is this really needed?
++	sed -i "s/MYVERSION/$(RPM_VERSION)/" $(PREFIX)/usr/share/ovirt-engine/deployments/ROOT.war/engineVersion.js
+ 
++install_systemd_service:
++	@echo "*** Deploying systemd service"
++	install -m 755 packaging/fedora/ovirt-engine.sh $(PREFIX)/usr/share/ovirt-engine/bin
++	install -m 644 packaging/fedora/ovirt-engine.sysconfig $(PREFIX)/etc/sysconfig/ovirt-engine
++	install -m 644 packaging/fedora/ovirt-engine.service $(PREFIX)/usr/lib/systemd/system
diff --git a/ovirt-engine-move-sysprep-files-to-etc.patch b/ovirt-engine-move-sysprep-files-to-etc.patch
new file mode 100644
index 0000000..71035e4
--- /dev/null
+++ b/ovirt-engine-move-sysprep-files-to-etc.patch
@@ -0,0 +1,33 @@
+diff --git a/Makefile b/Makefile
+index 1cbb33f..f795af8 100644
+--- a/Makefile
++++ b/Makefile
+@@ -71,7 +71,7 @@ rpm: $(SRPM)
+ 
+ create_dirs:
+ 	@echo "*** Creating Directories"
+-	@mkdir -p $(PREFIX)/usr/share/ovirt-engine/{sysprep,kerberos,scripts,3rd-party-lib,engine.ear,conf,dbscripts,resources,ovirt-isos,iso-uploader,log-collector,db-backups,engine.ear}
++	@mkdir -p $(PREFIX)/usr/share/ovirt-engine/{kerberos,scripts,3rd-party-lib,engine.ear,conf,dbscripts,resources,ovirt-isos,iso-uploader,log-collector,db-backups,engine.ear}
+ 	@mkdir -p $(PREFIX)/usr/share/ovirt-engine/engine-config/lib
+ 	@mkdir -p $(PREFIX)/usr/share/ovirt-engine/notifier/lib
+ 	@mkdir -p $(PREFIX)/usr/share/ovirt-engine/engine-manage-domains/lib
+@@ -86,7 +86,7 @@ create_dirs:
+ 	@mkdir -p $(PREFIX)/var/run/ovirt-engine/notifier
+ 	@mkdir -p $(PREFIX)/var/lock/ovirt-engine
+ 	@mkdir -p $(PREFIX)/etc/{init.d,tmpfiles.d,cron.daily}
+-	@mkdir -p $(PREFIX)/etc/ovirt-engine/{engine-config,engine-manage-domains}
++	@mkdir -p $(PREFIX)/etc/ovirt-engine/{engine-config,engine-manage-domains,sysprep}
+ 	@mkdir -p $(PREFIX)$(EAR_DIR)
+ 	@mkdir -p $(PREFIX)$(JBOSS_HOME)/modules/org/postgresql/main/
+ 	@mkdir -p $(PREFIX)/usr/share/ovirt-engine/resources/jboss/modules/org
+@@ -208,8 +208,8 @@ install_iso_uploader:
+ 
+ install_sysprep:
+ 	@echo "*** Deploying sysperp"
+-	cp -f ./backend/manager/conf/sysprep/* $(PREFIX)/usr/share/ovirt-engine/sysprep
+-	chmod 644 $(PREFIX)/usr/share/ovirt-engine/sysprep/*
++	cp -f ./backend/manager/conf/sysprep/* $(PREFIX)/etc/ovirt-engine/sysprep
++	chmod 644 $(PREFIX)/etc/ovirt-engine/sysprep/*
+ 
+ install_notification_service:
+ 	@echo "*** Deploying notification service"
diff --git a/ovirt-engine-remove-dependency-on-jboss-interceptors.patch b/ovirt-engine-remove-dependency-on-jboss-interceptors.patch
new file mode 100644
index 0000000..218d869
--- /dev/null
+++ b/ovirt-engine-remove-dependency-on-jboss-interceptors.patch
@@ -0,0 +1,48 @@
+From 6ea46f9d35015436115647299fc44b68d96cc298 Mon Sep 17 00:00:00 2001
+From: Juan Hernandez <juan.hernandez at redhat.com>
+Date: Thu, 16 Feb 2012 12:03:15 +0100
+Subject: [PATCH] core: Remove dependency on jboss interceptors (#NA)
+
+This dependency is not needed and it complicates building of the
+RPMs in Fedora.
+
+Change-Id: Ibcd421297a6f7a2894177b65f8646b3016282851
+---
+ backend/manager/modules/utils/pom.xml |    4 ----
+ pom.xml                               |    5 -----
+ 2 files changed, 0 insertions(+), 9 deletions(-)
+
+diff --git a/backend/manager/modules/utils/pom.xml b/backend/manager/modules/utils/pom.xml
+index 1e01679..a7bf1d9 100644
+--- a/backend/manager/modules/utils/pom.xml
++++ b/backend/manager/modules/utils/pom.xml
+@@ -14,10 +14,6 @@
+ 
+   <dependencies>
+    <dependency>
+-      <groupId>org.jboss.interceptor</groupId>
+-      <artifactId>jboss-interceptor-core</artifactId>
+-   </dependency>
+-   <dependency>
+       <groupId>org.jboss.spec.javax.interceptor</groupId>
+       <artifactId>jboss-interceptors-api_1.1_spec</artifactId>
+       <version>1.0.0.Final</version>
+diff --git a/pom.xml b/pom.xml
+index 50a249a..923f05f 100644
+--- a/pom.xml
++++ b/pom.xml
+@@ -79,11 +79,6 @@
+         <version>1.0.0.Final</version>
+       </dependency>
+       <dependency>
+-        <groupId>org.jboss.interceptor</groupId>
+-        <artifactId>jboss-interceptor-core</artifactId>
+-        <version>2.0.0.Alpha3</version>
+-      </dependency>
+-      <dependency>
+         <groupId>org.quartz-scheduler</groupId>
+         <artifactId>quartz</artifactId>
+         <version>${quartz.version}</version>
+-- 
+1.7.7.6
+
diff --git a/ovirt-engine-remove-frontend-from-ear.patch b/ovirt-engine-remove-frontend-from-ear.patch
index a044e19..c3fe4fa 100644
--- a/ovirt-engine-remove-frontend-from-ear.patch
+++ b/ovirt-engine-remove-frontend-from-ear.patch
@@ -1,19 +1,10 @@
-From 5ab615e67acd6b2fafa9367c10033d47a0903637 Mon Sep 17 00:00:00 2001
-From: Juan Hernandez <juan.hernandez at redhat.com>
-Date: Wed, 1 Aug 2012 13:17:28 +0200
-Subject: [PATCH] core: Remove frontend from EAR
-
----
- ear/pom.xml | 56 --------------------------------------------------------
- 1 file changed, 56 deletions(-)
-
 diff --git a/ear/pom.xml b/ear/pom.xml
-index 0cb0837..da93b8f 100644
+index 2521a24..b9f5b24 100644
 --- a/ear/pom.xml
 +++ b/ear/pom.xml
-@@ -65,42 +65,14 @@
-     </dependency>
+@@ -52,63 +52,14 @@
  
+     <!-- WARS -->
      <dependency>
 -      <groupId>org.ovirt.engine.ui</groupId>
 -      <artifactId>rmw-war</artifactId>
@@ -22,6 +13,27 @@ index 0cb0837..da93b8f 100644
 -    </dependency>
 -
 -    <dependency>
+-      <groupId>org.ovirt.engine.ui</groupId>
+-      <artifactId>rm-war</artifactId>
+-      <version>${engine.version}</version>
+-      <type>war</type>
+-    </dependency>
+-
+-    <dependency>
+-      <groupId>org.ovirt.engine.ui</groupId>
+-      <artifactId>components-war</artifactId>
+-      <version>${engine.version}</version>
+-      <type>war</type>
+-    </dependency>
+-
+-    <dependency>
+-      <groupId>org.ovirt.engine.ui</groupId>
+-      <artifactId>components-war</artifactId>
+-      <version>${engine.version}</version>
+-      <type>war</type>
+-    </dependency>
+-
+-    <dependency>
        <groupId>org.ovirt.engine.api</groupId>
        <artifactId>restapi-webapp</artifactId>
        <version>${engine.version}</version>
@@ -54,9 +66,9 @@ index 0cb0837..da93b8f 100644
        <groupId>org.ovirt.engine.core</groupId>
        <artifactId>scheduler</artifactId>
        <version>${engine.version}</version>
-@@ -214,42 +186,14 @@
-             </webModule>
+@@ -202,47 +153,12 @@
  
+             <!-- ** WARs -->
              <webModule>
 -              <groupId>org.ovirt.engine.ui</groupId>
 -              <artifactId>rmw-war</artifactId>
@@ -65,6 +77,20 @@ index 0cb0837..da93b8f 100644
 -            </webModule>
 -
 -            <webModule>
+-              <groupId>org.ovirt.engine.ui</groupId>
+-              <artifactId>rm-war</artifactId>
+-              <bundleFileName>ovirtengine.war</bundleFileName>
+-              <contextRoot>/OvirtEngine</contextRoot>
+-            </webModule>
+-
+-            <webModule>
+-              <groupId>org.ovirt.engine.ui</groupId>
+-              <artifactId>components-war</artifactId>
+-              <bundleFileName>components.war</bundleFileName>
+-              <contextRoot>/Components</contextRoot>
+-            </webModule>
+-
+-            <webModule>
                <groupId>org.ovirt.engine.api</groupId>
                <artifactId>restapi-webapp</artifactId>
                <bundleFileName>restapi.war</bundleFileName>
@@ -87,6 +113,11 @@ index 0cb0837..da93b8f 100644
 -
              <!-- ** EJB-JARs -->
              <ejbModule>
+               <groupId>org.ovirt.engine.core</groupId>
+@@ -252,13 +168,6 @@
+             </ejbModule>
+ 
+             <ejbModule>
 -              <groupId>org.ovirt.engine.ui</groupId>
 -              <artifactId>genericapi</artifactId>
 -              <bundleFileName>engine-genericapi.jar</bundleFileName>
@@ -97,6 +128,3 @@ index 0cb0837..da93b8f 100644
                <groupId>org.ovirt.engine.core</groupId>
                <artifactId>scheduler</artifactId>
                <bundleFileName>engine-scheduler.jar</bundleFileName>
--- 
-1.7.11.2
-
diff --git a/ovirt-engine-remove-hibernate-daos.patch b/ovirt-engine-remove-hibernate-daos.patch
new file mode 100644
index 0000000..b0b294c
--- /dev/null
+++ b/ovirt-engine-remove-hibernate-daos.patch
@@ -0,0 +1,3768 @@
+From 4d41b9b2ac9b34fda4ee994317d8837b7fb90244 Mon Sep 17 00:00:00 2001
+From: Juan Hernandez <juan.hernandez at redhat.com>
+Date: Thu, 16 Feb 2012 13:18:55 +0100
+Subject: [PATCH] Remove Hibernate DAOs
+
+Change-Id: I3beb6f25f8468aea2bdb289d3aa13344b2b083da
+---
+ .../engine/core/dao/ActionGroupDAOWrapperImpl.java |   44 ---
+ .../engine/core/dao/AdGroupDAOHibernateImpl.java   |   52 ----
+ .../engine/core/dao/AsyncTaskDAOHibernateImpl.java |   11 -
+ .../engine/core/dao/AuditLogDAOHibernateImpl.java  |   92 ------
+ .../engine/core/dao/BaseDAOHibernateImpl.java      |  152 ----------
+ .../ovirt/engine/core/dao/BaseDAOWrapperImpl.java  |   19 --
+ .../engine/core/dao/BookmarkDAOHibernateImpl.java  |   14 -
+ .../BusinessEntitySnapshotDAOHibernateImpl.java    |   62 ----
+ .../engine/core/dao/DbUserDAOWrapperImpl.java      |  120 --------
+ .../engine/core/dao/DiskImageDAOWrapperImpl.java   |  146 ----------
+ .../ovirt/engine/core/dao/EventDAOWrapperImpl.java |   90 ------
+ .../org/ovirt/engine/core/dao/GuidGenerator.java   |   18 --
+ ...ImageGroupStorageDomainMapDAOHibernateImpl.java |   24 --
+ .../ovirt/engine/core/dao/LunDAOHibernateImpl.java |   29 --
+ .../core/dao/NetworkClusterDAOHibernateImpl.java   |   44 ---
+ .../engine/core/dao/NetworkDAOHibernateImpl.java   |   28 --
+ .../core/dao/PermissionDAOHibernateImpl.java       |  297 --------------------
+ .../engine/core/dao/RoleDAOHibernateImpl.java      |   81 ------
+ .../core/dao/RoleGroupMapDAOHibernateImpl.java     |   31 --
+ .../core/dao/StorageDomainDAOWrapperImpl.java      |  193 -------------
+ .../dao/StorageDomainDynamicDAOHibernateImpl.java  |   10 -
+ .../dao/StorageDomainStaticDAOHibernateImpl.java   |   96 -------
+ .../core/dao/StoragePoolDAOHibernateImpl.java      |  126 ---------
+ .../dao/StoragePoolIsoMapDAOHibernateImpl.java     |   47 ---
+ .../StorageServerConnectionDAOHibernateImpl.java   |   97 -------
+ ...rageServerConnectionLunMapDAOHibernateImpl.java |   19 --
+ .../ovirt/engine/core/dao/TagDAOHibernateImpl.java |  247 ----------------
+ .../engine/core/dao/VdcOptionDAOHibernateImpl.java |   28 --
+ .../ovirt/engine/core/dao/VdsDAOWrapperImpl.java   |  276 ------------------
+ .../engine/core/dao/VdsGroupDAOHibernateImpl.java  |   48 ----
+ .../engine/core/dao/VdsStaticDAODbFacadeImpl.java  |    5 +-
+ .../engine/core/dao/VmPoolDAOHibernateImpl.java    |  153 ----------
+ .../ActionVersionMapDAOHibernateImpl.java          |   10 -
+ .../actiongroup/RoleGroupMapDAOHibernateImpl.java  |   28 --
+ .../core/dao/dialect/EnginePostgreSQLDialect.java  |   13 -
+ .../core/dao/events/MapDAOHibernateImpl.java       |   19 --
+ .../NotificationHistoryDAOHibernateImpl.java       |   18 --
+ .../NotificationMethodsDAOHibernateImpl.java       |   22 --
+ .../dao/events/SubscriberDAOHibernateImpl.java     |   47 ---
+ .../core/dao/images/DiskImageDAOHibernateImpl.java |   79 ------
+ .../images/DiskImageDynamicDAOHibernateImpl.java   |   11 -
+ .../images/DiskImageTemplateDAOHibernateImpl.java  |   89 ------
+ .../dao/images/ImageVmMapDAOHibernateImpl.java     |   11 -
+ .../dao/images/ImageVmPoolMapDAOHibernateImpl.java |   11 -
+ .../StatelessImageVmMapDAOHibernateImpl.java       |   11 -
+ .../engine/core/dao/tags/TagUserGroupMapDAO.java   |   27 --
+ .../ovirt/engine/core/dao/tags/TagUserMapDAO.java  |   38 ---
+ .../ovirt/engine/core/dao/tags/TagVdsMapDAO.java   |   11 -
+ .../ovirt/engine/core/dao/tags/TagVmMapDAO.java    |   28 --
+ .../core/dao/users/SessionDAOHibernateImpl.java    |   11 -
+ .../core/dao/users/UserDAOHibernateImpl.java       |   25 --
+ .../core/dao/vds/VdsDynamicDAOHibernateImpl.java   |   16 -
+ .../core/dao/vds/VdsStaticDAOHibernateImpl.java    |   16 -
+ .../dao/vds/VdsStatisticsDAOHibernateImpl.java     |   15 -
+ .../TimeLeaseVmPoolMapDAOHibernateImpl.java        |   11 -
+ .../dao/vmpools/VmPoolMapDAOHibernateImpl.java     |   24 --
+ 56 files changed, 2 insertions(+), 3288 deletions(-)
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/ActionGroupDAOWrapperImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AdGroupDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AuditLogDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/BaseDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/BaseDAOWrapperImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/BookmarkDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/BusinessEntitySnapshotDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DbUserDAOWrapperImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DiskImageDAOWrapperImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/EventDAOWrapperImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/GuidGenerator.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/ImageGroupStorageDomainMapDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/LunDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkClusterDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/PermissionDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/RoleDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/RoleGroupMapDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainDAOWrapperImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainDynamicDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainStaticDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StoragePoolDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StoragePoolIsoMapDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageServerConnectionDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageServerConnectionLunMapDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/TagDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdcOptionDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsDAOWrapperImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsGroupDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmPoolDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/actiongroup/ActionVersionMapDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/actiongroup/RoleGroupMapDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/dialect/EnginePostgreSQLDialect.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/events/MapDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/events/NotificationHistoryDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/events/NotificationMethodsDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/events/SubscriberDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/images/DiskImageDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/images/DiskImageDynamicDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/images/DiskImageTemplateDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/images/ImageVmMapDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/images/ImageVmPoolMapDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/images/StatelessImageVmMapDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/tags/TagUserGroupMapDAO.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/tags/TagUserMapDAO.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/tags/TagVdsMapDAO.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/tags/TagVmMapDAO.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/users/SessionDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/users/UserDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/vds/VdsDynamicDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/vds/VdsStaticDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/vds/VdsStatisticsDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/vmpools/TimeLeaseVmPoolMapDAOHibernateImpl.java
+ delete mode 100644 backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/vmpools/VmPoolMapDAOHibernateImpl.java
+
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/ActionGroupDAOWrapperImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/ActionGroupDAOWrapperImpl.java
+deleted file mode 100644
+index ca92b07..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/ActionGroupDAOWrapperImpl.java
++++ /dev/null
+@@ -1,44 +0,0 @@
+-package org.ovirt.engine.core.dao;
+-
+-import java.util.List;
+-
+-import org.hibernate.Session;
+-
+-import org.ovirt.engine.core.common.action.VdcActionType;
+-import org.ovirt.engine.core.common.businessentities.ActionGroup;
+-import org.ovirt.engine.core.common.businessentities.action_version_map;
+-import org.ovirt.engine.core.compat.Guid;
+-import org.ovirt.engine.core.dao.actiongroup.ActionVersionMapDAOHibernateImpl;
+-import org.ovirt.engine.core.dao.actiongroup.RoleGroupMapDAOHibernateImpl;
+-
+-public class ActionGroupDAOWrapperImpl extends BaseDAOWrapperImpl implements ActionGroupDAO {
+-    private RoleGroupMapDAOHibernateImpl roleGroupMapDAO = new RoleGroupMapDAOHibernateImpl();
+-    private ActionVersionMapDAOHibernateImpl actionVersionMapDAO = new ActionVersionMapDAOHibernateImpl();
+-
+-    @Override
+-    public void setSession(Session session) {
+-        super.setSession(session);
+-
+-        roleGroupMapDAO.setSession(session);
+-    }
+-
+-    @Override
+-    public List<ActionGroup> getAllForRole(Guid id) {
+-        return roleGroupMapDAO.getAllForRole(id);
+-    }
+-
+-    @Override
+-    public action_version_map getActionVersionMapByActionType(VdcActionType action_type) {
+-        return actionVersionMapDAO.get(action_type.getValue());
+-    }
+-
+-    @Override
+-    public void addActionVersionMap(action_version_map map) {
+-        actionVersionMapDAO.save(map);
+-    }
+-
+-    @Override
+-    public void removeActionVersionMap(VdcActionType action_type) {
+-        actionVersionMapDAO.remove(action_type.getValue());
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AdGroupDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AdGroupDAOHibernateImpl.java
+deleted file mode 100644
+index 3228d44..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AdGroupDAOHibernateImpl.java
++++ /dev/null
+@@ -1,52 +0,0 @@
+-package org.ovirt.engine.core.dao;
+-
+-import java.util.List;
+-
+-import org.hibernate.Query;
+-import org.hibernate.Session;
+-import org.hibernate.Transaction;
+-
+-import org.ovirt.engine.core.common.businessentities.ad_groups;
+-import org.ovirt.engine.core.compat.Guid;
+-
+-/**
+- * <code>AdGroupDAOHibernateImpl</code> provides an implementation of {@link AdGroupDAO} that uses Hibernate for
+- * underlying persistence.
+- *
+- */
+-public class AdGroupDAOHibernateImpl extends BaseDAOHibernateImpl<ad_groups, Guid> implements AdGroupDAO {
+-    @Override
+-    public void remove(Guid id) {
+-        /*
+-         * This implementation was necessary in order to handle cascading deletes of what is in the tags_user_group_map
+-         * table. it can be moved to the default generic implementation when the association between ad_groups and tags
+-         * are handled via @OneToMany relationships.
+-         */
+-        Session session = getSession();
+-
+-        Transaction transaction = session.beginTransaction();
+-
+-        Query query = session.createQuery("delete from tags_user_group_map tugm where tugm.groupId = :group_id");
+-
+-        query.setParameter("group_id", id);
+-        query.executeUpdate();
+-
+-        ad_groups instance = get(id);
+-
+-        if (instance != null) {
+-            session.delete(instance);
+-        }
+-
+-        transaction.commit();
+-    }
+-
+-    public AdGroupDAOHibernateImpl() {
+-        super(ad_groups.class);
+-    }
+-
+-    @Override
+-    public List<ad_groups> getAllTimeLeasedForPool(int id) {
+-        // TODO Auto-generated method stub
+-        return null;
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAOHibernateImpl.java
+deleted file mode 100644
+index 87662d2..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAOHibernateImpl.java
++++ /dev/null
+@@ -1,11 +0,0 @@
+-package org.ovirt.engine.core.dao;
+-
+-import org.ovirt.engine.core.common.businessentities.async_tasks;
+-import org.ovirt.engine.core.compat.Guid;
+-
+-public class AsyncTaskDAOHibernateImpl extends BaseDAOHibernateImpl<async_tasks, Guid> implements AsyncTaskDAO {
+-    public AsyncTaskDAOHibernateImpl() {
+-        super(async_tasks.class);
+-    }
+-
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AuditLogDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AuditLogDAOHibernateImpl.java
+deleted file mode 100644
+index 8c905ed..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AuditLogDAOHibernateImpl.java
++++ /dev/null
+@@ -1,92 +0,0 @@
+-package org.ovirt.engine.core.dao;
+-
+-import java.util.Date;
+-import java.util.List;
+-
+-import org.hibernate.Query;
+-import org.hibernate.SQLQuery;
+-import org.hibernate.criterion.Restrictions;
+-
+-import org.ovirt.engine.core.common.businessentities.AuditLog;
+-import org.ovirt.engine.core.compat.Guid;
+-import org.ovirt.engine.core.compat.NotImplementedException;
+-
+-public class AuditLogDAOHibernateImpl extends BaseDAOHibernateImpl<AuditLog, Long> implements AuditLogDAO {
+-    public AuditLogDAOHibernateImpl() {
+-        super(AuditLog.class);
+-    }
+-
+-    @Override
+-    public AuditLog get(long id) {
+-        return get(Long.valueOf(id));
+-    }
+-
+-    @Override
+-    public void remove(long id) {
+-        remove(Long.valueOf(id));
+-    }
+-
+-    @Override
+-    public List<AuditLog> getAllAfterDate(Date cutoff) {
+-        return findByCriteria(Restrictions.gt("logTime", cutoff));
+-    }
+-
+-    @SuppressWarnings("unchecked")
+-    @Override
+-    public List<AuditLog> getAllWithQuery(String sql) {
+-        SQLQuery query = getSession().createSQLQuery(sql).addEntity(AuditLog.class);
+-
+-        return query.list();
+-    }
+-
+-    @Override
+-    public void removeAllBeforeDate(Date cutoff) {
+-        Query query = getSession().createQuery("delete from AuditLog where logTime < :cutoff " +
+-                "and processed = true " +
+-                "and id not in (select auditLogId from event_notification_hist)");
+-
+-        query.setParameter("cutoff", cutoff);
+-
+-        getSession().beginTransaction();
+-        query.executeUpdate();
+-        getSession().getTransaction().commit();
+-    }
+-
+-    @Override
+-    public void removeAllForVds(Guid id, boolean configAlerts) {
+-        Query query = null;
+-
+-        if (configAlerts) {
+-            query = getSession().createQuery("delete from AuditLog al where al.vdsId = :vds_id " +
+-                    "and al.severity >= 10");
+-        } else {
+-            query = getSession().createQuery("delete from AuditLog al where al.vds_id = :vds_id " +
+-                    "and al.severity >= 10 " +
+-                    "and al.logType >= 9000");
+-        }
+-
+-        query.setParameter("vds_id", id);
+-
+-        getSession().beginTransaction();
+-        query.executeUpdate();
+-        getSession().getTransaction().commit();
+-    }
+-
+-    @Override
+-    public void removeAllOfTypeForVds(Guid id, int type) {
+-        Query query = getSession().createQuery("delete from AuditLog al where al.vdsId = :vds_id " +
+-                "and al.logType = :log_type");
+-
+-        query.setParameter("vds_id", id);
+-        query.setParameter("log_type", type);
+-
+-        getSession().beginTransaction();
+-        query.executeUpdate();
+-        getSession().getTransaction().commit();
+-    }
+-
+-    @Override
+-    public int getTimeToWaitForNextPmOp(String vdsName, String event) {
+-        throw new NotImplementedException();
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/BaseDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/BaseDAOHibernateImpl.java
+deleted file mode 100644
+index 0a7dff2..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/BaseDAOHibernateImpl.java
++++ /dev/null
+@@ -1,152 +0,0 @@
+-package org.ovirt.engine.core.dao;
+-
+-import java.io.Serializable;
+-import java.util.ArrayList;
+-import java.util.List;
+-import java.util.StringTokenizer;
+-
+-import org.hibernate.Criteria;
+-import org.hibernate.SQLQuery;
+-import org.hibernate.Session;
+-import org.hibernate.criterion.Criterion;
+-import org.hibernate.criterion.Restrictions;
+-
+-import org.ovirt.engine.core.compat.Guid;
+-
+-/**
+- * <code>BaseDAOHibernateImpl</code> captures the common functions for DAOs.
+- *
+- */
+-public abstract class BaseDAOHibernateImpl<T, PK extends Serializable> {
+-    private static ThreadLocal<Session> sessions = new ThreadLocal<Session>();
+-
+-    private Class<T> type;
+-
+-    public BaseDAOHibernateImpl(Class<T> type) {
+-        this.type = type;
+-    }
+-
+-    public void setSession(Session session) {
+-        sessions.set(session);
+-    }
+-
+-    protected Session getSession() {
+-        return sessions.get();
+-    }
+-
+-    @SuppressWarnings("unchecked")
+-    public T get(PK id) {
+-        Session session = getSession();
+-        T result = (T) session.get(type, id);
+-
+-        return result;
+-    }
+-
+-    public T getByName(final String name) {
+-        return findOneByCriteria(Restrictions.eq("name", name));
+-    }
+-
+-    public List<T> getAll() {
+-        return findByCriteria();
+-    }
+-
+-    /**
+-     * Supports returning a single object based on specified criteria.
+-     *
+-     * @param criteria
+-     *            the search criteria
+-     * @return the object
+-     */
+-    @SuppressWarnings("unchecked")
+-    protected T findOneByCriteria(Criterion... criteria) {
+-        Criteria filter = getSession().createCriteria(type);
+-
+-        for (Criterion criterion : criteria) {
+-            filter.add(criterion);
+-        }
+-
+-        return (T) filter.uniqueResult();
+-    }
+-
+-    /**
+-     * Retrieves all instances with the specified query.
+-     *
+-     * @param query
+-     *            the query
+-     * @return the list of results
+-     */
+-    @SuppressWarnings("unchecked")
+-    public List<T> findAllWithSQL(String sql) {
+-        Session session = getSession();
+-        SQLQuery query = session.createSQLQuery(sql);
+-
+-        return (List<T>) query.list();
+-    }
+-
+-    /**
+-     * Supports returning lists of objects based on specified criteria.
+-     *
+-     * @param criteria
+-     *            the search criteria
+-     * @return the list of objects
+-     */
+-    @SuppressWarnings("unchecked")
+-    protected List<T> findByCriteria(Criterion... criteria) {
+-        Session session = getSession();
+-        Criteria filter = session.createCriteria(type);
+-
+-        for (Criterion criterion : criteria) {
+-            filter.add(criterion);
+-        }
+-
+-        List<T> result = filter.list();
+-
+-        return result;
+-    }
+-
+-    public void save(T instance) {
+-        Session session = getSession();
+-
+-        session.beginTransaction();
+-        session.save(instance);
+-        session.getTransaction().commit();
+-    }
+-
+-    public void update(T instance) {
+-        save(instance);
+-    }
+-
+-    public void updateStatus(T instance) {
+-        //TODO
+-    }
+-
+-    public void remove(PK id) {
+-        T instance = get(id);
+-
+-        if (instance != null) {
+-            Session session = getSession();
+-
+-            session.beginTransaction();
+-            session.delete(instance);
+-            session.getTransaction().commit();
+-        }
+-    }
+-
+-    /**
+-     * Takes as input a series of comma-delimited UUID values. It then converts them into a List containing Guid objects
+-     * and returns that.
+-     *
+-     * @param ids
+-     *            the ids
+-     * @return the list of Guids
+-     */
+-    protected List<Guid> convertIdsToGuids(String ids) {
+-        List<Guid> filter = new ArrayList<Guid>();
+-        StringTokenizer tokens = new StringTokenizer(ids, ",", false);
+-
+-        while (tokens.hasMoreElements()) {
+-            filter.add(new Guid(tokens.nextToken()));
+-        }
+-        return filter;
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/BaseDAOWrapperImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/BaseDAOWrapperImpl.java
+deleted file mode 100644
+index ae1b33a..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/BaseDAOWrapperImpl.java
++++ /dev/null
+@@ -1,19 +0,0 @@
+-package org.ovirt.engine.core.dao;
+-
+-import org.hibernate.Session;
+-
+-/**
+- * <code>BaseDAOHibernateImpl</code> captures the common functions for DAOs that wrap other DAOs.
+- *
+- */
+-public class BaseDAOWrapperImpl {
+-    private static ThreadLocal<Session> sessions = new ThreadLocal<Session>();
+-
+-    public void setSession(Session session) {
+-        sessions.set(session);
+-    }
+-
+-    protected Session getSession() {
+-        return sessions.get();
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/BookmarkDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/BookmarkDAOHibernateImpl.java
+deleted file mode 100644
+index 66d45a3..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/BookmarkDAOHibernateImpl.java
++++ /dev/null
+@@ -1,14 +0,0 @@
+-package org.ovirt.engine.core.dao;
+-
+-import org.ovirt.engine.core.common.businessentities.bookmarks;
+-import org.ovirt.engine.core.compat.Guid;
+-
+-/**
+- * <code>BookmarkDAOHibernateImpl</code> provides an implementation of {@link BookmarkDAO} that uses Hibernate for
+- * persistence.
+- */
+-public class BookmarkDAOHibernateImpl extends BaseDAOHibernateImpl<bookmarks, Guid> implements BookmarkDAO {
+-    public BookmarkDAOHibernateImpl() {
+-        super(bookmarks.class);
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/BusinessEntitySnapshotDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/BusinessEntitySnapshotDAOHibernateImpl.java
+deleted file mode 100644
+index 54d02c0..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/BusinessEntitySnapshotDAOHibernateImpl.java
++++ /dev/null
+@@ -1,62 +0,0 @@
+-/**
+- *
+- */
+-package org.ovirt.engine.core.dao;
+-
+-import java.util.List;
+-
+-import org.apache.commons.collections.KeyValue;
+-
+-import org.ovirt.engine.core.common.businessentities.BusinessEntitySnapshot;
+-import org.ovirt.engine.core.compat.Guid;
+-
+-/**
+- * @author yzaslavs
+- *
+- */
+-public class BusinessEntitySnapshotDAOHibernateImpl implements BusinessEntitySnapshotDAO {
+-
+-    /**
+-     *
+-     */
+-    public BusinessEntitySnapshotDAOHibernateImpl() {
+-        // TODO Auto-generated constructor stub
+-    }
+-
+-    /* (non-Javadoc)
+-     * @see org.ovirt.engine.core.dao.BusinessEntitySnapshotDAO#get(org.ovirt.engine.core.compat.Guid)
+-     */
+-       /* (non-Javadoc)
+-     * @see org.ovirt.engine.core.dao.BusinessEntitySnapshotDAO#getAllForCommandId(org.ovirt.engine.core.compat.Guid)
+-     */
+-    @Override
+-    public List<BusinessEntitySnapshot> getAllForCommandId(Guid commandID) {
+-        // TODO Auto-generated method stub
+-        return null;
+-    }
+-
+-    /* (non-Javadoc)
+-     * @see org.ovirt.engine.core.dao.BusinessEntitySnapshotDAO#removeAllForCommandId(org.ovirt.engine.core.compat.Guid)
+-     */
+-    @Override
+-    public void removeAllForCommandId(Guid commandID) {
+-        // TODO Auto-generated method stub
+-
+-    }
+-
+-    /* (non-Javadoc)
+-     * @see org.ovirt.engine.core.dao.BusinessEntitySnapshotDAO#save(org.ovirt.engine.core.common.businessentities.BusinessEntitySnapshot)
+-     */
+-    @Override
+-    public void save(BusinessEntitySnapshot entitySnapshot) {
+-        // TODO Auto-generated method stub
+-
+-    }
+-
+-    @Override
+-    public List<KeyValue> getAllCommands() {
+-        // TODO Auto-generated method stub
+-        return null;
+-    }
+-
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DbUserDAOWrapperImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DbUserDAOWrapperImpl.java
+deleted file mode 100644
+index 22c7956..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DbUserDAOWrapperImpl.java
++++ /dev/null
+@@ -1,120 +0,0 @@
+-package org.ovirt.engine.core.dao;
+-
+-import java.util.List;
+-import java.util.Map;
+-
+-import org.hibernate.Query;
+-import org.hibernate.Session;
+-import org.hibernate.criterion.Restrictions;
+-
+-import org.ovirt.engine.core.common.businessentities.DbUser;
+-import org.ovirt.engine.core.compat.Guid;
+-import org.ovirt.engine.core.dal.dbbroker.user_sessions;
+-import org.ovirt.engine.core.dal.dbbroker.user_sessions_id;
+-import org.ovirt.engine.core.dao.users.SessionDAOHibernateImpl;
+-import org.ovirt.engine.core.dao.users.UserDAOHibernateImpl;
+-
+-/**
+- * <code>DbUserDAOWrapperImpl</code> provides an implementation of {@link DbUserDAO} using child DAOs.
+- *
+- */
+-public class DbUserDAOWrapperImpl extends BaseDAOWrapperImpl implements DbUserDAO {
+-    private UserDAOHibernateImpl userDAO = new UserDAOHibernateImpl();
+-    private SessionDAOHibernateImpl sessionDAO = new SessionDAOHibernateImpl();
+-
+-    @Override
+-    public void setSession(Session session) {
+-        super.setSession(session);
+-
+-        userDAO.setSession(session);
+-        sessionDAO.setSession(session);
+-    }
+-
+-    @Override
+-    public DbUser get(Guid id) {
+-        return userDAO.get(id);
+-    }
+-
+-    @Override
+-    public DbUser getByUsername(String username) {
+-        return userDAO.findOneByCriteria(Restrictions.eq("username", username));
+-    }
+-
+-    @SuppressWarnings("unchecked")
+-    @Override
+-    public List<DbUser> getAllForVm(Guid id) {
+-        Session session = getSession();
+-        Query query = session.createQuery("select user from DbUser user, permissions perms " +
+-                "where user.id = perms.adElementId " +
+-                "and perms.objectType = 2 " +
+-                "and perms.objectId = :vm_id");
+-
+-        query.setParameter("vm_id", id);
+-
+-        return (List<DbUser>) query.list();
+-    }
+-
+-    @Override
+-    public List<DbUser> getAllTimeLeasedUsersForVm(int vmid) {
+-        // TODO this API is broken
+-        return null;
+-    }
+-
+-    @Override
+-    public List<DbUser> getAllWithQuery(String query) {
+-        return userDAO.findAllWithSQL(query);
+-    }
+-
+-    @Override
+-    public List<DbUser> getAll() {
+-        return userDAO.getAll();
+-    }
+-
+-    @Override
+-    public List<user_sessions> getAllUserSessions() {
+-        return sessionDAO.getAll();
+-    }
+-
+-    @Override
+-    public void save(DbUser user) {
+-        userDAO.save(user);
+-    }
+-
+-    @Override
+-    public void saveSession(user_sessions session) {
+-        sessionDAO.save(session);
+-    }
+-
+-    @Override
+-    public void update(DbUser user) {
+-        save(user);
+-    }
+-
+-    @Override
+-    public void remove(Guid user) {
+-        userDAO.remove(user);
+-    }
+-
+-    @Override
+-    public void removeUserSession(String session, Guid user) {
+-        sessionDAO.remove(new user_sessions_id(user, session));
+-    }
+-
+-    @Override
+-    public void removeUserSessions(Map<String, Guid> sessionmap) {
+-        for (Map.Entry<String, Guid> entry : sessionmap.entrySet()) {
+-            sessionDAO.remove(new user_sessions_id(entry.getValue(), entry.getKey()));
+-        }
+-    }
+-
+-    @Override
+-    public void removeAllSessions() {
+-        // List<user_sessions> all = sessionDAO.getAll();
+-        // user_sessions[] sessions = new user_sessions[all.size()];
+-        // all.toArray(sessions);
+-
+-        for (user_sessions session : sessionDAO.getAll()) {
+-            sessionDAO.remove(new user_sessions_id(session.getuser_id(), session.getsession_id()));
+-        }
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DiskImageDAOWrapperImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DiskImageDAOWrapperImpl.java
+deleted file mode 100644
+index e76f5b5..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DiskImageDAOWrapperImpl.java
++++ /dev/null
+@@ -1,146 +0,0 @@
+-package org.ovirt.engine.core.dao;
+-
+-import java.util.List;
+-
+-import org.apache.commons.lang.NotImplementedException;
+-import org.hibernate.Session;
+-import org.hibernate.criterion.Restrictions;
+-import org.ovirt.engine.core.common.businessentities.DiskImage;
+-import org.ovirt.engine.core.common.businessentities.image_vm_pool_map;
+-import org.ovirt.engine.core.common.businessentities.stateless_vm_image_map;
+-import org.ovirt.engine.core.compat.Guid;
+-import org.ovirt.engine.core.dao.images.DiskImageDAOHibernateImpl;
+-import org.ovirt.engine.core.dao.images.DiskImageDynamicDAOHibernateImpl;
+-import org.ovirt.engine.core.dao.images.DiskImageTemplateDAOHibernateImpl;
+-import org.ovirt.engine.core.dao.images.ImageVmMapDAOHibernateImpl;
+-import org.ovirt.engine.core.dao.images.ImageVmPoolMapDAOHibernateImpl;
+-import org.ovirt.engine.core.dao.images.StatelessImageVmMapDAOHibernateImpl;
+-
+-/**
+- * <code>DiskImageDAOWrapperImpl</code> provides an implementation of {@link DiskImageDAO} that wraps underlying
+- * Hibernate DAOs.
+- *
+- */
+-public class DiskImageDAOWrapperImpl extends BaseDAOWrapperImpl implements DiskImageDAO {
+-    private DiskImageDAOHibernateImpl imageDAO = new DiskImageDAOHibernateImpl();
+-    private DiskImageDynamicDAOHibernateImpl dynamicDAO = new DiskImageDynamicDAOHibernateImpl();
+-    private DiskImageTemplateDAOHibernateImpl templateDAO = new DiskImageTemplateDAOHibernateImpl();
+-    private ImageVmMapDAOHibernateImpl imageVmMapDAO = new ImageVmMapDAOHibernateImpl();
+-    private ImageVmPoolMapDAOHibernateImpl imageVmPoolMapDAO = new ImageVmPoolMapDAOHibernateImpl();
+-    private StatelessImageVmMapDAOHibernateImpl statelessImageVmMapDAO = new StatelessImageVmMapDAOHibernateImpl();
+-
+-    @Override
+-    public void setSession(Session session) {
+-        super.setSession(session);
+-
+-        imageDAO.setSession(session);
+-        dynamicDAO.setSession(session);
+-        templateDAO.setSession(session);
+-        imageVmMapDAO.setSession(session);
+-    }
+-
+-    @Override
+-    public DiskImage get(Guid id) {
+-        return imageDAO.get(id);
+-    }
+-
+-    @Override
+-    public DiskImage getSnapshotById(Guid id) {
+-        return imageDAO.get(id);
+-    }
+-
+-    @Override
+-    public List<DiskImage> getAllForVm(Guid id) {
+-        return imageDAO.getAllForVm(id);
+-    }
+-
+-    @Override
+-    public List<DiskImage> getAllSnapshotsForParent(Guid id) {
+-        return imageDAO.getAllSnapshotsForParent(id);
+-    }
+-
+-    @Override
+-    public List<DiskImage> getAllSnapshotsForStorageDomain(Guid id) {
+-        return imageDAO.getAllSnapshotsForStorageDomain(id);
+-    }
+-
+-    @Override
+-    public List<DiskImage> getAllSnapshotsForVmSnapshot(Guid id) {
+-        return imageDAO.getAllSnapshotsForVmSnapshot(id);
+-    }
+-
+-    @Override
+-    public List<DiskImage> getAllSnapshotsForImageGroup(Guid id) {
+-        return imageDAO.getAllSnapshotsForImageGroup(id);
+-    }
+-
+-    @Override
+-    public List<DiskImage> getAll() {
+-        return imageDAO.getAll();
+-    }
+-
+-    @Override
+-    public void save(DiskImage image) {
+-        imageDAO.save(image);
+-    }
+-
+-    @Override
+-    public void update(DiskImage image) {
+-        imageDAO.update(image);
+-    }
+-
+-    @Override
+-    public void remove(Guid id) {
+-        imageDAO.remove(id);
+-    }
+-
+-    @Override
+-    public void removeAllForVmId(Guid id) {
+-        imageDAO.removeAllForVmId(id);
+-    }
+-
+-    @Override
+-    public image_vm_pool_map getImageVmPoolMapByImageId(Guid imageId) {
+-        return imageVmPoolMapDAO.findOneByCriteria(Restrictions.eq("imageId", imageId));
+-    }
+-
+-    @Override
+-    public void addImageVmPoolMap(image_vm_pool_map map) {
+-        imageVmPoolMapDAO.save(map);
+-    }
+-
+-    @Override
+-    public void removeImageVmPoolMap(Guid imageId) {
+-        imageVmPoolMapDAO.remove(imageId);
+-    }
+-
+-    @Override
+-    public List<image_vm_pool_map> getImageVmPoolMapByVmId(Guid vmId) {
+-        return imageVmPoolMapDAO.findByCriteria(Restrictions.eq("vmId", vmId));
+-    }
+-
+-    @Override
+-    public stateless_vm_image_map getStatelessVmImageMapForImageId(Guid imageId) {
+-        return statelessImageVmMapDAO.get(imageId);
+-    }
+-
+-    @Override
+-    public void addStatelessVmImageMap(stateless_vm_image_map map) {
+-        statelessImageVmMapDAO.save(map);
+-    }
+-
+-    @Override
+-    public void removeStatelessVmImageMap(Guid imageId) {
+-        statelessImageVmMapDAO.remove(imageId);
+-    }
+-
+-    @Override
+-    public List<stateless_vm_image_map> getAllStatelessVmImageMapsForVm(Guid vmId) {
+-        return statelessImageVmMapDAO.findByCriteria(Restrictions.eq("vmId", vmId));
+-    }
+-
+-    @Override
+-    public DiskImage getAncestor(Guid id) {
+-        throw new NotImplementedException();
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/EventDAOWrapperImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/EventDAOWrapperImpl.java
+deleted file mode 100644
+index d68f869..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/EventDAOWrapperImpl.java
++++ /dev/null
+@@ -1,90 +0,0 @@
+-package org.ovirt.engine.core.dao;
+-
+-import java.util.List;
+-
+-import org.hibernate.Session;
+-
+-import org.ovirt.engine.core.common.businessentities.event_map;
+-import org.ovirt.engine.core.common.businessentities.event_notification_hist;
+-import org.ovirt.engine.core.common.businessentities.event_notification_methods;
+-import org.ovirt.engine.core.common.businessentities.event_subscriber;
+-import org.ovirt.engine.core.common.businessentities.event_subscriber_id;
+-import org.ovirt.engine.core.compat.Guid;
+-import org.ovirt.engine.core.dao.events.MapDAOHibernateImpl;
+-import org.ovirt.engine.core.dao.events.NotificationHistoryDAOHibernateImpl;
+-import org.ovirt.engine.core.dao.events.NotificationMethodsDAOHibernateImpl;
+-import org.ovirt.engine.core.dao.events.SubscriberDAOHibernateImpl;
+-
+-public class EventDAOWrapperImpl extends BaseDAOWrapperImpl implements EventDAO {
+-    private MapDAOHibernateImpl mapDAO = new MapDAOHibernateImpl();
+-    private NotificationHistoryDAOHibernateImpl notificationHistoryDAO = new NotificationHistoryDAOHibernateImpl();
+-    private NotificationMethodsDAOHibernateImpl notificationMethodsDAO = new NotificationMethodsDAOHibernateImpl();
+-    private SubscriberDAOHibernateImpl subscriberDAO = new SubscriberDAOHibernateImpl();
+-
+-    @Override
+-    public void setSession(Session session) {
+-        super.setSession(session);
+-
+-        mapDAO.setSession(session);
+-        notificationHistoryDAO.setSession(session);
+-        notificationMethodsDAO.setSession(session);
+-        subscriberDAO.setSession(session);
+-    }
+-
+-    @Override
+-    public List<event_subscriber> getAll() {
+-        return subscriberDAO.getAll();
+-    }
+-
+-    @Override
+-    public List<event_subscriber> getAllForSubscriber(Guid id) {
+-        return subscriberDAO.getAllForSubscriber(id);
+-    }
+-
+-    @Override
+-    public List<event_notification_methods> getAllEventNotificationMethods() {
+-        return notificationMethodsDAO.getAll();
+-    }
+-
+-    @Override
+-    public List<event_notification_methods> getEventNotificationMethodsById(int method_id) {
+-        return notificationMethodsDAO.getEventNotificationMethodsById(method_id);
+-    }
+-
+-    @Override
+-    public List<event_notification_methods> getEventNotificationMethodsByType(String method_type) {
+-        return notificationMethodsDAO.getEventNotificationMethodsByType(method_type);
+-    }
+-
+-    @Override
+-    public void subscribe(event_subscriber subscriber) {
+-        subscriberDAO.save(subscriber);
+-    }
+-
+-    @Override
+-    public void update(event_subscriber subscriber, int oldMethodId) {
+-        subscriberDAO.update(subscriber, oldMethodId);
+-    }
+-
+-    @Override
+-    public void unsubscribe(event_subscriber subscriber) {
+-        subscriberDAO.remove(new event_subscriber_id(subscriber.getsubscriber_id(),
+-                subscriber.getevent_up_name(),
+-                subscriber.getmethod_id(),
+-                subscriber.gettag_name()));
+-    }
+-
+-    @Override
+-    public List<event_map> getEventMapByName(String event_up_name) {
+-        return mapDAO.getByEventUpName(event_up_name);
+-    }
+-
+-    @Override
+-    public List<event_map> getAllEventMaps() {
+-        return mapDAO.getAll();
+-    }
+-
+-    public event_notification_hist getHistory(Guid subscriberId, long auditLogId) {
+-        return notificationHistoryDAO.getHistory(subscriberId, auditLogId);
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/GuidGenerator.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/GuidGenerator.java
+deleted file mode 100644
+index 9f33ec4..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/GuidGenerator.java
++++ /dev/null
+@@ -1,18 +0,0 @@
+-package org.ovirt.engine.core.dao;
+-
+-import java.io.Serializable;
+-
+-import org.hibernate.HibernateException;
+-import org.hibernate.engine.SessionImplementor;
+-import org.hibernate.id.IdentifierGenerator;
+-
+-import org.ovirt.engine.core.compat.Guid;
+-
+-public class GuidGenerator implements IdentifierGenerator {
+-
+-    @Override
+-    public Serializable generate(SessionImplementor session, Object object) throws HibernateException {
+-        return Guid.NewGuid();
+-    }
+-
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/ImageGroupStorageDomainMapDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/ImageGroupStorageDomainMapDAOHibernateImpl.java
+deleted file mode 100644
+index 73e34a6..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/ImageGroupStorageDomainMapDAOHibernateImpl.java
++++ /dev/null
+@@ -1,24 +0,0 @@
+-package org.ovirt.engine.core.dao;
+-
+-import java.util.List;
+-
+-import org.hibernate.criterion.Restrictions;
+-
+-import org.ovirt.engine.core.common.businessentities.image_group_storage_domain_map;
+-import org.ovirt.engine.core.common.businessentities.image_group_storage_domain_map_id;
+-import org.ovirt.engine.core.compat.Guid;
+-
+-public class ImageGroupStorageDomainMapDAOHibernateImpl extends BaseDAOHibernateImpl<image_group_storage_domain_map, image_group_storage_domain_map_id> {
+-    public ImageGroupStorageDomainMapDAOHibernateImpl() {
+-        super(image_group_storage_domain_map.class);
+-    }
+-
+-    public List<image_group_storage_domain_map> getAllForImage(Guid image_group_id) {
+-        return findByCriteria(Restrictions.eq("id.imageGroupId", image_group_id));
+-    }
+-
+-    public List<image_group_storage_domain_map> findAllForStorageDomain(Guid storage_domain_id) {
+-        return findByCriteria(Restrictions.eq("id.storageDomainId", storage_domain_id));
+-    }
+-
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/LunDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/LunDAOHibernateImpl.java
+deleted file mode 100644
+index 9c40d1e..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/LunDAOHibernateImpl.java
++++ /dev/null
+@@ -1,29 +0,0 @@
+-package org.ovirt.engine.core.dao;
+-
+-import java.util.List;
+-
+-import org.hibernate.Query;
+-import org.hibernate.criterion.Restrictions;
+-
+-import org.ovirt.engine.core.common.businessentities.LUNs;
+-
+-public class LunDAOHibernateImpl extends BaseDAOHibernateImpl<LUNs, String> implements LunDAO {
+-    public LunDAOHibernateImpl() {
+-        super(LUNs.class);
+-    }
+-
+-    @SuppressWarnings("unchecked")
+-    @Override
+-    public List<LUNs> getAllForStorageServerConnection(String id) {
+-        Query query = getSession().getNamedQuery("all_luns_for_storage_server_connection");
+-
+-        query.setParameter("storage_server_connection", id);
+-
+-        return query.list();
+-    }
+-
+-    @Override
+-    public List<LUNs> getAllForVolumeGroup(String id) {
+-        return findByCriteria(Restrictions.eq("volumeGroupId", id));
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkClusterDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkClusterDAOHibernateImpl.java
+deleted file mode 100644
+index 1f393c2..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkClusterDAOHibernateImpl.java
++++ /dev/null
+@@ -1,44 +0,0 @@
+-package org.ovirt.engine.core.dao;
+-
+-import java.util.List;
+-
+-import org.hibernate.Query;
+-import org.hibernate.Session;
+-import org.hibernate.criterion.Restrictions;
+-
+-import org.ovirt.engine.core.common.businessentities.network_cluster;
+-import org.ovirt.engine.core.compat.Guid;
+-
+-/**
+- * <code>NetworkClusterDAOHibernateImpl</code> provides an implementation of {@link NetworkClusterDAO} that uses
+- * Hibernate for the persistence implementation.
+- *
+- */
+-public class NetworkClusterDAOHibernateImpl extends BaseDAOHibernateImpl<network_cluster, Guid> implements NetworkClusterDAO {
+-    public NetworkClusterDAOHibernateImpl() {
+-        super(network_cluster.class);
+-    }
+-
+-    @Override
+-    public List<network_cluster> getAllForCluster(Guid cluster) {
+-        return findByCriteria(Restrictions.eq("clusterId", cluster));
+-    }
+-
+-    @Override
+-    public List<network_cluster> getAllForNetwork(Guid network) {
+-        return findByCriteria(Restrictions.eq("networkId", network));
+-    }
+-
+-    @Override
+-    public void remove(final Guid clusterid, final Guid networkid) {
+-        Session session = getSession();
+-        Query query = session.getNamedQuery("delete_network_cluster");
+-
+-        query.setParameter("cluster_id", clusterid);
+-        query.setParameter("network_id", networkid);
+-
+-        session.beginTransaction();
+-        query.executeUpdate();
+-        session.getTransaction().commit();
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAOHibernateImpl.java
+deleted file mode 100644
+index 93f9a98..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAOHibernateImpl.java
++++ /dev/null
+@@ -1,28 +0,0 @@
+-package org.ovirt.engine.core.dao;
+-
+-import java.util.List;
+-
+-import org.hibernate.criterion.Restrictions;
+-
+-import org.ovirt.engine.core.common.businessentities.network;
+-import org.ovirt.engine.core.compat.Guid;
+-
+-/**
+- * <code>NetworkDAOHibernateImpl</code> provides an implementation of {@Link NetworkDAO} using Hibernate.
+- *
+- */
+-public class NetworkDAOHibernateImpl extends BaseDAOHibernateImpl<network, Guid> implements NetworkDAO {
+-    public NetworkDAOHibernateImpl() {
+-        super(network.class);
+-    }
+-
+-    @Override
+-    public List<network> getAllForDataCenter(Guid id) {
+-        return findByCriteria(Restrictions.eq("storage_pool_id", id));
+-    }
+-
+-    @Override
+-    public List<network> getAllForCluster(Guid id) {
+-        return findByCriteria(Restrictions.eq("cluster.clusterId", id));
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/PermissionDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/PermissionDAOHibernateImpl.java
+deleted file mode 100644
+index ed56ab5..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/PermissionDAOHibernateImpl.java
++++ /dev/null
+@@ -1,297 +0,0 @@
+-package org.ovirt.engine.core.dao;
+-
+-import java.util.ArrayList;
+-import java.util.List;
+-
+-import org.hibernate.Query;
+-import org.hibernate.criterion.Restrictions;
+-
+-import org.apache.commons.lang.NotImplementedException;
+-import org.ovirt.engine.core.common.VdcObjectType;
+-import org.ovirt.engine.core.common.businessentities.DbUser;
+-import org.ovirt.engine.core.common.businessentities.VDSGroup;
+-import org.ovirt.engine.core.common.businessentities.VdsStatic;
+-import org.ovirt.engine.core.common.businessentities.VmStatic;
+-import org.ovirt.engine.core.common.businessentities.ad_groups;
+-import org.ovirt.engine.core.common.businessentities.permissions;
+-import org.ovirt.engine.core.common.businessentities.roles;
+-import org.ovirt.engine.core.common.businessentities.vm_pools;
+-import org.ovirt.engine.core.compat.Guid;
+-import org.ovirt.engine.core.compat.NGuid;
+-
+-public class PermissionDAOHibernateImpl extends BaseDAOHibernateImpl<permissions, Guid> implements PermissionDAO {
+-    public PermissionDAOHibernateImpl() {
+-        super(permissions.class);
+-    }
+-
+-    @Override
+-    public permissions get(Guid id) {
+-        Query query = getSession().createQuery("select perms " +
+-                "from permissions as perms, " +
+-                "roles as role " +
+-                "where role.id = perms.roleId " +
+-                "and perms.id = :permission_id");
+-
+-        query.setParameter("permission_id", id);
+-
+-        permissions result = (permissions) query.uniqueResult();
+-        return fillInPermissionDetails(result);
+-    }
+-
+-    @Override
+-    public permissions getForRoleAndAdElementAndObject(Guid roleid, Guid elementid, Guid objectid) {
+-        return fillInPermissionDetails(findOneByCriteria(
+-                Restrictions.eq("roleId", roleid),
+-                Restrictions.eq("adElementId", elementid),
+-                Restrictions.eq("objectId", objectid)));
+-    }
+-
+-    @Override
+-    public permissions getForRoleAndAdElementAndObjectWithGroupCheck(Guid roleid, Guid elementid, Guid objectid) {
+-        Query query = getSession().createQuery("from DbUser where id = :id");
+-
+-        query.setParameter("id", objectid);
+-
+-        DbUser user = (DbUser) query.uniqueResult();
+-
+-        query = getSession().createQuery("from ad_groups where name in :names");
+-        query.setParameterList("names", user.getGroupsAsArray());
+-
+-        List<ad_groups> groups = query.list();
+-
+-        List<Guid> ids = new ArrayList<Guid>();
+-
+-        ids.add(user.getuser_id());
+-        for (ad_groups group : groups) {
+-            ids.add(group.getid());
+-        }
+-
+-        return fillInPermissionDetails(findOneByCriteria(
+-                Restrictions.eq("roleId", roleid),
+-                Restrictions.eq("adElementId", elementid),
+-                Restrictions.eq("objectId", objectid),
+-                Restrictions.in("adElementId", ids)));
+-    }
+-
+-    @Override
+-    public List<permissions> getAllForAdElement(Guid id) {
+-        return fillInPermissionDetails(findByCriteria(Restrictions.eq("adElementId", id)));
+-    }
+-
+-    @Override
+-    public List<permissions> getAllForRole(Guid id) {
+-        return fillInPermissionDetails(findByCriteria(Restrictions.eq("roleId", id)));
+-    }
+-
+-    @Override
+-    public List<permissions> getAllForRoleAndAdElement(Guid roleid, Guid elementid) {
+-        return fillInPermissionDetails(findByCriteria(Restrictions.eq("roleId", roleid),
+-                Restrictions.eq("adElementId", elementid)));
+-    }
+-
+-    @Override
+-    public List<permissions> getAllForRoleAndObject(Guid roleid, Guid objectid) {
+-        return fillInPermissionDetails(findByCriteria(Restrictions.eq("roleId", roleid),
+-                Restrictions.eq("objectId", objectid)));
+-    }
+-
+-    @Override
+-    public List<permissions> getAllForEntity(Guid id) {
+-        return fillInPermissionDetails(findByCriteria(Restrictions.eq("objectId", id)));
+-    }
+-
+-    @Override
+-    public List<permissions> getTreeForEntity(Guid id, VdcObjectType type) {
+-        List<NGuid> ids = new ArrayList<NGuid>();
+-
+-        // all use the system id
+-        ids.add(Guid.SYSTEM);
+-        ids.add(id);
+-
+-        switch (type) {
+-        case VM:
+-            getVmParentIds(id, ids);
+-            break;
+-        case VDS:
+-            getVdsParentIds(id, ids);
+-            break;
+-        case VmTemplate:
+-            getVmTemplateParentIds(id, ids);
+-            break;
+-        case VmPool:
+-            getVmPoolParentIds(id, ids);
+-            break;
+-        case VdsGroups:
+-            getVdsGroupParentIds(id, ids);
+-            break;
+-        case System:
+-        case StoragePool:
+-        case Storage:
+-        case User:
+-        case Role:
+-            ids.add(id);
+-            break;
+-        default:
+-            // no IDs are returned, so exit with an empty result set
+-            ids.clear();
+-            return new ArrayList<permissions>();
+-        }
+-
+-        return fillInPermissionDetails(findByCriteria(Restrictions.in("objectId", ids)));
+-    }
+-
+-    private void getVmParentIds(Guid id, List<NGuid> ids) {
+-        Query query = getSession().createQuery("from VmStatic where id = :id");
+-        query.setParameter("id", id);
+-
+-        VmStatic vmStatic = (VmStatic) query.uniqueResult();
+-
+-        if (vmStatic != null) {
+-            addVdsGroupId(vmStatic.getvds_group_id(), ids);
+-        }
+-    }
+-
+-    private void getVdsParentIds(Guid id, List<NGuid> ids) {
+-        Query query = getSession().createQuery("from VdsStatic where id = :id");
+-        query.setParameter("id", id);
+-
+-        VdsStatic vdsStatic = (VdsStatic) query.uniqueResult();
+-
+-        if (vdsStatic != null) {
+-            addVdsGroupId(vdsStatic.getvds_group_id(), ids);
+-        }
+-    }
+-
+-    private void getVmTemplateParentIds(Guid id, List<NGuid> ids) {
+-
+-    }
+-
+-    private void getVmPoolParentIds(Guid id, List<NGuid> ids) {
+-        Query query = getSession().createQuery("from vm_pools where id = :id");
+-        query.setParameter("id", id);
+-
+-        vm_pools vmPool = (vm_pools) query.uniqueResult();
+-
+-        if (vmPool != null) {
+-            addVdsGroupId(vmPool.getvds_group_id(), ids);
+-        }
+-    }
+-
+-    private void getVdsGroupParentIds(Guid id, List<NGuid> ids) {
+-        addVdsGroupId(id, ids);
+-    }
+-
+-    private void addVdsGroupId(Guid id, List<NGuid> ids) {
+-        ids.add(id);
+-
+-        Query query = getSession().createQuery("from VDSGroup where id = :id");
+-
+-        query.setParameter("id", id);
+-
+-        VDSGroup vdsGroup = (VDSGroup) query.uniqueResult();
+-
+-        if (vdsGroup != null) {
+-            ids.add(vdsGroup.getstorage_pool_id());
+-        }
+-    }
+-
+-    @Override
+-    public void removeForEntity(Guid id) {
+-        Query query = getSession().createQuery("delete from permissions perms where perms.objectId = :id");
+-
+-        query.setParameter("id", id);
+-
+-        getSession().beginTransaction();
+-        query.executeUpdate();
+-        getSession().getTransaction().commit();
+-    }
+-
+-    private List<permissions> fillInPermissionDetails(List<permissions> found) {
+-        for (permissions permission : found) {
+-            fillInPermissionDetails(permission);
+-        }
+-
+-        return found;
+-    }
+-
+-    /**
+-     * Retrieves the extra information previously retrieved by storage procedures.
+-     *
+-     * @param permission
+-     *            the instance
+-     * @return
+-     */
+-    private permissions fillInPermissionDetails(permissions permission) {
+-        if (permission != null) {
+-            // get the object name
+-            if (permission.getad_element_id().equals(Guid.EVERYONE)) {
+-                permission.setObjectName("Everyone");
+-            } else {
+-                Query query = getSession().createQuery("from DbUser where id = :id");
+-
+-                query.setParameter("id", permission.getad_element_id());
+-
+-                DbUser user = (DbUser) query.uniqueResult();
+-
+-                if (user != null)
+-                    permission.setOwnerName(user.getCoalescedName());
+-            }
+-
+-            // get the entity name
+-            Query query = null;
+-            String entityName = null;
+-
+-            switch (permission.getObjectType()) {
+-            case System:
+-                entityName = "System";
+-                break;
+-            case VM:
+-                query = getSession().createQuery("select name from VmStatic where id = :id");
+-                break;
+-            case VDS:
+-                query = getSession().createQuery("select name from VdsStatic where id = :id");
+-                break;
+-            case VmTemplate:
+-                query = getSession().createQuery("select name from VmTemplate where id = :id");
+-                break;
+-            case VmPool:
+-                query = getSession().createQuery("select name from vm_pools where id = :id");
+-                break;
+-            case VdsGroups:
+-                query = getSession().createQuery("select name from VDSGroup where id = :id");
+-                break;
+-            case Storage:
+-                query = getSession().createQuery("select storageName from storage_domain_static where id = :id");
+-                break;
+-            case StoragePool:
+-                query = getSession().createQuery("select name from storage_pool where id = :id");
+-                break;
+-            }
+-
+-            if (query != null) {
+-                query.setParameter("id", permission.getObjectId());
+-                entityName = (String) query.uniqueResult();
+-            }
+-
+-            permission.setObjectName(entityName);
+-
+-            // get the role details
+-            query = getSession().createQuery("from roles where id = :id");
+-            query.setParameter("id", permission.getrole_id().toString());
+-
+-            roles role = (roles) query.uniqueResult();
+-
+-            if (role != null) {
+-                permission.setRoleName(role.getname());
+-                permission.setRoleType(role.getType());
+-            }
+-        }
+-
+-        return permission;
+-    }
+-
+-    @Override
+-    public List<permissions> getAllDirectPermissionsForAdElement(Guid id) {
+-        throw new NotImplementedException();
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/RoleDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/RoleDAOHibernateImpl.java
+deleted file mode 100644
+index 5b828df..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/RoleDAOHibernateImpl.java
++++ /dev/null
+@@ -1,81 +0,0 @@
+-package org.ovirt.engine.core.dao;
+-
+-import java.util.ArrayList;
+-import java.util.List;
+-
+-import org.hibernate.Query;
+-
+-import org.ovirt.engine.core.common.businessentities.DbUser;
+-import org.ovirt.engine.core.common.businessentities.ad_groups;
+-import org.ovirt.engine.core.common.businessentities.roles;
+-import org.ovirt.engine.core.compat.Guid;
+-
+-public class RoleDAOHibernateImpl extends BaseDAOHibernateImpl<roles, Guid> implements RoleDAO {
+-    public RoleDAOHibernateImpl() {
+-        super(roles.class);
+-    }
+-
+-    @SuppressWarnings("unchecked")
+-    @Override
+-    public List<roles> getAllForAdElement(Guid id) {
+-        Guid[] ids = getUserAndGroupIdsForUser(id);
+-
+-        if (ids.length == 0) {
+-            return new ArrayList<roles>();
+-        }
+-
+-        Query query = getSession().createQuery("from roles role, permissions perms " +
+-                "where perms.roleId = role.id " +
+-                "and perms.adElementId in ( :ids )");
+-
+-        query.setParameterList("ids", ids);
+-
+-        return query.list();
+-    }
+-
+-    /**
+-     * Retrieves the IDs for all groups for the supplied user.
+-     *
+-     * @param userId
+-     *            the user
+-     * @return a collection containing the ID of the user and all of his groups
+-     */
+-    private Guid[] getUserAndGroupIdsForUser(Guid userId) {
+-        Query query = getSession().createQuery("from DbUser where id = :id");
+-
+-        query.setParameter("id", userId);
+-
+-        DbUser user = (DbUser) query.uniqueResult();
+-
+-        if (user == null) {
+-            return new Guid[0];
+-        }
+-
+-        query = getSession().createQuery("from ad_groups where name in (:names)");
+-        query.setParameterList("names", user.getGroupsAsArray());
+-
+-        @SuppressWarnings("unchecked")
+-        List<ad_groups> groups = query.list();
+-
+-        Guid[] result = new Guid[groups.size() + 1];
+-
+-        result[0] = userId;
+-        for (int index = 0; index < groups.size(); index++) {
+-            result[index + 1] = groups.get(index).getid();
+-        }
+-
+-        return result;
+-    }
+-
+-    @SuppressWarnings("unchecked")
+-    @Override
+-    public List<roles> getForAdElement(Guid id) {
+-        Query query = getSession().createQuery("from roles role, permissions perms " +
+-                "where perms.roleId = role.id " +
+-                "and perms.adElementId = :id");
+-
+-        query.setParameter("id", id);
+-
+-        return query.list();
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/RoleGroupMapDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/RoleGroupMapDAOHibernateImpl.java
+deleted file mode 100644
+index 19a0dbb..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/RoleGroupMapDAOHibernateImpl.java
++++ /dev/null
+@@ -1,31 +0,0 @@
+-package org.ovirt.engine.core.dao;
+-
+-import java.util.List;
+-
+-import org.hibernate.criterion.Restrictions;
+-
+-import org.ovirt.engine.core.common.businessentities.ActionGroup;
+-import org.ovirt.engine.core.common.businessentities.RoleGroupMap;
+-import org.ovirt.engine.core.common.businessentities.RoleGroupMapId;
+-import org.ovirt.engine.core.compat.Guid;
+-
+-public class RoleGroupMapDAOHibernateImpl extends BaseDAOHibernateImpl<RoleGroupMap, RoleGroupMapId> implements RoleGroupMapDAO {
+-    public RoleGroupMapDAOHibernateImpl() {
+-        super(RoleGroupMap.class);
+-    }
+-
+-    @Override
+-    public RoleGroupMap getByActionGroupAndRole(ActionGroup group, Guid id) {
+-        return get(new RoleGroupMapId(id, group));
+-    }
+-
+-    @Override
+-    public List<RoleGroupMap> getAllForRole(Guid id) {
+-        return findByCriteria(Restrictions.eq("id.roleId", id));
+-    }
+-
+-    @Override
+-    public void remove(ActionGroup group, Guid id) {
+-        remove(new RoleGroupMapId(id, group));
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainDAOWrapperImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainDAOWrapperImpl.java
+deleted file mode 100644
+index 408b9b0..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainDAOWrapperImpl.java
++++ /dev/null
+@@ -1,193 +0,0 @@
+-package org.ovirt.engine.core.dao;
+-
+-import java.util.ArrayList;
+-import java.util.List;
+-
+-import org.hibernate.Query;
+-import org.hibernate.Session;
+-import org.ovirt.engine.core.common.businessentities.StorageDomainType;
+-import org.ovirt.engine.core.common.businessentities.image_group_storage_domain_map;
+-import org.ovirt.engine.core.common.businessentities.image_group_storage_domain_map_id;
+-import org.ovirt.engine.core.common.businessentities.storage_domain_dynamic;
+-import org.ovirt.engine.core.common.businessentities.storage_domain_static;
+-import org.ovirt.engine.core.common.businessentities.storage_domains;
+-import org.ovirt.engine.core.common.businessentities.storage_pool_iso_map;
+-import org.ovirt.engine.core.compat.Guid;
+-import org.ovirt.engine.core.compat.NGuid;
+-
+-public class StorageDomainDAOWrapperImpl extends BaseDAOWrapperImpl implements StorageDomainDAO {
+-    StorageDomainStaticDAOHibernateImpl staticDAO = new StorageDomainStaticDAOHibernateImpl();
+-    StorageDomainDynamicDAOHibernateImpl dynamicDAO = new StorageDomainDynamicDAOHibernateImpl();
+-    StoragePoolIsoMapDAOHibernateImpl storagePoolIsoMapDAO = new StoragePoolIsoMapDAOHibernateImpl();
+-    ImageGroupStorageDomainMapDAOHibernateImpl imageGroupStorageDomainMapDAO =
+-            new ImageGroupStorageDomainMapDAOHibernateImpl();
+-
+-    @Override
+-    public void setSession(Session session) {
+-        super.setSession(session);
+-        staticDAO.setSession(session);
+-        dynamicDAO.setSession(session);
+-        storagePoolIsoMapDAO.setSession(session);
+-        imageGroupStorageDomainMapDAO.setSession(session);
+-    }
+-
+-    @Override
+-    public Guid getMasterStorageDomainIdForPool(Guid pool) {
+-        Guid returnValue = Guid.Empty;
+-        List<storage_domains> domains = getAllForStoragePool(pool);
+-        for (storage_domains domain : domains) {
+-            if (domain.getstorage_domain_type() == StorageDomainType.Master) {
+-                returnValue = domain.getid();
+-                break;
+-            }
+-        }
+-        return returnValue;
+-    }
+-
+-    @Override
+-    public storage_domains get(Guid id) {
+-        storage_domain_static staticPart = staticDAO.get(id);
+-
+-        return createDomain(staticPart);
+-    }
+-
+-    private storage_domains createDomain(storage_domain_static staticPart) {
+-        storage_domains result = null;
+-
+-        if (staticPart != null) {
+-            @SuppressWarnings("deprecation")
+-            storage_domain_dynamic dynamicPart = dynamicDAO.get(staticPart.getId());
+-            if (dynamicPart != null) {
+-                result = new storage_domains();
+-
+-                result.setStorageStaticData(staticPart);
+-                result.setStorageDynamicData(dynamicPart);
+-
+-                fillInDetails(result);
+-            }
+-        }
+-
+-        return result;
+-    }
+-
+-    private void fillInDetails(storage_domains result) {
+-        Query query;
+-
+-        query = getSession().createQuery("select spimap from storage_pool_iso_map spimap," +
+-                "storage_pool pool " +
+-                "where spimap.id.storagePoolId = pool.id " +
+-                "and spimap.id.storageId = :id");
+-
+-        query.setParameter("id", result.getid());
+-
+-        @SuppressWarnings("unchecked")
+-        List<storage_pool_iso_map> spimaps = query.list();
+-
+-        result.setStoragePoolIsoMapData(spimaps.size() > 0 ? spimaps.get(0) : null);
+-    }
+-
+-    @Override
+-    public storage_domains getForStoragePool(Guid id, NGuid storagepool) {
+-        storage_domain_static staticPart = staticDAO.getForStoragePool(id, storagepool);
+-
+-        if (staticPart != null) {
+-            return createDomain(staticPart);
+-        }
+-
+-        return null;
+-    }
+-
+-    @Override
+-    public List<storage_domains> getAllForConnection(String connection) {
+-        // TODO Auto-generated method stub
+-        return null;
+-    }
+-
+-    @Override
+-    public List<storage_domains> getAllForStoragePool(Guid pool) {
+-        return createDomains(staticDAO.getAllForStoragePool(pool));
+-    }
+-
+-    private List<storage_domains> createDomains(List<storage_domain_static> staticParts) {
+-        List<storage_domains> result = new ArrayList<storage_domains>();
+-
+-        for (storage_domain_static staticPart : staticParts) {
+-            storage_domains domain = createDomain(staticPart);
+-
+-            if (domain != null)
+-                result.add(domain);
+-        }
+-
+-        return result;
+-    }
+-
+-    @Override
+-    public List<storage_domains> getAllForImageGroup(NGuid imageGroup) {
+-        return createDomains(staticDAO.getAllForImageGroup(imageGroup));
+-    }
+-
+-    @Override
+-    public List<storage_domains> getAllForStorageDomain(Guid id) {
+-        return createDomains(staticDAO.getAllForStorageDomain(id));
+-    }
+-
+-    @Override
+-    public List<storage_domains> getAllWithQuery(String query) {
+-        return createDomains(staticDAO.findAllWithSQL(query));
+-    }
+-
+-    @Override
+-    public List<storage_domains> getAll() {
+-        return createDomains(staticDAO.getAll());
+-    }
+-
+-    @Override
+-    public List<Guid> getAllStorageDomainsByImageGroup(Guid imageGroupId) {
+-        List<storage_domain_static> domains = staticDAO.getAllForImageGroup(imageGroupId);
+-        List<Guid> result = new ArrayList<Guid>();
+-
+-        for (storage_domain_static domain : domains) {
+-            result.add(domain.getId());
+-        }
+-
+-        return result;
+-    }
+-
+-    @Override
+-    public void remove(Guid id) {
+-        dynamicDAO.remove(id);
+-        staticDAO.remove(id);
+-    }
+-
+-    @Override
+-    public image_group_storage_domain_map getImageGroupStorageDomainMapForImageGroupAndStorageDomain(image_group_storage_domain_map map) {
+-        return imageGroupStorageDomainMapDAO.get(new image_group_storage_domain_map_id(map.getimage_group_id(),
+-                map.getstorage_domain_id()));
+-    }
+-
+-    @Override
+-    public void addImageGroupStorageDomainMap(image_group_storage_domain_map map) {
+-        imageGroupStorageDomainMapDAO.save(map);
+-    }
+-
+-    @Override
+-    public void removeImageGroupStorageDomainMap(image_group_storage_domain_map map) {
+-        imageGroupStorageDomainMapDAO.remove(new image_group_storage_domain_map_id(map.getimage_group_id(),
+-                map.getstorage_domain_id()));
+-    }
+-
+-    @Override
+-    public List<image_group_storage_domain_map> getAllImageGroupStorageDomainMapsForStorageDomain(Guid storage_domain_id) {
+-        return imageGroupStorageDomainMapDAO.findAllForStorageDomain(storage_domain_id);
+-    }
+-
+-    @Override
+-    public List<image_group_storage_domain_map> getAllImageGroupStorageDomainMapsForImage(Guid image_group_id) {
+-        return imageGroupStorageDomainMapDAO.getAllForImage(image_group_id);
+-    }
+-
+-    @Override
+-    public List<storage_domains> getAllByStoragePoolAndConnection(Guid storagePoolId, String connection) {
+-        return null;
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainDynamicDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainDynamicDAOHibernateImpl.java
+deleted file mode 100644
+index e7f75d0..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainDynamicDAOHibernateImpl.java
++++ /dev/null
+@@ -1,10 +0,0 @@
+-package org.ovirt.engine.core.dao;
+-
+-import org.ovirt.engine.core.common.businessentities.storage_domain_dynamic;
+-import org.ovirt.engine.core.compat.Guid;
+-
+-public class StorageDomainDynamicDAOHibernateImpl extends BaseDAOHibernateImpl<storage_domain_dynamic, Guid> implements StorageDomainDynamicDAO {
+-    public StorageDomainDynamicDAOHibernateImpl() {
+-        super(storage_domain_dynamic.class);
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainStaticDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainStaticDAOHibernateImpl.java
+deleted file mode 100644
+index 6507b06..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainStaticDAOHibernateImpl.java
++++ /dev/null
+@@ -1,96 +0,0 @@
+-package org.ovirt.engine.core.dao;
+-
+-import java.util.List;
+-
+-import org.apache.commons.lang.NotImplementedException;
+-import org.hibernate.Query;
+-import org.hibernate.criterion.Restrictions;
+-import org.ovirt.engine.core.common.businessentities.StorageDomainStatus;
+-import org.ovirt.engine.core.common.businessentities.StorageType;
+-import org.ovirt.engine.core.common.businessentities.storage_domain_static;
+-import org.ovirt.engine.core.compat.Guid;
+-import org.ovirt.engine.core.compat.NGuid;
+-
+-public class StorageDomainStaticDAOHibernateImpl extends BaseDAOHibernateImpl<storage_domain_static, Guid> implements StorageDomainStaticDAO {
+-
+-    public StorageDomainStaticDAOHibernateImpl() {
+-        super(storage_domain_static.class);
+-    }
+-
+-    @SuppressWarnings("unchecked")
+-    @Override
+-    public List<storage_domain_static> getAllForStoragePoolOfStorageType(StorageType type, Guid pool) {
+-        Query query = getSession().getNamedQuery("all_storage_domain_static_for_storage_pool_of_type");
+-
+-        query.setParameter("pool_id", pool);
+-        query.setParameter("storage_type", type);
+-
+-        return fillInDetails(query.list());
+-    }
+-
+-    @SuppressWarnings("unchecked")
+-    @Override
+-    public List<storage_domain_static> getAllForStoragePool(Guid pool) {
+-        Query query = getSession().getNamedQuery("all_storage_domain_static_for_storage_pool");
+-
+-        query.setParameter("pool_id", pool);
+-
+-        return fillInDetails(query.list());
+-    }
+-
+-    private List<storage_domain_static> fillInDetails(List<storage_domain_static> list) {
+-        for (storage_domain_static sds : list) {
+-            Query query =
+-                    getSession().createQuery("select pool.name from storage_pool pool, storage_pool_iso_map map " +
+-                            "where pool.id = map.id.storagePoolId " +
+-                            "and map.id.storageId = :storage_id");
+-
+-            query.setParameter("storage_id", sds.getId());
+-
+-            @SuppressWarnings("unchecked")
+-            List<String> names = query.list();
+-            sds.setstorage_pool_name(names.isEmpty() != true ? names.get(0) : "");
+-        }
+-        return list;
+-    }
+-
+-    @Override
+-    public List<storage_domain_static> getAllOfStorageType(StorageType type) {
+-        List<storage_domain_static> result = findByCriteria(Restrictions.eq("storagePoolType", type));
+-
+-        return fillInDetails(result);
+-    }
+-
+-    public storage_domain_static getForStoragePool(Guid id, NGuid storagepool) {
+-        Query query = getSession().getNamedQuery("storage_domain_static_for_storage_pool");
+-
+-        query.setParameter("id", id);
+-        query.setParameter("storage_pool_id", storagepool);
+-
+-        return (storage_domain_static) query.uniqueResult();
+-    }
+-
+-    @SuppressWarnings("unchecked")
+-    public List<storage_domain_static> getAllForImageGroup(NGuid imageGroup) {
+-        Query query = getSession().getNamedQuery("all_storage_domain_static_for_image_group");
+-
+-        query.setParameter("image_group_id", imageGroup);
+-
+-        return query.list();
+-    }
+-
+-    @SuppressWarnings("unchecked")
+-    public List<storage_domain_static> getAllForStorageDomain(Guid id) {
+-        Query query = getSession().getNamedQuery("all_storage_domain_static_for_storage_domain");
+-
+-        query.setParameter("storage_domain_id", id);
+-
+-        return query.list();
+-    }
+-
+-    @Override
+-    public List<Guid> getAllIds(Guid pool, StorageDomainStatus status) {
+-        // TODO Auto-generated method stub
+-        throw new NotImplementedException();
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StoragePoolDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StoragePoolDAOHibernateImpl.java
+deleted file mode 100644
+index 473b02c..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StoragePoolDAOHibernateImpl.java
++++ /dev/null
+@@ -1,126 +0,0 @@
+-package org.ovirt.engine.core.dao;
+-
+-import java.util.List;
+-
+-import org.hibernate.Query;
+-import org.hibernate.Session;
+-import org.hibernate.criterion.Restrictions;
+-
+-import org.ovirt.engine.core.common.businessentities.ActionGroup;
+-import org.ovirt.engine.core.common.businessentities.StoragePoolStatus;
+-import org.ovirt.engine.core.common.businessentities.StorageType;
+-import org.ovirt.engine.core.common.businessentities.storage_pool;
+-import org.ovirt.engine.core.compat.Guid;
+-
+-public class StoragePoolDAOHibernateImpl extends BaseDAOHibernateImpl<storage_pool, Guid> implements StoragePoolDAO {
+-
+-   // private StoragePoolIsoMapDAO storagePoolIsoMapDAO = new StoragePoolIsoMapDAO();
+-
+-    public StoragePoolDAOHibernateImpl() {
+-        super(storage_pool.class);
+-    }
+-
+-    @Override
+-    public void setSession(Session session) {
+-        super.setSession(session);
+-        //storagePoolIsoMapDAO.setSession(session);
+-    }
+-
+-    @Override
+-    public storage_pool getForVds(final Guid vds) {
+-        Session session = getSession();
+-        Query query = session.getNamedQuery("all_storage_pools_for_vds");
+-        query.setParameter("vds_id", vds);
+-        return (storage_pool) query.uniqueResult();
+-    }
+-
+-    @Override
+-    public storage_pool getForVdsGroup(final Guid vdsGroup) {
+-        Session session = getSession();
+-        Query query = session.getNamedQuery("all_storage_pools_for_vds_group");
+-
+-        query.setParameter("vds_group_id", vdsGroup);
+-
+-        return (storage_pool) query.uniqueResult();
+-    }
+-
+-    @Override
+-    public List<storage_pool> getAllOfType(final StorageType type) {
+-        return findByCriteria(Restrictions.eq("storagePoolType", type.getValue()));
+-    }
+-
+-    @SuppressWarnings("unchecked")
+-    @Override
+-    public List<storage_pool> getAllForStorageDomain(final Guid storageDomain) {
+-        Session session = getSession();
+-        Query query = session.getNamedQuery("all_storage_pools_for_storage_domain");
+-
+-        query.setParameter("storage_domain_id", storageDomain);
+-
+-        return query.list();
+-    }
+-
+-    @SuppressWarnings("unchecked")
+-    @Override
+-    public List<storage_pool> getAllWithQuery(final String queryString) {
+-        Session session = getSession();
+-        Query query = session.createQuery(queryString);
+-
+-        return query.list();
+-    }
+-
+-    @Override
+-    public void updateStatus(Guid id, StoragePoolStatus status) {
+-        // TODO Auto-generated method stub
+-
+-    }
+-
+-    @Override
+-    public void updatePartial(storage_pool pool) {
+-        // TODO Auto-generated method stub
+-
+-    }
+-
+-    @Override
+-    public List<storage_pool> getDataCentersWithPermittedActionOnClusters(Guid userId, ActionGroup actionGroup) {
+-        Query query = getSession().getNamedQuery("fn_perms_get_storage_pools_with_permitted_action_on_vds_groups");
+-
+-        query.setParameter("v_user_id", userId).setParameter("v_action_group_id", actionGroup.getId());
+-
+-        return (List<storage_pool>) query.uniqueResult();
+-    }
+-
+-    /* Moved to iso map dao , left modifications to Derril
+-    @Override
+-    public storage_pool_iso_map getStoragePoolIsoMapByIsoAndStoragePool(Guid isoId, Guid storagePoolId) {
+-        return storagePoolIsoMapDAO.get(new StoragePoolIsoMapId(isoId,storagePoolId));
+-    }
+-
+-    @Override
+-    public void addStoragePoolIsoMap(storage_pool_iso_map map) {
+-        storagePoolIsoMapDAO.save(map);
+-
+-    }
+-
+-    @Override
+-    public void updateStoragePoolIsoMap(storage_pool_iso_map map) {
+-        storagePoolIsoMapDAO.update(map);
+-    }
+-
+-    @Override
+-    public void removeStoragePoolIsoMap(Guid storagePoolId, Guid isoDomainId) {
+-        storagePoolIsoMapDAO.remove(new StoragePoolIsoMapId(isoDomainId,storagePoolId));
+-    }
+-
+-    @Override
+-    public List<storage_pool_iso_map> getAllStoragePoolIsoMapsForStoragePool(Guid storagePoolId) {
+-        return storagePoolIsoMapDAO.getAllForStoragePool(storagePoolId);
+-    }
+-
+-    @Override
+-    public List<storage_pool_iso_map> getAllStoragePoolIsoMapsForIso(Guid isoId) {
+-        return storagePoolIsoMapDAO.getAllForStorage(isoId);
+-
+-    }
+-    */
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StoragePoolIsoMapDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StoragePoolIsoMapDAOHibernateImpl.java
+deleted file mode 100644
+index ff59f1d..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StoragePoolIsoMapDAOHibernateImpl.java
++++ /dev/null
+@@ -1,47 +0,0 @@
+-package org.ovirt.engine.core.dao;
+-
+-import java.util.List;
+-
+-import org.hibernate.Query;
+-import org.hibernate.Session;
+-
+-import org.ovirt.engine.core.common.businessentities.StoragePoolIsoMapId;
+-import org.ovirt.engine.core.common.businessentities.storage_pool_iso_map;
+-import org.ovirt.engine.core.compat.Guid;
+-
+-/**
+- * StoragePoolIsoMap DAO hibernate implementation
+- *
+- */
+-public class StoragePoolIsoMapDAOHibernateImpl extends BaseDAOHibernateImpl<storage_pool_iso_map, StoragePoolIsoMapId> {
+-
+-    public StoragePoolIsoMapDAOHibernateImpl() {
+-        super(storage_pool_iso_map.class);
+-    }
+-
+-    /**
+-     * Gets all maps for a given storage pool ID
+-     * @param storagePoolId storage pool ID for which the maps will be returned
+-     * @return list of maps
+-     */
+-    @SuppressWarnings("unchecked")
+-    public List<storage_pool_iso_map> getAllForStoragePool(Guid storagePoolId) {
+-        Session session = getSession();
+-        Query query = session.getNamedQuery("all_storage_pool_iso_map_by_storage_pool_id");
+-        query.setParameter("storagePoolId", storagePoolId);
+-        return query.list();
+-    }
+-
+-    /**
+-     * Gets all maps for a given storage ID
+-     * @param storageId storage ID to return all the maps for
+-     * @return list of maps (empty list if there is no matching map)
+-     */
+-    @SuppressWarnings("unchecked")
+-    public List<storage_pool_iso_map> getAllForStorage(Guid storageId) {
+-        Session session = getSession();
+-        Query query = session.getNamedQuery("all_storage_pool_iso_map_by_storage_id");
+-        query.setParameter("storageId", storageId);
+-        return query.list();
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageServerConnectionDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageServerConnectionDAOHibernateImpl.java
+deleted file mode 100644
+index 57fef50..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageServerConnectionDAOHibernateImpl.java
++++ /dev/null
+@@ -1,97 +0,0 @@
+-package org.ovirt.engine.core.dao;
+-
+-import java.util.List;
+-
+-import org.hibernate.Query;
+-import org.hibernate.Session;
+-import org.hibernate.criterion.Restrictions;
+-
+-import org.ovirt.engine.core.common.businessentities.storage_server_connections;
+-import org.ovirt.engine.core.compat.Guid;
+-
+-public class StorageServerConnectionDAOHibernateImpl extends BaseDAOHibernateImpl<storage_server_connections, String> implements StorageServerConnectionDAO {
+-    private StorageServerConnectionLunMapDAOHibernateImpl mapDAO = new StorageServerConnectionLunMapDAOHibernateImpl();
+-
+-    public StorageServerConnectionDAOHibernateImpl() {
+-        super(storage_server_connections.class);
+-    }
+-
+-    @Override
+-    public void setSession(Session session) {
+-        super.setSession(session);
+-
+-        mapDAO.setSession(session);
+-    }
+-
+-    @Override
+-    public storage_server_connections getForIqn(String iqn) {
+-        return findOneByCriteria(Restrictions.eq("iqn", iqn));
+-    }
+-
+-    @SuppressWarnings("unchecked")
+-    @Override
+-    public List<storage_server_connections> getAllForStoragePool(Guid storagePoolId) {
+-        Query query = getSession().createQuery("select conn from " +
+-                "LUN_storage_server_connection_map map1, " +
+-                "LUNs lun, " +
+-                "storage_domain_static domain, " +
+-                "storage_server_connections conn, " +
+-                "storage_pool_iso_map map2, " +
+-                "storage_pool pool " +
+-                "where map1.id.lunId = lun.id " +
+-                "and lun.volumeGroupId = domain.storage " +
+-                "and map1.id.storageServerConnection = conn.id " +
+-                "and map2.id.storageId = domain.id " +
+-                "and pool.id = map2.id.storagePoolId " +
+-                "and (pool.id = :storage_pool_id)");
+-
+-        query.setParameter("storage_pool_id", storagePoolId);
+-
+-        return query.list();
+-    }
+-
+-    @SuppressWarnings("unchecked")
+-    @Override
+-    public List<storage_server_connections> getAllForVolumeGroup(String group) {
+-        Query query = getSession().createQuery("select conn from " +
+-                "LUN_storage_server_connection_map map1, " +
+-                "LUNs lun, " +
+-                "storage_domain_static domain, " +
+-                "storage_server_connections conn " +
+-                "where map1.id.lunId = lun.id " +
+-                "and lun.volumeGroupId = domain.storage " +
+-                "and map1.id.storageServerConnection = conn.id " +
+-                "and domain.storage = :volume_group_id");
+-
+-        query.setParameter("volume_group_id", group);
+-
+-        return query.list();
+-    }
+-
+-    @Override
+-    public List<storage_server_connections> getAllForStorage(String storage) {
+-        return findByCriteria(Restrictions.eq("connection", storage));
+-    }
+-
+-    @Override
+-    public List<storage_server_connections> getAllForConnection(storage_server_connections connection) {
+-        return findByCriteria(Restrictions.eq("connection", connection));
+-    }
+-    /* TODO - align with Storage Connection Lun Map split
+-    @Override
+-    public LUN_storage_server_connection_map getLUNStorageMapForLUNAndStorageServerConnection(String lunId,
+-            String storageServerConnection) {
+-        return mapDAO.get(new LUN_storage_server_connection_map_id(lunId, storageServerConnection));
+-    }
+-
+-    @Override
+-    public void addLUNStorageMap(LUN_storage_server_connection_map map) {
+-        mapDAO.save(map);
+-    }
+-
+-    @Override
+-    public List<LUN_storage_server_connection_map> getAllLUNStorageMapsForLUN(String lunId) {
+-        return mapDAO.getAllLUNStorageMapsForLun(lunId);
+-    }
+-    */
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageServerConnectionLunMapDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageServerConnectionLunMapDAOHibernateImpl.java
+deleted file mode 100644
+index 3b7f18b..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageServerConnectionLunMapDAOHibernateImpl.java
++++ /dev/null
+@@ -1,19 +0,0 @@
+-package org.ovirt.engine.core.dao;
+-
+-import java.util.List;
+-
+-import org.hibernate.criterion.Restrictions;
+-
+-import org.ovirt.engine.core.common.businessentities.LUN_storage_server_connection_map;
+-import org.ovirt.engine.core.common.businessentities.LUN_storage_server_connection_map_id;
+-
+-public class StorageServerConnectionLunMapDAOHibernateImpl extends BaseDAOHibernateImpl<LUN_storage_server_connection_map, LUN_storage_server_connection_map_id>
+-        implements StorageServerConnectionLunMapDAO {
+-    public StorageServerConnectionLunMapDAOHibernateImpl() {
+-        super(LUN_storage_server_connection_map.class);
+-    }
+-
+-    public List<LUN_storage_server_connection_map> getAll(String lunId) {
+-        return findByCriteria(Restrictions.eq("id.lunId", lunId));
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/TagDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/TagDAOHibernateImpl.java
+deleted file mode 100644
+index 6eba997..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/TagDAOHibernateImpl.java
++++ /dev/null
+@@ -1,247 +0,0 @@
+-package org.ovirt.engine.core.dao;
+-
+-import java.util.ArrayList;
+-import java.util.List;
+-
+-import org.hibernate.Query;
+-import org.hibernate.Session;
+-import org.hibernate.criterion.Restrictions;
+-
+-import org.ovirt.engine.core.common.businessentities.TagsType;
+-import org.ovirt.engine.core.common.businessentities.tags;
+-import org.ovirt.engine.core.common.businessentities.tags_user_group_map;
+-import org.ovirt.engine.core.common.businessentities.tags_user_map;
+-import org.ovirt.engine.core.common.businessentities.tags_vds_map;
+-import org.ovirt.engine.core.common.businessentities.tags_vds_map_id;
+-import org.ovirt.engine.core.common.businessentities.tags_vm_map;
+-import org.ovirt.engine.core.common.businessentities.tags_vm_pool_map;
+-import org.ovirt.engine.core.compat.Guid;
+-import org.ovirt.engine.core.compat.NGuid;
+-import org.ovirt.engine.core.dao.tags.TagUserGroupMapDAO;
+-import org.ovirt.engine.core.dao.tags.TagUserMapDAO;
+-import org.ovirt.engine.core.dao.tags.TagVdsMapDAO;
+-import org.ovirt.engine.core.dao.tags.TagVmMapDAO;
+-
+-/**
+- * <code>TagDAOHibernateImpl</code> provides an implementation of {@link TagDAO} based on Hibernate.
+- *
+- */
+-public class TagDAOHibernateImpl extends BaseDAOHibernateImpl<tags, Guid> implements TagDAO {
+-    private TagUserGroupMapDAO tagUserGroupMapDAO = new TagUserGroupMapDAO();
+-    private TagUserMapDAO tagUserMapDAO = new TagUserMapDAO();
+-    private TagVdsMapDAO tagVdsMapDAO = new TagVdsMapDAO();
+-    private TagVmMapDAO tagVmMapDAO = new TagVmMapDAO();
+-
+-    public TagDAOHibernateImpl() {
+-        super(tags.class);
+-    }
+-
+-    @Override
+-    public void setSession(Session session) {
+-        super.setSession(session);
+-
+-        tagUserGroupMapDAO.setSession(session);
+-        tagUserMapDAO.setSession(session);
+-        tagVdsMapDAO.setSession(session);
+-        tagVmMapDAO.setSession(session);
+-    }
+-
+-    @Override
+-    public List<tags> getAllForParent(Guid id) {
+-        return findByCriteria(Restrictions.eq("parent", id));
+-    }
+-
+-    @Override
+-    public List<tags> getAllForUserGroups(String ids) {
+-        // TODO need to refactor the caller to send in Guids
+-        List<Guid> filter = convertIdsToGuids(ids);
+-
+-        return findByCriteria(Restrictions.in("userGroup.id", filter.toArray()));
+-    }
+-
+-    @Override
+-    public List<tags> getAllUserGroupTagsWithIds(String ids) {
+-        List<Guid> filter = convertIdsToGuids(ids);
+-
+-        return findByCriteria(Restrictions.in("id", filter),
+-                Restrictions.isNotNull("userGroup"));
+-    }
+-
+-    @Override
+-    public List<tags> getAllForVds(String ids) {
+-        List<Guid> filter = convertIdsToGuids(ids);
+-
+-        return findByCriteria(Restrictions.in("vds.id", filter));
+-    }
+-
+-    @Override
+-    public List<tags> getAllForVdsWithIds(String ids) {
+-        List<Guid> filter = convertIdsToGuids(ids);
+-
+-        return findByCriteria(Restrictions.in("id", filter), Restrictions.isNotNull("vds"));
+-    }
+-
+-    @Override
+-    public List<tags> getAllForVm(String ids) {
+-        List<Guid> filter = convertIdsToGuids(ids);
+-
+-        return findByCriteria(Restrictions.in("vm.id", filter));
+-    }
+-
+-    @Override
+-    public List<tags> getAllVmTagsWithIds(String ids) {
+-        List<Guid> filter = convertIdsToGuids(ids);
+-
+-        return findByCriteria(Restrictions.in("id", filter), Restrictions.isNotNull("vm"));
+-    }
+-
+-    @Override
+-    public List<tags> getAllForVmPools(String ids) {
+-        List<Guid> filter = convertIdsToGuids(ids);
+-
+-        return findByCriteria(Restrictions.in("vmPool.id", filter));
+-    }
+-
+-    @Override
+-    public List<tags> getAllForUsers(String ids) {
+-        List<Guid> filter = convertIdsToGuids(ids);
+-
+-        return findByCriteria(Restrictions.in("user.id", filter));
+-    }
+-
+-    @Override
+-    public List<tags> getAllForUsersWithIds(String ids) {
+-        List<Guid> filter = convertIdsToGuids(ids);
+-
+-        return findByCriteria(Restrictions.in("id", filter),
+-                Restrictions.isNotNull("user"));
+-    }
+-
+-    @Override
+-    public tags_user_group_map getTagUserGroupByGroupIdAndByTagId(Guid tagId, Guid groupId) {
+-        return tagUserGroupMapDAO.findOneByCriteria(Restrictions.eq("tagId", tagId),
+-                Restrictions.eq("groupId", groupId));
+-    }
+-
+-    @Override
+-    public void detachUserGroupFromTag(Guid tagId, Guid groupId) {
+-        tagUserGroupMapDAO.remove(tagId, groupId);
+-    }
+-
+-    @SuppressWarnings("unchecked")
+-    @Override
+-    public List<tags_user_group_map> getTagUserGroupMapsForTagName(String tagName) {
+-        Session session = getSession();
+-        Query query = session.getNamedQuery("get_all_tags_user_group_maps_for_tag_name");
+-
+-        query.setParameter("tag_name", tagName);
+-
+-        return query.list();
+-    }
+-
+-    @Override
+-    public tags_user_map getTagUserByTagIdAndByuserId(Guid tagId, Guid userId) {
+-        return tagUserMapDAO.findOneByCriteria(Restrictions.eq("tagId", tagId), Restrictions.eq("userId", userId));
+-    }
+-
+-    @Override
+-    public void attachUserGroupToTag(tags_user_group_map map) {
+-        tagUserGroupMapDAO.save(map);
+-    }
+-
+-    @Override
+-    public void attachUserToTag(tags_user_map tagUserMap) {
+-        tagUserMapDAO.save(tagUserMap);
+-    }
+-
+-    @Override
+-    public void detachUserFromTag(Guid tagId, Guid userId) {
+-        tagUserMapDAO.remove(tagId, userId);
+-    }
+-
+-    @Override
+-    public List<tags_user_map> getTagUserMapByTagName(String tagName) {
+-        return tagUserMapDAO.getTaguserMapByTagName(tagName);
+-    }
+-
+-    @Override
+-    public tags_vds_map getTagVdsByTagIdAndByVdsId(Guid tagId, Guid vdsId) {
+-        return tagVdsMapDAO.findOneByCriteria(Restrictions.eq("id.tagId", tagId), Restrictions.eq("id.vdsId", vdsId));
+-    }
+-
+-    @Override
+-    public void attachVdsToTag(tags_vds_map tagVdsMap) {
+-        tagVdsMapDAO.save(tagVdsMap);
+-    }
+-
+-    @Override
+-    public void detachVdsFromTag(Guid tagId, Guid vdsId) {
+-        tagVdsMapDAO.remove(new tags_vds_map_id(tagId, vdsId));
+-    }
+-
+-    @Override
+-    public List<tags_vds_map> getTagVdsMapByTagName(String tagName) {
+-        tags tag = getByName(tagName);
+-
+-        if (tag != null) {
+-            return tagVdsMapDAO.findByCriteria(Restrictions.eq("id.tagId", tag.gettag_id()));
+-        } else {
+-            return new ArrayList<tags_vds_map>();
+-        }
+-    }
+-
+-    @Override
+-    public tags_vm_map getTagVmByTagIdAndByVmId(Guid tagId, Guid vmId) {
+-        return tagVmMapDAO.findOneByCriteria(Restrictions.eq("id.tagId", tagId), Restrictions.eq("id.vmId", vmId));
+-    }
+-
+-    @Override
+-    public void attachVmToTag(tags_vm_map tagVmMap) {
+-        tagVmMapDAO.save(tagVmMap);
+-    }
+-
+-    @Override
+-    public void updateDefaultDisplayForVmTag(tags_vm_map tagsVmMap) {
+-        tagVmMapDAO.save(tagsVmMap);
+-    }
+-
+-    @Override
+-    public void detachVmFromTag(Guid tagId, Guid vmId) {
+-        tagVmMapDAO.remove(tagId, vmId);
+-    }
+-
+-    @Override
+-    public List<tags_vm_map> getTagVmMapByTagName(String tagName) {
+-        tags tag = getByName(tagName);
+-
+-        if (tag != null) {
+-            return tagVmMapDAO.findByCriteria(Restrictions.eq("id.tagId", tag.gettag_id()));
+-        } else {
+-            return new ArrayList<tags_vm_map>();
+-        }
+-    }
+-
+-    @Override
+-    public List<tags_vm_map> getTagVmMapByVmIdAndDefaultTag(Guid vmid) {
+-        List<tags> defaultTags = findByCriteria(Restrictions.eq("type", TagsType.AdElementTag));
+-        List<Guid> ids = new ArrayList<Guid>();
+-
+-        for (tags tag : defaultTags) {
+-            ids.add(tag.gettag_id());
+-        }
+-
+-        return tagVmMapDAO.findByCriteria(Restrictions.in("id.tagId", ids));
+-    }
+-
+-    @Override
+-    public List<tags_vm_map> getTimeLeasedUserVmsByAdGroupAndVmPoolId(Guid adGroupId, Guid vmPoolId) {
+-        // TODO Auto-generated method stub
+-        return null;
+-    }
+-
+-    @Override
+-    public List<tags_vm_pool_map> getVmPoolTagsByVmPoolIdAndAdElementId(NGuid vmPoolId, Guid adElementId) {
+-        // TODO Auto-generated method stub
+-        return null;
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdcOptionDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdcOptionDAOHibernateImpl.java
+deleted file mode 100644
+index 443a146..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdcOptionDAOHibernateImpl.java
++++ /dev/null
+@@ -1,28 +0,0 @@
+-package org.ovirt.engine.core.dao;
+-
+-import org.hibernate.criterion.Restrictions;
+-
+-import org.ovirt.engine.core.common.businessentities.VdcOption;
+-
+-public class VdcOptionDAOHibernateImpl extends BaseDAOHibernateImpl<VdcOption, Integer> implements VdcOptionDAO {
+-    public VdcOptionDAOHibernateImpl() {
+-        super(VdcOption.class);
+-    }
+-
+-    @Override
+-    public VdcOption getByNameAndVersion(String name, String version) {
+-        return findOneByCriteria(Restrictions.eq("name", name),
+-                Restrictions.eq("version", version));
+-    }
+-
+-    @Override
+-    public VdcOption get(int id) {
+-        return super.get(Integer.valueOf(id));
+-    }
+-
+-    @Override
+-    public void remove(int id) {
+-        super.remove(Integer.valueOf(id));
+-    }
+-
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsDAOWrapperImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsDAOWrapperImpl.java
+deleted file mode 100644
+index 8b576fb..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsDAOWrapperImpl.java
++++ /dev/null
+@@ -1,276 +0,0 @@
+-package org.ovirt.engine.core.dao;
+-
+-import java.util.ArrayList;
+-import java.util.List;
+-
+-import org.hibernate.Query;
+-import org.hibernate.Session;
+-import org.hibernate.criterion.Restrictions;
+-import org.ovirt.engine.core.common.businessentities.VDS;
+-import org.ovirt.engine.core.common.businessentities.VDSType;
+-import org.ovirt.engine.core.common.businessentities.VdsDynamic;
+-import org.ovirt.engine.core.common.businessentities.VdsStatic;
+-import org.ovirt.engine.core.common.businessentities.VdsStatistics;
+-import org.ovirt.engine.core.compat.Guid;
+-import org.ovirt.engine.core.compat.NGuid;
+-import org.ovirt.engine.core.dao.vds.VdsDynamicDAOHibernateImpl;
+-import org.ovirt.engine.core.dao.vds.VdsStaticDAOHibernateImpl;
+-import org.ovirt.engine.core.dao.vds.VdsStatisticsDAOHibernateImpl;
+-
+-public class VdsDAOWrapperImpl extends BaseDAOWrapperImpl implements VdsDAO {
+-
+-    private VdsStaticDAOHibernateImpl vdsStaticDAO = new VdsStaticDAOHibernateImpl();
+-    private VdsDynamicDAOHibernateImpl vdsDynamicDAO = new VdsDynamicDAOHibernateImpl();
+-    private VdsStatisticsDAOHibernateImpl vdsStatisticsDAO = new VdsStatisticsDAOHibernateImpl();
+-
+-    @Override
+-    public void setSession(Session session) {
+-        super.setSession(session);
+-
+-        vdsStaticDAO.setSession(session);
+-        vdsDynamicDAO.setSession(session);
+-        vdsStatisticsDAO.setSession(session);
+-    }
+-
+-    @Override
+-    public VDS get(NGuid id) {
+-        Guid guid = new Guid(id.getUuid());
+-
+-        VdsStatic staticPart = vdsStaticDAO.get(guid);
+-        VdsDynamic dynamicPart = vdsDynamicDAO.get(guid);
+-        VdsStatistics statisticsPart = vdsStatisticsDAO.get(guid);
+-
+-        // if we didn't find one, then return null
+-        if (staticPart == null || dynamicPart == null || statisticsPart == null) {
+-            return null;
+-        }
+-
+-        return new VDS(staticPart, dynamicPart, statisticsPart);
+-    }
+-    /* TODO - align with VDS DAO split - Darryl
+-    @Override
+-    public VdsStatic getStatic(Guid id) {
+-        return vdsStaticDAO.get(id);
+-    }
+-
+-    @Override
+-    public VdsDynamic getDynamic(Guid id) {
+-        return vdsDynamicDAO.get(id);
+-    }
+-
+-    @Override
+-    public VdsStatistics getStatistics(Guid id) {
+-        return vdsStatisticsDAO.get(id);
+-    }
+-
+-    @Override
+-    public VdsStatic getStaticByName(String name) {
+-        return vdsStaticDAO.getByName(name);
+-    } */
+-
+-    private List<VDS> convertToVdsList(List<VdsStatic> found) {
+-        List<VDS> result = new ArrayList<VDS>();
+-
+-        for (VdsStatic vdsStatic : found) {
+-            VdsDynamic vdsDynamic = vdsDynamicDAO.get(vdsStatic.getId());
+-            VdsStatistics vdsStatistics = vdsStatisticsDAO.get(vdsStatic.getId());
+-
+-            result.add(new VDS(vdsStatic, vdsDynamic, vdsStatistics));
+-        }
+-
+-        return result;
+-    }
+-
+-    @Override
+-    public List<VDS> getAllWithName(String name) {
+-        List<VdsStatic> found = vdsStaticDAO.findByCriteria(Restrictions.eq("name", name));
+-
+-        return convertToVdsList(found);
+-    }
+-
+-    @Override
+-    public List<VDS> getAllForHostname(String hostname) {
+-        List<VdsStatic> found = vdsStaticDAO.findByCriteria(Restrictions.eq("hostname", hostname));
+-
+-        return convertToVdsList(found);
+-    }
+-    /* TODO - align with VDS DAO split - Darryl
+-    @Override
+-    public List<VDS> getAllWithIpAddress(String address) {
+-        List<VdsStatic> found = vdsStaticDAO.findByCriteria(Restrictions.eq("ip", address));
+-
+-        return convertToVdsList(found);
+-    } */
+-
+-    @Override
+-    public List<VDS> getAllWithUniqueId(String id) {
+-        List<VdsStatic> found = vdsStaticDAO.findByCriteria(Restrictions.eq("uniqueId", id));
+-
+-        return convertToVdsList(found);
+-    }
+-
+-    @Override
+-    public List<VDS> getAllOfType(VDSType vds) {
+-        List<VdsStatic> found = vdsStaticDAO.findByCriteria(Restrictions.eq("vdsType", vds.getValue()));
+-
+-        return convertToVdsList(found);
+-    }
+-
+-    @Override
+-    public List<VDS> getAllOfTypes(VDSType[] types) {
+-        Integer[] intTypes = new Integer[types.length];
+-
+-        for (int index = 0; index < types.length; index++) {
+-            intTypes[index] = types[index].getValue();
+-        }
+-
+-        List<VdsStatic> found = vdsStaticDAO.findByCriteria(Restrictions.in("vdsType", intTypes));
+-
+-        return convertToVdsList(found);
+-    }
+-
+-    @SuppressWarnings("unchecked")
+-    @Override
+-    public List<VDS> getAllForVdsGroupWithoutMigrating(final Guid vdsGroup) {
+-        Session session = getSession();
+-        Query query = session.getNamedQuery("all_vds_static_for_vds_group_without_migration");
+-
+-        query.setParameter("vds_group_id", vdsGroup);
+-
+-        return convertToVdsList(query.list());
+-    }
+-
+-    @SuppressWarnings("unchecked")
+-    @Override
+-    public List<VDS> getAllWithQuery(String sql) {
+-        Session session = getSession();
+-        Query query = session.createSQLQuery(sql);
+-
+-        return query.list();
+-    }
+-
+-    @Override
+-    public List<VDS> getAll() {
+-        List<VdsStatic> found = vdsStaticDAO.getAll();
+-
+-        return convertToVdsList(found);
+-    }
+-    /* TODO - align with VDS DAO split - Darryl
+-    @Override
+-    public List<VDS> getAllForVdsGroup(Guid vdsGroup) {
+-        List<VdsStatic> found = vdsStaticDAO.findByCriteria(Restrictions.eq("vdsGroupId", vdsGroup));
+-
+-        return convertToVdsList(found);
+-    }
+-
+-    @Override
+-    public List<VdsStatic> getAllForHost(String hostname) {
+-        return vdsStaticDAO.findByCriteria(Restrictions.eq("hostname", hostname));
+-    }
+-
+-    @Override
+-    public List<VdsStatic> getAllWithIpAddress(String address) {
+-        return vdsStaticDAO.findByCriteria(Restrictions.eq("ip", address));
+-    }
+-
+-    @Override
+-    public List<VdsStatic> getAllForVdsGroup(Guid vdsGroup) {
+-        return vdsStaticDAO.findByCriteria(Restrictions.eq("vdsGroupId", vdsGroup));
+-    }
+-
+-    @Override
+-    public void save(VdsStatic vds) {
+-        vdsStaticDAO.save(vds);
+-    }
+-
+-    @Override
+-    public void saveDynamic(VdsDynamic vds) {
+-        vdsDynamicDAO.save(vds);
+-    }
+-
+-    @Override
+-    public void saveStatistics(VdsStatistics stats) {
+-        vdsStatisticsDAO.save(stats);
+-    }
+-
+-    @Override
+-    public void updateStatic(VdsStatic vds) {
+-        saveStatic(vds);
+-    }
+-
+-    @Override
+-    public void updateDynamic(VdsDynamic vds) {
+-        saveDynamic(vds);
+-    }
+-
+-    @Override
+-    public void updateStatistics(VdsStatistics stats) {
+-        saveStatistics(stats);
+-    }
+-
+-    @Override
+-    public void removeStatic(Guid id) {
+-        vdsStaticDAO.remove(id);
+-    }
+-
+-    @Override
+-    public void removeDynamic(Guid id) {
+-        vdsDynamicDAO.remove(id);
+-    }
+-
+-    @Override
+-    public void removeStatistics(Guid id) {
+-        vdsStatisticsDAO.remove(id);
+-    } */
+-
+-    /* TODO - align with VDS DAO split - Darryl , all methods below were added to apply inherited interface.*/
+-
+-    @Override
+-    public List<VDS> getAllWithIpAddress(String address) {
+-        // TODO Auto-generated method stub
+-        return null;
+-    }
+-
+-    @Override
+-    public List<VDS> getAllForVdsGroup(Guid vdsGroup) {
+-        // TODO Auto-generated method stub
+-        return null;
+-    }
+-    /* TODO Follow separation of Spm Id Map handling from VdsDAO - Darryl
+-    @Override
+-    public vds_spm_id_map getVdsSpmIdMapForVds(Guid vdsId) {
+-        // TODO Auto-generated method stub
+-        return null;
+-    }
+-
+-    @Override
+-    public void addVdsSpmIdMap(vds_spm_id_map vds_spm_id_map) {
+-        // TODO Auto-generated method stub
+-
+-    }
+-
+-    @Override
+-    public void removeVdsSpmIdMap(Guid vdsId) {
+-        // TODO Auto-generated method stub
+-
+-    }
+-
+-    @Override
+-    public List<vds_spm_id_map> getAllVdsSpmIdMapsForStoragePool(Guid storagePoolId) {
+-        // TODO Auto-generated method stub
+-        return null;
+-    }
+-
+-    @Override
+-    public vds_spm_id_map getVdsSpmIdMapForStoragePoolAndVdsSpmId(Guid storagePoolId, int VdsSPMId) {
+-        // TODO Auto-generated method stub
+-        return null;
+-    }
+-    */
+-
+-    @Override
+-    public List<VDS> getListForSpmSelection(Guid storagePoolId) {
+-        // TODO Auto-generated method stub
+-        return null;
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsGroupDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsGroupDAOHibernateImpl.java
+deleted file mode 100644
+index 9f69d8b..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsGroupDAOHibernateImpl.java
++++ /dev/null
+@@ -1,48 +0,0 @@
+-package org.ovirt.engine.core.dao;
+-
+-import java.util.List;
+-
+-import org.hibernate.Query;
+-import org.hibernate.criterion.Restrictions;
+-
+-import org.ovirt.engine.core.common.businessentities.ActionGroup;
+-import org.ovirt.engine.core.common.businessentities.VDSGroup;
+-import org.ovirt.engine.core.compat.Guid;
+-
+-/**
+- * <code>VdsGroupDAOHibernateImpl</code> provides an implementation of {@link VdsGroupDAO} based on Hibernate.
+- *
+- */
+-public class VdsGroupDAOHibernateImpl extends BaseDAOHibernateImpl<VDSGroup, Guid> implements VdsGroupDAO {
+-    public VdsGroupDAOHibernateImpl() {
+-        super(VDSGroup.class);
+-    }
+-
+-    @Override
+-    public VDSGroup getWithRunningVms(Guid id) {
+-        Query query = getSession().getNamedQuery("vdsgroup_with_running_vms");
+-
+-        query.setParameter("vds_group_id", id);
+-
+-        return (VDSGroup) query.uniqueResult();
+-    }
+-
+-    @Override
+-    public List<VDSGroup> getAllForStoragePool(Guid id) {
+-        return findByCriteria(Restrictions.eq("storagePool", id));
+-    }
+-
+-    @Override
+-    public List<VDSGroup> getAllWithQuery(String query) {
+-        return findAllWithSQL(query);
+-    }
+-
+-    @Override
+-    public List<VDSGroup> getClustersWithPermittedAction(Guid userId, ActionGroup actionGroup) {
+-        Query query = getSession().getNamedQuery("fn_perms_get_vds_groups_with_with_permitted_action");
+-
+-        query.setParameter("v_user_id", userId).setParameter("v_action_group_id", actionGroup.getId());
+-
+-        return (List<VDSGroup>) query.uniqueResult();
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsStaticDAODbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsStaticDAODbFacadeImpl.java
+index 5e6da53..e9f5cd0 100644
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsStaticDAODbFacadeImpl.java
++++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsStaticDAODbFacadeImpl.java
+@@ -6,7 +6,6 @@ import java.util.List;
+ import java.util.Map;
+ 
+ import org.apache.commons.lang.NotImplementedException;
+-import org.hibernate.annotations.common.util.StringHelper;
+ import org.ovirt.engine.core.common.businessentities.VDSType;
+ import org.ovirt.engine.core.common.businessentities.VdsStatic;
+ import org.ovirt.engine.core.common.config.Config;
+@@ -286,7 +285,7 @@ public class VdsStaticDAODbFacadeImpl extends BaseDAODbFacade implements VdsStat
+     }
+ 
+     public static String encryptPassword(String password) {
+-        if (StringHelper.isEmpty(password)) {
++        if (password == null || "".equals(password)) {
+             return password;
+         }
+         String result = password;
+@@ -303,7 +302,7 @@ public class VdsStaticDAODbFacadeImpl extends BaseDAODbFacade implements VdsStat
+     }
+ 
+     public static String decryptPassword(String password) {
+-        if (StringHelper.isEmpty(password)) {
++        if (password == null || "".equals(password)) {
+             return password;
+         }
+         String result = password;
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmPoolDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmPoolDAOHibernateImpl.java
+deleted file mode 100644
+index a5d10a3..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmPoolDAOHibernateImpl.java
++++ /dev/null
+@@ -1,153 +0,0 @@
+-package org.ovirt.engine.core.dao;
+-
+-import java.util.ArrayList;
+-import java.util.List;
+-import java.util.StringTokenizer;
+-
+-import org.hibernate.Criteria;
+-import org.hibernate.Query;
+-import org.hibernate.SQLQuery;
+-import org.hibernate.Session;
+-import org.hibernate.criterion.Restrictions;
+-
+-import org.ovirt.engine.core.common.businessentities.DbUser;
+-import org.ovirt.engine.core.common.businessentities.ad_groups;
+-import org.ovirt.engine.core.common.businessentities.time_lease_vm_pool_map;
+-import org.ovirt.engine.core.common.businessentities.time_lease_vm_pool_map_id;
+-import org.ovirt.engine.core.common.businessentities.vm_pool_map;
+-import org.ovirt.engine.core.common.businessentities.vm_pools;
+-import org.ovirt.engine.core.compat.Guid;
+-import org.ovirt.engine.core.compat.NGuid;
+-import org.ovirt.engine.core.dao.vmpools.TimeLeaseVmPoolMapDAOHibernateImpl;
+-import org.ovirt.engine.core.dao.vmpools.VmPoolMapDAOHibernateImpl;
+-
+-public class VmPoolDAOHibernateImpl extends BaseDAOHibernateImpl<vm_pools, NGuid> implements VmPoolDAO {
+-    private VmPoolMapDAOHibernateImpl vmPoolMapDAO = new VmPoolMapDAOHibernateImpl();
+-    private TimeLeaseVmPoolMapDAOHibernateImpl timeLeaseVmPoolDAO = new TimeLeaseVmPoolMapDAOHibernateImpl();
+-
+-    public VmPoolDAOHibernateImpl() {
+-        super(vm_pools.class);
+-    }
+-
+-    @Override
+-    public void setSession(Session session) {
+-        super.setSession(session);
+-
+-        vmPoolMapDAO.setSession(session);
+-        timeLeaseVmPoolDAO.setSession(session);
+-    }
+-
+-    @Override
+-    public void removeVmFromVmPool(Guid vm) {
+-        vmPoolMapDAO.remove(vm);
+-    }
+-
+-    @SuppressWarnings("unchecked")
+-    @Override
+-    public List<vm_pools> getAllForUser(Guid userid) {
+-        List<vm_pools> result = new ArrayList<vm_pools>();
+-
+-        /* we need to get the user, then get the list of ad groups for that user */
+-        Query query = getSession().createQuery("from DbUser where id = :user_id");
+-
+-        query.setParameter("user_id", userid);
+-
+-        DbUser user = (DbUser) query.uniqueResult();
+-
+-        if (user != null) {
+-            Criteria criteria =
+-                    getSession().createCriteria(ad_groups.class).add(Restrictions.in("name",
+-                            splitApartNames(user.getgroups())));
+-
+-            List<ad_groups> adElements = criteria.list();
+-            Guid[] ids = new Guid[adElements.size() + 1];
+-
+-            ids[0] = userid;
+-            for (int index = 0; index < adElements.size(); index++) {
+-                ids[index + 1] = adElements.get(index).getid();
+-            }
+-
+-            query = getSession().createQuery("select pool " +
+-                    "from vm_pools pool, permissions perms, roles role " +
+-                    "where pool.id = perms.objectId " +
+-                    "and perms.adElementId in ( :adElements ) " +
+-                    "and perms.roleId = role.id " +
+-                    "and role.type = 2");
+-
+-            query.setParameterList("adElements", ids);
+-
+-            result = query.list();
+-        }
+-
+-        return result;
+-    }
+-
+-    private String[] splitApartNames(String text) {
+-        List<String> names = new ArrayList<String>();
+-        StringTokenizer tokens = new StringTokenizer(text, ",", false);
+-
+-        while (tokens.hasMoreElements()) {
+-            names.add(tokens.nextToken());
+-        }
+-
+-        String[] result = new String[names.size()];
+-
+-        names.toArray(result);
+-
+-        return result;
+-    }
+-
+-    @Override
+-    public List<vm_pools> getAllForAdGroup(Guid adGroup) {
+-        // TODO Auto-generated method stub
+-        return null;
+-    }
+-
+-    @SuppressWarnings("unchecked")
+-    @Override
+-    public List<vm_pools> getAllWithQuery(String sql) {
+-        SQLQuery query = getSession().createSQLQuery(sql).addEntity(vm_pools.class);
+-
+-        return query.list();
+-    }
+-
+-    @Override
+-    public vm_pool_map getVmPoolMapByVmGuid(Guid vmId) {
+-        return vmPoolMapDAO.getByVmGuid(vmId);
+-    }
+-
+-    @Override
+-    public void addVmToPool(vm_pool_map map) {
+-        vmPoolMapDAO.save(map);
+-    }
+-
+-    @Override
+-    public List<vm_pool_map> getVmPoolsMapByVmPoolId(NGuid vmPoolId) {
+-        return vmPoolMapDAO.getVmPoolsMapByVmPoolId(vmPoolId);
+-    }
+-
+-    @Override
+-    public time_lease_vm_pool_map getTimeLeasedVmPoolMapByIdForVmPool(Guid id, NGuid vmPoolId) {
+-        return timeLeaseVmPoolDAO.get(new time_lease_vm_pool_map_id(id, new Guid(vmPoolId.getUuid())));
+-    }
+-
+-    @Override
+-    public void addTimeLeasedVmPoolMap(time_lease_vm_pool_map map) {
+-        timeLeaseVmPoolDAO.save(map);
+-    }
+-
+-    @Override
+-    public void updateTimeLeasedVmPoolMap(time_lease_vm_pool_map map) {
+-        timeLeaseVmPoolDAO.update(map);
+-    }
+-
+-    @Override
+-    public void removeTimeLeasedVmPoolMap(Guid id, Guid vmPoolId) {
+-        timeLeaseVmPoolDAO.remove(new time_lease_vm_pool_map_id(id, vmPoolId));
+-    }
+-
+-    @Override
+-    public List<time_lease_vm_pool_map> getAllTimeLeasedVmPoolMaps() {
+-        return timeLeaseVmPoolDAO.getAll();
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/actiongroup/ActionVersionMapDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/actiongroup/ActionVersionMapDAOHibernateImpl.java
+deleted file mode 100644
+index 4d83438..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/actiongroup/ActionVersionMapDAOHibernateImpl.java
++++ /dev/null
+@@ -1,10 +0,0 @@
+-package org.ovirt.engine.core.dao.actiongroup;
+-
+-import org.ovirt.engine.core.common.businessentities.action_version_map;
+-import org.ovirt.engine.core.dao.BaseDAOHibernateImpl;
+-
+-public class ActionVersionMapDAOHibernateImpl extends BaseDAOHibernateImpl<action_version_map, Integer> {
+-    public ActionVersionMapDAOHibernateImpl() {
+-        super(action_version_map.class);
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/actiongroup/RoleGroupMapDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/actiongroup/RoleGroupMapDAOHibernateImpl.java
+deleted file mode 100644
+index 5e8decf..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/actiongroup/RoleGroupMapDAOHibernateImpl.java
++++ /dev/null
+@@ -1,28 +0,0 @@
+-package org.ovirt.engine.core.dao.actiongroup;
+-
+-import java.util.ArrayList;
+-import java.util.List;
+-
+-import org.hibernate.criterion.Restrictions;
+-
+-import org.ovirt.engine.core.common.businessentities.ActionGroup;
+-import org.ovirt.engine.core.common.businessentities.RoleGroupMap;
+-import org.ovirt.engine.core.compat.Guid;
+-import org.ovirt.engine.core.dao.BaseDAOHibernateImpl;
+-
+-public class RoleGroupMapDAOHibernateImpl extends BaseDAOHibernateImpl<RoleGroupMap, Guid> {
+-    public RoleGroupMapDAOHibernateImpl() {
+-        super(RoleGroupMap.class);
+-    }
+-
+-    public List<ActionGroup> getAllForRole(Guid id) {
+-        List<RoleGroupMap> maps = findByCriteria(Restrictions.eq("id.roleId", id));
+-        List<ActionGroup> result = new ArrayList<ActionGroup>();
+-
+-        for(RoleGroupMap map: maps) {
+-            result.add(map.getActionGroup());
+-        }
+-
+-        return result;
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/dialect/EnginePostgreSQLDialect.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/dialect/EnginePostgreSQLDialect.java
+deleted file mode 100644
+index 352b03a..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/dialect/EnginePostgreSQLDialect.java
++++ /dev/null
+@@ -1,13 +0,0 @@
+-package org.ovirt.engine.core.dao.dialect;
+-
+-import java.sql.Types;
+-
+-import org.hibernate.dialect.PostgreSQLDialect;
+-
+-public class EnginePostgreSQLDialect extends PostgreSQLDialect {
+-    public EnginePostgreSQLDialect() {
+-        super();
+-
+-        this.registerColumnType(Types.OTHER, "uuid");
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/events/MapDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/events/MapDAOHibernateImpl.java
+deleted file mode 100644
+index 84f6683..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/events/MapDAOHibernateImpl.java
++++ /dev/null
+@@ -1,19 +0,0 @@
+-package org.ovirt.engine.core.dao.events;
+-
+-import java.util.List;
+-
+-import org.hibernate.criterion.Restrictions;
+-
+-import org.ovirt.engine.core.common.businessentities.event_map;
+-import org.ovirt.engine.core.common.businessentities.event_map_id;
+-import org.ovirt.engine.core.dao.BaseDAOHibernateImpl;
+-
+-public class MapDAOHibernateImpl extends BaseDAOHibernateImpl<event_map, event_map_id> {
+-    public MapDAOHibernateImpl() {
+-        super(event_map.class);
+-    }
+-
+-    public List<event_map> getByEventUpName(String event_up_name) {
+-        return findByCriteria(Restrictions.eq("id.eventUpName", event_up_name));
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/events/NotificationHistoryDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/events/NotificationHistoryDAOHibernateImpl.java
+deleted file mode 100644
+index f50cdf6..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/events/NotificationHistoryDAOHibernateImpl.java
++++ /dev/null
+@@ -1,18 +0,0 @@
+-package org.ovirt.engine.core.dao.events;
+-
+-import org.hibernate.criterion.Restrictions;
+-
+-import org.ovirt.engine.core.common.businessentities.event_notification_hist;
+-import org.ovirt.engine.core.compat.Guid;
+-import org.ovirt.engine.core.dao.BaseDAOHibernateImpl;
+-
+-public class NotificationHistoryDAOHibernateImpl extends BaseDAOHibernateImpl<event_notification_hist, Guid> {
+-    public NotificationHistoryDAOHibernateImpl() {
+-        super(event_notification_hist.class);
+-    }
+-
+-    public event_notification_hist getHistory(Guid subscriberId, long auditLogId) {
+-        return findOneByCriteria(Restrictions.eq("subscriberId", subscriberId),
+-                Restrictions.eq("auditLogId", auditLogId));
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/events/NotificationMethodsDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/events/NotificationMethodsDAOHibernateImpl.java
+deleted file mode 100644
+index 8d06036..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/events/NotificationMethodsDAOHibernateImpl.java
++++ /dev/null
+@@ -1,22 +0,0 @@
+-package org.ovirt.engine.core.dao.events;
+-
+-import java.util.List;
+-
+-import org.hibernate.criterion.Restrictions;
+-
+-import org.ovirt.engine.core.common.businessentities.event_notification_methods;
+-import org.ovirt.engine.core.dao.BaseDAOHibernateImpl;
+-
+-public class NotificationMethodsDAOHibernateImpl extends BaseDAOHibernateImpl<event_notification_methods, Integer> {
+-    public NotificationMethodsDAOHibernateImpl() {
+-        super(event_notification_methods.class);
+-    }
+-
+-    public List<event_notification_methods> getEventNotificationMethodsById(int method_id) {
+-        return findByCriteria(Restrictions.eq("methodId", method_id));
+-    }
+-
+-    public List<event_notification_methods> getEventNotificationMethodsByType(String method_type) {
+-        return findByCriteria(Restrictions.eq("methodType", method_type));
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/events/SubscriberDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/events/SubscriberDAOHibernateImpl.java
+deleted file mode 100644
+index e9c83fe..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/events/SubscriberDAOHibernateImpl.java
++++ /dev/null
+@@ -1,47 +0,0 @@
+-package org.ovirt.engine.core.dao.events;
+-
+-import java.util.List;
+-
+-import org.hibernate.Query;
+-import org.hibernate.Session;
+-import org.hibernate.Transaction;
+-import org.hibernate.criterion.Restrictions;
+-
+-import org.ovirt.engine.core.common.businessentities.event_subscriber;
+-import org.ovirt.engine.core.common.businessentities.event_subscriber_id;
+-import org.ovirt.engine.core.compat.Guid;
+-import org.ovirt.engine.core.dao.BaseDAOHibernateImpl;
+-
+-public class SubscriberDAOHibernateImpl extends BaseDAOHibernateImpl<event_subscriber, event_subscriber_id> {
+-    public SubscriberDAOHibernateImpl() {
+-        super(event_subscriber.class);
+-    }
+-
+-    public List<event_subscriber> getAllForSubscriber(Guid id) {
+-        return findByCriteria(Restrictions.eq("id.subscriberId", id));
+-    }
+-
+-    public void update(event_subscriber subscriber, int oldMethodId) {
+-        /*
+-         * for some odd reason doing a simple update on an event_subscriber object doesn't update the object, so an
+-         * explicit HQL update is necessary
+-         */
+-        Session session = getSession();
+-        Transaction transaction = session.beginTransaction();
+-
+-        Query query = session.createQuery("update event_subscriber es " +
+-                "set es.id.methodId = :method_id " +
+-                "where es.id.eventUpName = :event_up_name " +
+-                "and es.id.methodId = :old_method_id " +
+-                "and es.id.subscriberId = :subscriber_id");
+-
+-        query.setParameter("method_id", subscriber.getmethod_id());
+-        query.setParameter("event_up_name", subscriber.getevent_up_name());
+-        query.setParameter("old_method_id", oldMethodId);
+-        query.setParameter("subscriber_id", subscriber.getsubscriber_id());
+-
+-        query.executeUpdate();
+-
+-        transaction.commit();
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/images/DiskImageDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/images/DiskImageDAOHibernateImpl.java
+deleted file mode 100644
+index 389c1bd..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/images/DiskImageDAOHibernateImpl.java
++++ /dev/null
+@@ -1,79 +0,0 @@
+-package org.ovirt.engine.core.dao.images;
+-
+-import java.util.List;
+-
+-import org.hibernate.Query;
+-import org.hibernate.Transaction;
+-import org.hibernate.criterion.Restrictions;
+-import org.ovirt.engine.core.common.businessentities.DiskImage;
+-import org.ovirt.engine.core.common.businessentities.image_vm_map;
+-import org.ovirt.engine.core.compat.Guid;
+-import org.ovirt.engine.core.dao.BaseDAOHibernateImpl;
+-
+-/**
+- * <code>DiskImageDAOHibernateImpl</code> performs persistence operations on instances of {@link DiskImage} using
+- * Hibernate.
+- *
+- */
+-public class DiskImageDAOHibernateImpl extends BaseDAOHibernateImpl<DiskImage, Guid> {
+-    public DiskImageDAOHibernateImpl() {
+-        super(DiskImage.class);
+-    }
+-
+-    @SuppressWarnings("unchecked")
+-    public List<DiskImage> getAllForVm(Guid id) {
+-        Query query = getSession().createQuery("select image from DiskImage image, " +
+-                "image_vm_map ivmap " +
+-                "where ivmap.id.imageId = image.id " +
+-                "and ivmap.id.vmId = :vm_id");
+-
+-        query.setParameter("vm_id", id);
+-
+-        return fillInDetails(query.list());
+-    }
+-
+-    private List<DiskImage> fillInDetails(List<DiskImage> images) {
+-        for (DiskImage image : images) {
+-            Query query = getSession().createQuery("from image_vm_map where id.imageId = :image_id");
+-
+-            query.setParameter("image_id", image.getId());
+-
+-            image_vm_map result = (image_vm_map) query.uniqueResult();
+-
+-            if (result != null) {
+-                image.setactive(result.getactive());
+-                image.setvm_guid(result.getvm_id());
+-            }
+-        }
+-
+-        return images;
+-    }
+-
+-    public List<DiskImage> getAllSnapshotsForParent(Guid id) {
+-        return fillInDetails(findByCriteria(Restrictions.eq("parentId", id)));
+-    }
+-
+-    public List<DiskImage> getAllSnapshotsForStorageDomain(Guid id) {
+-        return fillInDetails(findByCriteria(Restrictions.eq("storage_id", id)));
+-    }
+-
+-    public List<DiskImage> getAllSnapshotsForVmSnapshot(Guid id) {
+-        return fillInDetails(findByCriteria(Restrictions.eq("vm_snapshot_id", id)));
+-    }
+-
+-    public List<DiskImage> getAllSnapshotsForImageGroup(Guid id) {
+-        return fillInDetails(findByCriteria(Restrictions.eq("image_group_id", id)));
+-    }
+-
+-    public void removeAllForVmId(Guid id) {
+-        Query query = getSession().createQuery("delete from DiskImage i " +
+-                "where i.id = (select ivmap.id.imageId from image_vm_map ivmap where ivmap.id.vmId = :vm_id)");
+-
+-        query.setParameter("vm_id", id);
+-
+-        Transaction transaction = getSession().beginTransaction();
+-
+-        query.executeUpdate();
+-        transaction.commit();
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/images/DiskImageDynamicDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/images/DiskImageDynamicDAOHibernateImpl.java
+deleted file mode 100644
+index 41bf2b2..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/images/DiskImageDynamicDAOHibernateImpl.java
++++ /dev/null
+@@ -1,11 +0,0 @@
+-package org.ovirt.engine.core.dao.images;
+-
+-import org.ovirt.engine.core.common.businessentities.DiskImageDynamic;
+-import org.ovirt.engine.core.compat.Guid;
+-import org.ovirt.engine.core.dao.BaseDAOHibernateImpl;
+-
+-public class DiskImageDynamicDAOHibernateImpl extends BaseDAOHibernateImpl<DiskImageDynamic, Guid> {
+-    public DiskImageDynamicDAOHibernateImpl() {
+-        super(DiskImageDynamic.class);
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/images/DiskImageTemplateDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/images/DiskImageTemplateDAOHibernateImpl.java
+deleted file mode 100644
+index 7acea6f..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/images/DiskImageTemplateDAOHibernateImpl.java
++++ /dev/null
+@@ -1,89 +0,0 @@
+-package org.ovirt.engine.core.dao.images;
+-
+-import java.util.List;
+-
+-import org.hibernate.Query;
+-import org.hibernate.Transaction;
+-
+-import org.ovirt.engine.core.common.businessentities.DiskImageTemplate;
+-import org.ovirt.engine.core.common.businessentities.vm_template_image_map;
+-import org.ovirt.engine.core.compat.Guid;
+-import org.ovirt.engine.core.dao.BaseDAOHibernateImpl;
+-
+-public class DiskImageTemplateDAOHibernateImpl extends BaseDAOHibernateImpl<DiskImageTemplate, Guid> {
+-    public DiskImageTemplateDAOHibernateImpl() {
+-        super(DiskImageTemplate.class);
+-    }
+-
+-    @Override
+-    public DiskImageTemplate get(Guid id) {
+-        return fillInDetails(super.get(id));
+-    }
+-
+-    public void removeTemplate(Guid id, Guid vm) {
+-        Query query =
+-                getSession().createQuery("delete from DiskImageTemplate " +
+-                        "where id = :id " +
+-                        "and id in " +
+-                        "(select vtim.id.imageTemplateId from vm_template_image_map vtim " +
+-                        "where vtim.id.vmTemplateId = :template_id)");
+-
+-        query.setParameter("id", id);
+-        query.setParameter("template_id", vm);
+-
+-        Transaction transaction = getSession().beginTransaction();
+-
+-        query.executeUpdate();
+-        transaction.commit();
+-    }
+-
+-    public DiskImageTemplate getTemplateByVmTemplateAndId(Guid vm, Guid template) {
+-        Query query = getSession().createQuery("select ditmpl from DiskImageTemplate ditmpl, " +
+-                "vm_template_image_map vtimap " +
+-                "where ditmpl.id = :template_id " +
+-                "and vtimap.id.imageTemplateId = :template_id " +
+-                "and vtimap.id.vmTemplateId = :vm_template_id");
+-
+-        query.setParameter("template_id", template);
+-        query.setParameter("vm_template_id", vm);
+-
+-        return fillInDetails((DiskImageTemplate) query.uniqueResult());
+-    }
+-
+-    private DiskImageTemplate fillInDetails(DiskImageTemplate template) {
+-        if (template != null) {
+-            Query query =
+-                    getSession().createQuery("from vm_template_image_map where id.imageTemplateId = :template_id");
+-
+-            query.setParameter("template_id", template.getit_guid());
+-
+-            vm_template_image_map result = (vm_template_image_map) query.uniqueResult();
+-
+-            if (result != null) {
+-                template.setvtim_it_guid(result.id.imageTemplateId);
+-                template.setvmt_guid(result.id.vmTemplateId);
+-                template.setinternal_drive_mapping(result.internalDriveMapping);
+-            }
+-        }
+-
+-        return template;
+-    }
+-
+-    public List<DiskImageTemplate> getAllTemplatesForVmTemplate(Guid vmTemplate) {
+-        Query query = getSession().createQuery("select ditmpl from DiskImageTemplate ditmpl, " +
+-                "vm_template_image_map vtimap " +
+-                "where vtimap.id.imageTemplateId = ditmpl.id " +
+-                "and vtimap.id.vmTemplateId = :template_id");
+-
+-        query.setParameter("template_id", vmTemplate);
+-
+-        return fillInDetails(query.list());
+-    }
+-
+-    private List<DiskImageTemplate> fillInDetails(List<DiskImageTemplate> templates) {
+-        for (DiskImageTemplate template : templates) {
+-            fillInDetails(template);
+-        }
+-        return templates;
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/images/ImageVmMapDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/images/ImageVmMapDAOHibernateImpl.java
+deleted file mode 100644
+index cd113c7..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/images/ImageVmMapDAOHibernateImpl.java
++++ /dev/null
+@@ -1,11 +0,0 @@
+-package org.ovirt.engine.core.dao.images;
+-
+-import org.ovirt.engine.core.common.businessentities.image_vm_map;
+-import org.ovirt.engine.core.common.businessentities.image_vm_map_id;
+-import org.ovirt.engine.core.dao.BaseDAOHibernateImpl;
+-
+-public class ImageVmMapDAOHibernateImpl extends BaseDAOHibernateImpl<image_vm_map, image_vm_map_id> {
+-    public ImageVmMapDAOHibernateImpl() {
+-        super(image_vm_map.class);
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/images/ImageVmPoolMapDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/images/ImageVmPoolMapDAOHibernateImpl.java
+deleted file mode 100644
+index 2e53777..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/images/ImageVmPoolMapDAOHibernateImpl.java
++++ /dev/null
+@@ -1,11 +0,0 @@
+-package org.ovirt.engine.core.dao.images;
+-
+-import org.ovirt.engine.core.common.businessentities.image_vm_pool_map;
+-import org.ovirt.engine.core.compat.Guid;
+-import org.ovirt.engine.core.dao.BaseDAOHibernateImpl;
+-
+-public class ImageVmPoolMapDAOHibernateImpl extends BaseDAOHibernateImpl<image_vm_pool_map, Guid> {
+-    public ImageVmPoolMapDAOHibernateImpl() {
+-        super(image_vm_pool_map.class);
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/images/StatelessImageVmMapDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/images/StatelessImageVmMapDAOHibernateImpl.java
+deleted file mode 100644
+index 0afc3d6..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/images/StatelessImageVmMapDAOHibernateImpl.java
++++ /dev/null
+@@ -1,11 +0,0 @@
+-package org.ovirt.engine.core.dao.images;
+-
+-import org.ovirt.engine.core.common.businessentities.stateless_vm_image_map;
+-import org.ovirt.engine.core.compat.Guid;
+-import org.ovirt.engine.core.dao.BaseDAOHibernateImpl;
+-
+-public class StatelessImageVmMapDAOHibernateImpl extends BaseDAOHibernateImpl<stateless_vm_image_map, Guid> {
+-    public StatelessImageVmMapDAOHibernateImpl() {
+-        super(stateless_vm_image_map.class);
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/tags/TagUserGroupMapDAO.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/tags/TagUserGroupMapDAO.java
+deleted file mode 100644
+index f7cf769..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/tags/TagUserGroupMapDAO.java
++++ /dev/null
+@@ -1,27 +0,0 @@
+-package org.ovirt.engine.core.dao.tags;
+-
+-import org.hibernate.Query;
+-import org.hibernate.Session;
+-
+-import org.ovirt.engine.core.common.businessentities.tags_user_group_map;
+-import org.ovirt.engine.core.compat.Guid;
+-import org.ovirt.engine.core.dao.BaseDAOHibernateImpl;
+-
+-public class TagUserGroupMapDAO extends BaseDAOHibernateImpl<tags_user_group_map, Guid> {
+-    public TagUserGroupMapDAO() {
+-        super(tags_user_group_map.class);
+-    }
+-
+-    public void remove(Guid tagId, Guid groupId) {
+-        Session session = getSession();
+-        Query query =
+-                session.createQuery("delete tags_user_group_map where tagId = :tag_id and groupId = :group_id");
+-
+-        query.setParameter("tag_id", tagId);
+-        query.setParameter("group_id", groupId);
+-
+-        session.beginTransaction();
+-        query.executeUpdate();
+-        session.getTransaction().commit();
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/tags/TagUserMapDAO.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/tags/TagUserMapDAO.java
+deleted file mode 100644
+index 54f0401..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/tags/TagUserMapDAO.java
++++ /dev/null
+@@ -1,38 +0,0 @@
+-package org.ovirt.engine.core.dao.tags;
+-
+-import java.util.List;
+-
+-import org.hibernate.Query;
+-import org.hibernate.Session;
+-
+-import org.ovirt.engine.core.common.businessentities.tags_user_map;
+-import org.ovirt.engine.core.compat.Guid;
+-import org.ovirt.engine.core.dao.BaseDAOHibernateImpl;
+-
+-public class TagUserMapDAO extends BaseDAOHibernateImpl<tags_user_map, Guid> {
+-    public TagUserMapDAO() {
+-        super(tags_user_map.class);
+-    }
+-
+-    @SuppressWarnings("unchecked")
+-    public List<tags_user_map> getTaguserMapByTagName(String tagName) {
+-        Session session = getSession();
+-        Query query = session.getNamedQuery("all_tag_user_maps_by_tag_name");
+-
+-        query.setParameter("tag_name", tagName);
+-
+-        return query.list();
+-    }
+-
+-    public void remove(Guid tagId, Guid userId) {
+-        Session session = getSession();
+-        Query query = session.createQuery("delete tags_user_map where tagId = :tag_id and userId = :user_id");
+-
+-        query.setParameter("tag_id", tagId);
+-        query.setParameter("user_id", userId);
+-
+-        session.beginTransaction();
+-        query.executeUpdate();
+-        session.getTransaction().commit();
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/tags/TagVdsMapDAO.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/tags/TagVdsMapDAO.java
+deleted file mode 100644
+index f22d1d0..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/tags/TagVdsMapDAO.java
++++ /dev/null
+@@ -1,11 +0,0 @@
+-package org.ovirt.engine.core.dao.tags;
+-
+-import org.ovirt.engine.core.common.businessentities.tags_vds_map;
+-import org.ovirt.engine.core.common.businessentities.tags_vds_map_id;
+-import org.ovirt.engine.core.dao.BaseDAOHibernateImpl;
+-
+-public class TagVdsMapDAO extends BaseDAOHibernateImpl<tags_vds_map, tags_vds_map_id> {
+-    public TagVdsMapDAO() {
+-        super(tags_vds_map.class);
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/tags/TagVmMapDAO.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/tags/TagVmMapDAO.java
+deleted file mode 100644
+index 18217a3..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/tags/TagVmMapDAO.java
++++ /dev/null
+@@ -1,28 +0,0 @@
+-package org.ovirt.engine.core.dao.tags;
+-
+-import org.hibernate.Query;
+-import org.hibernate.Session;
+-
+-import org.ovirt.engine.core.common.businessentities.tags_vm_map;
+-import org.ovirt.engine.core.common.businessentities.tags_vm_map_id;
+-import org.ovirt.engine.core.compat.Guid;
+-import org.ovirt.engine.core.dao.BaseDAOHibernateImpl;
+-
+-public class TagVmMapDAO extends BaseDAOHibernateImpl<tags_vm_map, tags_vm_map_id> {
+-    public TagVmMapDAO() {
+-        super(tags_vm_map.class);
+-    }
+-
+-    public void remove(Guid tagId, Guid vmId) {
+-        Session session = getSession();
+-        Query query =
+-                session.createQuery("delete tags_vm_map m where m.id.tagId = :tag_id and m.id.vmId = :vm_id");
+-
+-        query.setParameter("tag_id", tagId);
+-        query.setParameter("vm_id", vmId);
+-
+-        session.beginTransaction();
+-        query.executeUpdate();
+-        session.getTransaction().commit();
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/users/SessionDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/users/SessionDAOHibernateImpl.java
+deleted file mode 100644
+index fdbcf23..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/users/SessionDAOHibernateImpl.java
++++ /dev/null
+@@ -1,11 +0,0 @@
+-package org.ovirt.engine.core.dao.users;
+-
+-import org.ovirt.engine.core.dal.dbbroker.user_sessions;
+-import org.ovirt.engine.core.dal.dbbroker.user_sessions_id;
+-import org.ovirt.engine.core.dao.BaseDAOHibernateImpl;
+-
+-public class SessionDAOHibernateImpl extends BaseDAOHibernateImpl<user_sessions, user_sessions_id> {
+-    public SessionDAOHibernateImpl() {
+-        super(user_sessions.class);
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/users/UserDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/users/UserDAOHibernateImpl.java
+deleted file mode 100644
+index d89880b..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/users/UserDAOHibernateImpl.java
++++ /dev/null
+@@ -1,25 +0,0 @@
+-package org.ovirt.engine.core.dao.users;
+-
+-import java.util.List;
+-
+-import org.hibernate.SQLQuery;
+-import org.hibernate.Session;
+-
+-import org.ovirt.engine.core.common.businessentities.DbUser;
+-import org.ovirt.engine.core.compat.Guid;
+-import org.ovirt.engine.core.dao.BaseDAOHibernateImpl;
+-
+-public class UserDAOHibernateImpl extends BaseDAOHibernateImpl<DbUser, Guid> {
+-    public UserDAOHibernateImpl() {
+-        super(DbUser.class);
+-    }
+-
+-    @SuppressWarnings("unchecked")
+-    @Override
+-    public List<DbUser> findAllWithSQL(String sql) {
+-        Session session = getSession();
+-        SQLQuery query = session.createSQLQuery(sql).addEntity(DbUser.class);
+-
+-        return (List<DbUser>) query.list();
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/vds/VdsDynamicDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/vds/VdsDynamicDAOHibernateImpl.java
+deleted file mode 100644
+index 62b8b99..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/vds/VdsDynamicDAOHibernateImpl.java
++++ /dev/null
+@@ -1,16 +0,0 @@
+-package org.ovirt.engine.core.dao.vds;
+-
+-import org.ovirt.engine.core.common.businessentities.VdsDynamic;
+-import org.ovirt.engine.core.compat.NGuid;
+-import org.ovirt.engine.core.dao.BaseDAOHibernateImpl;
+-
+-/**
+- * <code>VdsDynamicDAOHibernateImpl</code> extends {@link BaseDAOHibernateImpl} to work with instances of
+- * {@link VdsDynamic}.
+- *
+- */
+-public class VdsDynamicDAOHibernateImpl extends BaseDAOHibernateImpl<VdsDynamic, NGuid> {
+-    public VdsDynamicDAOHibernateImpl() {
+-        super(VdsDynamic.class);
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/vds/VdsStaticDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/vds/VdsStaticDAOHibernateImpl.java
+deleted file mode 100644
+index 469d4c9..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/vds/VdsStaticDAOHibernateImpl.java
++++ /dev/null
+@@ -1,16 +0,0 @@
+-package org.ovirt.engine.core.dao.vds;
+-
+-import org.ovirt.engine.core.common.businessentities.VdsStatic;
+-import org.ovirt.engine.core.compat.NGuid;
+-import org.ovirt.engine.core.dao.BaseDAOHibernateImpl;
+-
+-/**
+- * <code>VdsStaticDAOHibernateImpl</code> extends {@link BaseDAOHibernateImpl} to work with instances of
+- * {@link VdsStatic}.
+- *
+- */
+-public class VdsStaticDAOHibernateImpl extends BaseDAOHibernateImpl<VdsStatic, NGuid> {
+-    public VdsStaticDAOHibernateImpl() {
+-        super(VdsStatic.class);
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/vds/VdsStatisticsDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/vds/VdsStatisticsDAOHibernateImpl.java
+deleted file mode 100644
+index e15ad91..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/vds/VdsStatisticsDAOHibernateImpl.java
++++ /dev/null
+@@ -1,15 +0,0 @@
+-package org.ovirt.engine.core.dao.vds;
+-
+-import org.ovirt.engine.core.common.businessentities.VdsStatistics;
+-import org.ovirt.engine.core.compat.Guid;
+-import org.ovirt.engine.core.dao.BaseDAOHibernateImpl;
+-
+-/**
+- * <code>VdsStatisticsDAOHibernateImpl</code> provides a DAO for working with instances of {@link VdsStatistics}.
+- *
+- */
+-public class VdsStatisticsDAOHibernateImpl extends BaseDAOHibernateImpl<VdsStatistics, Guid> {
+-    public VdsStatisticsDAOHibernateImpl() {
+-        super(VdsStatistics.class);
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/vmpools/TimeLeaseVmPoolMapDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/vmpools/TimeLeaseVmPoolMapDAOHibernateImpl.java
+deleted file mode 100644
+index 9ba2d48..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/vmpools/TimeLeaseVmPoolMapDAOHibernateImpl.java
++++ /dev/null
+@@ -1,11 +0,0 @@
+-package org.ovirt.engine.core.dao.vmpools;
+-
+-import org.ovirt.engine.core.common.businessentities.time_lease_vm_pool_map;
+-import org.ovirt.engine.core.common.businessentities.time_lease_vm_pool_map_id;
+-import org.ovirt.engine.core.dao.BaseDAOHibernateImpl;
+-
+-public class TimeLeaseVmPoolMapDAOHibernateImpl extends BaseDAOHibernateImpl<time_lease_vm_pool_map, time_lease_vm_pool_map_id> {
+-    public TimeLeaseVmPoolMapDAOHibernateImpl() {
+-        super(time_lease_vm_pool_map.class);
+-    }
+-}
+diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/vmpools/VmPoolMapDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/vmpools/VmPoolMapDAOHibernateImpl.java
+deleted file mode 100644
+index d69f166..0000000
+--- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/vmpools/VmPoolMapDAOHibernateImpl.java
++++ /dev/null
+@@ -1,24 +0,0 @@
+-package org.ovirt.engine.core.dao.vmpools;
+-
+-import java.util.List;
+-
+-import org.hibernate.criterion.Restrictions;
+-
+-import org.ovirt.engine.core.common.businessentities.vm_pool_map;
+-import org.ovirt.engine.core.compat.Guid;
+-import org.ovirt.engine.core.compat.NGuid;
+-import org.ovirt.engine.core.dao.BaseDAOHibernateImpl;
+-
+-public class VmPoolMapDAOHibernateImpl extends BaseDAOHibernateImpl<vm_pool_map, Guid> {
+-    public VmPoolMapDAOHibernateImpl() {
+-        super(vm_pool_map.class);
+-    }
+-
+-    public vm_pool_map getByVmGuid(Guid vmId) {
+-        return findOneByCriteria(Restrictions.eq("vmId", vmId));
+-    }
+-
+-    public List<vm_pool_map> getVmPoolsMapByVmPoolId(NGuid vmPoolId) {
+-        return findByCriteria(Restrictions.eq("vmPoolId", vmPoolId));
+-    }
+-}
+-- 
+1.7.7.6
+
diff --git a/ovirt-engine-remove-jb5-login-module.patch b/ovirt-engine-remove-jb5-login-module.patch
new file mode 100644
index 0000000..2135f01
--- /dev/null
+++ b/ovirt-engine-remove-jb5-login-module.patch
@@ -0,0 +1,285 @@
+From 102fd62eebe72fc93aa63e97319d9ecf1951bb66 Mon Sep 17 00:00:00 2001
+From: Juan Hernandez <juan.hernandez at redhat.com>
+Date: Thu, 9 Feb 2012 14:49:16 +0100
+Subject: [PATCH 4/9] packaging: Remove JB5 specific login module
+
+Change-Id: I2dcbbdd5c635128d0a9633b766355d3dc48a4614
+---
+ backend/manager/modules/engineencryptutils/pom.xml |   48 -----
+ .../login/EngineSecureIdentityLoginModule.java     |  198 --------------------
+ 2 files changed, 0 insertions(+), 246 deletions(-)
+ delete mode 100644 backend/manager/modules/engineencryptutils/src/main/java/org/ovirt/engine/core/login/EngineSecureIdentityLoginModule.java
+
+diff --git a/backend/manager/modules/engineencryptutils/pom.xml b/backend/manager/modules/engineencryptutils/pom.xml
+index 41a0a92..2da80c6 100644
+--- a/backend/manager/modules/engineencryptutils/pom.xml
++++ b/backend/manager/modules/engineencryptutils/pom.xml
+@@ -18,43 +18,6 @@
+       <artifactId>compat</artifactId>
+       <version>${engine.version}</version>
+     </dependency>
+-
+-    <dependency>
+-      <groupId>org.jboss.security</groupId>
+-      <artifactId>jbosssx-bare</artifactId>
+-      <version>${jbosssx-bare.version}</version>
+-      <scope>provided</scope>
+-      <!-- excluding artifacts that are explicitly loaded elsewhere -->
+-      <exclusions>
+-        <exclusion>
+-          <groupId>org.hibernate</groupId>
+-          <artifactId>hibernate</artifactId>
+-        </exclusion>
+-        <exclusion>
+-          <groupId>org.hibernate</groupId>
+-          <artifactId>hibernate-annotations</artifactId>
+-        </exclusion>
+-        <exclusion>
+-          <groupId>org.hibernate</groupId>
+-          <artifactId>hibernate-commons-annotations</artifactId>
+-        </exclusion>
+-        <exclusion>
+-          <groupId>org.hibernate</groupId>
+-          <artifactId>hibernate-validator</artifactId>
+-        </exclusion>
+-        <exclusion>
+-          <groupId>sun-jaxb</groupId>
+-          <artifactId>jaxb-impl</artifactId>
+-        </exclusion>
+-      </exclusions>
+-    </dependency>
+-
+-    <dependency>
+-      <groupId>sun-jaxb</groupId>
+-      <artifactId>jaxb-impl</artifactId>
+-      <version>${jaxb-impl.version}</version>
+-      <scope>provided</scope>
+-    </dependency>
+   </dependencies>
+ 
+   <build>
+@@ -67,17 +30,6 @@
+           </additionalClasspathElements>
+         </configuration>
+       </plugin>
+-      <plugin>
+-          <groupId>org.apache.maven.plugins</groupId>
+-          <artifactId>maven-jar-plugin</artifactId>
+-          <configuration>
+-        <archive>
+-          <manifest>
+-            <mainClass>org.ovirt.engine.core.login.EngineSecureIdentityLoginModule</mainClass>
+-          </manifest>
+-        </archive>
+-          </configuration>
+-      </plugin>
+     </plugins>
+   </build>
+ 
+diff --git a/backend/manager/modules/engineencryptutils/src/main/java/org/ovirt/engine/core/login/EngineSecureIdentityLoginModule.java b/backend/manager/modules/engineencryptutils/src/main/java/org/ovirt/engine/core/login/EngineSecureIdentityLoginModule.java
+deleted file mode 100644
+index 5d2a98f..0000000
+--- a/backend/manager/modules/engineencryptutils/src/main/java/org/ovirt/engine/core/login/EngineSecureIdentityLoginModule.java
++++ /dev/null
+@@ -1,198 +0,0 @@
+-package org.ovirt.engine.core.login;
+-
+-import java.security.AccessController;
+-import java.security.Principal;
+-import java.security.PrivilegedAction;
+-import java.security.acl.Group;
+-import java.util.Map;
+-
+-import javax.resource.spi.security.PasswordCredential;
+-import javax.security.auth.Subject;
+-import javax.security.auth.callback.CallbackHandler;
+-import javax.security.auth.login.LoginException;
+-
+-import org.jboss.resource.security.AbstractPasswordCredentialLoginModule;
+-import org.jboss.security.SimplePrincipal;
+-
+-import org.ovirt.engine.core.compat.LogCompat;
+-import org.ovirt.engine.core.compat.LogFactoryCompat;
+-import org.ovirt.engine.core.engineencryptutils.EncryptionUtils;
+-
+-/**
+- * An example of how one could use this custom login class other than the JBoss default class
+- * {@code org.jboss.resource.security.SecureIdentityLoginModule} which this class is based on:<br>
+- * <li>Add full path to the jar which contains this class to <i>$JBOSS_HOME/$PROFILE/conf/bootstrap/security.xml</i> as
+- * an entry of element &lt;classloader name="security-classloader"...&gt;<br>
+- * e.g.:
+- * <pre>
+- * &lt;root&gt;${jboss.server.home.url}deploy/engine.ear/lib/engine-login-3.0.0-0001.jar&lt;/root&gt;
+- * </pre>
+- * <li>Modify <i>$JBOSS_HOME/$PROFILE/conf/login-config.xml</i> to use the custom login class in element
+- * &lt;application-policy name="EncryptDBPassword"&gt; (a complete element is shown below) e.g.:
+- * <pre>
+- * <code>
+- * &lt;!--login-module code="org.jboss.resource.security.SecureIdentityLoginModule" flag="required"--&gt;
+- * &lt;login-module code="org.ovirt.engine.core.login.EngineSecureIdentityLoginModule" flag="required"&gt;
+- * </pre>
+- * </code> <li>Encrypt the database password for a jca connection factory and set it in <i>EncryptDBPassword</i>
+- * application-policy element:
+- * <code>
+- * <pre>
+- * &lt;application-policy name="EncryptDBPassword"&gt;
+- *      &lt;authentication&gt;
+- *          &lt;!--login-module code="org.jboss.resource.security.SecureIdentityLoginModule" flag="required"--&gt;
+- *          &lt;login-module code="org.ovirt.engine.core.security.login.EngineSecureIdentityLoginModule" flag="required"&gt;
+- *              &lt;module-option name="username"&gt;sa&lt;/module-option&gt;
+- *              &lt;module-option name="password"&gt;-1ef77a3433f8ba8aa370e115b1e73a8b&lt;/module-option&gt;
+- *              &lt;module-option name="managedConnectionFactoryName"&gt;jboss.jca:name=ENGINEDataSource,service=LocalTxCM&lt;/module-option&gt;
+- *          &lt;/login-module&gt;
+- *       &lt;/authentication&gt;
+- *   &lt;/application-policy&gt;
+- * </pre>
+- * </code>
+- * <li>{@link #decode()} responsible for decoding the password by a customized algorithm as provided by {@link
+- * EncryptionUtils.#decode(String, String, String)}<br>
+- * or using the default if not specified any.
+- * <li>The default value for cipher algorithm is Blowfish, and key derived from the phrase 'jaas is the way'.<br>
+- * However, it is designed to support additional algorithms and keys. The full list of supported algorithms is <br>
+- * specified in the following link.
+- * @link<a href="http://download.oracle.com/javase/6/docs/technotes/guides/security/StandardNames.html">Java
+- *         Cryptography Algorithms</a>
+- */
+-public class EngineSecureIdentityLoginModule extends AbstractPasswordCredentialLoginModule {
+-
+-    private static final LogCompat log = LogFactoryCompat.getLog(EngineSecureIdentityLoginModule.class);
+-
+-    private String username;
+-    private String password;
+-
+-    public void initialize(Subject subject, CallbackHandler handler, Map sharedState, Map options) {
+-        super.initialize(subject, handler, sharedState, options);
+-        username = (String) options.get("username");
+-        if (username == null) {
+-            username = (String) options.get("userName");
+-            if (username == null) {
+-                throw new IllegalArgumentException("The user name is a required option");
+-            }
+-        }
+-        password = (String) options.get("password");
+-        if (password == null) {
+-            throw new IllegalArgumentException("The password is a required option");
+-        }
+-    }
+-
+-    public boolean login() throws LoginException {
+-        log.trace("login called");
+-        if (super.login() == true)
+-            return true;
+-
+-        super.loginOk = true;
+-        return true;
+-    }
+-
+-    public boolean commit() throws LoginException {
+-        Principal principal = new SimplePrincipal(username);
+-        AccessController.doPrivileged(new AddPrincipalsAction(subject, principal));
+-        sharedState.put("javax.security.auth.login.name", username);
+-        // Decode the encrypted password
+-        try {
+-            char[] decodedPassword = decode(password);
+-            PasswordCredential cred = new PasswordCredential(username, decodedPassword);
+-            cred.setManagedConnectionFactory(getMcf());
+-            AccessController.doPrivileged(new AddCredentialsAction(subject, cred));
+-        } catch (Exception e) {
+-            log.debug("Failed to decode password", e);
+-            throw new LoginException("Failed to decode password: " + e.getMessage());
+-        }
+-        return true;
+-    }
+-
+-    public boolean abort() {
+-        username = null;
+-        password = null;
+-        return true;
+-    }
+-
+-    protected Principal getIdentity() {
+-        log.trace("getIdentity called, username=" + username);
+-        Principal principal = new SimplePrincipal(username);
+-        return principal;
+-    }
+-
+-    protected Group[] getRoleSets() throws LoginException {
+-        Group[] empty = new Group[0];
+-        return empty;
+-    }
+-
+-    private static String encode(String secret, String keyMaterial, String algorithm) {
+-        return EncryptionUtils.encode(secret, keyMaterial, algorithm);
+-    }
+-
+-    /**
+-     * responsible for decoding the password by a customized algorithm as provided by {@link
+-     * EncryptionUtils.decode(password, key, algorithm)}. Customizing algorithm and key material could be achieved by
+-     * supplying other than null values to {@link EncryptionUtils.decode(password, key, algorithm)}
+-     */
+-    private static char[] decode(String secret) {
+-        String decode = EncryptionUtils.decode(secret, null, null);
+-        return decode != null ? decode.toCharArray() : null;
+-    }
+-
+-    static class AddPrincipalsAction implements PrivilegedAction<Object> {
+-        Subject subject;
+-        Principal p;
+-
+-        AddPrincipalsAction(Subject subject, Principal p) {
+-            this.subject = subject;
+-            this.p = p;
+-        }
+-
+-        public Object run() {
+-            subject.getPrincipals().add(p);
+-            return null;
+-        }
+-    }
+-
+-    static class AddCredentialsAction implements PrivilegedAction<Object> {
+-        Subject subject;
+-        PasswordCredential cred;
+-
+-        AddCredentialsAction(Subject subject, PasswordCredential cred) {
+-            this.subject = subject;
+-            this.cred = cred;
+-        }
+-
+-        public Object run() {
+-            subject.getPrivateCredentials().add(cred);
+-            return null;
+-        }
+-    }
+-
+-    /**
+-     * Main entry point to encrypt a password using the hard-coded pass phrase
+-     * @param args
+-     * <br>
+-     *            - [0] = the password to encode<br>
+-     *            - [1] = the key material for encoding<br>
+-     *            - [2] = the algorithm for encoding
+-     * @throws Exception
+-     */
+-    public static void main(String[] args) throws Exception {
+-        String encode = null;
+-
+-        switch (args.length) {
+-        case 1:
+-            encode = encode(args[0], null, null);
+-            System.out.println("Encoded password: " + encode);
+-            break;
+-        case 3:
+-            encode = encode(args[0], args[1], args[2]);
+-            System.out.println("Encoded password: " + encode);
+-            break;
+-        default:
+-            System.out.println("Usage: <password> [<key material> <algorithm>]");
+-            break;
+-        }
+-    }
+-}
+-
+-- 
+1.7.7.6
+
diff --git a/ovirt-engine-remove-jboss-ejb-specific-annotations.patch b/ovirt-engine-remove-jboss-ejb-specific-annotations.patch
new file mode 100644
index 0000000..af09e72
--- /dev/null
+++ b/ovirt-engine-remove-jboss-ejb-specific-annotations.patch
@@ -0,0 +1,45 @@
+From 55ebb080ff606d17cca2d159c06d55b5f53cad30 Mon Sep 17 00:00:00 2001
+From: Juan Hernandez <juan.hernandez at redhat.com>
+Date: Thu, 15 Mar 2012 10:53:30 +0100
+Subject: [PATCH 14/14] Remove JBoss EJB specific annotations
+
+---
+ backend/manager/modules/beans/scheduler/pom.xml |    5 -----
+ backend/manager/modules/bll/pom.xml             |    5 -----
+ 2 files changed, 10 deletions(-)
+
+diff --git a/backend/manager/modules/beans/scheduler/pom.xml b/backend/manager/modules/beans/scheduler/pom.xml
+index e77e4dc..a9b0522 100644
+--- a/backend/manager/modules/beans/scheduler/pom.xml
++++ b/backend/manager/modules/beans/scheduler/pom.xml
+@@ -29,11 +29,6 @@
+       <groupId>org.quartz-scheduler</groupId>
+       <artifactId>quartz</artifactId>
+     </dependency>
+-
+-    <dependency>
+-      <groupId>org.jboss.ejb3</groupId>
+-      <artifactId>jboss-ejb3-ext-api</artifactId>
+-    </dependency>
+   </dependencies>
+ 
+   <build>
+diff --git a/backend/manager/modules/bll/pom.xml b/backend/manager/modules/bll/pom.xml
+index 15160c6..4c56525 100644
+--- a/backend/manager/modules/bll/pom.xml
++++ b/backend/manager/modules/bll/pom.xml
+@@ -91,11 +91,6 @@
+     </dependency>
+ 
+     <dependency>
+-      <groupId>org.jboss.ejb3</groupId>
+-      <artifactId>jboss-ejb3-ext-api</artifactId>
+-    </dependency>
+-
+-    <dependency>
+       <groupId>commons-collections</groupId>
+       <artifactId>commons-collections</artifactId>
+     </dependency>
+-- 
+1.7.9.3
+
diff --git a/ovirt-engine-remove-jboss-interceptors.patch b/ovirt-engine-remove-jboss-interceptors.patch
new file mode 100644
index 0000000..218d869
--- /dev/null
+++ b/ovirt-engine-remove-jboss-interceptors.patch
@@ -0,0 +1,48 @@
+From 6ea46f9d35015436115647299fc44b68d96cc298 Mon Sep 17 00:00:00 2001
+From: Juan Hernandez <juan.hernandez at redhat.com>
+Date: Thu, 16 Feb 2012 12:03:15 +0100
+Subject: [PATCH] core: Remove dependency on jboss interceptors (#NA)
+
+This dependency is not needed and it complicates building of the
+RPMs in Fedora.
+
+Change-Id: Ibcd421297a6f7a2894177b65f8646b3016282851
+---
+ backend/manager/modules/utils/pom.xml |    4 ----
+ pom.xml                               |    5 -----
+ 2 files changed, 0 insertions(+), 9 deletions(-)
+
+diff --git a/backend/manager/modules/utils/pom.xml b/backend/manager/modules/utils/pom.xml
+index 1e01679..a7bf1d9 100644
+--- a/backend/manager/modules/utils/pom.xml
++++ b/backend/manager/modules/utils/pom.xml
+@@ -14,10 +14,6 @@
+ 
+   <dependencies>
+    <dependency>
+-      <groupId>org.jboss.interceptor</groupId>
+-      <artifactId>jboss-interceptor-core</artifactId>
+-   </dependency>
+-   <dependency>
+       <groupId>org.jboss.spec.javax.interceptor</groupId>
+       <artifactId>jboss-interceptors-api_1.1_spec</artifactId>
+       <version>1.0.0.Final</version>
+diff --git a/pom.xml b/pom.xml
+index 50a249a..923f05f 100644
+--- a/pom.xml
++++ b/pom.xml
+@@ -79,11 +79,6 @@
+         <version>1.0.0.Final</version>
+       </dependency>
+       <dependency>
+-        <groupId>org.jboss.interceptor</groupId>
+-        <artifactId>jboss-interceptor-core</artifactId>
+-        <version>2.0.0.Alpha3</version>
+-      </dependency>
+-      <dependency>
+         <groupId>org.quartz-scheduler</groupId>
+         <artifactId>quartz</artifactId>
+         <version>${quartz.version}</version>
+-- 
+1.7.7.6
+
diff --git a/ovirt-engine-remove-jna.patch b/ovirt-engine-remove-jna.patch
new file mode 100644
index 0000000..bd16b11
--- /dev/null
+++ b/ovirt-engine-remove-jna.patch
@@ -0,0 +1,659 @@
+From 4b6a09c08774f25c5d1675d1b96fdc77d90492e5 Mon Sep 17 00:00:00 2001
+From: Juan Hernandez <juan.hernandez at redhat.com>
+Date: Sat, 11 Feb 2012 22:03:42 +0100
+Subject: [PATCH] packaging: Remove dependency on JNA
+
+Change-Id: I09d3afb6fd1df62db78848fb9a1eb72edd49f656
+---
+ backend/manager/modules/utils/pom.xml              |    5 -
+ .../core/utils/jwin32/ConvertSidException.java     |    9 -
+ .../core/utils/jwin32/LOCAL_GROUP_INFO_0.java      |   27 --
+ .../ovirt/engine/core/utils/jwin32/NetStruct.java  |   60 -----
+ .../engine/core/utils/jwin32/USER_INFO_20.java     |   30 ---
+ .../org/ovirt/engine/core/utils/jwin32/jwin32.java |  250 --------------------
+ .../ovirt/engine/core/utils/jwin32/AppTest.java    |  206 ----------------
+ 7 files changed, 0 insertions(+), 587 deletions(-)
+ delete mode 100644 backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/jwin32/ConvertSidException.java
+ delete mode 100644 backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/jwin32/LOCAL_GROUP_INFO_0.java
+ delete mode 100644 backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/jwin32/NetStruct.java
+ delete mode 100644 backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/jwin32/USER_INFO_20.java
+ delete mode 100644 backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/jwin32/jwin32.java
+ delete mode 100644 backend/manager/modules/utils/src/test/java/org/ovirt/engine/core/utils/jwin32/AppTest.java
+
+diff --git a/backend/manager/modules/utils/pom.xml b/backend/manager/modules/utils/pom.xml
+index d47ed1f..d80a516 100644
+--- a/backend/manager/modules/utils/pom.xml
++++ b/backend/manager/modules/utils/pom.xml
+@@ -118,11 +118,6 @@
+        <groupId>org.codehaus.jackson</groupId>
+        <artifactId>jackson-mapper-asl</artifactId>
+     </dependency>
+-    <dependency>
+-      <groupId>com.sun.jna</groupId>
+-      <artifactId>jna</artifactId>
+-      <version>3.0.9</version>
+-    </dependency>
+ 
+     <dependency>
+       <groupId>org.easymock</groupId>
+diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/jwin32/ConvertSidException.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/jwin32/ConvertSidException.java
+deleted file mode 100644
+index f0fbd51..0000000
+--- a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/jwin32/ConvertSidException.java
++++ /dev/null
+@@ -1,9 +0,0 @@
+-package org.ovirt.engine.core.utils.jwin32;
+-
+-import org.ovirt.engine.core.compat.ApplicationException;
+-
+-public class ConvertSidException extends ApplicationException {
+-    public ConvertSidException(String message) {
+-        super(message);
+-    }
+-}
+diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/jwin32/LOCAL_GROUP_INFO_0.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/jwin32/LOCAL_GROUP_INFO_0.java
+deleted file mode 100644
+index 44659f1..0000000
+--- a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/jwin32/LOCAL_GROUP_INFO_0.java
++++ /dev/null
+@@ -1,27 +0,0 @@
+-package org.ovirt.engine.core.utils.jwin32;
+-
+-
+-import com.sun.jna.Pointer;
+-import com.sun.jna.WString;
+-import com.sun.jna.Structure;
+-
+-
+-public class LOCAL_GROUP_INFO_0 extends NetStruct {
+-    public static class ByReference extends LOCAL_GROUP_INFO_0 implements Structure.ByReference {
+-    }
+-
+-    public LOCAL_GROUP_INFO_0() {
+-        super();
+-    }
+-
+-    public LOCAL_GROUP_INFO_0(Pointer memory) {
+-        useMemory(memory);
+-        read();
+-    }
+-
+-    public WString lgrpi0_name;
+-
+-    public String getSID() throws ConvertSidException {
+-        return (getSID(lgrpi0_name));
+-    }
+-}
+diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/jwin32/NetStruct.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/jwin32/NetStruct.java
+deleted file mode 100644
+index f0a01e2..0000000
+--- a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/jwin32/NetStruct.java
++++ /dev/null
+@@ -1,60 +0,0 @@
+-package org.ovirt.engine.core.utils.jwin32;
+-
+-import com.sun.jna.ptr.IntByReference;
+-import com.sun.jna.WString;
+-import com.sun.jna.Structure;
+-import com.sun.jna.ptr.PointerByReference;
+-
+-import org.ovirt.engine.core.compat.LogCompat;
+-import org.ovirt.engine.core.compat.LogFactoryCompat;
+-
+-public abstract class NetStruct extends Structure {
+-    private static LogCompat log = LogFactoryCompat.getLog(USER_INFO_20.class);
+-
+-    protected String getSID(WString strAccountName) throws ConvertSidException {
+-        log.debug("getSID entry");
+-
+-        byte[] sid;
+-        String retSID = "";
+-        IntByReference cbSid;
+-        PointerByReference peUse;
+-        IntByReference cchReferencedDomainName;
+-        PointerByReference stringSID = new PointerByReference();
+-        char[] referencedDomainName;
+-
+-        cbSid = new IntByReference(jwin32.SECURITY_MAX_SID_SIZE);
+-        sid = new byte[cbSid.getValue()];
+-        cchReferencedDomainName = new IntByReference(100);
+-        referencedDomainName = new char[cchReferencedDomainName.getValue()];
+-        peUse = new PointerByReference();
+-
+-        if (!jwin32.advapi32.LookupAccountNameW(
+-                new WString(""),
+-                strAccountName,
+-                sid,
+-                cbSid,
+-                referencedDomainName,
+-                cchReferencedDomainName,
+-                peUse
+-                )) {
+-            log.error(
+-                    "LookupAccountNameA failed for " + strAccountName +
+-                            " GetLastError=" + jwin32.kernel32.GetLastError()
+-                    );
+-            throw new ConvertSidException("LookupAccountNameA failed for" + strAccountName);
+-        }
+-
+-        if (!jwin32.advapi32.ConvertSidToStringSidA(sid, stringSID)) {
+-            log.error(
+-                    "ConvertSidToStringSidA failed for " + strAccountName +
+-                            " GetLastError=" + jwin32.kernel32.GetLastError()
+-                    );
+-            throw new ConvertSidException("ConvertSidToStringSidA failed for" + strAccountName);
+-        }
+-
+-        retSID = stringSID.getValue().getString(0, false);
+-        jwin32.kernel32.LocalFree(stringSID.getValue());
+-
+-        return (retSID);
+-    }
+-}
+diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/jwin32/USER_INFO_20.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/jwin32/USER_INFO_20.java
+deleted file mode 100644
+index fc3a085..0000000
+--- a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/jwin32/USER_INFO_20.java
++++ /dev/null
+@@ -1,30 +0,0 @@
+-package org.ovirt.engine.core.utils.jwin32;
+-
+-import com.sun.jna.WString;
+-import com.sun.jna.Structure;
+-import com.sun.jna.Pointer;
+-
+-
+-public class USER_INFO_20 extends NetStruct {
+-    public static class ByReference extends USER_INFO_20 implements Structure.ByReference {
+-    }
+-
+-    public WString usri20_name;
+-    public WString usri20_full_name;
+-    public WString usri20_comment;
+-    public int usri20_flags;
+-    public int usri20_user_id;
+-
+-    public USER_INFO_20() {
+-        super();
+-    }
+-
+-    public USER_INFO_20(Pointer memory) {
+-        useMemory(memory);
+-        read();
+-    }
+-
+-    public String getSID() throws ConvertSidException {
+-        return (getSID(usri20_name));
+-    }
+-}
+diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/jwin32/jwin32.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/jwin32/jwin32.java
+deleted file mode 100644
+index d049810..0000000
+--- a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/jwin32/jwin32.java
++++ /dev/null
+@@ -1,250 +0,0 @@
+-package org.ovirt.engine.core.utils.jwin32;
+-
+-import com.sun.jna.ptr.IntByReference;
+-import com.sun.jna.win32.StdCallLibrary;
+-import com.sun.jna.Native;
+-import com.sun.jna.WString;
+-import com.sun.jna.Platform;
+-import com.sun.jna.Pointer;
+-import com.sun.jna.ptr.PointerByReference;
+-
+-public interface jwin32 extends StdCallLibrary {
+-    public static final int LOGON32_PROVIDER_DEFAULT = 0;
+-
+-    public static final int LOGON32_LOGON_INTERACTIVE = 2;
+-    public static final int LOGON32_LOGON_NETWORK = 3;
+-    public static final int LOGON32_LOGON_BATCH = 4;
+-    public static final int LOGON32_LOGON_SERVICE = 5;
+-    public static final int LOGON32_LOGON_UNLOCK = 7;
+-    public static final int LOGON32_LOGON_NETWORK_CLEARTEXT = 8;
+-    public static final int LOGON32_LOGON_NEW_CREDENTIALS = 9;
+-
+-    public static final int NERR_Success = 0;
+-    public static final int ERROR_MORE_DATA = 234;
+-
+-    public static final int FILTER_TEMP_DUPLICATE_ACCOUNT = 0x0001;
+-    public static final int FILTER_NORMAL_ACCOUNT = 0x0002;
+-    public static final int FILTER_INTERDOMAIN_TRUST_ACCOUNT = 0x0008;
+-    public static final int FILTER_WORKSTATION_TRUST_ACCOUNT = 0x0010;
+-    public static final int FILTER_SERVER_TRUST_ACCOUNT = 0x0020;
+-
+-    public static final int MAX_PREFERRED_LENGTH = -1;
+-
+-    public static final int UF_SCRIPT = 0x0001;
+-    public static final int UF_ACCOUNTDISABLE = 0x0002;
+-    public static final int UF_HOMEDIR_REQUIRED = 0x0008;
+-    public static final int UF_LOCKOUT = 0x0010;
+-    public static final int UF_PASSWD_NOTREQD = 0x0020;
+-    public static final int UF_PASSWD_CANT_CHANGE = 0x0040;
+-    public static final int UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED = 0x0080;
+-
+-    //
+-    // Account type bits as part of usri_flags.
+-    //
+-    public static final int UF_TEMP_DUPLICATE_ACCOUNT = 0x0100;
+-    public static final int UF_NORMAL_ACCOUNT = 0x0200;
+-    public static final int UF_INTERDOMAIN_TRUST_ACCOUNT = 0x0800;
+-    public static final int UF_WORKSTATION_TRUST_ACCOUNT = 0x1000;
+-    public static final int UF_SERVER_TRUST_ACCOUNT = 0x2000;
+-
+-    public static final int UF_MACHINE_ACCOUNT_MASK = (
+-            UF_INTERDOMAIN_TRUST_ACCOUNT |
+-                    UF_WORKSTATION_TRUST_ACCOUNT |
+-            UF_SERVER_TRUST_ACCOUNT
+-            );
+-
+-    public static final int UF_ACCOUNT_TYPE_MASK = (
+-            UF_TEMP_DUPLICATE_ACCOUNT |
+-                    UF_NORMAL_ACCOUNT |
+-                    UF_INTERDOMAIN_TRUST_ACCOUNT |
+-                    UF_WORKSTATION_TRUST_ACCOUNT |
+-            UF_SERVER_TRUST_ACCOUNT
+-            );
+-
+-    public static final int UF_DONT_EXPIRE_PASSWD = 0x10000;
+-    public static final int UF_MNS_LOGON_ACCOUNT = 0x20000;
+-    public static final int UF_SMARTCARD_REQUIRED = 0x40000;
+-    public static final int UF_TRUSTED_FOR_DELEGATION = 0x80000;
+-    public static final int UF_NOT_DELEGATED = 0x100000;
+-    public static final int UF_USE_DES_KEY_ONLY = 0x200000;
+-    public static final int UF_DONT_REQUIRE_PREAUTH = 0x400000;
+-    public static final int UF_PASSWORD_EXPIRED = 0x800000;
+-    public static final int UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION = 0x1000000;
+-    public static final int UF_NO_AUTH_DATA_REQUIRED = 0x2000000;
+-    public static final int UF_PARTIAL_SECRETS_ACCOUNT = 0x4000000;
+-    public static final int UF_USE_AES_KEYS = 0x8000000;
+-
+-    public static final int SECURITY_MAX_SID_SIZE = 68; // This is 32bit need to figure out 64
+-
+-    public static final int UF_SETTABLE_BITS = (
+-            UF_SCRIPT |
+-                    UF_ACCOUNTDISABLE |
+-                    UF_LOCKOUT |
+-                    UF_HOMEDIR_REQUIRED |
+-                    UF_PASSWD_NOTREQD |
+-                    UF_PASSWD_CANT_CHANGE |
+-                    UF_ACCOUNT_TYPE_MASK |
+-                    UF_DONT_EXPIRE_PASSWD |
+-                    UF_MNS_LOGON_ACCOUNT |
+-                    UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED |
+-                    UF_SMARTCARD_REQUIRED |
+-                    UF_TRUSTED_FOR_DELEGATION |
+-                    UF_NOT_DELEGATED |
+-                    UF_USE_DES_KEY_ONLY |
+-                    UF_DONT_REQUIRE_PREAUTH |
+-                    UF_PASSWORD_EXPIRED |
+-                    UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION |
+-                    UF_NO_AUTH_DATA_REQUIRED |
+-                    UF_USE_AES_KEYS |
+-            UF_PARTIAL_SECRETS_ACCOUNT
+-            );
+-
+-    jwin32 advapi32 = (jwin32) Native.loadLibrary(
+-            (Platform.isWindows() ? "advapi32" : "c"),
+-            jwin32.class
+-            );
+-
+-    jwin32 netapi32 = (jwin32) Native.loadLibrary(
+-            (Platform.isWindows() ? "netapi32" : "c"),
+-            jwin32.class
+-            );
+-
+-    jwin32 kernel32 = (jwin32) Native.loadLibrary(
+-            (Platform.isWindows() ? "kernel32" : "c"),
+-            jwin32.class
+-            );
+-
+-    /*
+-     * public boolean LookupAccountName ( String lpSystemName, String lpAccountName, Pointer Sid, IntByReference cbSid,
+-     * char[] ReferencedDomainName, IntByReference cchReferencedDomainName, PointerByReference peUse );
+-     */
+-    public boolean LookupAccountNameA(
+-            String lpSystemName,
+-            String lpAccountName,
+-            byte[] Sid,
+-            IntByReference cbSid,
+-            char[] ReferencedDomainName, // not sure it should not be byte, only for the A version
+-            IntByReference cchReferencedDomainName,
+-            PointerByReference peUse
+-            );
+-
+-    public boolean LookupAccountNameW(
+-            WString lpSystemName,
+-            WString lpAccountName,
+-            byte[] Sid,
+-            IntByReference cbSid,
+-            char[] ReferencedDomainName,
+-            IntByReference cchReferencedDomainName,
+-            PointerByReference peUse
+-            );
+-
+-    public boolean CloseHandle(
+-            int hObject
+-            );
+-
+-    public boolean ConvertSidToStringSidA(
+-            byte[] Sid,
+-            PointerByReference stringSID
+-            );
+-
+-    public int GetLastError();
+-
+-    public boolean ImpersonateLoggedOnUser(
+-            IntByReference hToken
+-            );
+-
+-    public Pointer LocalFree(Pointer hMem);
+-
+-    public boolean LogonUserA(
+-            String userName,
+-            String domain,
+-            String password,
+-            int dwLogonType,
+-            int dwLogonProvider,
+-            IntByReference lToken
+-            );
+-
+-    public boolean LogonUserW(
+-            WString userName,
+-            WString domain,
+-            WString password,
+-            int dwLogonType,
+-            int dwLogonProvider,
+-            IntByReference lToken
+-            );
+-
+-    public int NetUserGetInfo(
+-            WString servername,
+-            WString username,
+-            int level,
+-            // PUSER_INFO_23.ByReference bufptr
+-            PointerByReference bufptr
+-            );
+-
+-    public int NetUserEnum(
+-            WString servername,
+-            int level,
+-            int filter,
+-            PointerByReference bufptr,
+-            int prefmaxlen,
+-            IntByReference entriesread,
+-            IntByReference totalentries,
+-            IntByReference resume_handle
+-            );
+-
+-    public int NetGroupGetInfo(
+-            WString servername,
+-            WString username,
+-            int level,
+-            PointerByReference bufptr
+-            );
+-
+-    public int NetLocalGroupEnum(
+-            WString servername,
+-            int level,
+-            PointerByReference bufptr,
+-            int prefmaxlen,
+-            IntByReference entriesread,
+-            IntByReference totalentries,
+-            IntByReference resume_handle
+-            );
+-
+-    public int NetLocalGroupGetInfo(
+-            WString servername,
+-            WString groupname,
+-            int level,
+-            PointerByReference bufptr
+-            );
+-
+-    public int NetGroupEnum(
+-            WString servername,
+-            int level,
+-            PointerByReference bufptr, // PointerByReference bufptr,
+-            int prefmaxlen,
+-            IntByReference entriesread,
+-            IntByReference totalentries,
+-            IntByReference resume_handle
+-            );
+-
+-    public int NetQueryDisplayInformation(
+-            WString servername,
+-            int level,
+-            int index,
+-            int entriesRequested,
+-            int prefferedMaximumLength,
+-            IntByReference totalentries,
+-            PointerByReference bufptr
+-            );
+-
+-    public int NetUserChangePassword(
+-            WString domainname,
+-            WString username,
+-            WString oldpassword,
+-            WString newpassword
+-            );
+-
+-    public int NetApiBufferFree(
+-            Pointer Buffer
+-            );
+-
+-}
+diff --git a/backend/manager/modules/utils/src/test/java/org/ovirt/engine/core/utils/jwin32/AppTest.java b/backend/manager/modules/utils/src/test/java/org/ovirt/engine/core/utils/jwin32/AppTest.java
+deleted file mode 100644
+index 5bd5ce9..0000000
+--- a/backend/manager/modules/utils/src/test/java/org/ovirt/engine/core/utils/jwin32/AppTest.java
++++ /dev/null
+@@ -1,206 +0,0 @@
+-package org.ovirt.engine.core.utils.jwin32;
+-
+-import com.sun.jna.WString;
+-import com.sun.jna.ptr.IntByReference;
+-import com.sun.jna.ptr.PointerByReference;
+-
+-import java.io.PrintStream;
+-import java.io.UnsupportedEncodingException;
+-
+-import java.nio.ByteBuffer;
+-import java.nio.ByteOrder;
+-
+-import org.ovirt.engine.core.compat.*;
+-
+-/**
+- * Unit test for simple App.
+- */
+-public class AppTest {
+-    private static boolean isRunningOnWindows() {
+-        String osName = System.getProperty("os.name");
+-        return osName.contains("Windows");
+-    }
+-
+-    /**
+-     * Rigourous Test :-)
+-     */
+-    /*
+-     * public void testApp() { IntByReference i = new IntByReference();
+-     *
+-     * assertTrue ( advapi32.INSTANCE.LogonUserA ( "TestUser", "", "TestUser", 2, 0, i ) );
+-     *
+-     * assertTrue ( advapi32.INSTANCE.LogonUserW ( new WString("TestUser"), new WString(""), new WString("TestUser"), 2,
+-     * advapi32.LOGON32_PROVIDER_DEFAULT, i ) ); }
+-     */
+-    public static String getAccountSid(String account) {
+-
+-        if (!isRunningOnWindows()) {
+-            System.out.println("getAccountSid should be run on windows");
+-            return null;
+-        }
+-
+-        byte[] sid;
+-        String retSID = "";
+-        IntByReference cbSid;
+-        PointerByReference peUse;
+-        IntByReference cchReferencedDomainName;
+-        PointerByReference stringSID = new PointerByReference();
+-        char[] referencedDomainName;
+-
+-        cbSid = new IntByReference(jwin32.SECURITY_MAX_SID_SIZE);
+-        sid = new byte[cbSid.getValue()];
+-        cchReferencedDomainName = new IntByReference(100);
+-        referencedDomainName = new char[cchReferencedDomainName.getValue()];
+-        peUse = new PointerByReference();
+-
+-        if (!jwin32.advapi32.LookupAccountNameA(
+-                "",
+-                account,
+-                sid,
+-                cbSid,
+-                referencedDomainName,
+-                cchReferencedDomainName,
+-                peUse
+-                )) {
+-            System.out.println("Error");
+-        }
+-
+-        if (!jwin32.advapi32.ConvertSidToStringSidA(sid, stringSID)) {
+-            // ERROR
+-            System.out.println("!ERROR=!" + jwin32.kernel32.GetLastError() + " cbSid=" + cbSid.getValue());
+-        }
+-
+-        retSID = stringSID.getValue().getString(0, false);
+-        jwin32.kernel32.LocalFree(stringSID.getValue());
+-
+-        return (retSID);
+-    }
+-
+-    @org.junit.Test
+-    public void testGroupsEnum() throws UnsupportedEncodingException {
+-
+-        if (!isRunningOnWindows()) {
+-            System.out.println("testGroupsEnum should be run on windows");
+-            return;
+-        }
+-        int nStatus;
+-        PointerByReference pGI0 = new PointerByReference();
+-        PointerByReference pGI1 = new PointerByReference();
+-        IntByReference nEntriesRead = new IntByReference();
+-        IntByReference nTotalEntries = new IntByReference();
+-        IntByReference nResumeHandle = new IntByReference();
+-
+-        PrintStream out = new PrintStream(System.out, true, "UTF-8");
+-
+-        try {
+-            nStatus = jwin32.netapi32.NetLocalGroupEnum(
+-                    new WString(""),
+-                    0,
+-                    pGI0,
+-                    jwin32.MAX_PREFERRED_LENGTH,
+-                    nEntriesRead,
+-                    nTotalEntries,
+-                    null
+-                    );
+-
+-            System.out.println("NetGroupEnum return=" + nStatus + " nEntriesRead=" + nEntriesRead.getValue());
+-
+-            if (nStatus == jwin32.NERR_Success ||
+-                    nStatus == jwin32.ERROR_MORE_DATA) {
+-                LOCAL_GROUP_INFO_0 groupsArr = new LOCAL_GROUP_INFO_0(pGI0.getValue());
+-                LOCAL_GROUP_INFO_0[] groups = (LOCAL_GROUP_INFO_0[]) groupsArr.toArray(nEntriesRead.getValue());
+-
+-                for (LOCAL_GROUP_INFO_0 group : groups) {
+-                    String retSID;
+-                    PointerByReference group_sid;
+-                    PointerByReference stringSID = new PointerByReference();
+-                    IntByReference nSIDSize = new IntByReference();
+-
+-                    out.println("!Group name=" + group.lgrpi0_name.toString() + "!");
+-                    out.println("!    sid=!" + getAccountSid(group.lgrpi0_name.toString()));
+-                }
+-
+-            }
+-
+-        } catch (Exception e) {
+-            System.out.println(e.getMessage());
+-        }
+-
+-    }
+-
+-    public static byte[] toByta(long data) {
+-        return new byte[] {
+-                (byte) ((data >> 56) & 0xff),
+-                (byte) ((data >> 48) & 0xff),
+-                (byte) ((data >> 40) & 0xff),
+-                (byte) ((data >> 32) & 0xff),
+-                (byte) ((data >> 24) & 0xff),
+-                (byte) ((data >> 16) & 0xff),
+-                (byte) ((data >> 8) & 0xff),
+-                (byte) ((data >> 0) & 0xff), };
+-    }
+-
+-    @org.junit.Test
+-    public void testSidtoGuid() throws UnsupportedEncodingException {
+-
+-        if (!isRunningOnWindows()) {
+-            System.out.println("testSidtoGuid should be run on windows");
+-            return;
+-        }
+-
+-        String strSid = getAccountSid("Administrator");
+-        int x = 0;
+-
+-        PrintStream out = new PrintStream(System.out, true, "UTF-8");
+-
+-        try {
+-            ByteBuffer bb = ByteBuffer.allocate(16);
+-            bb.order(ByteOrder.LITTLE_ENDIAN);
+-
+-            String[] arrSidParts = strSid.split("-");
+-            for (int i = 4; i < arrSidParts.length; i++) {
+-                bb.putInt((int) Long.parseLong(arrSidParts[i]));
+-            }
+-
+-            Guid guid = new Guid(bb.array(), false);
+-            out.println(guid.toString());
+-
+-        } catch (Exception e) {
+-            out.println("!" + e.getMessage() + "!");
+-            e.printStackTrace();
+-        }
+-    }
+-
+-    @org.junit.Test
+-    public void testGroupDisplay() {
+-        try {
+-
+-            if (!isRunningOnWindows()) {
+-                System.out.println("test should be run on windows");
+-                return;
+-            }
+-
+-            PointerByReference pNDG = new PointerByReference();
+-            IntByReference nEntriesRead = new IntByReference();
+-            int nStatus = jwin32.netapi32.NetQueryDisplayInformation(
+-                    new WString(""),
+-                    3,
+-                    0,
+-                    100,
+-                    jwin32.MAX_PREFERRED_LENGTH,
+-                    nEntriesRead,
+-                    pNDG);
+-
+-            System.out.println("NetQueryDisplayInformation return " + nStatus);
+-
+-            if (nStatus == jwin32.NERR_Success ||
+-                    nStatus == jwin32.ERROR_MORE_DATA) {
+-
+-                System.out.println("Returned " + nEntriesRead.getValue() + " entries ");
+-            }
+-
+-        } catch (Exception ex) {
+-            ex.printStackTrace();
+-        }
+-    }
+-}
+-- 
+1.7.7.6
+
diff --git a/ovirt-engine-remove-local-user-authentication.patch b/ovirt-engine-remove-local-user-authentication.patch
new file mode 100644
index 0000000..d7ae832
--- /dev/null
+++ b/ovirt-engine-remove-local-user-authentication.patch
@@ -0,0 +1,732 @@
+From 2cbc913e9dd532a04e26ce879f35ddcadd88e034 Mon Sep 17 00:00:00 2001
+From: Juan Hernandez <juan.hernandez at redhat.com>
+Date: Thu, 16 Feb 2012 17:27:20 +0100
+Subject: [PATCH] Remove local user authentication
+
+This is only needed in Windows.
+
+Change-Id: I6c35052bb4e359c2a09a466804f9d1be80f8b240
+---
+ .../bll/adbroker/LUAuthenticateUserCommand.java    |   72 -----
+ .../core/bll/adbroker/LUBrokerCommandBase.java     |  289 --------------------
+ .../bll/adbroker/LUChangeUserPasswordCommand.java  |   36 ---
+ .../adbroker/LUCreateComputerAccountCommand.java   |   12 -
+ .../bll/adbroker/LUGetAdGroupByGroupIdCommand.java |   30 --
+ .../bll/adbroker/LUGetAdUserByUserIdCommand.java   |   33 ---
+ .../adbroker/LUGetAdUserByUserIdListCommand.java   |   18 --
+ .../bll/adbroker/LUGetAdUserByUserNameCommand.java |   52 ----
+ .../bll/adbroker/LUSearchGroupsByQueryCommand.java |   42 ---
+ .../bll/adbroker/LUSearchUserByQueryCommand.java   |   38 ---
+ .../engine/core/bll/adbroker/LocalUserBroker.java  |    8 -
+ 11 files changed, 0 insertions(+), 630 deletions(-)
+ delete mode 100644 backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUAuthenticateUserCommand.java
+ delete mode 100644 backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUBrokerCommandBase.java
+ delete mode 100644 backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUChangeUserPasswordCommand.java
+ delete mode 100644 backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUCreateComputerAccountCommand.java
+ delete mode 100644 backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUGetAdGroupByGroupIdCommand.java
+ delete mode 100644 backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUGetAdUserByUserIdCommand.java
+ delete mode 100644 backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUGetAdUserByUserIdListCommand.java
+ delete mode 100644 backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUGetAdUserByUserNameCommand.java
+ delete mode 100644 backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUSearchGroupsByQueryCommand.java
+ delete mode 100644 backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUSearchUserByQueryCommand.java
+ delete mode 100644 backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LocalUserBroker.java
+
+diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUAuthenticateUserCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUAuthenticateUserCommand.java
+deleted file mode 100644
+index 80ab637..0000000
+--- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUAuthenticateUserCommand.java
++++ /dev/null
+@@ -1,72 +0,0 @@
+-package org.ovirt.engine.core.bll.adbroker;
+-
+-import org.ovirt.engine.core.bll.WindowsErrorsTranslationMap;
+-import org.ovirt.engine.core.common.businessentities.AdUser;
+-import org.ovirt.engine.core.compat.LogCompat;
+-import org.ovirt.engine.core.compat.LogFactoryCompat;
+-import org.ovirt.engine.core.dal.VdcBllMessages;
+-import org.ovirt.engine.core.utils.jwin32.jwin32;
+-
+-import com.sun.jna.WString;
+-import com.sun.jna.ptr.IntByReference;
+-
+-public class LUAuthenticateUserCommand extends LUBrokerCommandBase {
+-    private static LogCompat log = LogFactoryCompat.getLog(LUAuthenticateUserCommand.class);
+-
+-    public LUAuthenticateUserCommand(LdapUserPasswordBaseParameters parameters) {
+-        super(parameters);
+-    }
+-
+-    @Override
+-    protected void ExecuteQuery() {
+-        AdUser user = new AdUser();
+-        log.debug("Executing LUAuthenticateUserCommand");
+-        IntByReference lToken = new IntByReference();
+-        try {
+-            if (jwin32.advapi32.LogonUserW(
+-                            new WString(getLoginName().toString()),
+-                            new WString(getDomain().toString()),
+-                            new WString(getPassword()),
+-                            jwin32.LOGON32_LOGON_NETWORK,
+-                            jwin32.LOGON32_PROVIDER_DEFAULT,
+-                            lToken
+-                        )
+-
+-            ) {
+-                // Login successful now lets collect the user data.
+-                user = (AdUser) LdapFactory.getInstance(getDomain()).RunAdAction(
+-                            AdActionType.GetAdUserByUserName, new LdapSearchByUserNameParameters(
+-                                    getParameters().getSessionId(), getDomain(), getLoginName())).getReturnValue();
+-                user.setPassword(getPassword());
+-                UserAuthenticationResult result = new UserAuthenticationResult(user);
+-                setReturnValue(result);
+-                setSucceeded(true);
+-            } else {
+-                int lastError = jwin32.kernel32.GetLastError();
+-                log.error("Last error is: " + lastError);
+-                VdcBllMessages errorCode = WindowsErrorsTranslationMap.getError(lastError);
+-                //If there was an error - at first define a general error code of authentication failure, but
+-                //try to get a more concrete error code
+-                UserAuthenticationResult result = new UserAuthenticationResult(VdcBllMessages.USER_FAILED_TO_AUTHENTICATE);
+-                if (errorCode != null) {
+-                    log.debug("Found error code " + result.toString());
+-                    //A more concrete error code is found
+-                    result = new UserAuthenticationResult(errorCode);
+-                } else {
+-                    log.debug("No error code found, using default error code of USER_FAILED_TO_AUTHENTICATE");
+-                }
+-
+-                setReturnValue(result);
+-                setSucceeded(false);
+-            }
+-        } catch (RuntimeException ee) {
+-            // TODO: Need normal Error handling
+-            // QLogger.getInstance().Warn("Failed authenticating " +
+-            // getLoginName() + "@" + getDomain(), ee);
+-        } finally {
+-            if (lToken.getValue() != 0) {
+-                jwin32.kernel32.CloseHandle(lToken.getValue());
+-            }
+-        }
+-    }
+-}
+diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUBrokerCommandBase.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUBrokerCommandBase.java
+deleted file mode 100644
+index 100966d..0000000
+--- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUBrokerCommandBase.java
++++ /dev/null
+@@ -1,289 +0,0 @@
+-package org.ovirt.engine.core.bll.adbroker;
+-
+-import java.nio.ByteBuffer;
+-import java.nio.ByteOrder;
+-import java.util.ArrayList;
+-import java.util.regex.Pattern;
+-
+-import org.ovirt.engine.core.common.businessentities.AdUser;
+-import org.ovirt.engine.core.common.businessentities.ad_groups;
+-import org.ovirt.engine.core.compat.Guid;
+-import org.ovirt.engine.core.compat.LogCompat;
+-import org.ovirt.engine.core.compat.LogFactoryCompat;
+-import org.ovirt.engine.core.compat.Regex;
+-import org.ovirt.engine.core.compat.RegexOptions;
+-import org.ovirt.engine.core.utils.jwin32.ConvertSidException;
+-import org.ovirt.engine.core.utils.jwin32.LOCAL_GROUP_INFO_0;
+-import org.ovirt.engine.core.utils.jwin32.USER_INFO_20;
+-import org.ovirt.engine.core.utils.jwin32.jwin32;
+-import com.sun.jna.WString;
+-import com.sun.jna.ptr.IntByReference;
+-import com.sun.jna.ptr.PointerByReference;
+-
+-public abstract class LUBrokerCommandBase extends BrokerCommandBase {
+-    private static LogCompat log = LogFactoryCompat.getLog(LUBrokerCommandBase.class);
+-
+-    @Override
+-    protected String getPROTOCOL() {
+-        return "LDAP://";
+-    }
+-
+-    protected LUBrokerCommandBase(LdapBrokerBaseParameters parameters) {
+-        super(parameters);
+-    }
+-
+-    @Override
+-    public LdapReturnValueBase Execute() {
+-        try {
+-            ExecuteQuery();
+-        } catch (RuntimeException e) {
+-            log.errorFormat("Error in executing LU broker command. Exception is {0} ", e.getMessage());
+-            _ldapReturnValue.setSucceeded(false);
+-            _ldapReturnValue.setReturnValue(null);
+-        }
+-        return _ldapReturnValue;
+-    }
+-
+-    protected abstract void ExecuteQuery();
+-
+-    /**
+-     * This method convert a single condition from the ldap query string into a
+-     * regex. The pattern describe the condition to be converted. If the pattern
+-     * does not exist in the query it will return a null.
+-     *
+-     * @param query
+-     * @param pattern
+-     * @return
+-     */
+-    protected Regex queryToRegex(String query, String pattern) {
+-        Regex retval = null;
+-        if (query.contains(pattern)) {
+-            String value = query.substring(query.indexOf(pattern)).split("[()=]")[1].trim();
+-            log.debug("queryToRegex, value=" + value);
+-            retval = new Regex(value, RegexOptions.IgnoreCase);
+-        }
+-        return retval;
+-    }
+-
+-    protected Pattern queryToPattern(String query, String pattern) {
+-        Pattern retval = null;
+-        if (query.contains(pattern)) {
+-            String value = query.substring(query.indexOf(pattern)).split("[()=]")[1].trim();
+-            log.debug("queryToPattern, value=" + value.replace("*", ".*"));
+-            retval = Pattern.compile(value.replace("*", ".*"), Pattern.CASE_INSENSITIVE);
+-        }
+-        return retval;
+-    }
+-
+-    /**
+-     * This method return an array list of local users with their info. I had to
+-     * hack around quite a few bits here, so I guess it worth some through
+-     * explaining. But first please follow the most important rule of WIN32 APIs
+-     * - get into MSDN and read the remarks section about NetUserEnum. Ok, so as
+-     * you can see, NetUserEnum allocate memory area by itself. this memory area
+-     * is later on populated with an array of structures (pointer to pointer)
+-     * which hold the wanted information. This required some trickery. which I
+-     * couldnt get working any other way, so please test this throughly if you
+-     * think of any cleaner solution. I was mapping the needed structure into
+-     * java class according to JNA instructions. adding it a ByReference class
+-     * (again, according to instructions). Then (here come the tricky part) I've
+-     * created another class which have a member of that previous ByReference
+-     * type and is overriding the toArray method so that it will actually call
+-     * the toArray of the original structure mapping class. Doing the same with
+-     * PointerByRefernce and useMemory failed! (you can try again if you like, I
+-     * might have gotten something wrong there.) Ok, so we've got that part
+-     * working, now, we need the following info about each user: full name, SID
+-     * and flags (expired, locked, etc.) it seems very apropriate to use
+-     * USER_INFO_20 but!!! it seems that calling NetUserEnum with level=23 fails
+-     * with error 124 or 1722, another trickery is needed! So I'm calling
+-     * NetUserEnum with level=0 which gives only the username, then calling
+-     * NetUserGetInfo (again, highly advasiable, no required, to read the
+-     * remarks section) with level=23 which miraculously works ;)
+-     *
+-     * Update: made it working by useMemory and PointerByReference. but had to
+-     * drop the sid for that so now, this is used only with USER_INFO_20 (no
+-     * need anymore for 0 and 23) and a special Implementation, using
+-     * LookupAccountName to get the sid, which is shared with LOCAL_GROUP class
+-     */
+-
+-    protected ArrayList<AdUser> getAdUsers() {
+-        int nStatus;
+-        ArrayList<AdUser> retVal = new ArrayList<AdUser>();
+-        IntByReference nEntriesRead = new IntByReference();
+-        IntByReference nTotalEntries = new IntByReference();
+-        PointerByReference pUI20 = new PointerByReference();
+-
+-        nStatus = jwin32.netapi32.NetUserEnum(new WString(""), 20, jwin32.FILTER_NORMAL_ACCOUNT, pUI20,
+-                                              jwin32.MAX_PREFERRED_LENGTH, // This
+-                                                                           // have
+-                                                                           // high
+-                                                                           // potential
+-                                                                           // of
+-                                                                           // breaking
+-                                                                           // on
+-                                                                           // systems
+-                                                                           // with
+-                                                                           // a
+-                                                                           // large
+-                                                                           // number
+-                                                                           // of
+-                                                                           // users!
+-                                              nEntriesRead,
+-                                              nTotalEntries,
+-                                              null);
+-
+-        if (nStatus == jwin32.NERR_Success || nStatus == jwin32.ERROR_MORE_DATA) {
+-
+-            // Allocates a USER_INFO_0 object that maps to a USER_INFO_0
+-            // struct that is located in the address that is held by the
+-            // value of pUI0.
+-            // This address is the beginning of a sequence of structures of
+-            // USER_INFO_0, so retrieving array is possible.
+-            USER_INFO_20 userTemp = new USER_INFO_20(pUI20.getValue());
+-            USER_INFO_20 users[] = (USER_INFO_20[]) userTemp.toArray(nTotalEntries.getValue());
+-
+-            for (USER_INFO_20 user : users) {
+-                retVal.add(populateUser(user));
+-            }
+-
+-            if (nEntriesRead.getValue() > 0) {
+-                jwin32.netapi32.NetApiBufferFree(pUI20.getValue());
+-            }
+-        }
+-
+-        return (retVal);
+-    }
+-
+-    protected ArrayList<ad_groups> getAdGroups() {
+-        log.debug("getAdGroups Entry");
+-
+-        int nStatus;
+-        PointerByReference pGI0 = new PointerByReference();
+-        IntByReference nEntriesRead = new IntByReference();
+-        IntByReference nTotalEntries = new IntByReference();
+-        ArrayList<ad_groups> retVal = new ArrayList<ad_groups>();
+-
+-        nStatus = jwin32.netapi32.NetLocalGroupEnum(
+-                                                    new WString(""),
+-                                                    0,
+-                                                    pGI0,
+-                                                    jwin32.MAX_PREFERRED_LENGTH,
+-                                                    nEntriesRead,
+-                                                    nTotalEntries,
+-                                                    null
+-                                 );
+-
+-        if (nStatus == jwin32.NERR_Success ||
+-                nStatus == jwin32.ERROR_MORE_DATA) {
+-            log.debug("NetLocalGroupEnum returned " + nEntriesRead.getValue() + " entries");
+-
+-            LOCAL_GROUP_INFO_0 groupsArr = new LOCAL_GROUP_INFO_0(pGI0.getValue());
+-            LOCAL_GROUP_INFO_0[] groups = (LOCAL_GROUP_INFO_0[]) groupsArr.toArray(nEntriesRead.getValue());
+-
+-            for (LOCAL_GROUP_INFO_0 group : groups) {
+-                String retSID;
+-                PointerByReference group_sid;
+-                PointerByReference stringSID = new PointerByReference();
+-                IntByReference nSIDSize = new IntByReference();
+-
+-                log.debug("populating group name=" + group.lgrpi0_name);
+-
+-                retVal.add(populateGroup(group));
+-            }
+-
+-            if (nEntriesRead.getValue() > 0) {
+-                jwin32.netapi32.NetApiBufferFree(pGI0.getValue());
+-            }
+-        } else {
+-            log.error("getAdGroups, NetLocalGroupEnum error (" + jwin32.kernel32.GetLastError() + ") return=" + nStatus);
+-        }
+-
+-        log.debug("getAdGroups, Return size=" + retVal.size());
+-        return (retVal);
+-    }
+-
+-    protected AdUser populateUser(USER_INFO_20 child) {
+-        log.debug("populateUser Entry");
+-
+-        try {
+-            AdUser user = new AdUser();
+-            user.setUserId(sidToGuid(child.getSID()));
+-            user.setName(child.usri20_full_name.toString());
+-            user.setUserName(child.usri20_name.toString());
+-            /*
+-             * According to MSDN documentation for C# Environment.MachineName it
+-             * seems the class is getting the machine name from environment
+-             * variable named COMPUTERNAME
+-             */
+-            user.setDomainControler(System.getenv("COMPUTERNAME"));
+-
+-            user.setPasswordExpired((child.usri20_flags & jwin32.UF_PASSWORD_EXPIRED) == jwin32.UF_PASSWORD_EXPIRED);
+-
+-            // debug print all properties
+-            // List<string> test = new List<string>();
+-            // foreach (string key in child.Properties.PropertyNames)
+-            // {
+-            // test.Add(key + ":" + child.Properties[key].Value);
+-            // }
+-            return user;
+-        } catch (ConvertSidException ex) {
+-            log.error("convert sid failed");
+-            return null;
+-        }
+-    }
+-
+-    protected ad_groups populateGroup(LOCAL_GROUP_INFO_0 child) {
+-        log.debug("populateGroup, Entry");
+-
+-        try {
+-            ad_groups group = new ad_groups();
+-            group.setid(sidToGuid(child.getSID()));
+-            group.setname(child.lgrpi0_name.toString()); // todo: getName()
+-            group.setdomain(System.getenv("COMPUTERNAME"));
+-
+-            log.debug("populateGroup, Return");
+-            return group;
+-        } catch (ConvertSidException ex) {
+-            log.error("convert sid failed");
+-            return null;
+-        }
+-    }
+-
+-    /* do we really need a byte[] format ? */
+-    protected static Guid sidToGuid(byte[] sid) {
+-        if (sid == null) {
+-            return (null);
+-        }
+-
+-        byte[] barray = new byte[16];
+-        if (sid.length == 16) {
+-            barray = sid;
+-        } else if (sid.length > 16) {
+-            int offset = sid.length - 16;
+-            for (int i = 0; i < 15; i++) {
+-                barray[i] = sid[i + offset];
+-            }
+-        }
+-        return new Guid(barray, true);
+-    }
+-
+-    private static Guid sidToGuid(String sid) throws ConvertSidException {
+-        log.debug("sidToGuid Entry, sid=" + sid + " length=" + sid.length());
+-
+-        try {
+-            ByteBuffer bb = ByteBuffer.allocate(16);
+-            bb.order(ByteOrder.LITTLE_ENDIAN);
+-
+-            String[] arrSidParts = sid.split("-");
+-            for (int i = 4; i < arrSidParts.length; i++) {
+-                bb.putInt((int) Long.parseLong(arrSidParts[i]));
+-            }
+-
+-            return new Guid(bb.array(), false);
+-        } catch (java.lang.ArrayIndexOutOfBoundsException aioobe) {
+-            throw new ConvertSidException("Given sid has a wrong length. Please validate it: " + sid);
+-        } catch (java.nio.BufferOverflowException boe) {
+-            throw new ConvertSidException("Given sid length is too long. Please validate it: " + sid);
+-        }
+-    }
+-}
+diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUChangeUserPasswordCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUChangeUserPasswordCommand.java
+deleted file mode 100644
+index 2f2478a..0000000
+--- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUChangeUserPasswordCommand.java
++++ /dev/null
+@@ -1,36 +0,0 @@
+-package org.ovirt.engine.core.bll.adbroker;
+-
+-import org.ovirt.engine.core.utils.jwin32.jwin32;
+-import com.sun.jna.WString;
+-
+-public class LUChangeUserPasswordCommand extends LUBrokerCommandBase {
+-    private String getDestinationNewPassword() {
+-        return (((LdapChangeUserPasswordParameters) getParameters()).getDestinationUserNewPassword());
+-    }
+-
+-    private String getDestinationUserName() {
+-        return (((LdapChangeUserPasswordParameters) getParameters()).getDestinationUserName());
+-    }
+-
+-    private String getDestinationUserPassword() {
+-        return (((LdapChangeUserPasswordParameters) getParameters()).getDestinationUserPassword());
+-    }
+-
+-    public LUChangeUserPasswordCommand(LdapChangeUserPasswordParameters parameters) {
+-        super(parameters);
+-    }
+-
+-    @Override
+-    protected void ExecuteQuery() {
+-        if (jwin32.netapi32.NetUserChangePassword(
+-                new WString(""), // new WString(this.getDomain().toString()),
+-                new WString(this.getDestinationUserName()),
+-                new WString(((LdapChangeUserPasswordParameters) getParameters()).getDestinationUserPassword()),
+-                new WString(((LdapChangeUserPasswordParameters) getParameters()).getDestinationUserNewPassword())
+-                ) == jwin32.NERR_Success) {
+-            setSucceeded(true);
+-        } else {
+-            setSucceeded(false);
+-        }
+-    }
+-}
+diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUCreateComputerAccountCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUCreateComputerAccountCommand.java
+deleted file mode 100644
+index 6b87638..0000000
+--- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUCreateComputerAccountCommand.java
++++ /dev/null
+@@ -1,12 +0,0 @@
+-package org.ovirt.engine.core.bll.adbroker;
+-
+-public class LUCreateComputerAccountCommand extends LUBrokerCommandBase {
+-    public LUCreateComputerAccountCommand(LdapCreateComputerAccountParameters parameters) {
+-        super(parameters);
+-    }
+-
+-    @Override
+-    protected void ExecuteQuery() {
+-        setSucceeded(false);
+-    }
+-}
+diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUGetAdGroupByGroupIdCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUGetAdGroupByGroupIdCommand.java
+deleted file mode 100644
+index 0bb5710..0000000
+--- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUGetAdGroupByGroupIdCommand.java
++++ /dev/null
+@@ -1,30 +0,0 @@
+-package org.ovirt.engine.core.bll.adbroker;
+-
+-import org.ovirt.engine.core.compat.Guid;
+-import org.ovirt.engine.core.compat.LogCompat;
+-import org.ovirt.engine.core.compat.LogFactoryCompat;
+-import org.ovirt.engine.core.common.businessentities.ad_groups;
+-
+-public class LUGetAdGroupByGroupIdCommand extends LUBrokerCommandBase {
+-    private static LogCompat log = LogFactoryCompat.getLog(LUGetAdUserByUserIdCommand.class);
+-
+-    private Guid getGroupId() {
+-        return ((LdapSearchByIdParameters) getParameters()).getId();
+-    }
+-
+-    public LUGetAdGroupByGroupIdCommand(LdapSearchByIdParameters parameters) {
+-        super(parameters);
+-    }
+-
+-    @Override
+-    protected void ExecuteQuery() {
+-        log.debug("ExecuteQuery Entry, group ID=" + getGroupId().toString());
+-        for (ad_groups group : getAdGroups()) {
+-            if (group.getid().equals(getGroupId())) {
+-                setReturnValue(group);
+-                setSucceeded(true);
+-                break;
+-            }
+-        }
+-    }
+-}
+diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUGetAdUserByUserIdCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUGetAdUserByUserIdCommand.java
+deleted file mode 100644
+index 281e149..0000000
+--- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUGetAdUserByUserIdCommand.java
++++ /dev/null
+@@ -1,33 +0,0 @@
+-package org.ovirt.engine.core.bll.adbroker;
+-
+-import org.ovirt.engine.core.common.businessentities.AdUser;
+-import org.ovirt.engine.core.compat.*;
+-
+-import org.ovirt.engine.core.compat.LogCompat;
+-import org.ovirt.engine.core.compat.LogFactoryCompat;
+-
+-import org.ovirt.engine.core.utils.jwin32.*;
+-
+-public class LUGetAdUserByUserIdCommand extends LUBrokerCommandBase {
+-    private static LogCompat log = LogFactoryCompat.getLog(LUGetAdUserByUserIdCommand.class);
+-
+-    private Guid getUserId() {
+-        return ((LdapSearchByIdParameters) getParameters()).getId();
+-    }
+-
+-    public LUGetAdUserByUserIdCommand(LdapSearchByIdParameters parameters) {
+-        super(parameters);
+-    }
+-
+-    @Override
+-    protected void ExecuteQuery() {
+-        log.debug("ExecuteQuery Entry, user ID=" + getUserId().toString());
+-        for (AdUser user : getAdUsers()) {
+-            if (user.getUserId().equals(getUserId())) {
+-                setReturnValue(user);
+-                setSucceeded(true);
+-                break;
+-            }
+-        }
+-    }
+-}
+diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUGetAdUserByUserIdListCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUGetAdUserByUserIdListCommand.java
+deleted file mode 100644
+index 8f097b7..0000000
+--- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUGetAdUserByUserIdListCommand.java
++++ /dev/null
+@@ -1,18 +0,0 @@
+-package org.ovirt.engine.core.bll.adbroker;
+-
+-import org.ovirt.engine.core.common.businessentities.*;
+-
+-import java.util.ArrayList;
+-import org.ovirt.engine.core.utils.jwin32.*;
+-
+-public class LUGetAdUserByUserIdListCommand extends LUBrokerCommandBase {
+-    public LUGetAdUserByUserIdListCommand(LdapSearchByIdListParameters parameters) {
+-        super(parameters);
+-    }
+-
+-    @Override
+-    protected void ExecuteQuery() {
+-        ArrayList<AdUser> users = getAdUsers();
+-        setReturnValue(users);
+-    }
+-}
+diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUGetAdUserByUserNameCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUGetAdUserByUserNameCommand.java
+deleted file mode 100644
+index e5ccd2c..0000000
+--- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUGetAdUserByUserNameCommand.java
++++ /dev/null
+@@ -1,52 +0,0 @@
+-package org.ovirt.engine.core.bll.adbroker;
+-
+-import org.ovirt.engine.core.common.businessentities.*;
+-
+-import org.ovirt.engine.core.compat.LogCompat;
+-import org.ovirt.engine.core.compat.LogFactoryCompat;
+-import org.ovirt.engine.core.utils.jwin32.*;
+-
+-import com.sun.jna.ptr.*;
+-import com.sun.jna.WString;
+-
+-public class LUGetAdUserByUserNameCommand extends LUBrokerCommandBase {
+-    private static LogCompat log = LogFactoryCompat.getLog(LUGetAdUserByUserNameCommand.class);
+-
+-    private String getUserName() {
+-        return ((LdapSearchByUserNameParameters) getParameters()).getUserName();
+-    }
+-
+-    public LUGetAdUserByUserNameCommand(LdapSearchByUserNameParameters parameters) {
+-        super(parameters);
+-    }
+-
+-    @Override
+-    protected void ExecuteQuery() {
+-        log.debug("ExecuteQuery, Entry");
+-
+-        IntByReference lToken = null;
+-        PointerByReference p = new PointerByReference();
+-        int nStatus;
+-        IntByReference nEntriesRead;
+-        IntByReference nTotalEntries;
+-        IntByReference nResumeHandle;
+-
+-        if (jwin32.netapi32.NetUserGetInfo(new WString(this.getDomain()), new WString(this.getUserName()), 20, p
+-                ) == jwin32.NERR_Success) {
+-
+-            USER_INFO_20 ui = new USER_INFO_20(p.getValue());
+-            log.debug("ui=" + ui.usri20_name);
+-            AdUser user = populateUser(ui);
+-            jwin32.netapi32.NetApiBufferFree(p.getValue());
+-
+-            // Getting the groups
+-            // Seems local users don't get groups..
+-            // TODO: check if this just strange or unused.
+-
+-            setReturnValue(user);
+-            setSucceeded((getReturnValue() != null));
+-        } else {
+-            log.error("ExecuteQuery, NetUserGetInfo failed (" + jwin32.kernel32.GetLastError() + ")");
+-        }
+-    }
+-}
+diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUSearchGroupsByQueryCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUSearchGroupsByQueryCommand.java
+deleted file mode 100644
+index 5363c97..0000000
+--- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUSearchGroupsByQueryCommand.java
++++ /dev/null
+@@ -1,42 +0,0 @@
+-package org.ovirt.engine.core.bll.adbroker;
+-
+-import java.util.regex.Matcher;
+-import java.util.regex.Pattern;
+-
+-import org.ovirt.engine.core.common.businessentities.ad_groups;
+-import org.ovirt.engine.core.compat.LogCompat;
+-import org.ovirt.engine.core.compat.LogFactoryCompat;
+-
+-public class LUSearchGroupsByQueryCommand extends LUBrokerCommandBase {
+-    private static LogCompat log = LogFactoryCompat.getLog(LUSearchGroupsByQueryCommand.class);
+-
+-    protected String getQuery() {
+-        // TODO:rgolan
+-        return "";
+-        //return ((LdapSearchByQueryParameters) getParameters()).getQuery();
+-    }
+-
+-    public LUSearchGroupsByQueryCommand(LdapSearchByQueryParameters parameters) {
+-        super(parameters);
+-    }
+-
+-    @Override
+-    protected void ExecuteQuery() {
+-        log.debug("ExecuteQuery Entry, Query=" + getQuery());
+-
+-        java.util.ArrayList<ad_groups> groups = new java.util.ArrayList<ad_groups>();
+-
+-        Pattern p = queryToPattern(getQuery(), "name");
+-
+-        for (ad_groups group : getAdGroups()) {
+-            Matcher mName = p.matcher(group.getname());
+-
+-            if (p == null || mName.matches()) {
+-                log.debug("sid=" + group.getid());
+-                groups.add(group);
+-            }
+-        }
+-        log.debug("ExecuteQuery Return, groups.size = " + groups.size());
+-        setReturnValue(groups);
+-    }
+-}
+diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUSearchUserByQueryCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUSearchUserByQueryCommand.java
+deleted file mode 100644
+index a1997ea..0000000
+--- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LUSearchUserByQueryCommand.java
++++ /dev/null
+@@ -1,38 +0,0 @@
+-package org.ovirt.engine.core.bll.adbroker;
+-
+-import java.util.regex.Pattern;
+-import java.util.regex.Matcher;
+-import org.ovirt.engine.core.compat.*;
+-import org.ovirt.engine.core.common.businessentities.*;
+-import org.ovirt.engine.core.utils.jwin32.*;
+-import org.ovirt.engine.core.compat.LogCompat;
+-import org.ovirt.engine.core.compat.LogFactoryCompat;
+-
+-public class LUSearchUserByQueryCommand extends LUSearchGroupsByQueryCommand {
+-    private static LogCompat log = LogFactoryCompat.getLog(LUSearchUserByQueryCommand.class);
+-
+-    public LUSearchUserByQueryCommand(LdapSearchByQueryParameters parameters) {
+-        super(parameters);
+-    }
+-
+-    @Override
+-    protected void ExecuteQuery() {
+-        log.debug("ExecuteQuery Entry, Query=" + getQuery());
+-
+-        java.util.ArrayList<AdUser> users = new java.util.ArrayList<AdUser>();
+-
+-        Pattern p = queryToPattern(getQuery(), "givenname");
+-
+-        for (AdUser user : getAdUsers()) {
+-            Matcher mName = p.matcher(user.getUserName());
+-            Matcher mFull = p.matcher(user.getName());
+-
+-            if (p == null || mName.matches() || mFull.matches()) {
+-                log.debug("sid=" + user.getUserId());
+-                users.add(user);
+-            }
+-        }
+-        log.debug("ExecuteQuery Return, users.size = " + users.size());
+-        setReturnValue(users);
+-    }
+-}
+diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LocalUserBroker.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LocalUserBroker.java
+deleted file mode 100644
+index ac9a89b..0000000
+--- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/LocalUserBroker.java
++++ /dev/null
+@@ -1,8 +0,0 @@
+-package org.ovirt.engine.core.bll.adbroker;
+-
+-public class LocalUserBroker extends LdapBrokerBase {
+-    @Override
+-    protected String getBrokerType() {
+-        return "LU";
+-    }
+-}
+-- 
+1.7.7.6
+
diff --git a/ovirt-engine-remove-mockito.patch b/ovirt-engine-remove-mockito.patch
new file mode 100644
index 0000000..05593bf
--- /dev/null
+++ b/ovirt-engine-remove-mockito.patch
@@ -0,0 +1,73 @@
+From 0c3e7661755e93642947d25fabe8010db021fba1 Mon Sep 17 00:00:00 2001
+From: Juan Hernandez <juan.hernandez at redhat.com>
+Date: Thu, 15 Mar 2012 10:33:54 +0100
+Subject: [PATCH] Remove mockito
+
+---
+ frontend/webadmin/modules/webadmin/pom.xml |    8 --------
+ pom.xml                                    |   16 ----------------
+ 2 files changed, 24 deletions(-)
+
+diff --git a/frontend/webadmin/modules/webadmin/pom.xml b/frontend/webadmin/modules/webadmin/pom.xml
+index d40ace2..a282187 100644
+--- a/frontend/webadmin/modules/webadmin/pom.xml
++++ b/frontend/webadmin/modules/webadmin/pom.xml
+@@ -21,7 +21,6 @@
+ 		<guice.version>3.0</guice.version>
+ 		<gin.version>1.5.0</gin.version>
+ 		<junit.version>4.8.1</junit.version>
+-		<mockito.version>1.8.5</mockito.version>
+ 
+ 		<maven-compiler-plugin.version>2.3.2</maven-compiler-plugin.version>
+ 		<!--Version 2.5 is important? currently version is inherited from parent -->
+@@ -139,13 +138,6 @@
+ 			<scope>test</scope>
+ 		</dependency>
+ 
+-		<dependency>
+-			<groupId>org.mockito</groupId>
+-			<artifactId>mockito-core</artifactId>
+-			<version>${mockito.version}</version>
+-			<scope>test</scope>
+-		</dependency>
+-
+ 		<!-- oVirt dependencies -->
+ 		<dependency>
+ 			<groupId>${engine.groupId}</groupId>
+diff --git a/pom.xml b/pom.xml
+index d254820..66c7832 100644
+--- a/pom.xml
++++ b/pom.xml
+@@ -57,8 +57,6 @@
+     <findbugs.version>2.3.3</findbugs.version>
+     <easymock.version>3.0</easymock.version>
+     <powermock.version>1.4.10</powermock.version>
+-    <powermock-api-mockito.version>1.4.10</powermock-api-mockito.version>
+-    <mockito.version>1.8.5</mockito.version>
+     <javassist.version>3.12.0.GA</javassist.version>
+     <javax.mail.version>1.4.4</javax.mail.version>
+     <activation.version>1.1</activation.version>
+@@ -262,20 +260,6 @@
+     </dependency>
+ 
+     <dependency>
+-      <groupId>org.powermock</groupId>
+-      <artifactId>powermock-api-mockito</artifactId>
+-      <version>${powermock-api-mockito.version}</version>
+-      <scope>test</scope>
+-    </dependency>
+-
+-    <dependency>
+-      <groupId>org.mockito</groupId>
+-      <artifactId>mockito-all</artifactId>
+-      <version>${mockito.version}</version>
+-      <scope>test</scope>
+-    </dependency>
+-
+-    <dependency>
+       <groupId>commons-logging</groupId>
+       <artifactId>commons-logging</artifactId>
+       <version>${commons-logging.version}</version>
+-- 
+1.7.9.3
+
diff --git a/ovirt-engine-remove-p6spy.patch b/ovirt-engine-remove-p6spy.patch
new file mode 100644
index 0000000..45a437f
--- /dev/null
+++ b/ovirt-engine-remove-p6spy.patch
@@ -0,0 +1,32 @@
+From cc3a08fdec58d3fca5b8430cea6773a6a0cef7dc Mon Sep 17 00:00:00 2001
+From: Juan Hernandez <juan.hernandez at redhat.com>
+Date: Thu, 15 Mar 2012 10:39:58 +0100
+Subject: [PATCH 3/3] Remove p6spy
+
+---
+ backend/manager/modules/pom.xml |    9 ---------
+ 1 file changed, 9 deletions(-)
+
+diff --git a/backend/manager/modules/pom.xml b/backend/manager/modules/pom.xml
+index f8c1930..82e703c 100644
+--- a/backend/manager/modules/pom.xml
++++ b/backend/manager/modules/pom.xml
+@@ -26,15 +26,6 @@
+     <module>restapi</module>
+   </modules>
+ 
+-  <dependencies>
+-    <dependency>
+-      <groupId>p6spy</groupId>
+-      <artifactId>p6spy</artifactId>
+-      <version>1.3</version>
+-      <scope>test</scope>
+-    </dependency>
+-  </dependencies>
+-
+   <build>
+     <plugins>
+       <plugin>
+-- 
+1.7.9.3
+
diff --git a/ovirt-engine-remove-powermock.patch b/ovirt-engine-remove-powermock.patch
new file mode 100644
index 0000000..98e81d8
--- /dev/null
+++ b/ovirt-engine-remove-powermock.patch
@@ -0,0 +1,138 @@
+From 8f2e66d615e9687c01168f1065fa43a199f453aa Mon Sep 17 00:00:00 2001
+From: Juan Hernandez <juan.hernandez at redhat.com>
+Date: Thu, 15 Mar 2012 10:38:22 +0100
+Subject: [PATCH 2/2] Remove powermock
+
+---
+ backend/manager/modules/bll/pom.xml           |   24 ------------------------
+ backend/manager/modules/restapi/jaxrs/pom.xml |   14 --------------
+ backend/manager/modules/restapi/types/pom.xml |   14 --------------
+ pom.xml                                       |   13 -------------
+ 4 files changed, 65 deletions(-)
+
+diff --git a/backend/manager/modules/bll/pom.xml b/backend/manager/modules/bll/pom.xml
+index d877eb3..15160c6 100644
+--- a/backend/manager/modules/bll/pom.xml
++++ b/backend/manager/modules/bll/pom.xml
+@@ -108,30 +108,6 @@
+     </dependency>
+ 
+     <dependency>
+-      <groupId>org.powermock</groupId>
+-      <artifactId>powermock-module-junit4</artifactId>
+-      <version>${powermock.version}</version>
+-      <scope>test</scope>
+-    </dependency>
+-
+-    <dependency>
+-      <groupId>org.powermock</groupId>
+-      <artifactId>powermock-api-easymock</artifactId>
+-      <version>${powermock.version}</version>
+-      <scope>test</scope>
+-    </dependency>
+-
+-<!--   
+-       <dependency>
+-       <groupId>org.powermock</groupId>
+-	<artifactId>powermock-mockito-release-full</artifactId>
+-      <version>${powermock.version}</version>
+-      <scope>test</scope>
+-   </dependency>
+-    
+-    -->
+-
+-    <dependency>
+       <groupId>javassist</groupId>
+       <artifactId>javassist</artifactId>
+       <scope>test</scope>
+diff --git a/backend/manager/modules/restapi/jaxrs/pom.xml b/backend/manager/modules/restapi/jaxrs/pom.xml
+index 048988f..9a794b2 100644
+--- a/backend/manager/modules/restapi/jaxrs/pom.xml
++++ b/backend/manager/modules/restapi/jaxrs/pom.xml
+@@ -59,20 +59,6 @@
+     </dependency>
+ 
+     <dependency>
+-      <groupId>org.powermock</groupId>
+-      <artifactId>powermock-module-junit4</artifactId>
+-      <version>${powermock.version}</version>
+-      <scope>test</scope>
+-    </dependency>
+-
+-    <dependency>
+-      <groupId>org.powermock</groupId>
+-      <artifactId>powermock-api-easymock</artifactId>
+-      <version>${powermock.version}</version>
+-      <scope>test</scope>
+-    </dependency>
+-
+-    <dependency>
+       <groupId>javassist</groupId>
+       <artifactId>javassist</artifactId>
+       <scope>test</scope>
+diff --git a/backend/manager/modules/restapi/types/pom.xml b/backend/manager/modules/restapi/types/pom.xml
+index 08ab55c..02e9f73 100644
+--- a/backend/manager/modules/restapi/types/pom.xml
++++ b/backend/manager/modules/restapi/types/pom.xml
+@@ -38,20 +38,6 @@
+     </dependency>
+ 
+     <dependency>
+-      <groupId>org.powermock</groupId>
+-      <artifactId>powermock-module-junit4</artifactId>
+-      <version>${powermock.version}</version>
+-      <scope>test</scope>
+-    </dependency>
+-
+-    <dependency>
+-      <groupId>org.powermock</groupId>
+-      <artifactId>powermock-api-easymock</artifactId>
+-      <version>${powermock.version}</version>
+-      <scope>test</scope>
+-    </dependency>
+-
+-    <dependency>
+       <groupId>javassist</groupId>
+       <artifactId>javassist</artifactId>
+       <scope>test</scope>
+diff --git a/pom.xml b/pom.xml
+index 66c7832..a83acea 100644
+--- a/pom.xml
++++ b/pom.xml
+@@ -56,7 +56,6 @@
+     <gwt.plugin.version>1.3.2.google</gwt.plugin.version>
+     <findbugs.version>2.3.3</findbugs.version>
+     <easymock.version>3.0</easymock.version>
+-    <powermock.version>1.4.10</powermock.version>
+     <javassist.version>3.12.0.GA</javassist.version>
+     <javax.mail.version>1.4.4</javax.mail.version>
+     <activation.version>1.1</activation.version>
+@@ -253,13 +252,6 @@
+     </dependency>
+ 
+     <dependency>
+-      <groupId>org.powermock</groupId>
+-      <artifactId>powermock-module-junit4</artifactId>
+-      <version>${powermock.version}</version>
+-      <scope>test</scope>
+-    </dependency>
+-
+-    <dependency>
+       <groupId>commons-logging</groupId>
+       <artifactId>commons-logging</artifactId>
+       <version>${commons-logging.version}</version>
+@@ -312,11 +304,6 @@
+       </snapshots>
+     </repository>
+ 
+-    <repository>
+-      <id>powermock-repo</id>
+-      <url>http://powermock.googlecode.com/svn/repo/</url>
+-    </repository>
+-
+    <repository>
+       <id>atlassian.public.repo</id>
+       <name>The Atlassian public repo</name>
+-- 
+1.7.9.3
+
diff --git a/ovirt-engine-remove-spring-from-restapi.patch b/ovirt-engine-remove-spring-from-restapi.patch
index d6b0fe9..ee80315 100644
--- a/ovirt-engine-remove-spring-from-restapi.patch
+++ b/ovirt-engine-remove-spring-from-restapi.patch
@@ -1,134 +1,25 @@
-From 232458460af2c0b8a7a4b7800531e72e274bbcd8 Mon Sep 17 00:00:00 2001
+From f67c6e7b82599eb14c9738bab8688ecd531bc11a Mon Sep 17 00:00:00 2001
 From: Juan Hernandez <juan.hernandez at redhat.com>
-Date: Mon, 25 Jun 2012 17:50:55 +0200
-Subject: [PATCH 2/2] restapi: Remove spring framework
+Date: Sun, 18 Mar 2012 20:19:31 +0100
+Subject: [PATCH] Remove spring from restapi
 
-Remove the dependency on the spring framework.
-
-Change-Id: I3f27d340261e4b5c4b6b7f27a98c3d13c38569f0
-Signed-off-by: Juan Hernandez <juan.hernandez at redhat.com>
 ---
- Makefile                                           |  12 ++
- .../modules/restapi/interface/common/jaxrs/pom.xml |   7 +
- .../modules/restapi/interface/definition/pom.xml   |   6 -
- backend/manager/modules/restapi/jaxrs/pom.xml      |  11 ++
- .../engine/api/restapi/BackendApplication.java     | 164 +++++++++++++++++++
- backend/manager/modules/restapi/types/pom.xml      |   6 -
- backend/manager/modules/restapi/webapp/pom.xml     |  50 +-----
- .../src/main/webapp/WEB-INF/applicationContext.xml | 180 ---------------------
- .../restapi/webapp/src/main/webapp/WEB-INF/web.xml |  30 +---
- .../modules/com/sun/xml/bind/main/module.xml       |   1 +
- .../org/apache/james/mime4j/main/module.xml        |  40 +++++
- .../modules/org/codehaus/jettison/main/module.xml  |  36 +++++
- .../modules/org/yaml/snakeyaml/main/module.xml     |  38 +++++
- ear/pom.xml                                        |  10 --
- packaging/fedora/engine-service.xml                |   3 +
- packaging/fedora/spec/ovirt-engine.spec.in         |  26 +--
- 16 files changed, 326 insertions(+), 294 deletions(-)
+ .../engine/api/restapi/BackendApplication.java     |  162 +++++++++++++++++++
+ backend/manager/modules/restapi/pom.xml            |    2 +-
+ backend/manager/modules/restapi/types/pom.xml      |    6 -
+ backend/manager/modules/restapi/webapp/pom.xml     |   52 +-----
+ .../src/main/webapp/WEB-INF/applicationContext.xml |  171 --------------------
+ .../restapi/webapp/src/main/webapp/WEB-INF/web.xml |   30 +---
+ 6 files changed, 171 insertions(+), 252 deletions(-)
  create mode 100644 backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/BackendApplication.java
  delete mode 100644 backend/manager/modules/restapi/webapp/src/main/webapp/WEB-INF/applicationContext.xml
- create mode 100644 deployment/modules/org/apache/james/mime4j/main/module.xml
- create mode 100644 deployment/modules/org/codehaus/jettison/main/module.xml
- create mode 100644 deployment/modules/org/yaml/snakeyaml/main/module.xml
 
-diff --git a/Makefile b/Makefile
-index cc949fb..07d49e6 100644
---- a/Makefile
-+++ b/Makefile
-@@ -323,6 +323,7 @@ install_jboss_modules:
- 	# JAXB module:
- 	ln -s /usr/share/java/glassfish-jaxb/jaxb-impl.jar $(PREFIX)/usr/share/ovirt-engine/modules/com/sun/xml/bind/main/.
- 	ln -s /usr/share/java/glassfish-jaxb/jaxb-xjc.jar $(PREFIX)/usr/share/ovirt-engine/modules/com/sun/xml/bind/main/.
-+	ln -s /usr/share/java/istack-commons-runtime.jar $(PREFIX)/usr/share/ovirt-engine/modules/com/sun/xml/bind/main/.
- 
- 	# JAX-RS API modules:
- 	ln -s /usr/share/java/resteasy/jaxrs-api.jar $(PREFIX)/usr/share/ovirt-engine/modules/javax/ws/rs/api/main/.
-@@ -349,6 +350,17 @@ install_jboss_modules:
- 	ln -s /usr/share/java/hibernate-validator.jar $(PREFIX)/usr/share/ovirt-engine/modules/org/hibernate/validator/main/.
- 	ln -s /usr/share/java/jtype.jar $(PREFIX)/usr/share/ovirt-engine/modules/org/hibernate/validator/main/.
- 
-+	# Jettison:
-+	ln -s /usr/share/java/jettison.jar $(PREFIX)/usr/share/ovirt-engine/modules/org/codehaus/jettison/main
-+
-+	# Apache MIME4J:
-+	ln -s /usr/share/java/apache-mime4j/core.jar $(PREFIX)/usr/share/ovirt-engine/modules/org/apache/james/mime4j/main/.
-+	ln -s /usr/share/java/apache-mime4j/dom.jar $(PREFIX)/usr/share/ovirt-engine/modules/org/apache/james/mime4j/main/.
-+	ln -s /usr/share/java/apache-mime4j/storage.jar $(PREFIX)/usr/share/ovirt-engine/modules/org/apache/james/mime4j/main/.
-+
-+	# Snakeyaml:
-+	ln -s /usr/share/java/snakeyaml.jar $(PREFIX)/usr/share/ovirt-engine/modules/org/yaml/snakeyaml/main/.
-+
- install_service:
- 	@echo "*** Deploying service"
- 
-diff --git a/backend/manager/modules/restapi/interface/common/jaxrs/pom.xml b/backend/manager/modules/restapi/interface/common/jaxrs/pom.xml
-index 2acd248..71cb167 100644
---- a/backend/manager/modules/restapi/interface/common/jaxrs/pom.xml
-+++ b/backend/manager/modules/restapi/interface/common/jaxrs/pom.xml
-@@ -21,6 +21,13 @@
-     </dependency>
- 
-     <dependency>
-+      <groupId>org.jboss.resteasy</groupId>
-+      <artifactId>resteasy-jaxrs</artifactId>
-+      <version>${resteasy.version}</version>
-+      <scope>provided</scope>
-+    </dependency>
-+
-+    <dependency>
-       <groupId>junit</groupId>
-       <artifactId>junit</artifactId>
-       <version>${junit.version}</version>
-diff --git a/backend/manager/modules/restapi/interface/definition/pom.xml b/backend/manager/modules/restapi/interface/definition/pom.xml
-index 4ee46f8..5636c82 100644
---- a/backend/manager/modules/restapi/interface/definition/pom.xml
-+++ b/backend/manager/modules/restapi/interface/definition/pom.xml
-@@ -30,12 +30,6 @@
- 
-     <dependency>
-       <groupId>org.jboss.resteasy</groupId>
--      <artifactId>resteasy-yaml-provider</artifactId>
--      <version>${resteasy.version}</version>
--    </dependency>
--
--    <dependency>
--      <groupId>org.jboss.resteasy</groupId>
-       <artifactId>resteasy-jackson-provider</artifactId>
-       <version>${resteasy.version}</version>
-       <scope>provided</scope>
-diff --git a/backend/manager/modules/restapi/jaxrs/pom.xml b/backend/manager/modules/restapi/jaxrs/pom.xml
-index f158b41..2fbbadc 100644
---- a/backend/manager/modules/restapi/jaxrs/pom.xml
-+++ b/backend/manager/modules/restapi/jaxrs/pom.xml
-@@ -52,11 +52,22 @@
-     </dependency>
- 
-     <dependency>
-+      <groupId>org.yaml</groupId>
-+      <artifactId>snakeyaml</artifactId>
-+      <version>1.8</version>
-+    </dependency>
-+
-+    <dependency>
-       <groupId>org.jboss.spec.javax.servlet</groupId>
-       <artifactId>jboss-servlet-api_3.0_spec</artifactId>
-     </dependency>
- 
-     <dependency>
-+      <groupId>log4j</groupId>
-+      <artifactId>log4j</artifactId>
-+    </dependency>
-+
-+    <dependency>
-       <groupId>org.easymock</groupId>
-       <artifactId>easymockclassextension</artifactId>
-       <version>${easymock.version}</version>
 diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/BackendApplication.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/BackendApplication.java
 new file mode 100644
-index 0000000..6c19b67
+index 0000000..7e23d8f
 --- /dev/null
 +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/BackendApplication.java
-@@ -0,0 +1,164 @@
+@@ -0,0 +1,162 @@
 +/*
 +* Copyright (c) 2010 Red Hat, Inc.
 +*
@@ -171,7 +62,6 @@ index 0000000..6c19b67
 +import org.ovirt.engine.api.restapi.resource.BackendCapabilitiesResource;
 +import org.ovirt.engine.api.restapi.resource.BackendClustersResource;
 +import org.ovirt.engine.api.restapi.resource.BackendDataCentersResource;
-+import org.ovirt.engine.api.restapi.resource.BackendDisksResource;
 +import org.ovirt.engine.api.restapi.resource.BackendDomainsResource;
 +import org.ovirt.engine.api.restapi.resource.BackendEventsResource;
 +import org.ovirt.engine.api.restapi.resource.BackendGroupsResource;
@@ -246,7 +136,6 @@ index 0000000..6c19b67
 +        addResource(new BackendTemplatesResource());
 +        addResource(new BackendNetworksResource());
 +        addResource(new BackendVmPoolsResource());
-+        addResource(new BackendDisksResource());
 +        addResource(new BackendTagsResource());
 +        addResource(new BackendRolesResource());
 +        addResource(new BackendUsersResource());
@@ -293,8 +182,21 @@ index 0000000..6c19b67
 +        return singletons;
 +    }
 +}
+diff --git a/backend/manager/modules/restapi/pom.xml b/backend/manager/modules/restapi/pom.xml
+index 096ca28..d87d82a 100644
+--- a/backend/manager/modules/restapi/pom.xml
++++ b/backend/manager/modules/restapi/pom.xml
+@@ -21,7 +21,7 @@
+ 
+   <properties>
+     <engine.api.version>3.0.0-0001</engine.api.version>
+-    <resteasy.version>2.2.2.GA</resteasy.version>
++    <resteasy.version>2.3.2.Final</resteasy.version>
+   </properties>
+ 
+   <repositories>
 diff --git a/backend/manager/modules/restapi/types/pom.xml b/backend/manager/modules/restapi/types/pom.xml
-index 64391c6..e905c25 100644
+index 02e9f73..1edf7b7 100644
 --- a/backend/manager/modules/restapi/types/pom.xml
 +++ b/backend/manager/modules/restapi/types/pom.xml
 @@ -19,12 +19,6 @@
@@ -311,23 +213,13 @@ index 64391c6..e905c25 100644
        <artifactId>interface-common-jaxrs</artifactId>
        <version>${engine.api.version}</version>
 diff --git a/backend/manager/modules/restapi/webapp/pom.xml b/backend/manager/modules/restapi/webapp/pom.xml
-index 30c656c..4186dad 100644
+index 9b0edef..efd08ec 100644
 --- a/backend/manager/modules/restapi/webapp/pom.xml
 +++ b/backend/manager/modules/restapi/webapp/pom.xml
-@@ -14,7 +14,7 @@
-   <properties>
- 	<webapp.name>restapi</webapp.name>
-   </properties>
--<dependencies>
-+  <dependencies>
-      <dependency>
- 	<groupId>org.ovirt.engine.api</groupId>
- 	<artifactId>restapi-jaxrs</artifactId>
-@@ -27,52 +27,6 @@
- 	<version>${resteasy.version}</version>
+@@ -28,56 +28,6 @@
  	<scope>provided</scope>
       </dependency>
--
+ 
 -     <dependency>
 -	<groupId>org.jboss.resteasy</groupId>
 -	<artifactId>resteasy-spring</artifactId>
@@ -336,9 +228,14 @@ index 30c656c..4186dad 100644
 -
 -     <dependency>
 -	<groupId>org.springframework</groupId>
+-	<artifactId>spring</artifactId>
+-	<version>${spring.version}</version>
+-     </dependency>
+-
+-     <dependency>
+-	<groupId>org.springframework</groupId>
 -	<artifactId>spring-test</artifactId>
 -	<version>${spring.version}</version>
--	<scope>test</scope>
 -     </dependency>
 -
 -     <dependency>
@@ -365,7 +262,7 @@ index 30c656c..4186dad 100644
 -     </dependency>
 -     <dependency>
 -	<groupId>org.springframework</groupId>
--	<artifactId>spring-instrument</artifactId>
+-	<artifactId>spring-agent</artifactId>
 -	<version>${spring.version}</version>
 -     </dependency>
 -     <dependency>
@@ -376,7 +273,7 @@ index 30c656c..4186dad 100644
    </dependencies>
    <build>
      <plugins>
-@@ -86,7 +40,7 @@
+@@ -91,7 +41,7 @@
                <addClasspath>false</addClasspath>
              </manifest>
              <manifestEntries>
@@ -387,10 +284,10 @@ index 30c656c..4186dad 100644
          </configuration>
 diff --git a/backend/manager/modules/restapi/webapp/src/main/webapp/WEB-INF/applicationContext.xml b/backend/manager/modules/restapi/webapp/src/main/webapp/WEB-INF/applicationContext.xml
 deleted file mode 100644
-index fd50e7f..0000000
+index c5892ee..0000000
 --- a/backend/manager/modules/restapi/webapp/src/main/webapp/WEB-INF/applicationContext.xml
 +++ /dev/null
-@@ -1,180 +0,0 @@
+@@ -1,171 +0,0 @@
 -<?xml version="1.0" encoding="utf-8"?>
 -<beans
 -  default-autowire="byName"
@@ -446,10 +343,6 @@ index fd50e7f..0000000
 -        lazy-init="true"
 -        class="org.ovirt.engine.api.restapi.resource.BackendVmPoolsResource"/>
 -
--  <bean id="backendDisksResource"
--        lazy-init="true"
--        class="org.ovirt.engine.api.restapi.resource.BackendDisksResource"/>
--
 -  <bean id="backendTagsResource"
 -        lazy-init="true"
 -        class="org.ovirt.engine.api.restapi.resource.BackendTagsResource"/>
@@ -517,11 +410,6 @@ index fd50e7f..0000000
 -  </bean>
 -
 -  <bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
--    <!-- This is needed in Spring 3, otherwise it will try to
--         inject a prefefined "environment" object whose type is
--         not compatible with the JndiTemplate environment
--         property: -->
--    <property name="environment"><null/></property>
 -    <!--property name="environment">
 -      <props>
 -        <prop key="java.naming.factory.initial">
@@ -615,269 +503,6 @@ index 395e6ad..3f77945 100644
     </security-constraint> -->
 +
  </web-app>
-diff --git a/deployment/modules/com/sun/xml/bind/main/module.xml b/deployment/modules/com/sun/xml/bind/main/module.xml
-index 1463c9f..717dcb2 100644
---- a/deployment/modules/com/sun/xml/bind/main/module.xml
-+++ b/deployment/modules/com/sun/xml/bind/main/module.xml
-@@ -30,6 +30,7 @@
-     <resources>
-         <resource-root path="jaxb-impl.jar"/>
-         <resource-root path="jaxb-xjc.jar"/>
-+        <resource-root path="istack-commons-runtime.jar"/>
-     </resources>
- 
-     <dependencies>
-diff --git a/deployment/modules/org/apache/james/mime4j/main/module.xml b/deployment/modules/org/apache/james/mime4j/main/module.xml
-new file mode 100644
-index 0000000..29d71dd
---- /dev/null
-+++ b/deployment/modules/org/apache/james/mime4j/main/module.xml
-@@ -0,0 +1,40 @@
-+<?xml version="1.0" encoding="UTF-8"?>
-+
-+<!--
-+  ~ JBoss, Home of Professional Open Source.
-+  ~ Copyright 2011, Red Hat, Inc., and individual contributors
-+  ~ as indicated by the @author tags. See the copyright.txt file in the
-+  ~ distribution for a full listing of individual contributors.
-+  ~
-+  ~ This is free software; you can redistribute it and/or modify it
-+  ~ under the terms of the GNU Lesser General Public License as
-+  ~ published by the Free Software Foundation; either version 2.1 of
-+  ~ the License, or (at your option) any later version.
-+  ~
-+  ~ This software is distributed in the hope that it will be useful,
-+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+  ~ Lesser General Public License for more details.
-+  ~
-+  ~ You should have received a copy of the GNU Lesser General Public
-+  ~ License along with this software; if not, write to the Free
-+  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-+  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-+  -->
-+
-+<module xmlns="urn:jboss:module:1.1" name="org.apache.james.mime4j">
-+    <properties>
-+        <property name="jboss.api" value="private"/>
-+    </properties>
-+
-+    <resources>
-+        <resource-root path="core.jar"/>
-+        <resource-root path="dom.jar"/>
-+        <resource-root path="storage.jar"/>
-+    </resources>
-+
-+    <dependencies>
-+        <module name="javax.api"/>
-+        <module name="org.apache.commons.logging"/>
-+    </dependencies>
-+</module>
-diff --git a/deployment/modules/org/codehaus/jettison/main/module.xml b/deployment/modules/org/codehaus/jettison/main/module.xml
-new file mode 100644
-index 0000000..60364aa
---- /dev/null
-+++ b/deployment/modules/org/codehaus/jettison/main/module.xml
-@@ -0,0 +1,36 @@
-+<?xml version="1.0" encoding="UTF-8"?>
-+
-+<!--
-+  ~ JBoss, Home of Professional Open Source.
-+  ~ Copyright 2011, Red Hat, Inc., and individual contributors
-+  ~ as indicated by the @author tags. See the copyright.txt file in the
-+  ~ distribution for a full listing of individual contributors.
-+  ~
-+  ~ This is free software; you can redistribute it and/or modify it
-+  ~ under the terms of the GNU Lesser General Public License as
-+  ~ published by the Free Software Foundation; either version 2.1 of
-+  ~ the License, or (at your option) any later version.
-+  ~
-+  ~ This software is distributed in the hope that it will be useful,
-+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+  ~ Lesser General Public License for more details.
-+  ~
-+  ~ You should have received a copy of the GNU Lesser General Public
-+  ~ License along with this software; if not, write to the Free
-+  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-+  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-+  -->
-+<module xmlns="urn:jboss:module:1.1" name="org.codehaus.jettison">
-+    <properties>
-+        <property name="jboss.api" value="private"/>
-+    </properties>
-+
-+    <resources>
-+        <resource-root path="jettison.jar"/>
-+    </resources>
-+
-+    <dependencies>
-+        <module name="javax.api"/>
-+    </dependencies>
-+</module>
-diff --git a/deployment/modules/org/yaml/snakeyaml/main/module.xml b/deployment/modules/org/yaml/snakeyaml/main/module.xml
-new file mode 100644
-index 0000000..9cc8171
---- /dev/null
-+++ b/deployment/modules/org/yaml/snakeyaml/main/module.xml
-@@ -0,0 +1,38 @@
-+<?xml version="1.0" encoding="UTF-8"?>
-+
-+<!--
-+  ~ JBoss, Home of Professional Open Source.
-+  ~ Copyright 2011, Red Hat, Inc., and individual contributors
-+  ~ as indicated by the @author tags. See the copyright.txt file in the
-+  ~ distribution for a full listing of individual contributors.
-+  ~
-+  ~ This is free software; you can redistribute it and/or modify it
-+  ~ under the terms of the GNU Lesser General Public License as
-+  ~ published by the Free Software Foundation; either version 2.1 of
-+  ~ the License, or (at your option) any later version.
-+  ~
-+  ~ This software is distributed in the hope that it will be useful,
-+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+  ~ Lesser General Public License for more details.
-+  ~
-+  ~ You should have received a copy of the GNU Lesser General Public
-+  ~ License along with this software; if not, write to the Free
-+  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-+  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-+  -->
-+
-+<module xmlns="urn:jboss:module:1.1" name="org.yaml.snakeyaml">
-+
-+    <properties>
-+        <property name="jboss.api" value="private"/>
-+    </properties>
-+
-+    <resources>
-+        <resource-root path="snakeyaml.jar"/>
-+    </resources>
-+
-+    <dependencies>
-+        <module name="javax.api"/>
-+    </dependencies>
-+</module>
-diff --git a/ear/pom.xml b/ear/pom.xml
-index 523d33c..0cb0837 100644
---- a/ear/pom.xml
-+++ b/ear/pom.xml
-@@ -130,16 +130,6 @@
- 		<artifactId>spring-context</artifactId>
- 		<version>${spring.version}</version>
- 	</dependency>
--	<dependency>
--		<groupId>org.springframework</groupId>
--		<artifactId>spring-instrument</artifactId>
--		<version>${spring.version}</version>
--	</dependency>
--	<dependency>
--		<groupId>org.springframework</groupId>
--		<artifactId>spring-aop</artifactId>
--		<version>${spring.version}</version>
--	</dependency>
- 
-     <!-- Set the scope of depedencies provided by JBoss so that
-          they are not included in the resulting archive: -->
-diff --git a/packaging/fedora/engine-service.xml b/packaging/fedora/engine-service.xml
-index 779e48b..3803fd2 100644
---- a/packaging/fedora/engine-service.xml
-+++ b/packaging/fedora/engine-service.xml
-@@ -7,6 +7,7 @@
-     <extension module="org.jboss.as.deployment-scanner"/>
-     <extension module="org.jboss.as.ee"/>
-     <extension module="org.jboss.as.ejb3"/>
-+    <extension module="org.jboss.as.jaxrs"/>
-     <extension module="org.jboss.as.jpa"/>
-     <extension module="org.jboss.as.logging"/>
-     <extension module="org.jboss.as.naming"/>
-@@ -173,6 +174,8 @@
-       </thread-pools>
-     </subsystem>
- 
-+    <subsystem xmlns="urn:jboss:domain:jaxrs:1.0"/>
-+
-     <subsystem xmlns="urn:jboss:domain:jca:1.1">
-       <archive-validation enabled="false" fail-on-error="false" fail-on-warn="false"/>
-       <bean-validation enabled="true"/>
-diff --git a/packaging/fedora/spec/ovirt-engine.spec.in b/packaging/fedora/spec/ovirt-engine.spec.in
-index b02e9ad..6d6479f 100644
---- a/packaging/fedora/spec/ovirt-engine.spec.in
-+++ b/packaging/fedora/spec/ovirt-engine.spec.in
-@@ -152,8 +152,6 @@ virtualization infrastructure for Servers and Desktops.
- Summary: Engine core of oVirt Engine
- Group: Virtualization/Management
- Requires: %{name} = %{version}-%{release}
--Requires: antlr-tool
--Requires: aopalliance
- Requires: apache-commons-beanutils
- Requires: apache-commons-codec
- Requires: apache-commons-collections
-@@ -386,10 +384,13 @@ while read lib_path
- do
-   rm -rf %{buildroot}%{engine_ear}/lib/${lib_path}*.jar
- done <<'.'
-+antlr
- activation
-+aopalliance
- c3p0
- ejb3-persistence
- jaxb-api
-+jaxb-impl
- jboss-interceptors-api_1.1_spec
- stax-api
- xml-apis
-@@ -401,8 +402,6 @@ do
-   rm -rf %{buildroot}%{engine_ear}/lib/${lib_path}*.jar
-   ln -s `build-classpath ${jar_name}` %{buildroot}%{engine_ear}/lib/${lib_path}.jar
- done <<'.'
--antlr antlr
--aopalliance aopalliance
- commons-beanutils commons-beanutils
- commons-codec commons-codec
- commons-collections commons-collections
-@@ -417,7 +416,6 @@ ws-commons-util ws-commons-util
- xmlrpc3-client xmlrpc-client
- xmlrpc3-common xmlrpc-common
- geronimo-validation validation-api
--glassfish-jaxb/jaxb-impl jaxb-impl
- hibernate-validator hibernate-validator
- hibernate/hibernate-commons-annotations hibernate-commons-annotations
- jsch jsch
-@@ -442,12 +440,8 @@ while read lib_path
- do
-   rm -rf %{buildroot}%{restapi_war}/WEB-INF/lib/${lib_path}*.jar
- done <<'.'
--activation
--jaxb-api
--jboss-logging
--jboss-vfs
--sjsxp
--stax-api
-+commons-codec
-+log4j
- .
- 
- # Then for the system jar files (using build-classpath):
-@@ -456,17 +450,7 @@ do
-   rm -rf %{buildroot}%{restapi_war}/WEB-INF/lib/${lib_path}*.jar
-   ln -s `build-classpath ${jar_name}` %{buildroot}%{restapi_war}/WEB-INF/lib/${lib_path}.jar
- done <<'.'
--aopalliance aopalliance
--commons-codec commons-codec
--commons-httpclient commons-httpclient
--glassfish-jaxb/jaxb-impl jaxb-impl
--jettison jettison
--resteasy/jaxrs-api jaxrs-api
--resteasy/resteasy-jaxb-provider resteasy-jaxb-provider
--resteasy/resteasy-jettison-provider resteasy-jettison-provider
--resteasy/resteasy-yaml-provider resteasy-yaml-provider
- snakeyaml snakeyaml
--istack-commons-runtime istack-commons-runtime
- .
- 
- %preun
 -- 
-1.7.11.2
+1.7.9.3
 
diff --git a/ovirt-engine-replace-guidtype-with-empty-class.patch b/ovirt-engine-replace-guidtype-with-empty-class.patch
new file mode 100644
index 0000000..46e7929
--- /dev/null
+++ b/ovirt-engine-replace-guidtype-with-empty-class.patch
@@ -0,0 +1,110 @@
+From b108ef0f89bf7b6befd708f2f4efcddba8e0d2dc Mon Sep 17 00:00:00 2001
+From: Juan Hernandez <juan.hernandez at redhat.com>
+Date: Thu, 9 Feb 2012 16:50:51 +0100
+Subject: [PATCH 9/9] packaging: Replace GuidType with empty class
+
+To avoid bringing in the Hibernate dependencies.
+
+Change-Id: I37ceadd1f9544a827db4dc4441874c581923c95c
+---
+ .../common/businessentities/mapping/GuidType.java  |   87 +-------------------
+ 1 files changed, 1 insertions(+), 86 deletions(-)
+
+diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/mapping/GuidType.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/mapping/GuidType.java
+index aead3b5..d6a98c3 100644
+--- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/mapping/GuidType.java
++++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/mapping/GuidType.java
+@@ -1,89 +1,4 @@
+ package org.ovirt.engine.core.common.businessentities.mapping;
+ 
+-import java.io.Serializable;
+-import java.sql.PreparedStatement;
+-import java.sql.ResultSet;
+-import java.sql.SQLException;
+-import java.sql.Types;
+-
+-import org.hibernate.HibernateException;
+-import org.hibernate.usertype.UserType;
+-
+-import org.ovirt.engine.core.compat.Guid;
+-
+-public class GuidType implements UserType {
+-
+-    @Override
+-    public int[] sqlTypes() {
+-        return new int[] { Types.OTHER };
+-    }
+-
+-    @Override
+-    public Class<Guid> returnedClass() {
+-        return Guid.class;
+-    }
+-
+-    @Override
+-    public boolean equals(Object x, Object y) throws HibernateException {
+-        return x != null ? x.equals(y) : y == null ? true : false;
+-    }
+-
+-    @Override
+-    public int hashCode(Object x) throws HibernateException {
+-        return x.hashCode();
+-    }
+-
+-    @Override
+-    public Object nullSafeGet(ResultSet rs, String[] names, Object owner) {
+-        Guid result = new Guid();
+-
+-        try {
+-            String value = rs.getString(names[0]);
+-
+-            result = value != null ? new Guid(value) : null; //  == null ? "" : value);
+-        } catch (SQLException e) {
+-            // TODO Auto-generated catch block
+-            e.printStackTrace();
+-        }
+-
+-        return result;
+-    }
+-
+-    @Override
+-    public void nullSafeSet(PreparedStatement st, Object value, int index) throws HibernateException, SQLException {
+-        if (value != null) {
+-            if (value instanceof Guid) {
+-                st.setObject(index, ((Guid) value).toString(), Types.OTHER);
+-            } else {
+-                st.setObject(index, new Guid(value.toString()), Types.OTHER);
+-            }
+-        } else {
+-            st.setNull(index, Types.OTHER);
+-        }
+-    }
+-
+-    @Override
+-    public Object deepCopy(Object value) throws HibernateException {
+-        return value != null ? new Guid(value.toString()) : null;
+-    }
+-
+-    @Override
+-    public boolean isMutable() {
+-        return false;
+-    }
+-
+-    @Override
+-    public Serializable disassemble(Object value) throws HibernateException {
+-        return value.toString();
+-    }
+-
+-    @Override
+-    public Object assemble(Serializable cached, Object owner) throws HibernateException {
+-        return new Guid(cached.toString());
+-    }
+-
+-    @Override
+-    public Object replace(Object original, Object target, Object owner) throws HibernateException {
+-        return original;
+-    }
++public class GuidType {
+ }
+-- 
+1.7.7.6
+
diff --git a/ovirt-engine-replace-index-page.patch b/ovirt-engine-replace-index-page.patch
index ded5a9c..310ab28 100644
--- a/ovirt-engine-replace-index-page.patch
+++ b/ovirt-engine-replace-index-page.patch
@@ -1,34 +1,132 @@
-From 253713c286c1b2c41eea88d2803765ea5c98b217 Mon Sep 17 00:00:00 2001
-From: Juan Hernandez <juan.hernandez at redhat.com>
-Date: Wed, 1 Aug 2012 13:21:38 +0200
-Subject: [PATCH] core: Replace the index page
-
----
- backend/manager/modules/root/src/main/webapp/index.html | 9 +++++----
- 1 file changed, 5 insertions(+), 4 deletions(-)
-
-diff --git a/backend/manager/modules/root/src/main/webapp/index.html b/backend/manager/modules/root/src/main/webapp/index.html
-index 524d066..e41f0e2 100644
---- a/backend/manager/modules/root/src/main/webapp/index.html
-+++ b/backend/manager/modules/root/src/main/webapp/index.html
-@@ -51,12 +51,13 @@
- 
- 		<div id='dynamicLinksSection' style="display: none;">
- 			<div>
-+                        <span style="color:blue;font-weight:bold;">Note: You are using a stripped down version, full version with GUI included can be downloaded in <a  href="www.ovirt.org">oVirt Project Site</a></span>
- 			<h2>
--				<span class="fakeH2">Portals</span>
-+				<span class="fakeH2">API</span>
- 			</h2>
--				<div><script type="text/JavaScript">getHttpsHref("UserPortal","User Portal");</script></div>
--				<div><script type="text/JavaScript">getHttpsHref("webadmin","Administrator Portal");</script></div>
--				<div><script type="text/JavaScript">getHttpHref("OvirtEngineWeb/RedirectServlet?Page=Reports","Reports Portal");</script></div>
-+                               <div><script type="text/JavaScript">getHttpsHref("api","REST API");</script></div>
-+                               <div><script type="text/JavaScript">getHttpHref("api","REST API (no SSL)");</script></div>
+diff --git a/packaging/fedora/setup/resources/jboss/ROOT.war/engine_index.html b/packaging/fedora/setup/resources/jboss/ROOT.war/engine_index.html
+index dc12dc2..03fcf9f 100644
+--- a/packaging/fedora/setup/resources/jboss/ROOT.war/engine_index.html
++++ b/packaging/fedora/setup/resources/jboss/ROOT.war/engine_index.html
+@@ -1,64 +1,63 @@
+-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+-<head>
+-	<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
+-	<title>Ovirt-Engine</title>
+-	<link rel="stylesheet" href="style.css" type="text/css" media="screen, projection" charset="utf-8" />
+-	<script src="engineVersion.js" type="text/javascript"></script>
+-	<script src="web-conf.js" type="text/javascript"></script>
+-	<script type="text/javascript">
+-	function getHttpHref(addedUrl, description)
+-	{
+-	    document.write("<a href=\""+http_url+"/"+addedUrl+"\"/>"+description+"</a>");
+-	};
+-	function getHttpsHref(addedUrl, description)
+-	{
+-		document.write("<a href=\""+https_url+"/"+addedUrl+"\"/>"+description+"</a>");
+-    };
+-	
+-	function pageLoaded()
+-	{
+-		document.getElementById("warningMessage").style.display = "none";
+-		document.getElementById("dynamicLinksSection").style.display = "block";		
+-	}
+-	</script>
+-</head>
+-<body onload="pageLoaded()">
+-	<div>
+-		<div class="left">
+-			
+-		</div>
+-		
+-		<div class="center">
+-		 
+-		</div>
+-	</div>
+-	<div class="main">
+-		<div class="welcome">Welcome to Open Virtualization Manager.</div>
+-		<div class="welcome">  
+-			 <script type="text/JavaScript">
+-			<!--
+-			document.write("Version " + myVersion)
+-			//-->
+-			</script>
+-		</div>
+-		
+-		<div class="warningMessage" id="warningMessage">
+-			<b>* Your current browser settings prevent displaying this page correctly!</b>
+-			Please allow Javascript to run on your browser (for example, by adding this site to 'Trusted Sites') and then refresh the page.
+-		</div>
+-
+-		<div id='dynamicLinksSection' style="display: none;">
+-			<div>
+-			<h2>
+-				<span class="fakeH2">Portals</span>
+-			</h2>
+-				<div><script type="text/JavaScript">getHttpHref("webadmin","Administrator Portal (no SSL)");</script></div>
+-				<div><script type="text/JavaScript">getHttpHref("engineanagerweb/RedirectServlet?Page=Reports","Reports Portal");</script></div>
+-				<div><script type="text/JavaScript">getHttpsHref("webadmin","Administrator Portal");</script></div>
+-				<div><script type="text/JavaScript">getHttpsHref("UserPortal","User Portal");</script></div>
+-			</div>
+-	</div>
+-</body>
+-</html>
++<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
++	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
++<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
++<head>
++	<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
++	<title>Ovirt-Engine</title>
++	<link rel="stylesheet" href="style.css" type="text/css" media="screen, projection" charset="utf-8" />
++	<script src="engineVersion.js" type="text/javascript"></script>
++	<script src="web-conf.js" type="text/javascript"></script>
++	<script type="text/javascript">
++	function getHttpHref(addedUrl, description)
++	{
++	    document.write("<a href=\""+http_url+"/"+addedUrl+"\"/>"+description+"</a>");
++	};
++	function getHttpsHref(addedUrl, description)
++	{
++		document.write("<a href=\""+https_url+"/"+addedUrl+"\"/>"+description+"</a>");
++    };
++	
++	function pageLoaded()
++	{
++		document.getElementById("warningMessage").style.display = "none";
++		document.getElementById("dynamicLinksSection").style.display = "block";		
++	}
++	</script>
++</head>
++<body onload="pageLoaded()">
++	<div>
++		<div class="left">
++			
++		</div>
++		
++		<div class="center">
++		 
++		</div>
++	</div>
++	<div class="main">
++		<div class="welcome">Welcome to Open Virtualization Manager.</div>
++		<div class="welcome">  
++			 <script type="text/JavaScript">
++			<!--
++			document.write("Version " + myVersion)
++			//-->
++			</script>
++		</div>
++		
++		<div class="warningMessage" id="warningMessage">
++			<b>* Your current browser settings prevent displaying this page correctly!</b>
++			Please allow Javascript to run on your browser (for example, by adding this site to 'Trusted Sites') and then refresh the page.
++		</div>
 +
- 			</div>
- 	</div>
- </body>
--- 
-1.7.11.2
-
++		<div id='dynamicLinksSection' style="display: none;">
++			<div>
++			<span style="color:blue;font-weight:bold;">Note: You are using a stripped down version, full version with GUI included can be downloaded in <a  href="www.ovirt.org">oVirt Project Site</a></span>
++			<h2>
++				<span class="fakeH2">API</span>
++			</h2>
++				<div><script type="text/JavaScript">getHttpsHref("api","REST API");</script></div>
++				<div><script type="text/JavaScript">getHttpHref("api","REST API (no SSL)");</script></div>
++			</div>
++	</div>
++</body>
++</html>
diff --git a/ovirt-engine-replace-pubkey2ssh-with-ssh-keygen.patch b/ovirt-engine-replace-pubkey2ssh-with-ssh-keygen.patch
new file mode 100644
index 0000000..1dfc94a
--- /dev/null
+++ b/ovirt-engine-replace-pubkey2ssh-with-ssh-keygen.patch
@@ -0,0 +1,766 @@
+diff --git a/backend/manager/3rdparty/pub2ssh/lgpl-2.1.txt b/backend/manager/3rdparty/pub2ssh/lgpl-2.1.txt
+deleted file mode 100644
+index 4362b49..0000000
+--- a/backend/manager/3rdparty/pub2ssh/lgpl-2.1.txt
++++ /dev/null
+@@ -1,502 +0,0 @@
+-                  GNU LESSER GENERAL PUBLIC LICENSE
+-                       Version 2.1, February 1999
+-
+- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+- Everyone is permitted to copy and distribute verbatim copies
+- of this license document, but changing it is not allowed.
+-
+-[This is the first released version of the Lesser GPL.  It also counts
+- as the successor of the GNU Library Public License, version 2, hence
+- the version number 2.1.]
+-
+-                            Preamble
+-
+-  The licenses for most software are designed to take away your
+-freedom to share and change it.  By contrast, the GNU General Public
+-Licenses are intended to guarantee your freedom to share and change
+-free software--to make sure the software is free for all its users.
+-
+-  This license, the Lesser General Public License, applies to some
+-specially designated software packages--typically libraries--of the
+-Free Software Foundation and other authors who decide to use it.  You
+-can use it too, but we suggest you first think carefully about whether
+-this license or the ordinary General Public License is the better
+-strategy to use in any particular case, based on the explanations below.
+-
+-  When we speak of free software, we are referring to freedom of use,
+-not price.  Our General Public Licenses are designed to make sure that
+-you have the freedom to distribute copies of free software (and charge
+-for this service if you wish); that you receive source code or can get
+-it if you want it; that you can change the software and use pieces of
+-it in new free programs; and that you are informed that you can do
+-these things.
+-
+-  To protect your rights, we need to make restrictions that forbid
+-distributors to deny you these rights or to ask you to surrender these
+-rights.  These restrictions translate to certain responsibilities for
+-you if you distribute copies of the library or if you modify it.
+-
+-  For example, if you distribute copies of the library, whether gratis
+-or for a fee, you must give the recipients all the rights that we gave
+-you.  You must make sure that they, too, receive or can get the source
+-code.  If you link other code with the library, you must provide
+-complete object files to the recipients, so that they can relink them
+-with the library after making changes to the library and recompiling
+-it.  And you must show them these terms so they know their rights.
+-
+-  We protect your rights with a two-step method: (1) we copyright the
+-library, and (2) we offer you this license, which gives you legal
+-permission to copy, distribute and/or modify the library.
+-
+-  To protect each distributor, we want to make it very clear that
+-there is no warranty for the free library.  Also, if the library is
+-modified by someone else and passed on, the recipients should know
+-that what they have is not the original version, so that the original
+-author's reputation will not be affected by problems that might be
+-introduced by others.
+-
+-  Finally, software patents pose a constant threat to the existence of
+-any free program.  We wish to make sure that a company cannot
+-effectively restrict the users of a free program by obtaining a
+-restrictive license from a patent holder.  Therefore, we insist that
+-any patent license obtained for a version of the library must be
+-consistent with the full freedom of use specified in this license.
+-
+-  Most GNU software, including some libraries, is covered by the
+-ordinary GNU General Public License.  This license, the GNU Lesser
+-General Public License, applies to certain designated libraries, and
+-is quite different from the ordinary General Public License.  We use
+-this license for certain libraries in order to permit linking those
+-libraries into non-free programs.
+-
+-  When a program is linked with a library, whether statically or using
+-a shared library, the combination of the two is legally speaking a
+-combined work, a derivative of the original library.  The ordinary
+-General Public License therefore permits such linking only if the
+-entire combination fits its criteria of freedom.  The Lesser General
+-Public License permits more lax criteria for linking other code with
+-the library.
+-
+-  We call this license the "Lesser" General Public License because it
+-does Less to protect the user's freedom than the ordinary General
+-Public License.  It also provides other free software developers Less
+-of an advantage over competing non-free programs.  These disadvantages
+-are the reason we use the ordinary General Public License for many
+-libraries.  However, the Lesser license provides advantages in certain
+-special circumstances.
+-
+-  For example, on rare occasions, there may be a special need to
+-encourage the widest possible use of a certain library, so that it becomes
+-a de-facto standard.  To achieve this, non-free programs must be
+-allowed to use the library.  A more frequent case is that a free
+-library does the same job as widely used non-free libraries.  In this
+-case, there is little to gain by limiting the free library to free
+-software only, so we use the Lesser General Public License.
+-
+-  In other cases, permission to use a particular library in non-free
+-programs enables a greater number of people to use a large body of
+-free software.  For example, permission to use the GNU C Library in
+-non-free programs enables many more people to use the whole GNU
+-operating system, as well as its variant, the GNU/Linux operating
+-system.
+-
+-  Although the Lesser General Public License is Less protective of the
+-users' freedom, it does ensure that the user of a program that is
+-linked with the Library has the freedom and the wherewithal to run
+-that program using a modified version of the Library.
+-
+-  The precise terms and conditions for copying, distribution and
+-modification follow.  Pay close attention to the difference between a
+-"work based on the library" and a "work that uses the library".  The
+-former contains code derived from the library, whereas the latter must
+-be combined with the library in order to run.
+-
+-                  GNU LESSER GENERAL PUBLIC LICENSE
+-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+-
+-  0. This License Agreement applies to any software library or other
+-program which contains a notice placed by the copyright holder or
+-other authorized party saying it may be distributed under the terms of
+-this Lesser General Public License (also called "this License").
+-Each licensee is addressed as "you".
+-
+-  A "library" means a collection of software functions and/or data
+-prepared so as to be conveniently linked with application programs
+-(which use some of those functions and data) to form executables.
+-
+-  The "Library", below, refers to any such software library or work
+-which has been distributed under these terms.  A "work based on the
+-Library" means either the Library or any derivative work under
+-copyright law: that is to say, a work containing the Library or a
+-portion of it, either verbatim or with modifications and/or translated
+-straightforwardly into another language.  (Hereinafter, translation is
+-included without limitation in the term "modification".)
+-
+-  "Source code" for a work means the preferred form of the work for
+-making modifications to it.  For a library, complete source code means
+-all the source code for all modules it contains, plus any associated
+-interface definition files, plus the scripts used to control compilation
+-and installation of the library.
+-
+-  Activities other than copying, distribution and modification are not
+-covered by this License; they are outside its scope.  The act of
+-running a program using the Library is not restricted, and output from
+-such a program is covered only if its contents constitute a work based
+-on the Library (independent of the use of the Library in a tool for
+-writing it).  Whether that is true depends on what the Library does
+-and what the program that uses the Library does.
+-
+-  1. You may copy and distribute verbatim copies of the Library's
+-complete source code as you receive it, in any medium, provided that
+-you conspicuously and appropriately publish on each copy an
+-appropriate copyright notice and disclaimer of warranty; keep intact
+-all the notices that refer to this License and to the absence of any
+-warranty; and distribute a copy of this License along with the
+-Library.
+-
+-  You may charge a fee for the physical act of transferring a copy,
+-and you may at your option offer warranty protection in exchange for a
+-fee.
+-
+-  2. You may modify your copy or copies of the Library or any portion
+-of it, thus forming a work based on the Library, and copy and
+-distribute such modifications or work under the terms of Section 1
+-above, provided that you also meet all of these conditions:
+-
+-    a) The modified work must itself be a software library.
+-
+-    b) You must cause the files modified to carry prominent notices
+-    stating that you changed the files and the date of any change.
+-
+-    c) You must cause the whole of the work to be licensed at no
+-    charge to all third parties under the terms of this License.
+-
+-    d) If a facility in the modified Library refers to a function or a
+-    table of data to be supplied by an application program that uses
+-    the facility, other than as an argument passed when the facility
+-    is invoked, then you must make a good faith effort to ensure that,
+-    in the event an application does not supply such function or
+-    table, the facility still operates, and performs whatever part of
+-    its purpose remains meaningful.
+-
+-    (For example, a function in a library to compute square roots has
+-    a purpose that is entirely well-defined independent of the
+-    application.  Therefore, Subsection 2d requires that any
+-    application-supplied function or table used by this function must
+-    be optional: if the application does not supply it, the square
+-    root function must still compute square roots.)
+-
+-These requirements apply to the modified work as a whole.  If
+-identifiable sections of that work are not derived from the Library,
+-and can be reasonably considered independent and separate works in
+-themselves, then this License, and its terms, do not apply to those
+-sections when you distribute them as separate works.  But when you
+-distribute the same sections as part of a whole which is a work based
+-on the Library, the distribution of the whole must be on the terms of
+-this License, whose permissions for other licensees extend to the
+-entire whole, and thus to each and every part regardless of who wrote
+-it.
+-
+-Thus, it is not the intent of this section to claim rights or contest
+-your rights to work written entirely by you; rather, the intent is to
+-exercise the right to control the distribution of derivative or
+-collective works based on the Library.
+-
+-In addition, mere aggregation of another work not based on the Library
+-with the Library (or with a work based on the Library) on a volume of
+-a storage or distribution medium does not bring the other work under
+-the scope of this License.
+-
+-  3. You may opt to apply the terms of the ordinary GNU General Public
+-License instead of this License to a given copy of the Library.  To do
+-this, you must alter all the notices that refer to this License, so
+-that they refer to the ordinary GNU General Public License, version 2,
+-instead of to this License.  (If a newer version than version 2 of the
+-ordinary GNU General Public License has appeared, then you can specify
+-that version instead if you wish.)  Do not make any other change in
+-these notices.
+-
+-  Once this change is made in a given copy, it is irreversible for
+-that copy, so the ordinary GNU General Public License applies to all
+-subsequent copies and derivative works made from that copy.
+-
+-  This option is useful when you wish to copy part of the code of
+-the Library into a program that is not a library.
+-
+-  4. You may copy and distribute the Library (or a portion or
+-derivative of it, under Section 2) in object code or executable form
+-under the terms of Sections 1 and 2 above provided that you accompany
+-it with the complete corresponding machine-readable source code, which
+-must be distributed under the terms of Sections 1 and 2 above on a
+-medium customarily used for software interchange.
+-
+-  If distribution of object code is made by offering access to copy
+-from a designated place, then offering equivalent access to copy the
+-source code from the same place satisfies the requirement to
+-distribute the source code, even though third parties are not
+-compelled to copy the source along with the object code.
+-
+-  5. A program that contains no derivative of any portion of the
+-Library, but is designed to work with the Library by being compiled or
+-linked with it, is called a "work that uses the Library".  Such a
+-work, in isolation, is not a derivative work of the Library, and
+-therefore falls outside the scope of this License.
+-
+-  However, linking a "work that uses the Library" with the Library
+-creates an executable that is a derivative of the Library (because it
+-contains portions of the Library), rather than a "work that uses the
+-library".  The executable is therefore covered by this License.
+-Section 6 states terms for distribution of such executables.
+-
+-  When a "work that uses the Library" uses material from a header file
+-that is part of the Library, the object code for the work may be a
+-derivative work of the Library even though the source code is not.
+-Whether this is true is especially significant if the work can be
+-linked without the Library, or if the work is itself a library.  The
+-threshold for this to be true is not precisely defined by law.
+-
+-  If such an object file uses only numerical parameters, data
+-structure layouts and accessors, and small macros and small inline
+-functions (ten lines or less in length), then the use of the object
+-file is unrestricted, regardless of whether it is legally a derivative
+-work.  (Executables containing this object code plus portions of the
+-Library will still fall under Section 6.)
+-
+-  Otherwise, if the work is a derivative of the Library, you may
+-distribute the object code for the work under the terms of Section 6.
+-Any executables containing that work also fall under Section 6,
+-whether or not they are linked directly with the Library itself.
+-
+-  6. As an exception to the Sections above, you may also combine or
+-link a "work that uses the Library" with the Library to produce a
+-work containing portions of the Library, and distribute that work
+-under terms of your choice, provided that the terms permit
+-modification of the work for the customer's own use and reverse
+-engineering for debugging such modifications.
+-
+-  You must give prominent notice with each copy of the work that the
+-Library is used in it and that the Library and its use are covered by
+-this License.  You must supply a copy of this License.  If the work
+-during execution displays copyright notices, you must include the
+-copyright notice for the Library among them, as well as a reference
+-directing the user to the copy of this License.  Also, you must do one
+-of these things:
+-
+-    a) Accompany the work with the complete corresponding
+-    machine-readable source code for the Library including whatever
+-    changes were used in the work (which must be distributed under
+-    Sections 1 and 2 above); and, if the work is an executable linked
+-    with the Library, with the complete machine-readable "work that
+-    uses the Library", as object code and/or source code, so that the
+-    user can modify the Library and then relink to produce a modified
+-    executable containing the modified Library.  (It is understood
+-    that the user who changes the contents of definitions files in the
+-    Library will not necessarily be able to recompile the application
+-    to use the modified definitions.)
+-
+-    b) Use a suitable shared library mechanism for linking with the
+-    Library.  A suitable mechanism is one that (1) uses at run time a
+-    copy of the library already present on the user's computer system,
+-    rather than copying library functions into the executable, and (2)
+-    will operate properly with a modified version of the library, if
+-    the user installs one, as long as the modified version is
+-    interface-compatible with the version that the work was made with.
+-
+-    c) Accompany the work with a written offer, valid for at
+-    least three years, to give the same user the materials
+-    specified in Subsection 6a, above, for a charge no more
+-    than the cost of performing this distribution.
+-
+-    d) If distribution of the work is made by offering access to copy
+-    from a designated place, offer equivalent access to copy the above
+-    specified materials from the same place.
+-
+-    e) Verify that the user has already received a copy of these
+-    materials or that you have already sent this user a copy.
+-
+-  For an executable, the required form of the "work that uses the
+-Library" must include any data and utility programs needed for
+-reproducing the executable from it.  However, as a special exception,
+-the materials to be distributed need not include anything that is
+-normally distributed (in either source or binary form) with the major
+-components (compiler, kernel, and so on) of the operating system on
+-which the executable runs, unless that component itself accompanies
+-the executable.
+-
+-  It may happen that this requirement contradicts the license
+-restrictions of other proprietary libraries that do not normally
+-accompany the operating system.  Such a contradiction means you cannot
+-use both them and the Library together in an executable that you
+-distribute.
+-
+-  7. You may place library facilities that are a work based on the
+-Library side-by-side in a single library together with other library
+-facilities not covered by this License, and distribute such a combined
+-library, provided that the separate distribution of the work based on
+-the Library and of the other library facilities is otherwise
+-permitted, and provided that you do these two things:
+-
+-    a) Accompany the combined library with a copy of the same work
+-    based on the Library, uncombined with any other library
+-    facilities.  This must be distributed under the terms of the
+-    Sections above.
+-
+-    b) Give prominent notice with the combined library of the fact
+-    that part of it is a work based on the Library, and explaining
+-    where to find the accompanying uncombined form of the same work.
+-
+-  8. You may not copy, modify, sublicense, link with, or distribute
+-the Library except as expressly provided under this License.  Any
+-attempt otherwise to copy, modify, sublicense, link with, or
+-distribute the Library is void, and will automatically terminate your
+-rights under this License.  However, parties who have received copies,
+-or rights, from you under this License will not have their licenses
+-terminated so long as such parties remain in full compliance.
+-
+-  9. You are not required to accept this License, since you have not
+-signed it.  However, nothing else grants you permission to modify or
+-distribute the Library or its derivative works.  These actions are
+-prohibited by law if you do not accept this License.  Therefore, by
+-modifying or distributing the Library (or any work based on the
+-Library), you indicate your acceptance of this License to do so, and
+-all its terms and conditions for copying, distributing or modifying
+-the Library or works based on it.
+-
+-  10. Each time you redistribute the Library (or any work based on the
+-Library), the recipient automatically receives a license from the
+-original licensor to copy, distribute, link with or modify the Library
+-subject to these terms and conditions.  You may not impose any further
+-restrictions on the recipients' exercise of the rights granted herein.
+-You are not responsible for enforcing compliance by third parties with
+-this License.
+-
+-  11. If, as a consequence of a court judgment or allegation of patent
+-infringement or for any other reason (not limited to patent issues),
+-conditions are imposed on you (whether by court order, agreement or
+-otherwise) that contradict the conditions of this License, they do not
+-excuse you from the conditions of this License.  If you cannot
+-distribute so as to satisfy simultaneously your obligations under this
+-License and any other pertinent obligations, then as a consequence you
+-may not distribute the Library at all.  For example, if a patent
+-license would not permit royalty-free redistribution of the Library by
+-all those who receive copies directly or indirectly through you, then
+-the only way you could satisfy both it and this License would be to
+-refrain entirely from distribution of the Library.
+-
+-If any portion of this section is held invalid or unenforceable under any
+-particular circumstance, the balance of the section is intended to apply,
+-and the section as a whole is intended to apply in other circumstances.
+-
+-It is not the purpose of this section to induce you to infringe any
+-patents or other property right claims or to contest validity of any
+-such claims; this section has the sole purpose of protecting the
+-integrity of the free software distribution system which is
+-implemented by public license practices.  Many people have made
+-generous contributions to the wide range of software distributed
+-through that system in reliance on consistent application of that
+-system; it is up to the author/donor to decide if he or she is willing
+-to distribute software through any other system and a licensee cannot
+-impose that choice.
+-
+-This section is intended to make thoroughly clear what is believed to
+-be a consequence of the rest of this License.
+-
+-  12. If the distribution and/or use of the Library is restricted in
+-certain countries either by patents or by copyrighted interfaces, the
+-original copyright holder who places the Library under this License may add
+-an explicit geographical distribution limitation excluding those countries,
+-so that distribution is permitted only in or among countries not thus
+-excluded.  In such case, this License incorporates the limitation as if
+-written in the body of this License.
+-
+-  13. The Free Software Foundation may publish revised and/or new
+-versions of the Lesser General Public License from time to time.
+-Such new versions will be similar in spirit to the present version,
+-but may differ in detail to address new problems or concerns.
+-
+-Each version is given a distinguishing version number.  If the Library
+-specifies a version number of this License which applies to it and
+-"any later version", you have the option of following the terms and
+-conditions either of that version or of any later version published by
+-the Free Software Foundation.  If the Library does not specify a
+-license version number, you may choose any version ever published by
+-the Free Software Foundation.
+-
+-  14. If you wish to incorporate parts of the Library into other free
+-programs whose distribution conditions are incompatible with these,
+-write to the author to ask for permission.  For software which is
+-copyrighted by the Free Software Foundation, write to the Free
+-Software Foundation; we sometimes make exceptions for this.  Our
+-decision will be guided by the two goals of preserving the free status
+-of all derivatives of our free software and of promoting the sharing
+-and reuse of software generally.
+-
+-                            NO WARRANTY
+-
+-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+-
+-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+-DAMAGES.
+-
+-                     END OF TERMS AND CONDITIONS
+-
+-           How to Apply These Terms to Your New Libraries
+-
+-  If you develop a new library, and you want it to be of the greatest
+-possible use to the public, we recommend making it free software that
+-everyone can redistribute and change.  You can do so by permitting
+-redistribution under these terms (or, alternatively, under the terms of the
+-ordinary General Public License).
+-
+-  To apply these terms, attach the following notices to the library.  It is
+-safest to attach them to the start of each source file to most effectively
+-convey the exclusion of warranty; and each file should have at least the
+-"copyright" line and a pointer to where the full notice is found.
+-
+-    <one line to give the library's name and a brief idea of what it does.>
+-    Copyright (C) <year>  <name of author>
+-
+-    This library is free software; you can redistribute it and/or
+-    modify it under the terms of the GNU Lesser General Public
+-    License as published by the Free Software Foundation; either
+-    version 2.1 of the License, or (at your option) any later version.
+-
+-    This library is distributed in the hope that it will be useful,
+-    but WITHOUT ANY WARRANTY; without even the implied warranty of
+-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-    Lesser General Public License for more details.
+-
+-    You should have received a copy of the GNU Lesser General Public
+-    License along with this library; if not, write to the Free Software
+-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+-
+-Also add information on how to contact you by electronic and paper mail.
+-
+-You should also get your employer (if you work as a programmer) or your
+-school, if any, to sign a "copyright disclaimer" for the library, if
+-necessary.  Here is a sample; alter the names:
+-
+-  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+-  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+-
+-  <signature of Ty Coon>, 1 April 1990
+-  Ty Coon, President of Vice
+-
+-That's all there is to it!
+diff --git a/backend/manager/3rdparty/pub2ssh/pubkey2ssh.sh b/backend/manager/3rdparty/pub2ssh/pubkey2ssh.sh
+deleted file mode 100755
+index 8f6c307..0000000
+--- a/backend/manager/3rdparty/pub2ssh/pubkey2ssh.sh
++++ /dev/null
+@@ -1,5 +0,0 @@
+-#!/bin/sh
+-
+-g++ -I/usr/include/openssl  -L/usr/lib64/  -lcrypto src/pubkey2ssh.c -o bin/pubkey2ssh
+-
+-exit $?
+\ No newline at end of file
+diff --git a/backend/manager/3rdparty/pub2ssh/readme.txt b/backend/manager/3rdparty/pub2ssh/readme.txt
+deleted file mode 100644
+index 329d585..0000000
+--- a/backend/manager/3rdparty/pub2ssh/readme.txt
++++ /dev/null
+@@ -1,29 +0,0 @@
+-The purpose of this project is to convert a PEM based public key
+-into OpenSSH format. This project includes one source file, which
+-can be conpiled for Linux using the shell script or Windows using
+-the batch script.
+-
+-In order to compile, you'll need to have openssl libraries installed,
+-and for windows you'll need Visual Stusio 2005 as well.
+-
+-In order to extract a public key from Java's keystore or encrypted
+-pem file, you can use one of the given examples below.
+-
+-1. Extract public key from private:
+-
+-openssl rsa -in /tmp/ca/keys/ca.pem -pubout -out id_rsa.foropenssl
+-openssl rsa -in id_rsa.foropenssl -pubout > /tmp/test.pub
+-
+-output:
+------BEGIN PUBLIC KEY-----
+-MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDFE/YnZIzhY9Z6VGR50b2v/E4k
+-fjH4gKkgGPhtPRpnoQPFUV5qI1vm1nsMN8caUW1IYmh6HMecGRLuFPrVPPUrdyYE
+-lrjujcoCuKrkp5+2fpUAGnpDZZ3nZC2Zhz0hA9xNN0jjejHT//HprzrIbUx4MU2R
+-sQhZVWdlrg2L5h9uiwIDAQAB
+------END PUBLIC KEY-----
+-
+-
+-2. Extract public key from keystore.
+-
+-keytool -rfc -export -keystore ca/.keystore -alias mycert -file aaa.txt
+-openssl x509 -noout -in aaa.txt -pubkey > aaa.pub
+\ No newline at end of file
+diff --git a/backend/manager/3rdparty/pub2ssh/src/pubkey2ssh.c b/backend/manager/3rdparty/pub2ssh/src/pubkey2ssh.c
+deleted file mode 100644
+index 2296ed6..0000000
+--- a/backend/manager/3rdparty/pub2ssh/src/pubkey2ssh.c
++++ /dev/null
+@@ -1,160 +0,0 @@
+-/*
+- * An implementation of convertion from OpenSSL to OpenSSH public key format
+- *
+- * Copyright (c) 2008 Mounir IDRASSI <mounir.idrassi at idrix.fr>. All rights reserved.
+- *
+- * This program is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU Lesser General Public
+- * License as published by the Free Software Foundation; either
+- * version 2.1 of the License, or (at your option) any later version.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * Lesser General Public License for more details.
+- *
+- * You should have received a copy of the GNU Lesser General Public
+- * License along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+- *
+- */
+-
+-
+-#include <memory.h>
+-#include <openssl/bio.h>
+-#include <openssl/evp.h>
+-#include <openssl/pem.h>
+-#include <openssl/err.h>
+-
+-
+-static unsigned char pSshHeader[11] = { 0x00, 0x00, 0x00, 0x07, 0x73, 0x73, 0x68, 0x2D, 0x72, 0x73, 0x61};
+-
+-static int SshEncodeBuffer(unsigned char *pEncoding, int bufferLen, unsigned char* pBuffer)
+-{
+-   int adjustedLen = bufferLen, index;
+-   if (*pBuffer & 0x80)
+-   {
+-      adjustedLen++;
+-      pEncoding[4] = 0;
+-      index = 5;
+-   }
+-   else
+-   {
+-      index = 4;
+-   }
+-   pEncoding[0] = (unsigned char) (adjustedLen >> 24);
+-   pEncoding[1] = (unsigned char) (adjustedLen >> 16);
+-   pEncoding[2] = (unsigned char) (adjustedLen >>  8);
+-   pEncoding[3] = (unsigned char) (adjustedLen      );
+-   memcpy(&pEncoding[index], pBuffer, bufferLen);
+-   return index + bufferLen;
+-}
+-
+-int main(int argc, char**  argv)
+-{
+-   int iRet = 0;
+-   int nLen = 0, eLen = 0;
+-   int encodingLength = 0;
+-   int index = 0;
+-   unsigned char *nBytes = NULL, *eBytes = NULL;
+-   unsigned char* pEncoding = NULL;
+-   FILE* pFile = NULL;
+-   EVP_PKEY *pPubKey = NULL;
+-   RSA* pRsa = NULL;
+-   BIO *bio, *b64;
+-
+-   ERR_load_crypto_strings();
+-   OpenSSL_add_all_algorithms();
+-
+-   if (argc != 3)
+-   {
+-      printf("usage: %s public_key_file_name ssh_key_description\n", argv[0]);
+-      iRet = 1;
+-      goto error;
+-   }
+-
+-   pFile = fopen(argv[1], "rt");
+-   if (!pFile)
+-   {
+-      printf("Failed to open the given file\n");
+-      iRet = 2;
+-      goto error;
+-   }
+-
+-   pPubKey = PEM_read_PUBKEY(pFile, NULL, NULL, NULL);
+-   if (!pPubKey)
+-   {
+-      printf("Unable to decode public key from the given file: %s\n", ERR_error_string(ERR_get_error(), NULL));
+-      iRet = 3;
+-      goto error;
+-   }
+-
+-   if (EVP_PKEY_type(pPubKey->type) != EVP_PKEY_RSA)
+-   {
+-      printf("Only RSA public keys are currently supported\n");
+-      iRet = 4;
+-      goto error;
+-   }
+-
+-   pRsa = EVP_PKEY_get1_RSA(pPubKey);
+-   if (!pRsa)
+-   {
+-      printf("Failed to get RSA public key : %s\n", ERR_error_string(ERR_get_error(), NULL));
+-      iRet = 5;
+-      goto error;
+-   }
+-
+-   // reading the modulus
+-   nLen = BN_num_bytes(pRsa->n);
+-   nBytes = (unsigned char*) malloc(nLen);
+-   BN_bn2bin(pRsa->n, nBytes);
+-
+-   // reading the public exponent
+-   eLen = BN_num_bytes(pRsa->e);
+-   eBytes = (unsigned char*) malloc(eLen);
+-   BN_bn2bin(pRsa->e, eBytes);
+-
+-   encodingLength = 11 + 4 + eLen + 4 + nLen;
+-   // correct depending on the MSB of e and N
+-   if (eBytes[0] & 0x80)
+-      encodingLength++;
+-   if (nBytes[0] & 0x80)
+-      encodingLength++;
+-
+-   pEncoding = (unsigned char*) malloc(encodingLength);
+-   memcpy(pEncoding, pSshHeader, 11);
+-
+-   index = SshEncodeBuffer(&pEncoding[11], eLen, eBytes);
+-   index = SshEncodeBuffer(&pEncoding[11 + index], nLen, nBytes);
+-
+-   b64 = BIO_new(BIO_f_base64());
+-   BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL);
+-   bio = BIO_new_fp(stdout, BIO_NOCLOSE);
+-   BIO_printf(bio, "ssh-rsa ");
+-   bio = BIO_push(b64, bio);
+-   BIO_write(bio, pEncoding, encodingLength);
+-   BIO_flush(bio);
+-   bio = BIO_pop(b64);
+-   BIO_printf(bio, " %s\n", argv[2]);
+-   BIO_flush(bio);
+-   BIO_free_all(bio);
+-   BIO_free(b64);
+-
+-error:
+-   if (pFile)
+-      fclose(pFile);
+-   if (pRsa)
+-      RSA_free(pRsa);
+-   if (pPubKey)
+-      EVP_PKEY_free(pPubKey);
+-   if (nBytes)
+-      free(nBytes);
+-   if (eBytes)
+-      free(eBytes);
+-   if (pEncoding)
+-      free(pEncoding);
+-
+-   EVP_cleanup();
+-   ERR_free_strings();
+-   return iRet;
+-}
+diff --git a/backend/manager/conf/ca/installCA.sh b/backend/manager/conf/ca/installCA.sh
+index 15b16bd..fb02e54 100755
+--- a/backend/manager/conf/ca/installCA.sh
++++ b/backend/manager/conf/ca/installCA.sh
+@@ -29,15 +29,6 @@ WORKDIR=$7
+ CA_SUBJECT=$8
+ [ -d "$7" ] || die "Directory $7 does not exists"
+ 
+-# Define pubkey2ssh location
+-if [ -s "$START_DIR/../../3rdparty/pub2ssh/bin/pubkey2ssh" ]; then
+-	PUB_KEY=$START_DIR/../../3rdparty/pub2ssh/bin
+-elif [ -s "$WORKDIR/pubkey2ssh" ]; then
+-	PUB_KEY=$WORKDIR/
+-else
+-	die "Unable to find pubkey2ssh executable. Please make sure it's in path."
+-fi
+-
+ echo " "
+ echo "} Creating CA..."
+ 
+@@ -96,7 +87,7 @@ echo "} Importing oVirt certificate..."
+ echo " "
+ echo "} Exporting oVirt key as SSH..."
+ ./exportK2SSH.sh $WORKDIR/.keystore $ALIAS engine.pub $PASS
+-$PUB_KEY/pubkey2ssh $WORKDIR/keys/engine.pub $ALIAS > $WORKDIR/keys/engine.ssh.key.txt
++echo $(ssh-keygen -i -m pkcs8 -f $WORKDIR/keys/engine.pub) $ALIAS > $WORKDIR/keys/engine.ssh.key.txt
+ rm -f $WORKDIR/keys/engine.pub
+ 
+ exit 0
+diff --git a/packaging/fedora/spec/ovirt-engine.spec.in b/packaging/fedora/spec/ovirt-engine.spec.in
+index 255113e..74026d3 100644
+--- a/packaging/fedora/spec/ovirt-engine.spec.in
++++ b/packaging/fedora/spec/ovirt-engine.spec.in
+@@ -268,7 +268,6 @@ cp -rpf %{_datadir}/vdsm-bootstrap/* %{_engineeardir}/components.war/vds/ &> /de
+ %config(noreplace) %{_datadir}/%{name}/sysprep/sysprep.w7x64
+ %config(noreplace) %{_datadir}/%{name}/sysprep/sysprep.xp
+ %{_jbossdir}/modules/org/postgresql/main/postgresql-jdbc.jar
+-%attr (755,root,root) %{_sysconfdir}/pki/%{name}/pubkey2ssh
+ 
+ %files backend
+ %dir %{_engineeardir}
+-- 
+1.7.9.3
+
diff --git a/ovirt-engine-setup-fixes.patch b/ovirt-engine-setup-fixes.patch
new file mode 100644
index 0000000..3272967
--- /dev/null
+++ b/ovirt-engine-setup-fixes.patch
@@ -0,0 +1,773 @@
+commit 8f2e1adfa9a52f978681b12b974ff34b3ec195d6
+Author: Juan Hernandez <juan.hernandez at redhat.com>
+Date:   Wed Apr 18 22:13:47 2012 +0200
+
+    setup-fixes
+
+diff --git a/backend/manager/modules/utils/src/main/resources/engine-manage-domains.conf b/backend/manager/modules/utils/src/main/resources/engine-manage-domains.conf
+index a510a0b..c16581f 100755
+--- a/backend/manager/modules/utils/src/main/resources/engine-manage-domains.conf
++++ b/backend/manager/modules/utils/src/main/resources/engine-manage-domains.conf
+@@ -1,7 +1,7 @@
+ jaasFile=/usr/share/ovirt-engine/conf/jaas.conf
+-krb5confFile=/usr/share/jboss-as/standalone/configuration/krb5.conf
+-jbossDataSourceFile=/usr/share/jboss-as/standalone/configuration/standalone.xml
+-jbossLoginConfigFile=/usr/share/jboss-as/standalone/configuration/standalone.xml
++krb5confFile=/etc/ovirt-engine/krb5.conf
++jbossDataSourceFile=/usr/share/ovirt-engine/ovirt-engine.xml
++jbossLoginConfigFile=/usr/share/ovirt-engine/ovirt-engine.xml
+ engineConfigExecutable=/usr/share/ovirt-engine/engine-config/engine-config
+ localHostEntry=localhost
+-engineLibPath=/usr/share/ovirt-engine/engine.ear/lib
++engineLibPath=/usr/share/ovirt-engine/deployments/engine.ear/lib
+diff --git a/backend/manager/tools/engine-config/src/main/resources/engine-config.conf b/backend/manager/tools/engine-config/src/main/resources/engine-config.conf
+index 91d37ac..c5799d0 100644
+--- a/backend/manager/tools/engine-config/src/main/resources/engine-config.conf
++++ b/backend/manager/tools/engine-config/src/main/resources/engine-config.conf
+@@ -2,8 +2,8 @@
+ 
+ 
+ # Data source files
+-jbossDataSourceFile=/usr/share/jboss-as/standalone/configuration/standalone.xml
+-jbossLoginConfigFile=/usr/share/jboss-as/standalone/configuration/standalone.xml
++jbossDataSourceFile=/etc/ovirt-engine/ovirt-engine.xml
++jbossLoginConfigFile=/etc/ovirt-engine/ovirt-engine.xml
+ 
+ # Data structure
+ configTable=vdc_options
+diff --git a/packaging/fedora/setup/basedefs.py b/packaging/fedora/setup/basedefs.py
+index 5432516..e691e17 100644
+--- a/packaging/fedora/setup/basedefs.py
++++ b/packaging/fedora/setup/basedefs.py
+@@ -13,68 +13,47 @@ PGPASS_FILE_TEMPLATE="hostname:port:database:username:password"
+ JBOSS_SECURITY_DOMAIN="EncryptDBPassword"
+ JBOSS_KERB_AUTH="EngineKerberosAuth"
+ 
+-JBOSS_PROFILE_NAME="default"
+ VDC_OPTION_CVER="general"
+ ENGINE_RPM_NAME="ovirt-engine"
+ 
+-JBOSS_SHARE_FOLDER="/usr/share/jboss-as"
+-
+ INTERNAL_ADMIN="admin"
+ INTERNAL_DOMAIN="internal"
+ 
++JBOSS_SHARE_FOLDER="/usr/share/jboss-as"
++
+ DIR_ETC_SYSCONFIG="/etc/sysconfig"
+ DIR_USR_SHARE="/usr/share"
+ DIR_VAR_LOG="/var/log"
+ DIR_VAR_LIB="/var/lib"
+ DIR_LOG="%s/ovirt-engine/" % DIR_VAR_LOG
+ DIR_CONFIG="%s/ovirt-engine/conf" % DIR_USR_SHARE
+-DIR_JBOSS_RESOURCES="%s/ovirt-engine/resources/jboss" % DIR_USR_SHARE
+ DIR_KERBEROS="%s/ovirt-engine/kerberos" % DIR_USR_SHARE
+-DIR_JBOSS="/usr/share/jboss-as"
+ 
+-DIR_JBOSS_ROOT_WAR_IMAGES_SRC="%s/%s" % (DIR_JBOSS_RESOURCES, "images/")
+-DIR_JBOSS_ROOT_WAR="%s/standalone/deployments/ROOT.war" % DIR_JBOSS
++DIR_JBOSS_ROOT_WAR="%s/ovirt-engine/deployments/ROOT.war" % DIR_USR_SHARE
+ DIR_ENGINE_EAR_SRC="%s/ovirt-engine/engine.ear" % DIR_USR_SHARE
+-DIR_ROOT_WAR_SRC="%s/ovirt-engine/resources/jboss/ROOT.war" % DIR_USR_SHARE
+ DIR_DB_SCRIPTS="%s/ovirt-engine/dbscripts/" % DIR_USR_SHARE
+ DIR_DB_BACKUPS="%s/ovirt-engine/db-backups" % DIR_USR_SHARE
+ DIR_ENGINE_CONFIG="%s/ovirt-engine/engine-config/" % DIR_USR_SHARE
+ DIR_RHEVM_CONFIG_CONF="/etc/ovirt-engine/engine-config/"
+ DIR_OVIRT_PKI="/etc/pki/ovirt-engine"
+-DIR_MODULES_SRC="%s/ovirt-engine/resources/jboss/modules"  % DIR_USR_SHARE
+-DIR_MODULES_DEST="%s/modules" % DIR_JBOSS
+ 
+ 
+ FILE_INSTALLER_LOG="engine-setup.log"
+ FILE_JBOSS_HTTP_PARAMS="/etc/ovirt-engine/web-conf.js"
+-FILE_JBOSS_ROOT_WAR_CSS = "style.css"
+-FILE_JBOSS_ROOT_WAR_CSS_SRC="%s/%s" % (DIR_JBOSS_RESOURCES, FILE_JBOSS_ROOT_WAR_CSS)
+-FILE_JBOSS_WEB_XML_SRC="%s/standalone/deployments/ROOT.war/WEB-INF/web.xml" % DIR_JBOSS
+ FILE_EXTERNAL_CONFIG="%s/ovirt-engine/engine.ear/ovirtengine.war/ExternalConfig.txt" % DIR_USR_SHARE
+ FILE_DEFAULT_HTML="%s/ovirt-engine/engine.ear/ovirtengine.war/Default.htm" % DIR_USR_SHARE
+ FILE_SERVER_PARAMS_JS="%s/ovirt-engine/engine.ear/ovirtengine.war/ServerParameters.js" % DIR_USR_SHARE
+-FILE_KRB_CONF="%s/deployments/configuration/krb5.conf" % DIR_JBOSS
+ FILE_CA_CRT_SRC="/etc/pki/ovirt-engine/ca.pem"
+ FILE_CA_CRT_TEMPLATE="/etc/pki/ovirt-engine/cacert.template"
+ FILE_CERT_TEMPLATE="/etc/pki/ovirt-engine/cert.template"
+ FILE_JBOSSAS_CONF="/etc/jboss-as/jboss-as.conf"
+-FILE_JBOSS_STANDALONE="%s/standalone/configuration/standalone.xml" % DIR_JBOSS
+-FILE_JBOSS_ROOT_WAR_HTML="engine_index.html"
+-FILE_JBOSS_ROOT_WAR_HTML_DEST="%s/%s" % (DIR_JBOSS_ROOT_WAR, FILE_JBOSS_ROOT_WAR_HTML)
+-FILE_JBOSS_ROOT_WAR_HTML_SRC="%s/%s" % (DIR_JBOSS_RESOURCES, FILE_JBOSS_ROOT_WAR_HTML)
+-FILE_JBOSS_ROOT_WAR_JS_VERSION="engineVersion.js"
+-FILE_JBOSS_ROOT_WAR_CONTEXT_SRC="%s/ROOT_war-context.xml" % DIR_JBOSS_RESOURCES
+-FILE_JBOSS_ROOT_WAR_CONTEXT_DEST="%s/WEB-INF/context.xml" % DIR_JBOSS_ROOT_WAR
+-FILE_JBOSS_ROOT_WAR_FAVICON="favicon.ico"
+-FILE_JBOSS_ROOT_WAR_FAVICON_DEST="%s/%s" % (DIR_JBOSS_ROOT_WAR, FILE_JBOSS_ROOT_WAR_FAVICON)
+-FILE_JBOSS_ROOT_WAR_FAVICON_SRC="%s/%s" % (DIR_JBOSS_RESOURCES, FILE_JBOSS_ROOT_WAR_FAVICON)
++FILE_JBOSS_STANDALONE="/etc/ovirt-engine/ovirt-engine.xml"
+ FILE_DB_INSTALL_SCRIPT="engine-db-install.sh"
+ FILE_DB_UPGRADE_SCRIPT="upgrade.sh"
+ FILE_RHEVM_CONFIG_BIN=os.path.join(DIR_ENGINE_CONFIG, "engine-config")
+ FILE_RHEVM_CONFIG_PROPS="engine-config-install.properties"
+ FILE_RHEVM_EXTENDED_CONF = os.path.join(DIR_CONFIG, FILE_RHEVM_CONFIG_PROPS)
+ FILE_RESOLV_CONF="/etc/resolv.conf"
+-FILE_SLIMMING_PROFILE_CONF="/usr/share/ovirt-engine/conf/slimming.conf"
+ FILE_IPTABLES_DEFAULT="%s/ovirt-engine/conf/iptables.default" % DIR_USR_SHARE
+ FILE_IPTABLES_EXAMPLE="%s/ovirt-engine/conf/iptables.example" % DIR_USR_SHARE
+ FILE_IPTABLES_BACKUP="%s/ovirt-engine/conf/iptables.backup" % DIR_USR_SHARE
+@@ -87,7 +66,6 @@ FILE_ISOUPLOADER_CONF="/etc/ovirt-engine/isouploader.conf"
+ FILE_LOGCOLLECTOR_CONF="/etc/ovirt-engine/logcollector.conf"
+ FILE_PSQL_CONF="/var/lib/pgsql/data/postgresql.conf"
+ FILE_LIMITS_CONF="/etc/security/limits.conf"
+-FILE_JDK_MODULE_XML="%s/modules/sun/jdk/main/module.xml" % DIR_JBOSS
+ 
+ # ISO FILES
+ FILE_VIRTIO_WIN_VFD="/usr/share/virtio-win/virtio-win.vfd"
+@@ -135,7 +113,7 @@ CONST_VDSM_UID = 36
+ CONST_KVM_GID  = 36
+ CONST_MAX_PSQL_CONNS= 150
+ CONST_FD_OPEN = 65535
+-CONST_FD_LINE = "jboss           %s    nofile          %s"
++CONST_FD_LINE = "ovirt           %s    nofile          %s"
+ CONST_SHMMAX=35554432
+ 
+ #text colors
+diff --git a/packaging/fedora/setup/engine-cleanup.py b/packaging/fedora/setup/engine-cleanup.py
+index 9590da7..44cf85f 100755
+--- a/packaging/fedora/setup/engine-cleanup.py
++++ b/packaging/fedora/setup/engine-cleanup.py
+@@ -26,10 +26,6 @@ LOG_PATH = "/var/log/%s" % (BASE_NAME)
+ PKI_DIR = "/etc/pki/%s" %(BASE_NAME)
+ TRUSTORE = os.path.join (PKI_DIR, ".truststore")
+ KEYSTORE = os.path.join (PKI_DIR, ".keystore")
+-JBOSS_SERVER_DIR = "/var/lib/jbossas/server"
+-VAR_SLIMMED_DIR = os.path.join(JBOSS_SERVER_DIR, basedefs.JBOSS_PROFILE_NAME)
+-ETC_JBOSS_DIR = "/etc/jbossas"
+-ETC_SLIMMED_DIR = os.path.join(ETC_JBOSS_DIR, basedefs.JBOSS_PROFILE_NAME)
+ PKI_BACKUP_DIR = "/etc/pki/%s-backups" % (PREFIX)
+ 
+ #MSGS
+@@ -38,16 +34,15 @@ MSG_RC_ERROR = "Return Code is not zero"
+ MSG_ERROR_BACKUP_DB = "Error: Database backup failed"
+ MSG_ERROR_DROP_DB = "Error: Database drop failed"
+ MSG_ERROR_CHECK_LOG = "Error: Cleanup failed.\nplease check log at %s"
+-MSG_ERR_FAILED_JBOSS_SERVICE_STILL_RUN = "Error: Can't stop jboss service. Please shut it down manually."
+-MSG_ERR_FAILED_STP_JBOSS_SERVICE = "Error: Can't stop JBoss"
+-MSG_ERR_FAILED_STATUS_JBOSS_SERVICE = "Error: Can't get JBoss service status"
++MSG_ERR_FAILED_ENGINE_SERVICE_STILL_RUN = "Error: Can't stop jboss service. Please shut it down manually."
++MSG_ERR_FAILED_STP_ENGINE_SERVICE = "Error: Can't stop JBoss"
++MSG_ERR_FAILED_STATUS_ENGINE_SERVICE = "Error: Can't get JBoss service status"
+ 
+ MSG_INFO_DONE = "DONE"
+ MSG_INFO_ERROR = "ERROR"
+-MSG_INFO_STOP_JBOSS = "Stopping JBoss Service"
++MSG_INFO_STOP_ENGINE = "Stopping Engine Service"
+ MSG_INFO_BACKUP_DB = "Backing Up Database"
+ MSG_INFO_REMOVE_DB = "Removing Database"
+-MSG_INFO_REMOVE_SLIMMED = "Removing %s JBoss profile" % (PROD_NAME)
+ MSG_INFO_REMOVE_CA = "Removing CA"
+ MSG_INFO_UNLINK_EAR = "Removing EAR link"
+ MSG_INFO_DB_BACKUP_FILE = "DB Backup available at"
+@@ -257,15 +252,15 @@ class DB():
+ 
+         return True
+ 
+-def stopJboss():
+-    logging.debug("stoping jboss service.")
++def stopEngine():
++    logging.debug("stoping service.")
+ 
+-    cmd = [basedefs.EXEC_SERVICE, "jboss-as", "stop"]
+-    output, rc = utils.execCmd(cmd, None, True, MSG_ERR_FAILED_STP_JBOSS_SERVICE, [])
++    cmd = [basedefs.EXEC_SERVICE, BASE_NAME, "stop"]
++    output, rc = utils.execCmd(cmd, None, True, MSG_ERR_FAILED_STP_ENGINE_SERVICE, [])
+ 
+-    # JBoss service sometimes return zero rc even if service is still up
++    # Service sometimes return zero rc even if service is still up
+     if "[FAILED]" in output and "Timeout: Shutdown command was sent, but process is still running" in output:
+-        raise OSError(MSG_ERR_FAILED_JBOSS_SERVICE_STILL_RUN)
++        raise OSError(MSG_ERR_FAILED_ENGINE_SERVICE_STILL_RUN)
+ 
+ def restartPostgresql():
+     """
+@@ -301,14 +296,6 @@ def _printErrlMessages():
+         logging.info('%s'%(msg))
+         print ('%s'%(msg))
+ 
+-def unlinkEar():
+-    links = [os.path.join(basedefs.DIR_JBOSS, "standalone", "deployments", "engine.ear"),
+-             os.path.join(basedefs.DIR_JBOSS, "standalone", "deployments", "ROOT.war")]
+-
+-    for link in links:
+-        if os.path.exists(link):
+-            os.unlink(link)
+-
+ def main(options):
+     db = DB()
+     ca = CA()
+@@ -321,8 +308,8 @@ def main(options):
+ 
+     print
+ 
+-    # Stop JBoss
+-    runFunc(stopJboss, MSG_INFO_STOP_JBOSS)
++    # Stop the service:
++    runFunc(stopEngine, MSG_INFO_STOP_ENGINE)
+ 
+     # Close all DB connections and drop DB (only if db exists)
+     if db.exists() and options.drop_db:
+@@ -333,11 +320,6 @@ def main(options):
+     if options.remove_ca:
+         runFunc([ca.backup, ca.remove], MSG_INFO_REMOVE_CA)
+ 
+-    # Unlink ear link in JBoss
+-    if options.unlink_ear:
+-        runFunc([unlinkEar], MSG_INFO_UNLINK_EAR)
+-
+-
+     if len(err_messages) == 0:
+         print MSG_INFO_CLEANUP_OK
+     else:
+diff --git a/packaging/fedora/setup/engine-setup.py b/packaging/fedora/setup/engine-setup.py
+index 8bd3f69..93d22dd 100755
+--- a/packaging/fedora/setup/engine-setup.py
++++ b/packaging/fedora/setup/engine-setup.py
+@@ -573,99 +573,6 @@ def copyAndLinkConfig(config):
+         # return new path
+         return new_config_path
+ 
+-def _editJbossasConf():
+-    try:
+-        jbossasHandler = utils.TextConfigFileHandler(basedefs.FILE_JBOSSAS_CONF)
+-        jbossasHandler.open()
+-
+-        jbossasHandler.editParam("JBOSS_IP", "0.0.0.0")
+-        jbossasHandler.editParam("JBOSSCONF", basedefs.JBOSS_PROFILE_NAME)
+-
+-        jbossasHandler.close()
+-    except:
+-        logging.error(traceback.format_exc())
+-        raise Exception(output_messages.ERR_EXP_UPD_JBOSS_CONF%(basedefs.FILE_JBOSSAS_CONF))
+-
+-def _linkHttpParams():
+-    #copy context.xml to ROOT.war/WEB-INF
+-    try:
+-        #create links for files in /usr/share/rhevm/reosurces/jboss
+-        targetsList = [ basedefs.FILE_JBOSS_HTTP_PARAMS ]
+-
+-        for target in targetsList:
+-            #first, remove existing destination
+-            link = "%s/%s" % (basedefs.DIR_JBOSS_ROOT_WAR, os.path.basename(target))
+-            if os.path.exists(link):
+-                if os.path.islink(link):
+-                    logging.debug("removing link %s" % link)
+-                    os.unlink(link)
+-                #logging.debug("Removing %s" % link)
+-                elif os.path.isdir(link):
+-                    #remove dir using shutil.rmtree
+-                    logging.debug("removing directory %s" % link)
+-                    shutil.rmtree(link)
+-                else:
+-                    logging.debug("removing file %s" % link)
+-                    os.remove(link)
+-
+-            logging.debug("Linking %s to %s" % (target, link))
+-            os.link(target, link)
+-    except:
+-        logging.error(traceback.format_exc())
+-        raise Exception(output_messages.ERR_EXP_FAILED_ROOT_WAR)
+-
+-def _changeDefaultWelcomePage():
+-    logging.debug("editing jboss conf file %s" % (basedefs.FILE_JBOSS_WEB_XML_SRC))
+-    webXmlHandler = utils.XMLConfigFileHandler(basedefs.FILE_JBOSS_WEB_XML_SRC)
+-    webXmlHandler.open()
+-
+-    #check if the node already exists
+-    welcomeFileListNode = webXmlHandler.xpathEval("/web-app/welcome-file-list")
+-    if len(welcomeFileListNode) == 0: #get the child to insert the node after
+-        servletMapNode = utils.getXmlNode(webXmlHandler, "/web-app/mime-mapping")
+-
+-        #add new node - welcome-file-list
+-        welcomeFileListNode = libxml2.newNode('welcome-file-list')
+-
+-        #add the new node as a next sibling to the servletMapNode
+-        servletMapNode.addNextSibling(welcomeFileListNode)
+-
+-        #add child and set content to the new child node
+-        welcomeFileNode = libxml2.newNode('welcome-file')
+-        welcomeFileListNode.addChild(welcomeFileNode)
+-    else:
+-        logging.debug("jboss file %s already updated, updating tag content only" % (basedefs.FILE_JBOSS_WEB_XML_SRC))
+-
+-    logging.debug("setting value of default root.war html-file to %s" % (basedefs.FILE_JBOSS_ROOT_WAR_HTML))
+-    utils.setXmlContent(webXmlHandler, "/web-app/welcome-file-list/welcome-file", basedefs.FILE_JBOSS_ROOT_WAR_HTML)
+-    webXmlHandler.close()
+-
+-def _addMimeMapNode(webXmlHandler):
+-    """
+-    adds a new mime-mapping node after description
+-    """
+-    descMapNode = utils.getXmlNode(webXmlHandler, "/web-app/description")
+-    mimeMapListNode = libxml2.newNode('mime-mapping') 
+-
+-    #add the new node as a next sibling to the servletMapNode
+-    descMapNode.addNextSibling(mimeMapListNode)
+-
+-    #add the extention node
+-    extFileNode = libxml2.newNode('extension')
+-    mimeMapListNode.addChild(extFileNode)
+-
+-    #add the mime-type node
+-    typeFileNode = libxml2.newNode('mime-type')
+-    mimeMapListNode.addChild(typeFileNode)
+-
+-    #set content to extension node
+-    logging.debug("setting value of extention to crt")
+-    utils.setXmlContent(webXmlHandler, "/web-app/mime-mapping/extension", "crt")
+-
+-    #set content to mime type node
+-    logging.debug("setting value of mime-type to application/x-x509-ca-cert")
+-    utils.setXmlContent(webXmlHandler, "/web-app/mime-mapping/mime-type", "application/x-x509-ca-cert")
+-
+ def _handleJbossCertFile():
+     """
+     copy ca.crt to ROOT.WAR dir
+@@ -680,37 +587,10 @@ def _handleJbossCertFile():
+         raise Exception(output_messages.ERR_EXP_CANT_FIND_CA_FILE % (basedefs.FILE_CA_CRT_SRC))
+ 
+     # change ownership to jboss
+-    os.chown(destCaFile, utils.getUsernameId("jboss-as"), utils.getGroupId("jboss-as"))
+-
+-    # update mime type in web.xml
+-    logging.debug("editing jboss conf file %s" % (basedefs.FILE_JBOSS_WEB_XML_SRC))
+-    webXmlHandler = utils.XMLConfigFileHandler(basedefs.FILE_JBOSS_WEB_XML_SRC)
+-    webXmlHandler.open()
+-
+-    #check if the node already exists
+-    mimeMapListNode = webXmlHandler.xpathEval("/web-app/mime-mapping")
+-
+-    #add new xml node in case we don't have one
+-    if len(mimeMapListNode) == 0:
+-        _addMimeMapNode(webXmlHandler)
+-    else:
+-        #if we already have a mapping node, check if it doesn't include the 'crt' map
+-        mapNodes = webXmlHandler.xpathEval("/web-app/mime-mapping/extension")
+-        nodeExists = False
+-        for node in mapNodes:
+-            if node.content == "crt":
+-                nodeExists = True
+-                break
+-        if not nodeExists:
+-            _addMimeMapNode(webXmlHandler)
+-
+-    webXmlHandler.close()
++    os.chown(destCaFile, utils.getUsernameId("ovirt"), utils.getGroupId("ovirt"))
+ 
+ def _editRootWar():
+     try:
+-        # Copy new files and images to rhevm-slimmed profile
+-        _linkHttpParams()
+-
+         # Update rhevm_index.html file with consts
+         logging.debug("update %s with http & ssl urls"%(basedefs.FILE_JBOSS_HTTP_PARAMS))
+ 
+@@ -721,6 +601,9 @@ def _editRootWar():
+         utils.findAndReplace(basedefs.FILE_JBOSS_HTTP_PARAMS, "var http_port.*", 'var http_port = "%s";'%(conf["HTTP_PORT"]))
+         utils.findAndReplace(basedefs.FILE_JBOSS_HTTP_PARAMS, "var https_port.*", 'var https_port = "%s";'%(conf["HTTPS_PORT"]))
+ 
++        # Copy the updated file to the root web application:
++        utils.copyFile(basedefs.FILE_JBOSS_HTTP_PARAMS, basedefs.DIR_JBOSS_ROOT_WAR)
++
+         # Handle ca.crt
+         _handleJbossCertFile()
+ 
+@@ -832,12 +715,12 @@ def _changeCaPermissions(pkiDir):
+                     os.path.join(pkiDir, "private", "ca.pem"),
+                     os.path.join(pkiDir,".truststore")
+                     ]
+-    jbossUid = utils.getUsernameId("jboss-as")
+-    jbossGid = utils.getGroupId("jboss-as")
++    ovirtUid = utils.getUsernameId("ovirt")
++    ovirtGid = utils.getGroupId("ovirt")
+ 
+     for item in changeList:
+-        logging.debug("changing ownership of %s to %s/%s (uid/gid)" % (item, jbossUid, jbossGid))
+-        os.chown(item, int(jbossUid), int(jbossGid))
++        logging.debug("changing ownership of %s to %s/%s (uid/gid)" % (item, ovirtUid, ovirtGid))
++        os.chown(item, int(ovirtUid), int(ovirtGid))
+         logging.debug("changing file permissions for %s to 0750" % (item))
+         os.chmod(item, 0750)
+ 
+@@ -915,33 +798,6 @@ def _configIptables():
+         logging.error(traceback.format_exc())
+         raise Exception(output_messages.ERR_EXP_FAILED_CFG_IPTABLES)
+ 
+-def _createJbossProfile():
+-    logging.debug("creating jboss profile")
+-    try:
+-        dirs = [
+-                   {'src'  : basedefs.DIR_ENGINE_EAR_SRC,
+-                    'dest' : os.path.join(basedefs.DIR_JBOSS, "standalone", "deployments", "engine.ear")},
+-                   {'src'  : basedefs.DIR_ROOT_WAR_SRC,
+-                    'dest' : os.path.join(basedefs.DIR_JBOSS, "standalone", "deployments", "ROOT.war")}
+-                   ]
+-
+-        for item in dirs:
+-            if not os.path.exists(item['dest']):
+-                if os.path.islink(item['dest']) and os.readlink(item['dest']) != item['src']:
+-                    os.remove(item['dest'])
+-                os.symlink(item['src'], item['dest'])
+-
+-                logging.debug("Successfully created jboss profile %s"%(basedefs.JBOSS_PROFILE_NAME))
+-            else:
+-                logging.debug("%s profile already exists, doing nothing"%(basedefs.JBOSS_PROFILE_NAME))
+-
+-            logging.debug("touching .dodeploy file for %s" % item['dest'])
+-            open("%s.dodeploy" % item['dest'], 'w').close()
+-
+-    except:
+-        logging.error(traceback.format_exc())
+-        raise Exception("Failed to create JBoss profile")
+-
+ def _createDB():
+     """
+     create fresh engine db
+@@ -1017,7 +873,7 @@ def _updateVDCOptions():
+             "CertificateFileName":"/etc/pki/ovirt-engine/certs/engine.cer",
+             "CAEngineKey":"/etc/pki/ovirt-engine/private/ca.pem",
+             "TruststoreUrl":"/etc/pki/ovirt-engine/.keystore",
+-            "ENGINEEARLib":"/usr/share/jboss-as/standalone/deployments/engine.ear",
++            "ENGINEEARLib":"/usr/share/ovirt-engine/deployments/engine.ear",
+             "CACertificatePath":"/etc/pki/ovirt-engine/ca.pem",
+             "CertAlias":"engine",
+         },
+@@ -1481,9 +1337,9 @@ def _displaySummary():
+ 
+ def _startJboss():
+     logging.debug("using chkconfig to enable jboss to load on system startup.")
+-    output, rc = utils.execExternalCmd("/sbin/chkconfig jboss-as on", True, output_messages.ERR_FAILED_CHKCFG_JBOSS)
+-    _handleJbossService('stop', output_messages.INFO_STOP_JBOSS, output_messages.ERR_FAILED_STP_JBOSS_SERVICE, False)
+-    _handleJbossService('start', output_messages.INFO_START_JBOSS, output_messages.ERR_FAILED_START_JBOSS_SERVICE, False)
++    output, rc = utils.execExternalCmd("/sbin/chkconfig ovirt-engine on", True, output_messages.ERR_FAILED_CHKCFG_JBOSS)
++    _handleEngineService('stop', output_messages.INFO_STOP_JBOSS, output_messages.ERR_FAILED_STP_JBOSS_SERVICE, False)
++    _handleEngineService('start', output_messages.INFO_START_JBOSS, output_messages.ERR_FAILED_START_JBOSS_SERVICE, False)
+     
+ def _configNfsShare():
+     #ISO_DOMAIN_NAME, NFS_MP
+@@ -1604,33 +1460,32 @@ def _addFinalInfoMsg():
+     messages.append(output_messages.INFO_ADD_USERS)
+     messages.append(output_messages.INFO_RHEVM_URL % conf["HTTP_URL"])
+ 
+-def _checkJbossService(configFile):
+-    logging.debug("checking the status of jboss")
+-    cmd = "%s jboss-as status" % (basedefs.EXEC_SERVICE)
++def _checkEngineService(configFile):
++    logging.debug("checking the status of engine")
++    cmd = "%s ovirt-engine status" % (basedefs.EXEC_SERVICE)
+     output, rc = utils.execExternalCmd(cmd)
+     if 0 == rc:
+-        logging.debug("jboss-as is up and running")
++        logging.debug("engine is up and running")
+ 
+         #if we don't use an answer file, we need to ask the user if to stop jboss
+         if not configFile:
+             print output_messages.INFO_NEED_STOP_JBOSS
+             answer = _askYesNo(output_messages.INFO_Q_STOP_JBOSS)
+             if answer:
+-                _handleJbossService('stop', output_messages.INFO_STOP_JBOSS, output_messages.ERR_FAILED_STP_JBOSS_SERVICE, True)
++                _handleEngineService('stop', output_messages.INFO_STOP_JBOSS, output_messages.ERR_FAILED_STP_JBOSS_SERVICE, True)
+             else:
+                 logging.debug("User chose not to stop jboss")
+                 return False
+         else:
+-            #we stop the jboss service on a silent install
+-            _handleJbossService('stop', output_messages.INFO_STOP_JBOSS, output_messages.ERR_FAILED_STP_JBOSS_SERVICE, True)
++            #we stop the service on a silent install
++            _handleEngineService('stop', output_messages.INFO_STOP_JBOSS, output_messages.ERR_FAILED_STP_JBOSS_SERVICE, True)
+     return True
+ 
+-def _handleJbossService(action, infoMsg, errMsg, printToStdout=False):
++def _handleEngineService(action, infoMsg, errMsg, printToStdout=False):
+     ''' stop or start the jbossas service
+         according to action param
+     '''
+-#    cmd = "%s jboss %s"  % (basedefs.EXEC_SERVICE, action)
+-    cmd = ["%s" % basedefs.EXEC_SERVICE, "jboss-as", "%s" % action]
++    cmd = ["%s" % basedefs.EXEC_SERVICE, "ovirt-engine", "%s" % action]
+     logging.debug(infoMsg)
+     if printToStdout:
+         print infoMsg
+@@ -1810,49 +1665,6 @@ def stopRhevmDbRelatedServices(etlService, notificationService):
+             logging.warn(traceback.format_exc())
+             messages.append(output_messages.ERR_FAILED_STOP_SERVICE % "rhevm-notiferd")
+ 
+-def deployJbossModules():
+-    """
+-    deploy the postgres module and edit the xml for the jdk module
+-    """
+-    try:
+-        # Copy module(s) from /usr/share/ovirt-engine/resources/jboss/modules
+-        logging.debug("Adding modules to jboss's modules")
+-        modules = [ { 'target' : "%s/org/postgresql" % basedefs.DIR_MODULES_SRC,
+-                      'link'   : "%s/org/postgresql" % basedefs.DIR_MODULES_DEST}
+-                  ]
+-        for module in modules:
+-            utils.replaceWithLink(module['target'], module['link'])
+-
+-        # edit module.xml for the jdk module
+-        backupFile = "%s.%i" % (basedefs.FILE_JDK_MODULE_XML, random.randint(1000000,9999999))
+-        editFile = "%s.%s.%i" % (basedefs.FILE_JDK_MODULE_XML, "EDIT", random.randint(1000000,9999999))
+-        logging.debug("Backing up %s into %s", basedefs.FILE_JDK_MODULE_XML, backupFile)
+-        utils.copyFile(basedefs.FILE_JDK_MODULE_XML, backupFile)
+-        utils.copyFile(basedefs.FILE_JDK_MODULE_XML, editFile)
+-
+-        logging.debug("loading xml file handler")
+-        xmlObj = utils.XMLConfigFileHandler(editFile)
+-        xmlObj.open()
+-
+-        logging.debug("registering name space")
+-        xmlObj.registerNs('module','urn:jboss:module:1.1')
+-
+-        paths = ['''<path name="sun/security"/>''', '''<path name="sun/security/krb5"/>''', '''<path name="com/sun/jndi/url"/>''', '''<path name="com/sun/jndi/url/dns"/>''' ]
+-
+-        for path in paths:
+-            logging.debug("adding %s as node", path)
+-            xmlObj.addNodes("//module:module/module:dependencies/module:system/module:paths", path)
+-
+-        xmlObj.close()
+-
+-        shutil.move(editFile, basedefs.FILE_JDK_MODULE_XML)
+-        logging.debug("JDK module configuration has been saved")
+-
+-    except:
+-        logging.error("Failed to deploy modules into jboss")
+-        logging.error(traceback.format_exc())
+-        raise output_messages.ERR_EXP_FAILED_DEPLOY_MODULES
+-
+ def configEncryptedPass():
+     """
+     push the encrypted password into standalone.xml
+@@ -1877,7 +1689,7 @@ def configEncryptedPass():
+         xmlObj.close()
+ 
+         shutil.move(editFile, basedefs.FILE_JBOSS_STANDALONE)
+-        os.chown(basedefs.FILE_JBOSS_STANDALONE, utils.getUsernameId("jboss-as"), utils.getGroupId("jboss-as"))
++        os.chown(basedefs.FILE_JBOSS_STANDALONE, utils.getUsernameId("ovirt"), utils.getGroupId("ovirt"))
+         logging.debug("Jboss configuration has been saved")
+ 
+     except:
+@@ -1908,8 +1720,6 @@ def configJbossXml():
+         xmlObj.registerNs('domain','urn:jboss:domain:1.1')
+ 
+         logging.debug("Configuring Jboss")
+-        configJbossLogging(xmlObj)
+-        configJbossDatasource(xmlObj)
+         configJbossNetwork(xmlObj)
+         configJbossSSL(xmlObj)
+         logging.debug("Jboss has been configured")
+@@ -1917,7 +1727,7 @@ def configJbossXml():
+         xmlObj.close()
+ 
+         shutil.move(editFile, basedefs.FILE_JBOSS_STANDALONE)
+-        os.chown(basedefs.FILE_JBOSS_STANDALONE, utils.getUsernameId("jboss-as"), utils.getGroupId("jboss-as"))
++        os.chown(basedefs.FILE_JBOSS_STANDALONE, utils.getUsernameId("ovirt"), utils.getGroupId("ovirt"))
+         logging.debug("Jboss configuration has been saved")
+ 
+     except:
+@@ -1925,151 +1735,6 @@ def configJbossXml():
+         logging.error(traceback.format_exc())
+         raise output_messages.ERR_EXP_FAILED_CONFIG_JBOSS
+ 
+-def configJbossLogging(xmlObj):
+-    """
+-    Configure the Logging for jboss
+-    """
+-    logging.debug("Configuring logging for jboss")
+-
+-    logging.debug("Registering logging namespace")
+-    xmlObj.registerNs('logging', 'urn:jboss:domain:logging:1.1')
+-
+-    logging.debug("setting attributes")
+-    nodes = xmlObj.xpathEval("//logging:subsystem/logging:console-handler[@name='CONSOLE']")
+-    nodes[0].setProp("autoflush", "true")
+-
+-    logging.debug("Adding level node with attribute: name, value: INFO")
+-    nodes = xmlObj.xpathEval("//logging:subsystem/logging:periodic-rotating-file-handler[@name='FILE']")
+-    nodes[0].setProp("autoflush", "true")
+-
+-
+-    xmlObj.removeNodes("//logging:subsystem/logging:periodic-rotating-file-handler[@name='FILE']/logging:level")
+-    levelStr = '''<level name="INFO" />'''
+-    xmlObj.addNodes("//logging:subsystem/logging:periodic-rotating-file-handler[@name='FILE']", levelStr)
+-
+-    xmlObj.removeNodes("//logging:subsystem/logging:size-rotating-file-handler[@name='ENGINE_LOG']")
+-    logging.debug("Adding file handler for ENGINE_LOG")
+-    fileHandlerStr = '''
+-    <size-rotating-file-handler name="ENGINE_LOG" autoflush="true">
+-        <level name="INFO"/>
+-        <formatter>
+-            <pattern-formatter pattern="%d %-5p [%c] (%t) %s%E%n"/>
+-        </formatter>
+-        <file path="/var/log/ovirt-engine/engine.log"/>
+-        <rotate-size value="1M"/>
+-        <max-backup-index value="30"/>
+-        <append value="true"/>
+-    </size-rotating-file-handler>
+-'''
+-    xmlObj.addNodes("//logging:subsystem", fileHandlerStr)
+-
+-    logging.debug("Adding Loggers for ovirt-engine")
+-    loggerCats = ["org.ovirt", "org.ovirt.engine.core.bll", "org.ovirt.engine.core.dal.dbbroker.PostgresDbEngineDialect$PostgresJdbcTemplate","org.springframework.ldap"]
+-    for loggerCat in loggerCats:
+-        xmlObj.removeNodes("//logging:subsystem/logging:logger[@category='%s']" % loggerCat)
+-
+-    loggers = ['''
+-    <logger category="org.ovirt">
+-        <level name="INFO"/>
+-        <handlers>
+-            <handler name="ENGINE_LOG"/>
+-        </handlers>
+-    </logger>
+-    ''','''
+-    <logger category="org.ovirt.engine.core.bll">
+-        <level name="INFO"/>
+-    </logger>
+-    ''','''
+-    <logger category="org.ovirt.engine.core.dal.dbbroker.PostgresDbEngineDialect$PostgresJdbcTemplate">
+-        <level name="WARN"/>
+-    </logger>
+-    ''','''
+-    <logger category="org.springframework.ldap">
+-        <level name="ERROR"/>
+-    </logger>
+-    ''']
+-
+-    for logger in loggers:
+-        xmlObj.addNodes("//logging:subsystem", logger)
+-
+-    logging.debug("Logging is enabled and configured in jboss's configuration")
+-
+-def configJbossDatasource(xmlObj):
+-    """
+-    configure the datasource for jboss
+-    """
+-    logging.debug("Configuring logging for jboss")
+-
+-    logging.debug("Registering datasource namespaces")
+-    xmlObj.registerNs('datasource', 'urn:jboss:domain:datasources:1.0')
+-    xmlObj.registerNs('deployment-scanner', 'urn:jboss:domain:deployment-scanner:1.0')
+-
+-    logging.debug("looking for ENGINEDatasource datasource")
+-
+-    # removeNodes will remove the node if it exists and will do nothing if it does not exist
+-    xmlObj.removeNodes("//datasource:subsystem/datasource:datasources/datasource:datasource[@jndi-name='java:/ENGINEDataSource']")
+-
+-    datasourceStr = '''
+-        <datasource jndi-name="java:/ENGINEDataSource" pool-name="ENGINEDataSource" enabled="true">
+-        <connection-url>
+-            jdbc:postgresql://localhost:5432/engine
+-        </connection-url>
+-        <driver>
+-            postgresql
+-        </driver>
+-        <transaction-isolation>
+-            TRANSACTION_READ_COMMITTED
+-        </transaction-isolation>
+-        <pool>
+-            <min-pool-size>
+-                1
+-            </min-pool-size>
+-            <max-pool-size>
+-                100
+-            </max-pool-size>
+-            <prefill>
+-                true
+-            </prefill>
+-        </pool>
+-        <security>
+-            <user-name>
+-                engine
+-            </user-name>
+-            <security-domain>
+-                EncryptDBPassword
+-            </security-domain>
+-        </security>
+-        <statement>
+-            <prepared-statement-cache-size>
+-                100
+-            </prepared-statement-cache-size>
+-        </statement>
+-    </datasource>
+-'''
+-    logging.debug("Adding ENGINE datasource")
+-    xmlObj.addNodes("//datasource:subsystem/datasource:datasources", datasourceStr)
+-
+-    logging.debug("Adding drivers to datasource")
+-    xmlObj.removeNodes("//datasource:subsystem/datasource:datasources/datasource:drivers/datasource:driver[@name='postgresql']")
+-    driversStr='''
+-    <drivers>
+-        <driver name="postgresql" module="org.postgresql">
+-            <xa-datasource-class>
+-                org.postgresql.xa.PGXADataSource
+-            </xa-datasource-class>
+-        </driver>
+-    </drivers>
+-'''
+-    xmlObj.addNodes("//datasource:subsystem/datasource:datasources", driversStr)
+-
+-    logging.debug("configuring deployment-scanner")
+-    node = xmlObj.xpathEval("//deployment-scanner:subsystem/deployment-scanner:deployment-scanner")[0]
+-    node.setProp("name","default")
+-    node.setProp("path","deployments")
+-    node.setProp("scan-enabled","true")
+-    node.setProp("deployment-timeout","60")
+-    logging.debug("Datasource has been added into jboss's configuration")
+-
+ def configJbossSecurity(xmlObj):
+     """
+     configure security for jboss
+@@ -2170,13 +1835,13 @@ def startRhevmDbRelatedServices(etlService, notificationService):
+ 
+ def runMainFunctions(conf):
+     # Create rhevm-slimmed jboss profile
+-    runFunction([_createJbossProfile, setMaxSharedMemory], output_messages.INFO_CONFIG_OVIRT_ENGINE)
++    runFunction([setMaxSharedMemory], output_messages.INFO_CONFIG_OVIRT_ENGINE)
+ 
+     # Create CA
+     runFunction(_createCA, output_messages.INFO_CREATE_CA)
+ 
+     # Edit JBoss configuration
+-    runFunction([configJbossXml, deployJbossModules, _editRootWar], output_messages.INFO_UPD_JBOSS_CONF)
++    runFunction([configJbossXml, _editRootWar], output_messages.INFO_UPD_JBOSS_CONF)
+ 
+     # Install rhevm db if it's not installed and running already
+     if _isDbAlreadyInstalled() == False:
+@@ -2219,14 +1884,10 @@ def runMainFunctions(conf):
+ 
+ def isSecondRun():
+     keystore = os.path.join(basedefs.DIR_OVIRT_PKI, ".keystore")
+-    engineLink = os.path.join(basedefs.DIR_JBOSS, "server", basedefs.JBOSS_PROFILE_NAME,"deploy","engine.ear")
+ 
+     if os.path.exists(keystore):
+         logging.debug("%s exists, second run detected", keystore)
+         return True
+-    elif os.path.exists(engineLink):
+-        logging.debug("%s exists, second run detected", engineLink)
+-        return True
+     else:
+         return False
+ 
+@@ -2247,7 +1908,7 @@ def main(configFile=None):
+                 return 0
+ 
+         #TODO: add validation to answer file before stopping jboss
+-        if not _checkJbossService(configFile):
++        if not _checkEngineService(configFile):
+             logging.debug("exiting gracefully")
+             print output_messages.INFO_STOP_INSTALL_EXIT
+             return 0
+@@ -2294,6 +1955,7 @@ def _checkAvailableMemory():
+     """
+     checks for memory using the "free" command
+     """
++    return
+     #execute free -g to get output in GB
+     logging.debug("checking total memory")
+     cmd = "%s -g" % basedefs.EXEC_FREE
diff --git a/ovirt-engine-update-commons-configuration.patch b/ovirt-engine-update-commons-configuration.patch
index 12911fc..8b46e6c 100644
--- a/ovirt-engine-update-commons-configuration.patch
+++ b/ovirt-engine-update-commons-configuration.patch
@@ -1,18 +1,17 @@
-From 64b90591213ffdcc5e63075d5d43f4dda861535b Mon Sep 17 00:00:00 2001
+From 9c21f1900e7d7d4fd43e6b8dd3d543e60ce8ffba Mon Sep 17 00:00:00 2001
 From: Juan Hernandez <juan.hernandez at redhat.com>
-Date: Wed, 1 Aug 2012 13:35:19 +0200
+Date: Tue, 24 Jul 2012 21:10:45 +0200
 Subject: [PATCH] Update to commons-configuration 1.8
 
 ---
- .../engine/core/config/EngineConfigLogic.java      |  4 +-
- .../fedora/setup/engine-config-install.properties  | 60 +++++++++++-----------
- 2 files changed, 32 insertions(+), 32 deletions(-)
+ .../java/org/ovirt/engine/core/config/EngineConfigLogic.java     |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
 
 diff --git a/backend/manager/tools/engine-config/src/main/java/org/ovirt/engine/core/config/EngineConfigLogic.java b/backend/manager/tools/engine-config/src/main/java/org/ovirt/engine/core/config/EngineConfigLogic.java
-index 7334bc0..340148f 100644
+index 6f5f2c5..f1df486 100644
 --- a/backend/manager/tools/engine-config/src/main/java/org/ovirt/engine/core/config/EngineConfigLogic.java
 +++ b/backend/manager/tools/engine-config/src/main/java/org/ovirt/engine/core/config/EngineConfigLogic.java
-@@ -84,9 +84,9 @@ public class EngineConfigLogic {
+@@ -67,9 +67,9 @@ public class EngineConfigLogic {
      }
  
      private void populateAlternateKeyMap(HierarchicalConfiguration config) {
@@ -24,74 +23,13 @@ index 7334bc0..340148f 100644
              String rootKey = node.getRootNode()
                      .getParentNode().getName();
              String[] alternateKeys = config.getStringArray("/" + rootKey + "/" + ALTERNATE_KEY);
-diff --git a/packaging/fedora/setup/engine-config-install.properties b/packaging/fedora/setup/engine-config-install.properties
-index 071ebc5..e0ee01c 100644
---- a/packaging/fedora/setup/engine-config-install.properties
-+++ b/packaging/fedora/setup/engine-config-install.properties
-@@ -1,33 +1,33 @@
- 
- include=/etc/ovirt-engine/engine-config/engine-config.properties
- 
--SQLServerSearchTemplate
--OrganizationName
--CertAlias
--InstallVds
--TruststoreUrl
--PostgresSearchTemplate
--ENGINEEARLib
--ScriptsPath
--UseSecureConnectionWithServers
--VdsErrorsFileName
--SQLServerPagingSyntax
--DataDir
--AsyncPollingCyclesBeforeCallbackCleanup
--AsyncPollingCyclesBeforeRefreshSuspend
--SQLServerPagingType
--keystoreUrl
--keystorePass
--PostgresPagingSyntax
--PostgresPagingType
--ConfigDir
--SignScriptName
--CAEngineKey
--BootstrapInstallerFileName
--CACertificatePath
--TruststorePass
--PublicURLPort
--AdUserId
--VdcVersion
--LdapServers
--MinimalETLVersion
-+SQLServerSearchTemplate=
-+OrganizationName=
-+CertAlias=
-+InstallVds=
-+TruststoreUrl=
-+PostgresSearchTemplate=
-+ENGINEEARLib=
-+ScriptsPath=
-+UseSecureConnectionWithServers=
-+VdsErrorsFileName=
-+SQLServerPagingSyntax=
-+DataDir=
-+AsyncPollingCyclesBeforeCallbackCleanup=
-+AsyncPollingCyclesBeforeRefreshSuspend=
-+SQLServerPagingType=
-+keystoreUrl=
-+keystorePass=
-+PostgresPagingSyntax=
-+PostgresPagingType=
-+ConfigDir=
-+SignScriptName=
-+CAEngineKey=
-+BootstrapInstallerFileName=
-+CACertificatePath=
-+TruststorePass=
-+PublicURLPort=
-+AdUserId=
-+VdcVersion=
-+LdapServers=
-+MinimalETLVersion=
+@@ -329,4 +329,4 @@ public class EngineConfigLogic {
+     public ConfigDAO getConfigDAO() {
+         return configDAO;
+     }
+-}
+\ No newline at end of file
++}
 -- 
-1.7.11.2
+1.7.10.4
 
diff --git a/ovirt-engine-update-to-jackson-1.9.patch b/ovirt-engine-update-to-jackson-1.9.patch
new file mode 100644
index 0000000..460356f
--- /dev/null
+++ b/ovirt-engine-update-to-jackson-1.9.patch
@@ -0,0 +1,63 @@
+From 9fc507eda097bb581509935b17e771d9d4a12adf Mon Sep 17 00:00:00 2001
+From: Juan Hernandez <juan.hernandez at redhat.com>
+Date: Mon, 27 Feb 2012 14:02:58 +0100
+Subject: [PATCH] restapi: Update to Jackson 1.9
+
+Starting with version 1.7 of Jackson the way to create custom
+serializers has changed: it uses a builder class instead of
+creating directly the serializer.
+
+Change-Id: I82085b16e2d8cb6a0df3a30d7be5fc367d245823
+---
+ .../api/resteasy/json/CustomBeanFactory.java       |   23 ++++++++-----------
+ 1 files changed, 10 insertions(+), 13 deletions(-)
+
+diff --git a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resteasy/json/CustomBeanFactory.java b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resteasy/json/CustomBeanFactory.java
+index 27799b3..1c26d4d 100644
+--- a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resteasy/json/CustomBeanFactory.java
++++ b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resteasy/json/CustomBeanFactory.java
+@@ -3,9 +3,8 @@ package org.ovirt.engine.api.resteasy.json;
+ import java.util.List;
+ 
+ import org.codehaus.jackson.map.SerializationConfig;
+-import org.codehaus.jackson.map.introspect.BasicBeanDescription;
+ import org.codehaus.jackson.map.ser.BeanPropertyWriter;
+-import org.codehaus.jackson.map.ser.BeanSerializer;
++import org.codehaus.jackson.map.ser.BeanSerializerBuilder;
+ import org.codehaus.jackson.map.ser.CustomSerializerFactory;
+ 
+ /*
+@@ -15,21 +14,19 @@ import org.codehaus.jackson.map.ser.CustomSerializerFactory;
+ public class CustomBeanFactory extends CustomSerializerFactory
+ {
+     @Override
+-    protected BeanSerializer processViews(SerializationConfig config,
+-                                          BasicBeanDescription beanDesc,
+-                                          BeanSerializer ser,
+-                                          List<BeanPropertyWriter> props) {
+-        ser = super.processViews(config, beanDesc, ser, props);
++    protected void processViews(SerializationConfig config, BeanSerializerBuilder builder) {
++        super.processViews(config, builder);
+ 
+-        BeanPropertyWriter[] writers = props.toArray(new BeanPropertyWriter[props.size()]);
++        List<BeanPropertyWriter> writersList = builder.getProperties();
++        BeanPropertyWriter[] writersArray = writersList.toArray(new BeanPropertyWriter[writersList.size()]);
+ 
+-        for (int i = 0; i < writers.length; i++) {
+-            if (writers[i].getName().startsWith("set") &&
+-                writers[i].getPropertyType() == boolean.class) {
+-                writers[i] = null;
++        for (int i = 0; i < writersArray.length; i++) {
++            if (writersArray[i].getName().startsWith("set") &&
++                writersArray[i].getPropertyType() == boolean.class) {
++                writersArray[i] = null;
+             }
+         }
+ 
+-        return ser.withFiltered(writers);
++        builder.setFilteredProperties(writersArray);
+     }
+ }
+-- 
+1.7.7.6
+
diff --git a/ovirt-engine-update-to-quartz-2.1.patch b/ovirt-engine-update-to-quartz-2.1.patch
new file mode 100644
index 0000000..a7cc811
--- /dev/null
+++ b/ovirt-engine-update-to-quartz-2.1.patch
@@ -0,0 +1,328 @@
+From db1b5db69b4b076d588600f4de4114e461c22208 Mon Sep 17 00:00:00 2001
+From: Juan Hernandez <juan.hernandez at redhat.com>
+Date: Thu, 16 Feb 2012 15:05:35 +0100
+Subject: [PATCH] Update to Quartz 2.1
+
+This is needed because it is the version currently in Fedora.
+
+Change-Id: Idf39f22ac898129cd223f3c6c8d99f072f8ecef7
+---
+ .../core/utils/timer/FixedDelayJobListener.java    |   30 +++++++---
+ .../core/utils/timer/SchedulerUtilQuartzImpl.java  |   60 +++++++++++++------
+ .../utils/timer/SchedulerUtilQuartsImplTest.java   |   13 +++-
+ pom.xml                                            |    2 +-
+ 4 files changed, 72 insertions(+), 33 deletions(-)
+
+diff --git a/backend/manager/modules/beans/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/FixedDelayJobListener.java b/backend/manager/modules/beans/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/FixedDelayJobListener.java
+index 38aba0a..19a051e 100644
+--- a/backend/manager/modules/beans/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/FixedDelayJobListener.java
++++ b/backend/manager/modules/beans/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/FixedDelayJobListener.java
+@@ -1,5 +1,7 @@
+ package org.ovirt.engine.core.utils.timer;
+ 
++import static org.quartz.TriggerBuilder.newTrigger;
++
+ import java.util.Date;
+ import java.util.concurrent.TimeUnit;
+ 
+@@ -8,8 +10,8 @@ import org.quartz.JobDetail;
+ import org.quartz.JobExecutionContext;
+ import org.quartz.JobExecutionException;
+ import org.quartz.JobListener;
+-import org.quartz.SimpleTrigger;
+ import org.quartz.Trigger;
++import org.quartz.TriggerKey;
+ 
+ /**
+  * The FixedDelayJobListener is a JobListener implementation to turn a job into
+@@ -50,24 +52,34 @@ public class FixedDelayJobListener implements JobListener {
+      */
+     @Override
+     public void jobWasExecuted(JobExecutionContext context, JobExecutionException exception) {
+-
+-        // generate the new trigger time
++        // Get the details of the job:
+         JobDetail jobdetail = context.getJobDetail();
+         JobDataMap data = jobdetail.getJobDataMap();
++
++        // This is being called for all our jobs, so first check if this is a fixed delay
++        // job and if not just exit:
++        if (data.containsKey(SchedulerUtilQuartzImpl.FIXED_DELAY_ENABLED)) {
++            boolean fixedDelayEnabled = data.getBoolean(SchedulerUtilQuartzImpl.FIXED_DELAY_ENABLED);
++            if (!fixedDelayEnabled) {
++                return;
++            }
++        }
++
++        // generate the new trigger time
+         long delay = data.getLongValue(SchedulerUtilQuartzImpl.FIXED_DELAY_VALUE);
+         TimeUnit delayUnit = (TimeUnit) data.getWrappedMap().get(SchedulerUtilQuartzImpl.FIXED_DELAY_TIME_UNIT);
+         Date runTime = SchedulerUtilQuartzImpl.getFutureDate(delay, delayUnit);
+ 
+         // generate the new trigger
+         Trigger oldTrigger = context.getTrigger();
+-        String oldTriggerName = oldTrigger.getName();
+-        String oldTriggerGroup = oldTrigger.getGroup();
+-        SimpleTrigger newTrigger = new SimpleTrigger(oldTriggerName, oldTriggerGroup, runTime);
+-        newTrigger.setJobGroup(jobdetail.getGroup());
+-        newTrigger.setJobName(jobdetail.getName());
++        TriggerKey oldTriggerKey = oldTrigger.getKey();
++        Trigger newTrigger = newTrigger()
++            .withIdentity(oldTriggerKey)
++            .startAt(runTime)
++            .build();
+ 
+         // schedule the new trigger
+-        sched.rescheduleAJob(oldTriggerName, oldTriggerGroup, newTrigger);
++        sched.rescheduleAJob(oldTriggerKey.getName(), oldTriggerKey.getGroup(), newTrigger);
+         // SchedulerUtilQuartzImpl.getInstance().rescheduleAJob(oldTriggerName,
+         // oldTriggerGroup, newTrigger);
+ 
+diff --git a/backend/manager/modules/beans/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/SchedulerUtilQuartzImpl.java b/backend/manager/modules/beans/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/SchedulerUtilQuartzImpl.java
+index cf36bcc..f3ecadd 100644
+--- a/backend/manager/modules/beans/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/SchedulerUtilQuartzImpl.java
++++ b/backend/manager/modules/beans/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/SchedulerUtilQuartzImpl.java
+@@ -1,33 +1,39 @@
+ package org.ovirt.engine.core.utils.timer;
+ 
++import static org.quartz.CronScheduleBuilder.cronSchedule;
++import static org.quartz.JobBuilder.newJob;
++import static org.quartz.JobKey.jobKey;
++import static org.quartz.TriggerBuilder.newTrigger;
++import static org.quartz.TriggerKey.triggerKey;
++import static org.quartz.impl.matchers.GroupMatcher.jobGroupEquals;
++
+ import java.util.Date;
+ import java.util.concurrent.TimeUnit;
+ import java.util.concurrent.atomic.AtomicLong;
+ 
+ import javax.annotation.PostConstruct;
+ import javax.annotation.PreDestroy;
++import javax.ejb.ConcurrencyManagement;
++import javax.ejb.ConcurrencyManagementType;
+ import javax.ejb.Singleton;
+ import javax.ejb.Startup;
+ import javax.ejb.TransactionAttribute;
+ import javax.ejb.TransactionAttributeType;
+-import javax.ejb.ConcurrencyManagement;
+-import javax.ejb.ConcurrencyManagementType;
+ 
+ import org.apache.commons.logging.Log;
+ import org.apache.commons.logging.LogFactory;
+ import org.ovirt.engine.core.utils.ejb.BeanProxyType;
+ import org.ovirt.engine.core.utils.ejb.BeanType;
+ import org.ovirt.engine.core.utils.ejb.EjbUtils;
+-import org.quartz.CronTrigger;
+ import org.quartz.JobDataMap;
+ import org.quartz.JobDetail;
+ import org.quartz.Scheduler;
+ import org.quartz.SchedulerException;
+ import org.quartz.SchedulerFactory;
+-import org.quartz.SimpleTrigger;
+ import org.quartz.Trigger;
+ import org.quartz.impl.StdSchedulerFactory;
+ 
++
+ // Here we use a Singleton bean, names Scheduler.
+ // The @Startup annotation is to make sure the bean is initialized on startup.
+ // @ConcurrencyManagement - we use bean managed concurrency:
+@@ -45,6 +51,7 @@ public class SchedulerUtilQuartzImpl implements SchedulerUtil {
+     public static final String RUN_METHOD_NAME = "method.name";
+     public static final String RUN_METHOD_PARAM_TYPE = "method.paramType";
+     public static final String RUN_METHOD_PARAM = "method.param";
++    public static final String FIXED_DELAY_ENABLED = "fixedDelayEnabled";
+     public static final String FIXED_DELAY_VALUE = "fixedDelayValue";
+     public static final String FIXED_DELAY_TIME_UNIT = "fixedDelayTimeUnit";
+     private static final String TRIGGER_PREFIX = "trigger";
+@@ -55,7 +62,6 @@ public class SchedulerUtilQuartzImpl implements SchedulerUtil {
+ 
+     private final AtomicLong sequenceNumber = new AtomicLong(Long.MIN_VALUE);
+ 
+-
+     /**
+      * This method is called upon the bean creation as part
+      * of the management Service bean lifecycle.
+@@ -73,7 +79,7 @@ public class SchedulerUtilQuartzImpl implements SchedulerUtil {
+             SchedulerFactory sf = new StdSchedulerFactory();
+             sched = sf.getScheduler();
+             sched.start();
+-            sched.addJobListener(new FixedDelayJobListener(this));
++            sched.getListenerManager().addJobListener(new FixedDelayJobListener(this), jobGroupEquals(Scheduler.DEFAULT_GROUP));
+         } catch (SchedulerException se) {
+             log.error("there is a problem with the underlying Scheduler.", se);
+         }
+@@ -128,20 +134,24 @@ public class SchedulerUtilQuartzImpl implements SchedulerUtil {
+                                          long taskDelay,
+                                          TimeUnit timeUnit) {
+         String jobName = generateUniqueNameForInstance(instance, methodName);
+-        JobDetail job = new JobDetail(jobName, Scheduler.DEFAULT_GROUP, JobWrapper.class);
+-        job.addJobListener(FixedDelayJobListener.FIXED_JOB_LISTENER_NAME);
++        JobDetail job = newJob()
++            .withIdentity(jobName, Scheduler.DEFAULT_GROUP)
++            .ofType(JobWrapper.class)
++            .build();
+         JobDataMap data = job.getJobDataMap();
+         data.put(RUNNABLE_INSTANCE, instance);
+         data.put(RUN_METHOD_NAME, methodName);
+         data.put(RUN_METHOD_PARAM_TYPE, inputTypes);
+         data.put(RUN_METHOD_PARAM, inputParams);
++        data.put(FIXED_DELAY_ENABLED, true);
+         data.put(FIXED_DELAY_VALUE, taskDelay);
+         data.put(FIXED_DELAY_TIME_UNIT, timeUnit);
+-
+         Date runTime = getFutureDate(initialDelay, timeUnit);
+         String triggerName = generateUniqueNameForInstance(instance, TRIGGER_PREFIX);
+-        SimpleTrigger trigger = new SimpleTrigger(triggerName, Scheduler.DEFAULT_GROUP, runTime);
+-
++        Trigger trigger = newTrigger()
++          .withIdentity(triggerName, Scheduler.DEFAULT_GROUP)
++          .startAt(runTime)
++          .build();
+         try {
+             sched.scheduleJob(job, trigger);
+         } catch (SchedulerException se) {
+@@ -177,7 +187,10 @@ public class SchedulerUtilQuartzImpl implements SchedulerUtil {
+                                       long initialDelay,
+                                       TimeUnit timeUnit) {
+         String jobName = generateUniqueNameForInstance(instance, methodName);
+-        JobDetail job = new JobDetail(jobName, Scheduler.DEFAULT_GROUP, JobWrapper.class);
++        JobDetail job = newJob()
++            .withIdentity(jobName, Scheduler.DEFAULT_GROUP)
++            .ofType(JobWrapper.class)
++            .build();
+         JobDataMap data = job.getJobDataMap();
+         data.put(RUNNABLE_INSTANCE, instance);
+         data.put(RUN_METHOD_NAME, methodName);
+@@ -185,7 +198,10 @@ public class SchedulerUtilQuartzImpl implements SchedulerUtil {
+         data.put(RUN_METHOD_PARAM_TYPE, inputTypes);
+         Date runTime = getFutureDate(initialDelay, timeUnit);
+         String triggerName = generateUniqueNameForInstance(instance, TRIGGER_PREFIX);
+-        SimpleTrigger trigger = new SimpleTrigger(triggerName, Scheduler.DEFAULT_GROUP, runTime);
++        Trigger trigger = newTrigger()
++            .withIdentity(triggerName, Scheduler.DEFAULT_GROUP)
++            .startAt(runTime)
++            .build();
+         try {
+             sched.scheduleJob(job, trigger);
+         } catch (SchedulerException se) {
+@@ -218,7 +234,10 @@ public class SchedulerUtilQuartzImpl implements SchedulerUtil {
+                                    Object[] inputParams,
+                                    String cronExpression) {
+         String jobName = generateUniqueNameForInstance(instance, methodName);
+-        JobDetail job = new JobDetail(jobName, Scheduler.DEFAULT_GROUP, JobWrapper.class);
++        JobDetail job = newJob()
++            .withIdentity(jobName, Scheduler.DEFAULT_GROUP)
++            .ofType(JobWrapper.class)
++            .build();
+         JobDataMap data = job.getJobDataMap();
+         data.put(RUNNABLE_INSTANCE, instance);
+         data.put(RUN_METHOD_NAME, methodName);
+@@ -226,7 +245,10 @@ public class SchedulerUtilQuartzImpl implements SchedulerUtil {
+         data.put(RUN_METHOD_PARAM_TYPE, inputTypes);
+         try {
+             String triggerName = generateUniqueNameForInstance(instance, TRIGGER_PREFIX);
+-            Trigger trigger = new CronTrigger(triggerName, Scheduler.DEFAULT_GROUP, cronExpression);
++            Trigger trigger = newTrigger()
++                .withIdentity(triggerName, Scheduler.DEFAULT_GROUP)
++                .withSchedule(cronSchedule(cronExpression))
++                .build();
+             sched.scheduleJob(job, trigger);
+         } catch (Exception se) {
+             log.error("failed to schedule job", se);
+@@ -248,7 +270,7 @@ public class SchedulerUtilQuartzImpl implements SchedulerUtil {
+      */
+     public void rescheduleAJob(String oldTriggerName, String oldTriggerGroup, Trigger newTrigger) {
+         try {
+-            sched.rescheduleJob(oldTriggerName, oldTriggerGroup, newTrigger);
++            sched.rescheduleJob(triggerKey(oldTriggerName, oldTriggerGroup), newTrigger);
+         } catch (SchedulerException se) {
+             log.error("failed to reschedule the job", se);
+         }
+@@ -263,7 +285,7 @@ public class SchedulerUtilQuartzImpl implements SchedulerUtil {
+     @Override
+     public void pauseJob(String jobId) {
+         try {
+-            sched.pauseJob(jobId, Scheduler.DEFAULT_GROUP);
++            sched.pauseJob(jobKey(jobId, Scheduler.DEFAULT_GROUP));
+         } catch (SchedulerException se) {
+             log.error("failed to pause a job with id=" + jobId, se);
+         }
+@@ -279,7 +301,7 @@ public class SchedulerUtilQuartzImpl implements SchedulerUtil {
+     @Override
+     public void deleteJob(String jobId) {
+         try {
+-            sched.deleteJob(jobId, Scheduler.DEFAULT_GROUP);
++            sched.deleteJob(jobKey(jobId, Scheduler.DEFAULT_GROUP));
+         } catch (SchedulerException se) {
+             log.error("failed to delete a job with id=" + jobId, se);
+         }
+@@ -295,7 +317,7 @@ public class SchedulerUtilQuartzImpl implements SchedulerUtil {
+     @Override
+     public void resumeJob(String jobId) {
+         try {
+-            sched.resumeJob(jobId, Scheduler.DEFAULT_GROUP);
++            sched.resumeJob(jobKey(jobId, Scheduler.DEFAULT_GROUP));
+         } catch (SchedulerException se) {
+             log.error("failed to pause a job with id=" + jobId, se);
+         }
+diff --git a/backend/manager/modules/beans/scheduler/src/test/java/org/ovirt/engine/core/utils/timer/SchedulerUtilQuartsImplTest.java b/backend/manager/modules/beans/scheduler/src/test/java/org/ovirt/engine/core/utils/timer/SchedulerUtilQuartsImplTest.java
+index 2d62ab9..defd4e7 100644
+--- a/backend/manager/modules/beans/scheduler/src/test/java/org/ovirt/engine/core/utils/timer/SchedulerUtilQuartsImplTest.java
++++ b/backend/manager/modules/beans/scheduler/src/test/java/org/ovirt/engine/core/utils/timer/SchedulerUtilQuartsImplTest.java
+@@ -1,11 +1,13 @@
+ package org.ovirt.engine.core.utils.timer;
+ 
+ import static org.junit.Assert.assertEquals;
++import static org.quartz.impl.matchers.GroupMatcher.jobGroupEquals;
+ 
+ import java.lang.reflect.Method;
+ import java.util.ArrayList;
+ import java.util.Date;
+ import java.util.List;
++import java.util.Set;
+ import java.util.concurrent.TimeUnit;
+ import java.util.concurrent.atomic.AtomicInteger;
+ 
+@@ -14,6 +16,7 @@ import org.junit.Before;
+ import org.junit.BeforeClass;
+ import org.junit.Ignore;
+ import org.junit.Test;
++import org.quartz.JobKey;
+ import org.quartz.Scheduler;
+ import org.quartz.SchedulerException;
+ 
+@@ -76,12 +79,14 @@ public class SchedulerUtilQuartsImplTest {
+                         1,
+                         3,
+                         TimeUnit.MILLISECONDS);
+-        String[] jobs = scheduler.getRawScheduler().getJobNames(Scheduler.DEFAULT_GROUP);
+-        assertEquals("Number of scheduled jobs", 1, jobs.length);
++        // String[] jobs = scheduler.getRawScheduler().getJobNames(Scheduler.DEFAULT_GROUP);
++        Set<JobKey> jobKeys = scheduler.getRawScheduler().getJobKeys(jobGroupEquals(Scheduler.DEFAULT_GROUP));
++
++        assertEquals("Number of scheduled jobs", 1, jobKeys.size());
+         // delete a valid job
+         scheduler.deleteJob(jobId);
+-        jobs = scheduler.getRawScheduler().getJobNames(Scheduler.DEFAULT_GROUP);
+-        assertEquals("Number of scheduled jobs", 0, jobs.length);
++        jobKeys = scheduler.getRawScheduler().getJobKeys(jobGroupEquals(Scheduler.DEFAULT_GROUP));
++        assertEquals("Number of scheduled jobs", 0, jobKeys.size());
+ 
+         // delete invalid job
+         scheduler.deleteJob("nojob");
+diff --git a/pom.xml b/pom.xml
+index 923f05f..835d89c 100644
+--- a/pom.xml
++++ b/pom.xml
+@@ -31,7 +31,7 @@
+     <junit.version>4.7</junit.version>
+     <commons-codec.version>1.4</commons-codec.version>
+     <commons-lang.version>2.4</commons-lang.version>
+-    <quartz.version>1.8.3</quartz.version>
++    <quartz.version>2.1.2</quartz.version>
+     <postgres.jdbc.version>8.4-702.jdbc4</postgres.jdbc.version>
+     <commons-collections>3.1</commons-collections>
+     <javax.transaction>1.1</javax.transaction>
+-- 
+1.7.7.6
+
diff --git a/ovirt-engine-use-hibernate-jpa-2.0-api.patch b/ovirt-engine-use-hibernate-jpa-2.0-api.patch
new file mode 100644
index 0000000..54012fd
--- /dev/null
+++ b/ovirt-engine-use-hibernate-jpa-2.0-api.patch
@@ -0,0 +1,34 @@
+From 183ed779270e3e2c3e0abc2f121141bc1b7cb895 Mon Sep 17 00:00:00 2001
+From: Juan Hernandez <juan.hernandez at redhat.com>
+Date: Thu, 9 Feb 2012 16:17:23 +0100
+Subject: [PATCH 8/9] packaging: Use hibernate-jpa-2.0-api
+
+Replace use of hibernate-annotations with hibernate-jpa-2.0-api as
+it contains the same classes.
+
+Change-Id: I7c057bd7e3e68e30f9d19a9ddbe08c62eafab5fe
+---
+ backend/manager/modules/common/pom.xml |    6 ++++--
+ 1 files changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/backend/manager/modules/common/pom.xml b/backend/manager/modules/common/pom.xml
+index 8c0d273..3541707 100644
+--- a/backend/manager/modules/common/pom.xml
++++ b/backend/manager/modules/common/pom.xml
+@@ -30,9 +30,11 @@
+     </dependency>
+ 
+     <dependency>
+-      <groupId>org.hibernate</groupId>
+-      <artifactId>hibernate-annotations</artifactId>
++      <groupId>org.hibernate.javax.persistence</groupId>
++      <artifactId>hibernate-jpa-2.0-api</artifactId>
++      <version>1.0.1.Final</version>
+     </dependency>
++
+   </dependencies>
+ 
+   <build>
+-- 
+1.7.7.6
+
diff --git a/ovirt-engine-use-maven-jaxb2-plugin.patch b/ovirt-engine-use-maven-jaxb2-plugin.patch
new file mode 100644
index 0000000..2b7dedb
--- /dev/null
+++ b/ovirt-engine-use-maven-jaxb2-plugin.patch
@@ -0,0 +1,32 @@
+From aa470845e87957e80e4031aba438640e5bf45204 Mon Sep 17 00:00:00 2001
+From: Juan Hernandez <juan.hernandez at redhat.com>
+Date: Wed, 22 Feb 2012 17:31:48 +0100
+Subject: [PATCH] restapi: Use maven-jaxb2-plugin
+
+This is an updated version of the plugin used to generate Java
+code from the .xsd describing the entities. The older plugin (and
+its old dependencies) are not available in Fedora.
+
+Change-Id: I498ad50f280cd7f6e8ac0734169000e75bb85a1b
+---
+ .../modules/restapi/interface/definition/pom.xml   |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/backend/manager/modules/restapi/interface/definition/pom.xml b/backend/manager/modules/restapi/interface/definition/pom.xml
+index 5f2e477..05c24d3 100644
+--- a/backend/manager/modules/restapi/interface/definition/pom.xml
++++ b/backend/manager/modules/restapi/interface/definition/pom.xml
+@@ -47,8 +47,8 @@
+     <plugins>
+ 
+       <plugin>
+-        <groupId>com.sun.tools.xjc.maven2</groupId>
+-        <artifactId>maven-jaxb-plugin</artifactId>
++        <groupId>org.jvnet.jaxb2.maven2</groupId>
++        <artifactId>maven-jaxb22-plugin</artifactId>
+ 
+         <executions>
+           <execution>
+-- 
+1.7.7.6
+
diff --git a/ovirt-engine-use-spring-instrument-instead-of-spring-agent.patch b/ovirt-engine-use-spring-instrument-instead-of-spring-agent.patch
new file mode 100644
index 0000000..dc30dea
--- /dev/null
+++ b/ovirt-engine-use-spring-instrument-instead-of-spring-agent.patch
@@ -0,0 +1,13 @@
+diff --git a/ear/pom.xml b/ear/pom.xml
+index b9f5b24..d28d33b 100644
+--- a/ear/pom.xml
++++ b/ear/pom.xml
+@@ -101,7 +101,7 @@
+ 	</dependency>
+ 	<dependency>
+ 		<groupId>org.springframework</groupId>
+-		<artifactId>spring-agent</artifactId>
++		<artifactId>spring-instrument</artifactId>
+ 		<version>${spring.version}</version>
+ 	</dependency>
+ 	<dependency>
diff --git a/ovirt-engine.spec b/ovirt-engine.spec
index 0bc5dcc..cfb973d 100644
--- a/ovirt-engine.spec
+++ b/ovirt-engine.spec
@@ -1,79 +1,176 @@
-
-# Short names for engine directories:
-%global engine_name ovirt-engine
-%global engine_etc %{_sysconfdir}/%{engine_name}
-%global engine_usr %{_datadir}/%{engine_name}
-%global engine_var %{_var}/lib/%{engine_name}
-%global engine_jar %{_javadir}/%{engine_name}
-%global engine_tmp %{_var}/cache/%{engine_name}
-%global engine_ear %{engine_usr}/engine.ear
-%global engine_pki %{_sysconfdir}/pki/%{engine_name}
-%global restapi_war %{engine_ear}/restapi.war
-%global root_war %{engine_ear}/root.war
+# The upstream projects uses 4 digits after the version number to indicate
+# minor changes after the release:
+%global upstream_version 3.0.0
+%global upstream_release 0001
+
+# Short names for directories:
+%global engine_data_dir %{_datadir}/%{name}
+%global engine_jar_dir %{_javadir}/%{name}
+%global engine_bin_dir %{engine_data_dir}/bin
+%global engine_modules_dir %{engine_data_dir}/modules
+%global engine_deployments_dir %{engine_data_dir}/deployments
+%global engine_content_dir %{_var}/lib/ovirt-engine
+%global engine_temp_dir %{_var}/cache/ovirt-engine
+%global engine_ear_dir %{engine_deployments_dir}/engine.ear
+%global engine_pki_dir %{_sysconfdir}/pki/%{name}
+%global restapi_war_dir %{engine_ear_dir}/restapi.war
+%global root_war_dir %{engine_deployments_dir}/ROOT.war
 
 # The name of the engine user and group:
-%global engine_user ovirt
 %global engine_group ovirt
+%global engine_user ovirt
 %global engine_uid 108
 
+# Directory to install python libraries:
+%global py_site_pkgs %(python -c "from distutils.sysconfig import get_python_lib as f;print f()")
+
 # Macro to create the engine user:
 %global create_engine_user \
-bin/getent group %{engine_group} >/dev/null || /sbin/groupadd -r %{engine_group}; \
-/bin/getent passwd %{engine_user} >/dev/null || /sbin/useradd -c "oVirt Manager" -u %{engine_uid} -g %{engine_group} -M -d %{engine_var} %{engine_user}
-
+/bin/getent group %{engine_group} >/dev/null || /sbin/groupadd -r %{engine_group}; \
+/bin/getent passwd %{engine_user} >/dev/null || /sbin/useradd -c "oVirt Manager" -u %{engine_uid} -g %{engine_group} -s /bin/nologin %{engine_user}
 
 Name: ovirt-engine
-Version: 3.1.0
-Release: 0.1.20120701git95220c%{?dist}
+Version: %{upstream_version}.%{upstream_release}
+Release: 15%{?dist}
 Summary: Management server for Open Virtualization
 Group: Applications/System
 License: ASL 2.0
 URL: http://www.ovirt.org
 
-# git checkout git://gerrit.ovirt.org/ovirt-engine
-# git archive --prefix=ovirt-engine-3.1.0/ --format=tar 95220cd6c4d2c9cfddc52391f6d04ed750692d51 | xz > ovirt-engine-3.1.0.tar.xz
-Source0: %{name}-%{version}.tar.xz
+# Upstream source code:
+Source0: http://ovirt.org/releases/stable/src/%{name}-%{upstream_version}_%{upstream_release}.tar.gz
 
-# Update to Hibernate 3.6.10:
-Patch0: %{name}-update-hibernate.patch
+BuildArch: noarch
 
 # Build only the backend:
-Patch20: %{name}-build-backend-only.patch
-
-# Fix the checkstyle group, artifact and version:
-Patch30: %{name}-fix-checkstyle-gav.patch
-
-# Update to Spring 3:
-# Upstream: http://gerrit.ovirt.org/3002
-Patch45: %{name}-update-spring.patch
+Patch0: %{name}-build-backend-only.patch
+
+# Remove some dependencies used only for tests:
+Patch1: %{name}-remove-mockito.patch
+Patch10: %{name}-remove-powermock.patch
+Patch20: %{name}-remove-p6spy.patch
+
+# Remove JB5 specifc login module:
+# Upstream: http://gerrit.ovirt.org/2353
+Patch30: %{name}-remove-jb5-login-module.patch
+
+# Add log4j:
+# Upstream: http://gerrit.ovirt.org/2353
+Patch40: %{name}-add-log4j.patch
+
+# Add the dummy Hibernate annotations:
+Patch50: %{name}-add-dummy-hibernate-annotations.patch
+Patch60: %{name}-use-hibernate-jpa-2.0-api.patch
+Patch70: %{name}-replace-guidtype-with-empty-class.patch
+
+# Remove the dependency on JNA, as this was useful in Windows only:
+# Upstream: http://gerrit.ovirt.org/3249 
+Patch80: %{name}-remove-jna.patch
+
+# Remove the dependency on jboss interceptors as it is not used and complicates
+# building:
+# Upstream: http://gerrit.ovirt.org/1997
+Patch100: %{name}-remove-jboss-interceptors.patch
+
+# Remove all the Hibernate DAOs as they are not used currently and the bring a
+# lot of dependencies:
+Patch110: %{name}-remove-hibernate-daos.patch
+
+# Add the methods missing in PGHack:
+# Upstream: http://gerrit.ovirt.org/2347
+Patch120: %{name}-add-pghack-missing-methods.patch
+
+# Remove dependency on JBoss EJB specific annotations as they are not used and
+# they complicate the building in Fedora:
+# Upstream: http://gerrit.ovirt.org/2008
+# Upstream: http://gerrit.ovirt.org/2015
+Patch130: %{name}-remove-jboss-ejb-specific-annotations.patch
+
+# Update to Quartz 2.1:
+# Upstream: http://gerrit.ovirt.org/3250
+Patch140: %{name}-update-to-quartz-2.1.patch
+
+# Remove local user authentication as this only makes sense in Windows:
+# Upstream:  http://gerrit.ovirt.org/3249
+Patch150: %{name}-remove-local-user-authentication.patch
+
+# Don't use the hibernate string helper, just to avoid the dependency in
+# hibernate:
+# Upstream: http://gerrit.ovirt.org/3252
+Patch160: %{name}-dont-use-hibernate-string-helper.patch
+
+# Use the version of the XJC compiler and the corresponding Maven plugin that
+# are available in Fedora:
+# Upstream: http://gerrit.ovirt.org/2222
+Patch170: %{name}-use-maven-jaxb2-plugin.patch
+
+# Update the custom serializer to use the builder class used starting with
+# Jackson 1.7:
+# Upstream: http://gerrit.ovirt.org/3251
+Patch180: %{name}-update-to-jackson-1.9.patch
 
 # Remove Spring from the RESTAPI:
 # Upstream: http://gerrit.ovirt.org/1390
-Patch60: %{name}-remove-spring-from-restapi.patch
+Patch190: %{name}-remove-spring-from-restapi.patch
+
+# Don't require activation, as it is included in Java 7 and there is no package
+# for it:
+# Upstream: http://gerrit.ovirt.org/2354
+Patch200: %{name}-dont-use-activation.patch
+
+# Newer versions of the assembly plugin complain if there is no id in the
+# assembly.xml file:
+Patch210: %{name}-add-id-to-the-notifier-assembly.patch
+
+# Fix a generics related bug in the Postgres dialect class:
+Patch220: %{name}-fix-postgresdbenginedialect.patch
+
+# The spring-agent artifact has been renamed to spring-instrument starting with
+# Spring 3:
+Patch240: %{name}-use-spring-instrument-instead-of-spring-agent.patch
 
 # Remove the frontend related content from the ear:
-Patch70: %{name}-remove-frontend-from-ear.patch
+Patch250: %{name}-remove-frontend-from-ear.patch
 
-# Make dependency on commons-collections explicit:
-# Upstream: http://gerrit.ovirt.org/6597
-Patch71: %{name}-make-dependency-on-commons-collections-explicit.patch
+# Replace pubkey2ssh with ssh-keygen in order to make the package noarch:
+# Upstream: http://gerrit.ovirt.org/3086
+Patch260: %{name}-replace-pubkey2ssh-with-ssh-keygen.patch
+
+# Use build-classpath in scripts:
+Patch270: %{name}-fix-classpath-building-in-scripts.patch
 
-# Update to commons-configuration 1.8:
-Patch72: %{name}-update-commons-configuration.patch
+# Create the CA database files when needed instead of including them in the
+# package:
+Patch310: %{name}-create-database-and-serial-when-needed.patch
 
-# Don't try to modify /etc/sysctl.conf as this file doesn't exist in Fedora 18
-# and the modification that we are doing is not needed:
-Patch73: %{name}-dont-modify-sysctl.patch
+# Add the modules required by the engine and those included with the
+# application server but that need to be overriden:
+Patch340: %{name}-add-modules.patch
+
+# Add the resteasy listener to the restapi, as the current version of the
+# application server doesn't include the bootstrap of resteasy:
+Patch350: %{name}-add-resteasy-listener-to-restapi.patch
+
+# Fixes for the makefile and for the setup tool:
+Patch360: %{name}-makefile-fixes.patch
+Patch370: %{name}-setup-fixes.patch
+
+# Make the dependency on commons-collections explicit:
+# Upstream: http://gerrit.ovirt.org/6597
+Patch380: %{name}-make-dependency-on-commons-collections-explicit.patch
+
+# Update the code to use commons-configuration 1.8:
+Patch390: %{name}-update-commons-configuration.patch
 
 # Add a README file:
-Patch80: %{name}-add-readme.patch
+Patch1000: %{name}-add-readme.patch
 
 # Replace the index page with one that doesn't include links to the user portal
 # or webadmin:
-Patch90: %{name}-replace-index-page.patch
-
+Patch1010: %{name}-replace-index-page.patch
 
-BuildArch: noarch
+# The the service configuration and scripts:
+Patch1020: %{name}-add-systemd-service.patch
 
 # Build time requirements:
 BuildRequires: apache-commons-beanutils
@@ -86,13 +183,10 @@ BuildRequires: apache-commons-logging
 BuildRequires: apache-mina
 BuildRequires: apache-sshd
 BuildRequires: bea-stax-api
-BuildRequires: checkstyle
 BuildRequires: dos2unix
-BuildRequires: jackson
-BuildRequires: hibernate-commons-annotations
 BuildRequires: hibernate-jpa-2.0-api
 BuildRequires: hibernate-validator
-BuildRequires: hibernate3
+BuildRequires: jackson
 BuildRequires: jakarta-commons-httpclient
 BuildRequires: java-devel
 BuildRequires: javamail
@@ -101,12 +195,10 @@ BuildRequires: jboss-annotations-1.1-api
 BuildRequires: jboss-ejb-3.1-api
 BuildRequires: jboss-logging
 BuildRequires: jboss-interceptors-1.1-api
-BuildRequires: jboss-jacc-1.4-api
 BuildRequires: jboss-servlet-3.0-api
 BuildRequires: jpackage-utils
 BuildRequires: jsch
 BuildRequires: log4j
-BuildRequires: make
 BuildRequires: maven
 BuildRequires: maven-antrun-plugin
 BuildRequires: maven-assembly-plugin
@@ -132,56 +224,39 @@ BuildRequires: springframework-instrument
 BuildRequires: springframework-jdbc
 BuildRequires: spring-ldap
 BuildRequires: xmlrpc3-client
-BuildRequires: unzip
 
-# Run time requirements (most of these requirements should be
-# moved to the subpackages):
+# Run time requirements (most of these requirements should be moved to the
+# subpackages):
 Requires: bea-stax-api
-Requires: bind-utils
-Requires: cracklib-python
 Requires: geronimo-validation
-Requires: hibernate-commons-annotations
 Requires: hibernate-jpa-2.0-api
 Requires: hibernate-validator
-Requires: httpd
 Requires: jakarta-commons-httpclient
 Requires: java
 Requires: jboss-interceptors-1.1-api
 Requires: jboss-logging
 Requires: jpackage-utils
 Requires: log4j
-Requires: mod_ssl
-Requires: ntp
-Requires: openssl
-Requires: policycoreutils-python
 Requires: postgresql-jdbc
 Requires: vdsm-bootstrap
-Requires: yum-plugin-versionlock
 
 # For local database:
-Requires: postgresql-server >= 8.4.7
-Requires: postgresql-contrib >= 8.4.7
+Requires: postgresql-server
+Requires: postgresql-contrib
 
 # Require JBoss AS 7:
-Requires: jboss-as >= 7.1.1-3
-
-# We can't require exactly the same version and release of the
-# setup package because it needs to be updated independely as part
-# of the update process implemented in the engine-upgrade script:
-Requires: %{name}-setup >= %{version}-%{release}
+Requires: jboss-as >= 7.1.0-3
 
-# Require the subpackages so that everything is installed when the
-# main package is installed:
-Requires: %{name}-backend = %{version}-%{release}
-Requires: %{name}-restapi = %{version}-%{release}
+# Require the subpackages:
 Requires: %{name}-config = %{version}-%{release}
-Requires: %{name}-notification-service = %{version}-%{release}
+Requires: %{name}-backend = %{version}-%{release}
 Requires: %{name}-dbscripts = %{version}-%{release}
-
-# These packages are not available in Fedora yet:
-#Requires: ovirt-iso-uploader
-#Requires: ovirt-image-uploader
-#Requires: ovirt-log-collector
+Requires: %{name}-iso-uploader = %{version}-%{release}
+Requires: %{name}-log-collector = %{version}-%{release}
+Requires: %{name}-notification-service = %{version}-%{release}
+Requires: %{name}-restapi = %{version}-%{release}
+Requires: %{name}-setup = %{version}-%{release}
+Requires: %{name}-tools-common = %{version}-%{release}
 
 
 %description
@@ -190,8 +265,17 @@ system that provides advanced capabilities for managing the Open
 virtualization infrastructure for Servers and Desktops.
 
 
+%package config
+Summary: Configuration tool for  Open Virtualization Manager
+Group: Applications/System
+Requires: %{name}-tools-common = %{version}-%{release}
+
+%description config
+The configuration tool for Open Virtualization Manager.
+
+
 %package backend
-Summary: Engine core of oVirt Engine
+Summary: Engine core of Open Virtualization Manager
 Group: Applications/System
 Requires: %{name} = %{version}-%{release}
 Requires: antlr-tool
@@ -229,104 +313,181 @@ Requires: ws-commons-util
 Requires: xmlrpc3-client
 Requires: xmlrpc3-common
 
-
 %description backend
-The backend engine of oVirt Engine
+The backend engine of Open Virtualization Manager.
 
 
-%package restapi
-Summary: RESTful API for oVirt Engine
+%package dbscripts
+Summary: Database scripts for Open Virtualization Manager
 Group: Applications/System
 Requires: %{name} = %{version}-%{release}
 
-%description restapi
-The RESTful API for oVirt Engine
+%description dbscripts
+Database scripts for Open Virtualization Manager.
 
 
-%package setup
-Summary: Setup and upgrade scripts for oVirt Engine
+%package iso-uploader
+Summary: ISO Uploader tool for Open Virtualization Manager
 Group: Applications/System
-Requires: %{name}
-Requires: lsof
-Requires: nfs-utils
+Requires: %{name} = %{version}-%{release}
+Requires: python-lxml
 
-%description setup
-Setup and upgrade scripts for oVirt Engine
+%description iso-uploader
+ISO Uploader tool for Open Virtualization Manager.
 
 
-%package dbscripts
-Summary: Database scripts for oVirt Engine
-Group: Applications/System
-Requires: %{name}
+%package javadoc
+Summary: Javadocs for %{name}
+Group: Development/Libraries
+Requires: jpackage-utils
 
-%description dbscripts
-Database scripts for oVirt Engine
+%description javadoc
+This package contains the API documentation for %{name}.
 
 
-%package tools-common
-Summary: Common libraries for  oVirt Engine Tools
+%package log-collector
+Summary: Log Collector tool for Open Virtualization Manager
 Group: Applications/System
 Requires: %{name} = %{version}-%{release}
-Requires: apache-commons-collections
-Requires: apache-commons-logging
-Requires: apache-commons-lang
-Requires: apache-commons-codec
-Requires: apache-commons-configuration
-Requires: apache-commons-jxpath
-Requires: log4j
+Requires: python-lxml
+Requires: sos
 
-%description tools-common
-The common libraries used by oVirt Engine Tools
+%description log-collector
+Log Collector tool for Open Virtualization Manager.
 
 
 %package notification-service
-Summary: Notification service for oVirt Engine Tools
+Summary: Notification service for Open Virtualization Manager Tools
 Group: Applications/System
 Requires: %{name} = %{version}-%{release}
 Requires: %{name}-tools-common = %{version}-%{release}
-Requires: classpathx-mail
+Requires: javamail
 
 %description notification-service
-The notification service used by oVirt Engine
+The notification service used by Open Virtualization Manager.
 
 
-%package config
-Summary: Configuration tool for oVirt Engine
+%package restapi
+Summary: Open API for Red Hat Enterprise Virtualization Manager
 Group: Applications/System
-Requires: %{name}-tools-common = %{version}-%{release}
+Requires: %{name} = %{version}-%{release}
+Requires: aopalliance
+Requires: apache-commons-codec
+Requires: jakarta-commons-httpclient
+Requires: httpcomponents-client
+Requires: httpcomponents-core
+Requires: jackson
+Requires: javassist
+Requires: glassfish-jaxb
+Requires: glassfish-jaxb-api
+Requires: jboss-logging
+Requires: jcip-annotations
+Requires: jettison
+Requires: resteasy
+Requires: scannotation
+Requires: snakeyaml
+Requires: bea-stax-api
+Requires: istack-commons
 
-%description config
-The configuration tool for oVirt Engine
+%description restapi
+The Open API for Red Hat Enterprise Virtualization Manager.
 
 
-%package setup-plugin-allinone
-Summary: All-in-one plugin for oVirt Engine's setup
+%package setup
+Summary: Setup and upgrade scripts for Open Virtualization Manager
 Group: Applications/System
-Requires: %{name}-setup
-Requires: %{name}-sdk
-Requires: vdsm
+Requires: %{name} = %{version}-%{release}
+Requires: %{name}-config = %{version}-%{release}
+Requires: %{name}-dbscripts = %{version}-%{release}
+Requires: lsof
+Requires: nfs-utils
+Requires: cracklib-python
+Requires: policycoreutils-python
+Requires: bind-utils
 
-%description setup-plugin-allinone
-All-in-one plugin for oVirt Engine's setup
+%description setup
+Setup and upgrade scripts for Open Virtualization Manager.
+
+
+%package tools-common
+Summary: Common libraries for  Open Virtualization Manager Tools
+Group: Applications/System
+Requires: %{name} = %{version}-%{release}
+Requires: apache-commons-codec
+Requires: apache-commons-collections
+Requires: apache-commons-configuration
+Requires: apache-commons-jxpath
+Requires: apache-commons-lang
+Requires: apache-commons-logging
+Requires: log4j
+
+%description tools-common
+The common libraries used by Open Virtualization Manager Tools.
 
 
 %prep
 
 # Unpack and patch the sources:
-%setup -q
+%setup -q -c -n %{name}-%{upstream_version}_%{upstream_release}
 
 # Apply the patches:
+%patch1 -p1
 %patch0 -p1
+%patch10 -p1
 %patch20 -p1
 %patch30 -p1
-%patch45 -p1
+%patch40 -p1
+%patch50 -p1
 %patch60 -p1
 %patch70 -p1
-%patch71 -p1
-%patch72 -p1
-%patch73 -p1
 %patch80 -p1
-%patch90 -p1
+%patch100 -p1
+%patch110 -p1
+%patch120 -p1
+%patch130 -p1
+%patch140 -p1
+%patch150 -p1
+%patch160 -p1
+%patch170 -p1
+%patch180 -p1
+%patch190 -p1
+%patch200 -p1
+%patch210 -p1
+%patch220 -p1
+%patch240 -p1
+%patch250 -p1
+%patch260 -p1
+%patch270 -p1
+%patch310 -p1
+%patch340 -p1
+%patch350 -p1
+%patch360 -p1
+%patch370 -p1
+%patch380 -p1
+%patch390 -p1
+%patch1000 -p1
+%patch1010 -p1
+%patch1020 -p1
+
+# Remove some obsolete files:
+rm -rf backend/manager/conf/ca/Setup.txt
+
+# Remove extra modules that are not needed starting with JBoss AS 7.1:
+rm -rf deployment/modules/org/jboss/as/naming
+rm -rf deployment/modules/sun/jdk
+
+# Fix the end of line of the database scripts:
+find backend/manager/dbscripts -type f -name '*.sh' -exec dos2unix {} \;
+
+# Remove the shebang (first line) from python generated files:
+sed -i 1d \
+backend/manager/tools/engine-logcollector/src/rhev/tests.py \
+backend/manager/tools/engine-logcollector/src/rhev/schemas/jbossds.py \
+backend/manager/tools/engine-logcollector/src/rhev/schemas/api.py \
+backend/manager/tools/engine-iso-uploader/src/schemas/jbossds.py \
+backend/manager/tools/engine-iso-uploader/src/schemas/api.py \
+backend/manager/tools/engine-tools-common-lib/src/rhev/schemas/jbossds.py \
+backend/manager/tools/engine-tools-common-lib/src/rhev/schemas/api.py
 
 
 %build
@@ -343,25 +504,32 @@ make \
 
 %install
 
-# Use the makefile to do the normal installation, after that we
-# will need to replace jar files with links to their actual
-# locations:
-make PREFIX=%{buildroot} SOURCE_DIR=%{_sourcedir} install
+# Use the makefile to do the normal installation, after that we will need to
+# replace jar files with links to their actual locations:
+make \
+  PREFIX="%{buildroot}" \
+  install
+
+# XXX: Need to review this, but right now they have to be removed to avoid
+# rpmbuild complaints:
+rm %{buildroot}/usr/share/java/engine-tools-common-3.0.0-0001.jar
+rm %{buildroot}/usr/share/java/engine-tools-common.jar
+
 
 # Create the directories required for jar and POM files:
-install -d -m 755 %{buildroot}%{engine_jar}
+install -d -m 755 %{buildroot}%{engine_jar_dir}
 install -d -m 755 %{buildroot}%{_mavenpomdir}
 install -d -m 755 %{buildroot}%{_javadocdir}/%{name}
 
 # Jar and POM files:
-while read module_path artifact_id
+while read module_path artifact_id subpackage_name
 do
   pom_file="${module_path}/pom.xml"
-  jar_file="${module_path}/target/${artifact_id}-%{version}.jar"
+  jar_file="${module_path}/target/${artifact_id}-%{upstream_version}-%{upstream_release}.jar"
   install -p -m 644 ${pom_file} %{buildroot}%{_mavenpomdir}/JPP.%{name}-${artifact_id}.pom
   if [ -f "${jar_file}" ]
   then
-    install -p -m 644 ${jar_file} %{buildroot}%{engine_jar}/${artifact_id}.jar
+    install -p -m 644 ${jar_file} %{buildroot}%{engine_jar_dir}/${artifact_id}.jar
     %add_maven_depmap JPP.%{name}-${artifact_id}.pom %{name}/${artifact_id}.jar
   else
     %add_maven_depmap JPP.%{name}-${artifact_id}.pom
@@ -380,6 +548,7 @@ backend/manager/modules/vdsbroker vdsbroker
 backend/manager/modules/searchbackend searchbackend
 backend/manager/modules/beans manager-beans
 backend/manager/modules/beans/scheduler scheduler
+backend/manager/modules/beans/vdsbroker vdsbrokerbean
 backend/manager/modules/bll bll
 backend/manager/modules/restapi restapi-parent
 backend/manager/modules/restapi/interface restapi-interface
@@ -395,168 +564,157 @@ backend/manager/tools/engine-notifier/engine-notifier-service engine-notifier-se
 backend/manager/tools/engine-notifier/engine-notifier-resources engine-notifier-resources
 .
 
-# Remove all the .jar files from the .ear, as we will replace them with links
-# to their actual locations:
-find %{buildroot}%{engine_ear} -depth -name '*.jar' -exec rm -rf {} \;
+# Remove all the jar files, as they have to be replaced with links pointing to
+# the actual locations:
+find %{buildroot}%{engine_deployments_dir} -depth -name '*.jar' -exec rm -rf {} \;
+
+# Remove manifests files as the dependencies there confuse the class loader:
+find %{buildroot}%{engine_deployments_dir} -name MANIFEST.MF -delete
 
-# Replace jar files in the ear with links to their actuals
-# locations, first for jar files from this package, as for these
-# can't use build-classpath:
+# Replace jar files in the ear with links to their actuals locations, first for
+# jar files from this package, as for these can't use build-classpath:
 while read jar_name ear_path
 do
-  ln -s %{engine_jar}/${jar_name}.jar %{buildroot}%{engine_ear}/${ear_path}.jar
+  ln -s %{engine_jar_dir}/${jar_name}.jar %{buildroot}%{engine_ear_dir}/${ear_path}.jar
 done <<'.'
 bll engine-bll
 scheduler engine-scheduler
+vdsbrokerbean engine-vdsbroker
 common lib/engine-common
 compat lib/engine-compat
 dal lib/engine-dal
 engineencryptutils lib/engine-encryptutils
 engine-tools-common lib/engine-tools-common
 utils lib/engine-utils
-vdsbroker lib/engine-vdsbroker
+vdsbroker lib/vdsbroker
 searchbackend lib/searchbackend
 .
 
 # Then for the system jar files (using build-classpath):
-while read jar_name lib_path
+while read jar_name
 do
-  ln -s `build-classpath ${jar_name}` %{buildroot}%{engine_ear}/lib/${lib_path}.jar
+  ln -s `build-classpath ${jar_name}` %{buildroot}%{engine_ear_dir}/lib
 done <<'.'
-apache-mina/mina-core mina-core
-apache-sshd/sshd-core sshd-core
-commons-beanutils commons-beanutils
-commons-codec commons-codec
-commons-collections commons-collections
-commons-httpclient commons-httpclient
-commons-lang commons-lang
-dom4j dom4j
-geronimo-validation validation-api
-hibernate/hibernate-commons-annotations hibernate-commons-annotations
-hibernate-validator hibernate-validator
-jsch jsch
-objectweb-asm/asm-all asm-all
-quartz quartz
-slf4j/api slf4j-api
-springframework/spring-aop spring-aop
-springframework/spring-beans spring-beans
-springframework/spring-context spring-context
-springframework/spring-core spring-core
-springframework/spring-expression spring-expression
-springframework/spring-instrument spring-instrument
-springframework/spring-jdbc spring-jdbc
-springframework/spring-tx spring-tx
-spring-ldap/spring-ldap-core spring-ldap-core
-ws-commons-util ws-commons-util
-xmlrpc3-client xmlrpc-client
-xmlrpc3-common xmlrpc-common
+antlr
+aopalliance
+apache-commons-beanutils
+apache-commons-codec
+apache-commons-collections
+apache-commons-lang
+apache-mina/mina-core
+apache-sshd/sshd-core
+bea-stax-api
+dom4j
+geronimo-validation
+jackson/jackson-core-asl
+jackson/jackson-mapper-asl
+jakarta-commons-httpclient
+jsch
+objectweb-asm/asm-all
+quartz
+slf4j/api
+slf4j/log4j12
+springframework/spring-aop
+springframework/spring-beans
+springframework/spring-context
+springframework/spring-core
+springframework/spring-instrument
+springframework/spring-jdbc
+springframework/spring-tx
+spring-ldap/spring-ldap-core
+ws-commons-util
+xmlrpc3-client
+xmlrpc3-common
 .
 
-# Replace jar files in the RESTAPI web application with links to ther
-# actual locations, first for jar files from this package, as for these
-# can't use build-classpath:
-while read jar_name lib_path
+# Replace jar files in the RESTAPI web application with links to ther actual
+# locations, first for jar files from this package, as for these can't use
+# build-classpath:
+while read jar_name
 do
-  ln -s %{engine_jar}/${jar_name}.jar %{buildroot}%{restapi_war}/WEB-INF/lib/${lib_path}.jar
+  ln -s %{engine_jar_dir}/${jar_name}.jar %{buildroot}%{restapi_war_dir}/WEB-INF/lib
 done <<'.'
-interface-common-jaxrs interface-common-jaxrs
-restapi-definition restapi-definition
-restapi-jaxrs restapi-jaxrs
-restapi-types restapi-types
+interface-common-jaxrs
+restapi-definition
+restapi-jaxrs
+restapi-types
 .
 
 # Then for the system jar files (using build-classpath):
-while read jar_name lib_path
+while read jar_name
 do
-  ln -s `build-classpath ${jar_name}` %{buildroot}%{restapi_war}/WEB-INF/lib/${lib_path}.jar
+  ln -s `build-classpath ${jar_name}` %{buildroot}%{restapi_war_dir}/WEB-INF/lib
 done <<'.'
-nakeyaml snakeyaml
+aopalliance
+apache-commons-codec
+jakarta-commons-httpclient
+httpcomponents/httpclient
+httpcomponents/httpcore
+jackson/jackson-jaxrs
+jackson/jackson-xc
+javassist
+jaxb-api
+glassfish-jaxb/jaxb-impl
+resteasy/jaxrs-api
+jboss-logging
+jcip-annotations
+jettison
+resteasy/resteasy-jackson-provider
+resteasy/resteasy-jaxb-provider
+resteasy/resteasy-jaxrs
+resteasy/resteasy-jettison-provider
+resteasy/resteasy-yaml-provider
+scannotation
+snakeyaml
+bea-stax-api
+istack-commons-runtime
 .
 
-%preun
-if [ "$1" -eq 0 ]
-then
-    curdate=`date +"%Y_%m_%d_%H_%M_%%S"`
-    if [[ -d %{_sysconfdir}/pki/%{engine_name} ]]; then
-        mkdir -p %{_sysconfdir}/pki/%{engine_name}-backups/%{engine_name}-${curdate}
-        #backup whole 'rhevm' dir into the backup dir with current date
-        cp -pR %{_sysconfdir}/pki/%{engine_name}/ %{_sysconfdir}/pki/%{engine_name}-backups/%{engine_name}-${curdate}/
-    fi
-fi
-
-
-%postun
-if [ "$1" -eq 0 ]
-then
-    if [[ -d %{_sysconfdir}/pki/%{engine_name} ]]; then
-	    rm -rf %{_sysconfdir}/pki/%{engine_name}
-	fi
-
-    if [[ -f %{_sysconfdir}/yum/pluginconf.d/versionlock.list ]]
-    then
-        sed -i '/ovirt/d' %{_sysconfdir}/yum/pluginconf.d/versionlock.list
-    fi
-fi
-
-
-%pre
-%create_engine_user
-
-
-%pre backend
-%create_engine_user
-
-
-%pre notification-service
-%create_engine_user
+# Javadoc files:
+install -d -m 755 %{buildroot}%{_javadocdir}/%{name}
+cp -rp target/site/apidocs/* %{buildroot}%{_javadocdir}/%{name}
 
 
 %files
 
 # The main package owns most of the directories:
-%dir %{engine_usr}
-%dir %{engine_usr}/ovirt-isos
-%dir %{engine_usr}/resources
-%dir %{engine_usr}/db-backups
-%dir %{engine_usr}/scripts
-%dir %{_localstatedir}/run/%{engine_name}
-%dir %attr(-, %{engine_user}, %{engine_group}) %{_var}/log/%{engine_name}
-%dir %attr(-, %{engine_user}, %{engine_group}) %{_var}/lock/%{engine_name}
-
-# VDS installer script:
-%{engine_usr}/scripts/vds_installer.py*
-
-# Log rotation script:
-%{engine_usr}/scripts/ovirtlogrot.sh
+%dir %{_datadir}/%{name}
+%dir %{_datadir}/%{name}/ovirt-isos
+%dir %{_datadir}/%{name}/db-backups
+%dir %{_datadir}/%{name}/scripts
+%dir %{_localstatedir}/run/%{name}
+%dir %attr(-, %{engine_user}, %{engine_group}) %{_var}/log/%{name}
+%dir %attr(-, %{engine_user}, %{engine_group}) %{_var}/lock/%{name}
+%{_datadir}/%{name}/scripts/vds_installer.py*
+%{_datadir}/%{name}/scripts/ovirtlogrot.sh
 %{_sysconfdir}/cron.daily/ovirt-cron
-
-# Misc configuration files:
-%{engine_usr}/conf
-%{_sysconfdir}/tmpfiles.d/ovirt-engine.conf
+%config(noreplace) %{_sysconfdir}/tmpfiles.d/ovirt-engine.conf
 
 # Engine configuration files:
-%dir %attr(-, %{engine_user}, %{engine_group}) %{engine_etc}
-%config(noreplace) %attr(-, %{engine_user}, %{engine_group}) %{engine_etc}/engine.conf
-%config(noreplace) %{engine_etc}/web-conf.js
-
-# Files needed by the service:
-%config(noreplace) %{_sysconfdir}/sysconfig/%{engine_name}
-%config(noreplace) %attr(-, %{engine_user}, %{engine_group}) %{engine_etc}/engine-service.xml
-%config(noreplace) %{_sysconfdir}/security/limits.d/10-ovirt-engine.conf
-%attr(-, %{engine_user}, %{engine_group}) %{engine_etc}/engine-service-logging.properties
-%attr(-, %{engine_user}, %{engine_group}) %{engine_etc}/engine-service-users.properties
-%{engine_usr}/scripts/engine-service.py*
-%{_unitdir}/%{engine_name}.service
-
-# Jar files used by all the components:
-%dir %{engine_jar}
-%{engine_jar}/common.jar
-%{engine_jar}/compat.jar
-%{engine_jar}/utils.jar
-
-# POM files:
+%dir %attr(-, %{engine_user}, %{engine_group}) %{_sysconfdir}/%{name}
+%config(noreplace) %attr(-, %{engine_user}, %{engine_group}) %{_sysconfdir}/%{name}/engine.conf
+%config(noreplace) %attr(-, %{engine_user}, %{engine_group}) %{_sysconfdir}/%{name}/ovirt-engine.xml
+%config(noreplace) %attr(-, %{engine_user}, %{engine_group}) %{_sysconfdir}/%{name}/ovirt-engine-logging.properties
+%config(noreplace) %attr(-, %{engine_user}, %{engine_group}) %{_sysconfdir}/%{name}/ovirt-engine-users.properties
+%config(noreplace) %attr(-, %{engine_user}, %{engine_group}) %{_sysconfdir}/%{name}/web-conf.js
+
+# Files needed by the systemd service:
+%{engine_bin_dir}/ovirt-engine.sh
+%{_unitdir}/ovirt-engine.service
+%config(noreplace) %{_sysconfdir}/sysconfig/ovirt-engine
+
+# The main package owns the dependencies map and directory containing the jar
+# files (but not all its contents):
 %{_mavendepmapfragdir}/%{name}
+%dir %{engine_jar_dir}
+
+# The parent POM:
 %{_mavenpomdir}/JPP.%{name}-parent.pom
+
+# Jar and POM files used by all the components:
+%{engine_jar_dir}/common.jar
+%{engine_jar_dir}/compat.jar
+%{engine_jar_dir}/utils.jar
 %{_mavenpomdir}/JPP.%{name}-common.pom
 %{_mavenpomdir}/JPP.%{name}-compat.pom
 %{_mavenpomdir}/JPP.%{name}-utils.pom
@@ -568,13 +726,14 @@ fi
 %files backend
 
 # Jar files:
-%{engine_jar}/bll.jar
-%{engine_jar}/dal.jar
-%{engine_jar}/engine-config.jar
-%{engine_jar}/engineencryptutils.jar
-%{engine_jar}/scheduler.jar
-%{engine_jar}/searchbackend.jar
-%{engine_jar}/vdsbroker.jar
+%{engine_jar_dir}/bll.jar
+%{engine_jar_dir}/dal.jar
+%{engine_jar_dir}/engine-config.jar
+%{engine_jar_dir}/engineencryptutils.jar
+%{engine_jar_dir}/scheduler.jar
+%{engine_jar_dir}/searchbackend.jar
+%{engine_jar_dir}/vdsbroker.jar
+%{engine_jar_dir}/vdsbrokerbean.jar
 
 # POM files:
 %{_mavenpomdir}/JPP.%{name}-backend.pom
@@ -591,95 +750,161 @@ fi
 %{_mavenpomdir}/JPP.%{name}-scheduler.pom
 %{_mavenpomdir}/JPP.%{name}-searchbackend.pom
 %{_mavenpomdir}/JPP.%{name}-vdsbroker.pom
-
-# Directories for the deployments, contents and temporary files need to
-# be owned by the engine user because the application server needs to
-# write to them:
-%attr(-, %{engine_user}, %{engine_group}) %{engine_var}
-%attr(-, %{engine_user}, %{engine_group}) %{engine_tmp}
-
-# The backend owns the directory of the ear and most of its contents,
-# but not all, as most of the web applications are owned by other
-# subpackages:
-%dir %{engine_ear}
-%{engine_ear}/META-INF
-%{engine_ear}/lib
-%{engine_ear}/engine-bll.jar
-%{engine_ear}/engine-scheduler.jar
+%{_mavenpomdir}/JPP.%{name}-vdsbrokerbean.pom
+
+# Directory for the engine modules that complement and override those provided
+# by the application server:
+
+# Directories for the deployments, contents and temporary files need to be
+# owned by the engine because the application server needs to write to them:
+%dir %attr(-, %{engine_user}, %{engine_group}) %{engine_deployments_dir}
+%dir %attr(-, %{engine_user}, %{engine_group}) %{engine_content_dir}
+%dir %attr(-, %{engine_user}, %{engine_group}) %{engine_temp_dir}
+
+# This package owns the directory of the ear and some (not all) of its
+# contents:
+%dir %{engine_ear_dir}
+%dir %{engine_ear_dir}/lib
+%{engine_ear_dir}/META-INF
+%{engine_ear_dir}/engine-bll.jar
+%{engine_ear_dir}/engine-scheduler.jar
+%{engine_ear_dir}/engine-vdsbroker.jar
+%{engine_ear_dir}/lib/*.jar
 
 # Root web application:
-%{root_war}
+%{root_war_dir}
 
 # Sysprep files:
-%config(noreplace) %{engine_etc}/sysprep
-
-# PKI directories are owned by the engine user because it needs to
-# create files inside:
-%dir %attr(-, %{engine_user}, %{engine_group}) %{engine_pki}
-%dir %attr(-, %{engine_user}, %{engine_group}) %{engine_pki}/certs
-%dir %attr(-, %{engine_user}, %{engine_group}) %{engine_pki}/keys
-%dir %attr(-, %{engine_user}, %{engine_group}) %{engine_pki}/private
-%dir %attr(-, %{engine_user}, %{engine_group}) %{engine_pki}/requests
+%config(noreplace) %{_sysconfdir}/%{name}/sysprep
 
 # PKI scripts:
-%{engine_pki}/*.sh
-%{engine_pki}/generate-ssh-keys
+%{engine_pki_dir}/*.sh
+%{engine_pki_dir}/generate-ssh-keys
+
+# PKI Directories are owned by the application server because it needs to
+# create files inside:
+%dir %attr(-, %{engine_user}, %{engine_group}) %{engine_pki_dir}
+%dir %attr(-, %{engine_user}, %{engine_group}) %{engine_pki_dir}/certs
+%dir %attr(-, %{engine_user}, %{engine_group}) %{engine_pki_dir}/keys
+%dir %attr(-, %{engine_user}, %{engine_group}) %{engine_pki_dir}/private
+%dir %attr(-, %{engine_user}, %{engine_group}) %{engine_pki_dir}/requests
 
 # PKI configuration files:
-%config(noreplace) %{engine_pki}/openssl.conf
-%config(noreplace) %{engine_pki}/cacert.template
-%config(noreplace) %{engine_pki}/cert.template
+%config(noreplace) %{engine_pki_dir}/openssl.conf
+%config(noreplace) %{engine_pki_dir}/cacert.template
+%config(noreplace) %{engine_pki_dir}/cert.template
 
-# The certificate database files:
-%config(noreplace) %attr(-, %{engine_user}, %{engine_group}) %{engine_pki}/database.txt
-%config(noreplace) %attr(-, %{engine_user}, %{engine_group}) %{engine_pki}/serial.txt
+# The certificate database files are not created by the RPM, but by the scripts
+# as needed:
+%ghost %attr(-, %{engine_user}, %{engine_group}) %{engine_pki_dir}/database.txt
+%ghost %attr(-, %{engine_user}, %{engine_group}) %{engine_pki_dir}/serial.txt
 
 # Modules:
-%{engine_usr}/modules
+%dir %{engine_modules_dir}
+%{engine_modules_dir}/org/postgresql
+%{engine_modules_dir}/com/sun/xml/bind
+%{engine_modules_dir}/org/hibernate/validator
 
 
-%files setup
+%files config
 
-# Links to the main programs:
-%{_bindir}/engine-setup
-%{_bindir}/engine-upgrade
-%{_bindir}/engine-check-update
-%{_bindir}/engine-cleanup
+# Links to the main scripts:
+%{_bindir}/engine-config
+%{_bindir}/engine-manage-domains
+
+# Scripts:
+%{_datadir}/%{name}/engine-config
+%{_datadir}/%{name}/engine-manage-domains
+%{_datadir}/%{name}/kerberos
+
+# Configuration files for the configuration tool:
+%dir %{_sysconfdir}/%{name}/engine-config
+%config(noreplace) %{_sysconfdir}/%{name}/engine-config/engine-config.conf
+%config(noreplace) %{_sysconfdir}/%{name}/engine-config/engine-config.*properties
+%config(noreplace) %{_sysconfdir}/%{name}/engine-config/log4j.xml
+
+# Configuration files for the domain management tool:
+%dir %{_sysconfdir}/%{name}/engine-manage-domains
+%config(noreplace) %{_sysconfdir}/%{name}/engine-manage-domains/engine-manage-domains.conf
+%config(noreplace) %{_sysconfdir}/%{name}/engine-manage-domains/log4j.xml
+
+
+%files dbscripts
+%{_datadir}/%{name}/dbscripts
+
+
+%files iso-uploader
+
+# Link to the main program:
+%{_bindir}/engine-iso-uploader
 
 # Python scripts:
-%{engine_usr}/scripts/basedefs.py*
-%{engine_usr}/scripts/engine_validators.py*
-%{engine_usr}/scripts/setup_params.py*
-%{engine_usr}/scripts/setup_sequences.py*
-%{engine_usr}/scripts/setup_controller.py*
-%{engine_usr}/scripts/common_utils.py*
-%{engine_usr}/scripts/output_messages.py*
-%{engine_usr}/scripts/nfsutils.py*
-%{engine_usr}/scripts/engine-setup.py*
-%{engine_usr}/scripts/engine-cleanup.py*
-%{engine_usr}/scripts/engine-upgrade.py*
-%{engine_usr}/scripts/post_upgrade.py*
+%{_datadir}/%{name}/iso-uploader
 
-# Plugins directory:
-%dir %{engine_usr}/scripts/plugins
-%{engine_usr}/scripts/plugins/example_plugin_000.py*
+# Configuration files:
+%config(noreplace) %{_sysconfdir}/%{name}/isouploader.conf
 
+# Manual pages:
+%doc %{_mandir}/man8/engine-iso-uploader.8.gz
 
-%files setup-plugin-allinone
-%{engine_usr}/scripts/plugins/all_in_one_100.py*
 
+%files javadoc
 
-%files dbscripts
-%{engine_usr}/dbscripts
+%{_javadocdir}/%{name}
+
+
+%files log-collector
+
+# Main program:
+%{_bindir}/engine-log-collector
+
+# Python files:
+%{_datadir}/%{name}/log-collector
+
+# SOS plugins:
+%{py_site_pkgs}/sos/plugins/engine.py*
+%{py_site_pkgs}/sos/plugins/jboss.py*
+%{py_site_pkgs}/sos/plugins/postgresql.py*
+
+# Configuration files:
+%config(noreplace) %{_sysconfdir}/%{name}/logcollector.conf
+
+# Manual page pages:
+%doc %{_mandir}/man8/engine-log-collector.8.gz
+
+%doc LICENSE
+
+
+%files notification-service
+
+# Startup scripts:
+%{_datadir}/%{name}/notifier
+%{_sysconfdir}/init.d/engine-notifierd
+
+# Log and state directories must be owned by ovirt because the notifier service
+# runs with that user and needs to write them:
+%dir %attr(-, %{engine_user}, %{engine_group}) %{_var}/log/%{name}/notifier
+%dir %attr(-, %{engine_user}, %{engine_group}) %{_localstatedir}/run/%{name}/notifier
+
+# Configuration files:
+%dir %{_sysconfdir}/%{name}/notifier
+%config(noreplace) %{_sysconfdir}/%{name}/notifier/notifier.conf
+%config(noreplace) %{_sysconfdir}/%{name}/notifier/log4j.xml
+
+# Jar files:
+%{engine_jar_dir}/engine-notifier-service.jar
+
+# POM files:
+%{_mavenpomdir}/JPP.%{name}-engine-notifier.pom
 
 
 %files restapi
 
 # Jar files:
-%{engine_jar}/interface-common-jaxrs.jar
-%{engine_jar}/restapi-definition.jar
-%{engine_jar}/restapi-jaxrs.jar
-%{engine_jar}/restapi-types.jar
+%{engine_jar_dir}/interface-common-jaxrs.jar
+%{engine_jar_dir}/restapi-definition.jar
+%{engine_jar_dir}/restapi-jaxrs.jar
+%{engine_jar_dir}/restapi-types.jar
 
 # POM files:
 %{_mavenpomdir}/JPP.%{name}-interface-common-jaxrs.pom
@@ -689,69 +914,83 @@ fi
 %{_mavenpomdir}/JPP.%{name}-restapi-parent.pom
 %{_mavenpomdir}/JPP.%{name}-restapi-types.pom
 
-# Everything inside of the web application is owned by this
-# subpackage:
-%{restapi_war}
+# Everything inside of the web application is owned by this subpackage:
+%{restapi_war_dir}
+
+
+%files setup
+
+# Links to the main programs:
+%{_bindir}/engine-setup
+%{_bindir}/engine-cleanup
+
+# Python scripts:
+%{_datadir}/%{name}/scripts/basedefs.py*
+%{_datadir}/%{name}/scripts/engine_validators.py*
+%{_datadir}/%{name}/scripts/common_utils.py*
+%{_datadir}/%{name}/scripts/output_messages.py*
+%{_datadir}/%{name}/scripts/nfsutils.py*
+%{_datadir}/%{name}/scripts/engine-setup.py*
+%{_datadir}/%{name}/scripts/engine-cleanup.py*
+
+# Resources used during the setup:
+%dir %{_datadir}/%{name}/resources
+%{_datadir}/%{name}/conf
+
+# The main web application:
+# XXX: I think this should be directly installed inside the .ear or in the
+# deployments directory instead of having the setup tool copy it.
+%{_datadir}/%{name}/resources/jboss
 
 
 %files tools-common
 
 # Jar files:
-%{engine_jar}/engine-tools-common.jar
+%{engine_jar_dir}/engine-tools-common.jar
 
 # POM files:
 %{_mavenpomdir}/JPP.%{name}-engine-tools-common.pom
 
 
-%files config
+# Create the ovirt group and group for all the subpackages that contain
+# files owned by them:
+%pre
+%create_engine_user
 
-# Links to the main scripts:
-%{_bindir}/engine-config
-%{_bindir}/engine-manage-domains
+%pre backend
+%create_engine_user
 
-# Scripts:
-%{engine_usr}/engine-config
-%{engine_usr}/engine-manage-domains
-%{engine_usr}/kerberos
+%pre notification-service
+%create_engine_user
 
-# Configuration files for the configuration tool:
-%dir %{engine_etc}/engine-config
-%{engine_etc}/engine-config/engine-config.conf
-%{engine_etc}/engine-config/engine-config.*properties
-%{engine_etc}/engine-config/log4j.xml
 
-# Configuration files for the domain management tool:
-%dir %{engine_etc}/engine-manage-domains
-%{engine_etc}/engine-manage-domains/engine-manage-domains.conf
-%{engine_etc}/engine-manage-domains/log4j.xml
+%post notification-service
 
+# Register the service:
+/sbin/chkconfig --add engine-notifierd
 
-%files notification-service
 
-# Startup scripts:
-%{_datadir}/%{engine_name}/notifier
-%{_initddir}/engine-notifierd
+%preun notification-service
 
-# Log and state directories must be owned by ovirt because the notifier service
-# runs with that user and needs to write them:
-%dir %attr(-, %{engine_user}, %{engine_group}) %{_var}/log/%{engine_name}/notifier
-%dir %attr(-, %{engine_user}, %{engine_group}) %{_localstatedir}/run/%{engine_name}/notifier
-
-# Configuration files:
-%dir %{engine_etc}/notifier
-%config(noreplace) %attr(-, %{engine_user}, %{engine_group}) %{engine_etc}/notifier/notifier.conf
-%{engine_etc}/notifier/log4j.xml
+# If the last version of the package is going to be removed then stop and
+# disable the service:
+if [ $1 = 0 ]
+then
+  /sbin/service engine-notifierd stop > /dev/null 2>&1
+  /sbin/chkconfig --del engine-notifierd
+fi
 
-# Jar files:
-%{engine_jar}/engine-notifier-service.jar
 
-# POM files:
-%{_mavenpomdir}/JPP.%{name}-engine-notifier.pom
+%changelog
+* Tue Jul 24 2012 Juan Hernandez <juan.hernandez at redhat.com> - 3.0.0.0001-15
+- Make dependency on commons-collections explicit
+- Update to commons-configuration 1.8
 
+* Fri Jul 20 2012 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 3.0.0.0001-14
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
 
-%changelog
-* Fri May 25 2012 Juan Hernandez <juan.hernandez at redhat.com> - 3.1.0-0.1.20120701git95220c
-- Update to upstream 3.1 pre-release
+* Thu Jun 7 2012 Juan Hernandez <juan.hernandez at redhat.com> - 3.0.0.0001-13
+- Add requires for policycoreutils-python and bind-utils (rhbz#829642)
 
 * Tue Apr 24 2012 Juan Hernandez <juan.hernandez at redhat.com> - 3.0.0.0001-12
 - Fixes needed to work with the jboss-as package
@@ -786,7 +1025,7 @@ fi
 - Replaced geronimo and tomcat API packages with equivalent jboss packages
 - Removed c3p0 and snakeyml dependencies
 
- Thu Mar 15 2012 Juan Hernandez <juan.hernandez at redhat.com> - 3.0.0.0001-4
+* Thu Mar 15 2012 Juan Hernandez <juan.hernandez at redhat.com> - 3.0.0.0001-4
 - Adjusted to build in Fedora from source
 
 * Wed Jan 04 2012 Ronen Angluster <ranglust at redhat.com> - 3.0.0.0001-3
diff --git a/sources b/sources
index 6cb1d2b..51aff9e 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-ac37722f0428b44c6f0cbf432173ff11  ovirt-engine-3.1.0.tar.xz
+badaa6723ec1533f630a83da15c04495  ovirt-engine-3.0.0_0001.tar.gz


More information about the scm-commits mailing list