diff --git a/webapp/sources/ldap-inventory/inventory-api/src/main/scala/com/normation/inventory/services/provisioning/ReportSaver.scala b/webapp/sources/ldap-inventory/inventory-api/src/main/scala/com/normation/inventory/services/provisioning/ReportSaver.scala index d0b5c596a6..08b38e0422 100644 --- a/webapp/sources/ldap-inventory/inventory-api/src/main/scala/com/normation/inventory/services/provisioning/ReportSaver.scala +++ b/webapp/sources/ldap-inventory/inventory-api/src/main/scala/com/normation/inventory/services/provisioning/ReportSaver.scala @@ -122,7 +122,7 @@ trait PipelinedReportSaver[R] extends ReportSaver[R] with Loggable { commitedChange <- try { commitChange(postPreCommitReport) } catch { - case ex:Exception => Failure("Exception when commiting inventory, abort.", Full(ex), Empty) + case ex:Exception => Failure(s"Exception when commiting inventory, abort: ${ex.getMessage}", Full(ex), Empty) } t2 = System.currentTimeMillis diff --git a/webapp/sources/ldap-inventory/inventory-provisioning-web/src/main/scala/com/normation/inventory/provisioning/endpoint/InventoryProcessor.scala b/webapp/sources/ldap-inventory/inventory-provisioning-web/src/main/scala/com/normation/inventory/provisioning/endpoint/InventoryProcessor.scala index 7f41c6da96..2a46bba7bf 100644 --- a/webapp/sources/ldap-inventory/inventory-provisioning-web/src/main/scala/com/normation/inventory/provisioning/endpoint/InventoryProcessor.scala +++ b/webapp/sources/ldap-inventory/inventory-provisioning-web/src/main/scala/com/normation/inventory/provisioning/endpoint/InventoryProcessor.scala @@ -348,7 +348,12 @@ class InventoryProcessor( (reportSaver.save(report) ?~! "Can't merge inventory report in LDAP directory, aborting") match { case Empty => logger.error("The report is empty, not saving anything") case f:Failure => - logger.error("Error when trying to process report: %s".format(f.messageChain),f) + logger.error(s"Error when trying to process report: ${f.messageChain}") + if(logger.isDebugEnabled) { + f.rootExceptionCause.foreach{ ex => + logger.debug("Root exception was: " + ex.printStackTrace()) + } + } case Full(report) => logger.debug("Report saved.") } diff --git a/webapp/sources/ldap-inventory/inventory-repository/src/main/resources/ldap/inventory.schema b/webapp/sources/ldap-inventory/inventory-repository/src/main/resources/ldap/inventory.schema index e63ca18d5b..74452f0263 100644 --- a/webapp/sources/ldap-inventory/inventory-repository/src/main/resources/ldap/inventory.schema +++ b/webapp/sources/ldap-inventory/inventory-repository/src/main/resources/ldap/inventory.schema @@ -887,18 +887,35 @@ objectclass ( InventoryObjectClasses:80.6 SUP VirtualMachine AUXILIARY ) -objectclass ( InventoryObjectClasses:80:8 +objectclass ( InventoryObjectClasses:80.7 + NAME 'BSDJail' + DESC 'A BSD Jail' + SUP VirtualMachine + AUXILIARY ) + +objectclass ( InventoryObjectClasses:80.8 NAME 'hyperV' DESC 'A Hyper-V VM' SUP VirtualMachine AUXILIARY ) -objectclass ( InventoryObjectClasses:80.7 - NAME 'BSDJail' - DESC 'A BSD Jail' +objectclass ( InventoryObjectClasses:80.9 + NAME 'lxc' + DESC 'LXC container' SUP VirtualMachine AUXILIARY ) +objectclass ( InventoryObjectClasses:80.10 + NAME 'virtuozzo' + DESC 'Virtuozzo container' + SUP VirtualMachine + AUXILIARY ) + +objectclass ( InventoryObjectClasses:80.11 + NAME 'openvz' + DESC 'OpenVZ container' + SUP VirtualMachine + AUXILIARY ) objectclass ( InventoryObjectClasses:4 NAME 'physicalElement' diff --git a/webapp/sources/ldap-inventory/inventory-repository/src/main/scala/com/normation/inventory/ldap/core/InventoryMapper.scala b/webapp/sources/ldap-inventory/inventory-repository/src/main/scala/com/normation/inventory/ldap/core/InventoryMapper.scala index 4c59b9885e..8d6507a0ae 100644 --- a/webapp/sources/ldap-inventory/inventory-repository/src/main/scala/com/normation/inventory/ldap/core/InventoryMapper.scala +++ b/webapp/sources/ldap-inventory/inventory-repository/src/main/scala/com/normation/inventory/ldap/core/InventoryMapper.scala @@ -404,7 +404,10 @@ class InventoryMapper( case LDAPObjectClass(OC_VM_QEMU,_,_,_) => Some(VirtualMachineType(QEmu)) case LDAPObjectClass(OC_VM_AIX_LPAR,_,_,_) => Some(VirtualMachineType(AixLPAR)) case LDAPObjectClass(OC_VM_HYPERV,_,_,_) => Some(VirtualMachineType(HyperV)) - case LDAPObjectClass(OC_VM_BSDJAIL,_,_,_) => Some(VirtualMachineType(BSDJail)) + case LDAPObjectClass(OC_VM_BSDJAIL,_,_,_) => Some(VirtualMachineType(BSDJail)) + case LDAPObjectClass(OC_VM_LXC, _, _, _) => Some(VirtualMachineType(LXC)) + case LDAPObjectClass(OC_VM_VIRTUOZZO, _, _, _) => Some(VirtualMachineType(Virtuozzo)) + case LDAPObjectClass(OC_VM_OPENVZ, _, _, _) => Some(VirtualMachineType(OpenVZ)) case LDAPObjectClass(OC_PM,_,_,_) => Some(PhysicalMachineType) case _ => None } diff --git a/webapp/sources/ldap-inventory/inventory-repository/src/main/scala/com/normation/inventory/ldap/core/LDAPConstants.scala b/webapp/sources/ldap-inventory/inventory-repository/src/main/scala/com/normation/inventory/ldap/core/LDAPConstants.scala index d838ab4656..f20253ec5d 100644 --- a/webapp/sources/ldap-inventory/inventory-repository/src/main/scala/com/normation/inventory/ldap/core/LDAPConstants.scala +++ b/webapp/sources/ldap-inventory/inventory-repository/src/main/scala/com/normation/inventory/ldap/core/LDAPConstants.scala @@ -284,6 +284,10 @@ object LDAPConstants { OC +=(OC_VM_AIX_LPAR, OC(OC_VM)) OC +=(OC_VM_HYPERV, OC(OC_VM)) OC +=(OC_VM_BSDJAIL, OC(OC_VM)) + OC +=(OC_VM_LXC, OC(OC_VM)) + OC +=(OC_VM_VIRTUOZZO, OC(OC_VM)) + OC +=(OC_VM_OPENVZ, OC(OC_VM)) + OC +=(OC_PE, must = Set(), @@ -301,7 +305,10 @@ object LDAPConstants { OC_VM_QEMU, OC_VM_AIX_LPAR, OC_VM_HYPERV, - OC_VM_BSDJAIL + OC_VM_BSDJAIL, + OC_VM_LXC, + OC_VM_VIRTUOZZO, + OC_VM_OPENVZ ) OC +=(OC_MEMORY, sup = OC(OC_PE), diff --git a/webapp/sources/ldap-inventory/inventory-repository/src/test/resources/ldap-data/schema/099-0-inventory.ldif b/webapp/sources/ldap-inventory/inventory-repository/src/test/resources/ldap-data/schema/099-0-inventory.ldif index cfc91fe23d..e651a7d586 100644 --- a/webapp/sources/ldap-inventory/inventory-repository/src/test/resources/ldap-data/schema/099-0-inventory.ldif +++ b/webapp/sources/ldap-inventory/inventory-repository/src/test/resources/ldap-data/schema/099-0-inventory.ldif @@ -323,6 +323,12 @@ attributeTypes: ( 1.3.6.1.4.1.35061.1.1.400.3 EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) +attributeTypes: ( 1.3.6.1.4.1.35061.1.1.400.3.1 + NAME 'networkSubnet' + DESC 'Network interface subnet' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) attributeTypes: ( 1.3.6.1.4.1.35061.1.1.400.4 NAME 'networkInterfaceMacAddress' DESC 'Network interface MAC address' @@ -723,14 +729,29 @@ objectClasses: ( 1.3.6.1.4.1.35061.1.2.80.6 DESC 'An LPAR partition on AIX' SUP VirtualMachine AUXILIARY ) -objectClasses: ( 1.3.6.1.4.1.35061.1.2.80 +objectClasses: ( 1.3.6.1.4.1.35061.1.2.80.7 + NAME 'BSDJail' + DESC 'A BSD Jail' + SUP VirtualMachine + AUXILIARY ) +objectClasses: ( 1.3.6.1.4.1.35061.1.2.80.8 NAME 'hyperV' DESC 'A Hyper-V VM' SUP VirtualMachine AUXILIARY ) -objectClasses: ( 1.3.6.1.4.1.35061.1.2.80.7 - NAME 'BSDJail' - DESC 'A BSD Jail' +objectClasses: ( 1.3.6.1.4.1.35061.1.2.80.9 + NAME 'lxc' + DESC 'LXC container' + SUP VirtualMachine + AUXILIARY ) +objectClasses: ( 1.3.6.1.4.1.35061.1.2.80.10 + NAME 'virtuozzo' + DESC 'Virtuozzo container' + SUP VirtualMachine + AUXILIARY ) +objectClasses: ( 1.3.6.1.4.1.35061.1.2.80.11 + NAME 'openvz' + DESC 'OpenVZ container' SUP VirtualMachine AUXILIARY ) objectClasses: ( 1.3.6.1.4.1.35061.1.2.4 @@ -865,7 +886,7 @@ objectClasses: ( 1.3.6.1.4.1.35061.1.2.20 STRUCTURAL MUST ( networkInterface ) MAY ( status $ speed $ ipHostNumber $ networkInterfaceMacAddress $ - networkInterfaceGateway $ ipNetworkNumber $ networkInterfaceDhcpServer $ + networkInterfaceGateway $ ipNetworkNumber $ networkSubnet $ networkInterfaceDhcpServer $ networkInterfaceMask $ networkInterfaceType $ networkInterfaceTypeMib) ) objectClasses: ( 1.3.6.1.4.1.35061.1.2.21 NAME 'software'